<?php

namespace {
    /**
     * WC_Importer_Interface class.
     */
    interface WC_Importer_Interface
    {
        /**
         * Process importation.
         * Returns an array with the imported and failed items.
         * 'imported' contains a list of IDs.
         * 'failed' contains a list of WP_Error objects.
         *
         * Example:
         * ['imported' => [], 'failed' => []]
         *
         * @return array
         */
        public function import();
        /**
         * Get file raw keys.
         *
         * CSV - Headers.
         * XML - Element names.
         * JSON - Keys
         *
         * @return array
         */
        public function get_raw_keys();
        /**
         * Get file mapped headers.
         *
         * @return array
         */
        public function get_mapped_keys();
        /**
         * Get raw data.
         *
         * @return array
         */
        public function get_raw_data();
        /**
         * Get parsed data.
         *
         * @return array
         */
        public function get_parsed_data();
        /**
         * Get file pointer position from the last read.
         *
         * @return int
         */
        public function get_file_position();
        /**
         * Get file pointer position as a percentage of file size.
         *
         * @return int
         */
        public function get_percent_complete();
    }
    /**
     * WC_Product_Importer Class.
     */
    abstract class WC_Product_Importer implements \WC_Importer_Interface
    {
        /**
         * CSV file.
         *
         * @var string
         */
        protected $file = '';
        /**
         * The file position after the last read.
         *
         * @var int
         */
        protected $file_position = 0;
        /**
         * Importer parameters.
         *
         * @var array
         */
        protected $params = array();
        /**
         * Raw keys - CSV raw headers.
         *
         * @var array
         */
        protected $raw_keys = array();
        /**
         * Mapped keys - CSV headers.
         *
         * @var array
         */
        protected $mapped_keys = array();
        /**
         * Raw data.
         *
         * @var array
         */
        protected $raw_data = array();
        /**
         * Raw data.
         *
         * @var array
         */
        protected $file_positions = array();
        /**
         * Parsed data.
         *
         * @var array
         */
        protected $parsed_data = array();
        /**
         * Start time of current import.
         *
         * (default value: 0)
         *
         * @var int
         */
        protected $start_time = 0;
        /**
         * Get file raw headers.
         *
         * @return array
         */
        public function get_raw_keys()
        {
        }
        /**
         * Get file mapped headers.
         *
         * @return array
         */
        public function get_mapped_keys()
        {
        }
        /**
         * Get raw data.
         *
         * @return array
         */
        public function get_raw_data()
        {
        }
        /**
         * Get parsed data.
         *
         * @return array
         */
        public function get_parsed_data()
        {
        }
        /**
         * Get importer parameters.
         *
         * @return array
         */
        public function get_params()
        {
        }
        /**
         * Get file pointer position from the last read.
         *
         * @return int
         */
        public function get_file_position()
        {
        }
        /**
         * Get file pointer position as a percentage of file size.
         *
         * @return int
         */
        public function get_percent_complete()
        {
        }
        /**
         * Prepare a single product for create or update.
         *
         * @param  array $data     Item data.
         * @return WC_Product|WP_Error
         */
        protected function get_product_object($data)
        {
        }
        /**
         * Process a single item and save.
         *
         * @throws Exception If item cannot be processed.
         * @param  array $data Raw CSV data.
         * @return array|WP_Error
         */
        protected function process_item($data)
        {
        }
        /**
         * Convert raw image URLs to IDs and set.
         *
         * @param WC_Product $product Product instance.
         * @param array      $data    Item data.
         */
        protected function set_image_data(&$product, $data)
        {
        }
        /**
         * Append meta data.
         *
         * @param WC_Product $product Product instance.
         * @param array      $data    Item data.
         */
        protected function set_meta_data(&$product, $data)
        {
        }
        /**
         * Set product data.
         *
         * @param WC_Product $product Product instance.
         * @param array      $data    Item data.
         * @throws Exception If data cannot be set.
         */
        protected function set_product_data(&$product, $data)
        {
        }
        /**
         * Set variation data.
         *
         * @param WC_Product $variation Product instance.
         * @param array      $data    Item data.
         * @return WC_Product|WP_Error
         * @throws Exception If data cannot be set.
         */
        protected function set_variation_data(&$variation, $data)
        {
        }
        /**
         * Get variation parent attributes and set "is_variation".
         *
         * @param  array      $attributes Attributes list.
         * @param  WC_Product $parent     Parent product data.
         * @return array
         */
        protected function get_variation_parent_attributes($attributes, $parent)
        {
        }
        /**
         * Get attachment ID.
         *
         * @param  string $url        Attachment URL.
         * @param  int    $product_id Product ID.
         * @return int
         * @throws Exception If attachment cannot be loaded.
         */
        public function get_attachment_id_from_url($url, $product_id)
        {
        }
        /**
         * Get attribute taxonomy ID from the imported data.
         * If does not exists register a new attribute.
         *
         * @param  string $raw_name Attribute name.
         * @return int
         * @throws Exception If taxonomy cannot be loaded.
         */
        public function get_attribute_taxonomy_id($raw_name)
        {
        }
        /**
         * Memory exceeded
         *
         * Ensures the batch process never exceeds 90%
         * of the maximum WordPress memory.
         *
         * @return bool
         */
        protected function memory_exceeded()
        {
        }
        /**
         * Get memory limit
         *
         * @return int
         */
        protected function get_memory_limit()
        {
        }
        /**
         * Time exceeded.
         *
         * Ensures the batch never exceeds a sensible time limit.
         * A timeout limit of 30s is common on shared hosting.
         *
         * @return bool
         */
        protected function time_exceeded()
        {
        }
        /**
         * Explode CSV cell values using commas by default, and handling escaped
         * separators.
         *
         * @since  3.2.0
         * @param  string $value     Value to explode.
         * @param  string $separator Separator separating each value. Defaults to comma.
         * @return array
         */
        protected function explode_values($value, $separator = ',')
        {
        }
        /**
         * Remove formatting and trim each value.
         *
         * @since  3.2.0
         * @param  string $value Value to format.
         * @return string
         */
        protected function explode_values_formatter($value)
        {
        }
        /**
         * The exporter prepends a ' to escape fields that start with =, +, - or @.
         * Remove the prepended ' character preceding those characters.
         *
         * @since 3.5.2
         * @param  string $value A string that may or may not have been escaped with '.
         * @return string
         */
        protected function unescape_data($value)
        {
        }
    }
    /**
     * WC_Product_CSV_Importer Class.
     */
    class WC_Product_CSV_Importer extends \WC_Product_Importer
    {
        /**
         * Tracks current row being parsed.
         *
         * @var integer
         */
        protected $parsing_raw_data_index = 0;
        /**
         * Initialize importer.
         *
         * @param string $file   File to read.
         * @param array  $params Arguments for the parser.
         */
        public function __construct($file, $params = array())
        {
        }
        /**
         * Read file.
         */
        protected function read_file()
        {
        }
        /**
         * Remove UTF-8 BOM signature.
         *
         * @param string $string String to handle.
         *
         * @return string
         */
        protected function remove_utf8_bom($string)
        {
        }
        /**
         * Set file mapped keys.
         */
        protected function set_mapped_keys()
        {
        }
        /**
         * Parse relative field and return product ID.
         *
         * Handles `id:xx` and SKUs.
         *
         * If mapping to an id: and the product ID does not exist, this link is not
         * valid.
         *
         * If mapping to a SKU and the product ID does not exist, a temporary object
         * will be created so it can be updated later.
         *
         * @param string $value Field value.
         *
         * @return int|string
         */
        public function parse_relative_field($value)
        {
        }
        /**
         * Parse the ID field.
         *
         * If we're not doing an update, create a placeholder product so mapping works
         * for rows following this one.
         *
         * @param string $value Field value.
         *
         * @return int
         */
        public function parse_id_field($value)
        {
        }
        /**
         * Parse relative comma-delineated field and return product ID.
         *
         * @param string $value Field value.
         *
         * @return array
         */
        public function parse_relative_comma_field($value)
        {
        }
        /**
         * Parse a comma-delineated field from a CSV.
         *
         * @param string $value Field value.
         *
         * @return array
         */
        public function parse_comma_field($value)
        {
        }
        /**
         * Parse a field that is generally '1' or '0' but can be something else.
         *
         * @param string $value Field value.
         *
         * @return bool|string
         */
        public function parse_bool_field($value)
        {
        }
        /**
         * Parse a float value field.
         *
         * @param string $value Field value.
         *
         * @return float|string
         */
        public function parse_float_field($value)
        {
        }
        /**
         * Parse the stock qty field.
         *
         * @param string $value Field value.
         *
         * @return float|string
         */
        public function parse_stock_quantity_field($value)
        {
        }
        /**
         * Parse the tax status field.
         *
         * @param string $value Field value.
         *
         * @return string
         */
        public function parse_tax_status_field($value)
        {
        }
        /**
         * Parse a category field from a CSV.
         * Categories are separated by commas and subcategories are "parent > subcategory".
         *
         * @param string $value Field value.
         *
         * @return array of arrays with "parent" and "name" keys.
         */
        public function parse_categories_field($value)
        {
        }
        /**
         * Parse a tag field from a CSV.
         *
         * @param string $value Field value.
         *
         * @return array
         */
        public function parse_tags_field($value)
        {
        }
        /**
         * Parse a tag field from a CSV with space separators.
         *
         * @param string $value Field value.
         *
         * @return array
         */
        public function parse_tags_spaces_field($value)
        {
        }
        /**
         * Parse a shipping class field from a CSV.
         *
         * @param string $value Field value.
         *
         * @return int
         */
        public function parse_shipping_class_field($value)
        {
        }
        /**
         * Parse images list from a CSV. Images can be filenames or URLs.
         *
         * @param string $value Field value.
         *
         * @return array
         */
        public function parse_images_field($value)
        {
        }
        /**
         * Parse dates from a CSV.
         * Dates requires the format YYYY-MM-DD and time is optional.
         *
         * @param string $value Field value.
         *
         * @return string|null
         */
        public function parse_date_field($value)
        {
        }
        /**
         * Parse backorders from a CSV.
         *
         * @param string $value Field value.
         *
         * @return string
         */
        public function parse_backorders_field($value)
        {
        }
        /**
         * Just skip current field.
         *
         * By default is applied wc_clean() to all not listed fields
         * in self::get_formating_callback(), use this method to skip any formating.
         *
         * @param string $value Field value.
         *
         * @return string
         */
        public function parse_skip_field($value)
        {
        }
        /**
         * Parse download file urls, we should allow shortcodes here.
         *
         * Allow shortcodes if present, othersiwe esc_url the value.
         *
         * @param string $value Field value.
         *
         * @return string
         */
        public function parse_download_file_field($value)
        {
        }
        /**
         * Parse an int value field
         *
         * @param int $value field value.
         *
         * @return int
         */
        public function parse_int_field($value)
        {
        }
        /**
         * Parse a description value field
         *
         * @param string $description field value.
         *
         * @return string
         */
        public function parse_description_field($description)
        {
        }
        /**
         * Parse the published field. 1 is published, 0 is private, -1 is draft.
         * Alternatively, 'true' can be used for published and 'false' for draft.
         *
         * @param string $value Field value.
         *
         * @return float|string
         */
        public function parse_published_field($value)
        {
        }
        /**
         * Get formatting callback.
         *
         * @return array
         */
        protected function get_formating_callback()
        {
        }
        /**
         * Check if strings starts with determined word.
         *
         * @param string $haystack Complete sentence.
         * @param string $needle   Excerpt.
         *
         * @return bool
         */
        protected function starts_with($haystack, $needle)
        {
        }
        /**
         * Expand special and internal data into the correct formats for the product CRUD.
         *
         * @param array $data Data to import.
         *
         * @return array
         */
        protected function expand_data($data)
        {
        }
        /**
         * Map and format raw data to known fields.
         */
        protected function set_parsed_data()
        {
        }
        /**
         * Get a string to identify the row from parsed data.
         *
         * @param array $parsed_data Parsed data.
         *
         * @return string
         */
        protected function get_row_id($parsed_data)
        {
        }
        /**
         * Process importer.
         *
         * Do not import products with IDs or SKUs that already exist if option
         * update existing is false, and likewise, if updating products, do not
         * process rows which do not exist if an ID/SKU is provided.
         *
         * @return array
         */
        public function import()
        {
        }
    }
    /**
     * Abstract WP_Async_Request class.
     */
    abstract class WP_Async_Request
    {
        /**
         * Prefix
         *
         * (default value: 'wp')
         *
         * @var string
         * @access protected
         */
        protected $prefix = 'wp';
        /**
         * Action
         *
         * (default value: 'async_request')
         *
         * @var string
         * @access protected
         */
        protected $action = 'async_request';
        /**
         * Identifier
         *
         * @var mixed
         * @access protected
         */
        protected $identifier;
        /**
         * Data
         *
         * (default value: array())
         *
         * @var array
         * @access protected
         */
        protected $data = array();
        /**
         * Initiate new async request
         */
        public function __construct()
        {
        }
        /**
         * Set data used during the request
         *
         * @param array $data Data.
         *
         * @return $this
         */
        public function data($data)
        {
        }
        /**
         * Dispatch the async request
         *
         * @return array|WP_Error
         */
        public function dispatch()
        {
        }
        /**
         * Get query args
         *
         * @return array
         */
        protected function get_query_args()
        {
        }
        /**
         * Get query URL
         *
         * @return string
         */
        protected function get_query_url()
        {
        }
        /**
         * Get post args
         *
         * @return array
         */
        protected function get_post_args()
        {
        }
        /**
         * Maybe handle
         *
         * Check for correct nonce and pass to handler.
         */
        public function maybe_handle()
        {
        }
        /**
         * Handle
         *
         * Override this method to perform any actions required
         * during the async request.
         */
        protected abstract function handle();
    }
    /**
     * Abstract WP_Background_Process class.
     */
    abstract class WP_Background_Process extends \WP_Async_Request
    {
        /**
         * Action
         *
         * (default value: 'background_process')
         *
         * @var string
         * @access protected
         */
        protected $action = 'background_process';
        /**
         * Start time of current process.
         *
         * (default value: 0)
         *
         * @var int
         * @access protected
         */
        protected $start_time = 0;
        /**
         * Cron_hook_identifier
         *
         * @var mixed
         * @access protected
         */
        protected $cron_hook_identifier;
        /**
         * Cron_interval_identifier
         *
         * @var mixed
         * @access protected
         */
        protected $cron_interval_identifier;
        /**
         * Initiate new background process
         */
        public function __construct()
        {
        }
        /**
         * Dispatch
         *
         * @access public
         * @return void
         */
        public function dispatch()
        {
        }
        /**
         * Push to queue
         *
         * @param mixed $data Data.
         *
         * @return $this
         */
        public function push_to_queue($data)
        {
        }
        /**
         * Save queue
         *
         * @return $this
         */
        public function save()
        {
        }
        /**
         * Update queue
         *
         * @param string $key Key.
         * @param array  $data Data.
         *
         * @return $this
         */
        public function update($key, $data)
        {
        }
        /**
         * Delete queue
         *
         * @param string $key Key.
         *
         * @return $this
         */
        public function delete($key)
        {
        }
        /**
         * Generate key
         *
         * Generates a unique key based on microtime. Queue items are
         * given a unique key so that they can be merged upon save.
         *
         * @param int $length Length.
         *
         * @return string
         */
        protected function generate_key($length = 64)
        {
        }
        /**
         * Maybe process queue
         *
         * Checks whether data exists within the queue and that
         * the process is not already running.
         */
        public function maybe_handle()
        {
        }
        /**
         * Is queue empty
         *
         * @return bool
         */
        protected function is_queue_empty()
        {
        }
        /**
         * Is process running
         *
         * Check whether the current process is already running
         * in a background process.
         */
        protected function is_process_running()
        {
        }
        /**
         * Lock process
         *
         * Lock the process so that multiple instances can't run simultaneously.
         * Override if applicable, but the duration should be greater than that
         * defined in the time_exceeded() method.
         */
        protected function lock_process()
        {
        }
        /**
         * Unlock process
         *
         * Unlock the process so that other instances can spawn.
         *
         * @return $this
         */
        protected function unlock_process()
        {
        }
        /**
         * Get batch
         *
         * @return stdClass Return the first batch from the queue
         */
        protected function get_batch()
        {
        }
        /**
         * Handle
         *
         * Pass each queue item to the task handler, while remaining
         * within server memory and time limit constraints.
         */
        protected function handle()
        {
        }
        /**
         * Memory exceeded
         *
         * Ensures the batch process never exceeds 90%
         * of the maximum WordPress memory.
         *
         * @return bool
         */
        protected function memory_exceeded()
        {
        }
        /**
         * Get memory limit
         *
         * @return int
         */
        protected function get_memory_limit()
        {
        }
        /**
         * Time exceeded.
         *
         * Ensures the batch never exceeds a sensible time limit.
         * A timeout limit of 30s is common on shared hosting.
         *
         * @return bool
         */
        protected function time_exceeded()
        {
        }
        /**
         * Complete.
         *
         * Override if applicable, but ensure that the below actions are
         * performed, or, call parent::complete().
         */
        protected function complete()
        {
        }
        /**
         * Schedule cron healthcheck
         *
         * @access public
         * @param mixed $schedules Schedules.
         * @return mixed
         */
        public function schedule_cron_healthcheck($schedules)
        {
        }
        /**
         * Handle cron healthcheck
         *
         * Restart the background process if not already running
         * and data exists in the queue.
         */
        public function handle_cron_healthcheck()
        {
        }
        /**
         * Schedule event
         */
        protected function schedule_event()
        {
        }
        /**
         * Clear scheduled event
         */
        protected function clear_scheduled_event()
        {
        }
        /**
         * Cancel Process
         *
         * Stop processing queue items, clear cronjob and delete batch.
         *
         */
        public function cancel_process()
        {
        }
        /**
         * Task
         *
         * Override this method to perform any actions required on each
         * queue item. Return the modified item for further processing
         * in the next pass through. Or, return false to remove the
         * item from the queue.
         *
         * @param mixed $item Queue item to iterate over.
         *
         * @return mixed
         */
        protected abstract function task($item);
    }
    /**
     * WC_Background_Process class.
     */
    abstract class WC_Background_Process extends \WP_Background_Process
    {
        /**
         * Is queue empty.
         *
         * @return bool
         */
        protected function is_queue_empty()
        {
        }
        /**
         * Get batch.
         *
         * @return stdClass Return the first batch from the queue.
         */
        protected function get_batch()
        {
        }
        /**
         * See if the batch limit has been exceeded.
         *
         * @return bool
         */
        protected function batch_limit_exceeded()
        {
        }
        /**
         * Handle.
         *
         * Pass each queue item to the task handler, while remaining
         * within server memory and time limit constraints.
         */
        protected function handle()
        {
        }
        /**
         * Get memory limit.
         *
         * @return int
         */
        protected function get_memory_limit()
        {
        }
        /**
         * Schedule cron healthcheck.
         *
         * @param array $schedules Schedules.
         * @return array
         */
        public function schedule_cron_healthcheck($schedules)
        {
        }
        /**
         * Delete all batches.
         *
         * @return WC_Background_Process
         */
        public function delete_all_batches()
        {
        }
        /**
         * Kill process.
         *
         * Stop processing queue items, clear cronjob and delete all batches.
         */
        public function kill_process()
        {
        }
    }
    /**
     * Class that extends WC_Background_Process to process image regeneration in the background.
     */
    class WC_Regenerate_Images_Request extends \WC_Background_Process
    {
        /**
         * Stores the attachment ID being processed.
         *
         * @var integer
         */
        protected $attachment_id = 0;
        /**
         * Initiate new background process.
         */
        public function __construct()
        {
        }
        /**
         * Is job running?
         *
         * @return boolean
         */
        public function is_running()
        {
        }
        /**
         * Limit each task ran per batch to 1 for image regen.
         *
         * @return bool
         */
        protected function batch_limit_exceeded()
        {
        }
        /**
         * Determines whether an attachment can have its thumbnails regenerated.
         *
         * Adapted from Regenerate Thumbnails by Alex Mills.
         *
         * @param WP_Post $attachment An attachment's post object.
         * @return bool Whether the given attachment can have its thumbnails regenerated.
         */
        protected function is_regeneratable($attachment)
        {
        }
        /**
         * Code to execute for each item in the queue
         *
         * @param mixed $item Queue item to iterate over.
         * @return bool
         */
        protected function task($item)
        {
        }
        /**
         * Filters the list of thumbnail sizes to only include those which have missing files.
         *
         * @param array $sizes         An associative array of registered thumbnail image sizes.
         * @param array $metadata      An associative array of fullsize image metadata: width, height, file.
         * @param int   $attachment_id Attachment ID. Only passed from WP 5.0+.
         * @return array An associative array of image sizes.
         */
        public function filter_image_sizes_to_only_missing_thumbnails($sizes, $metadata, $attachment_id = \null)
        {
        }
        /**
         * Returns the sizes we want to regenerate.
         *
         * @param array $sizes Sizes to generate.
         * @return array
         */
        public function adjust_intermediate_image_sizes($sizes)
        {
        }
        /**
         * This runs once the job has completed all items on the queue.
         *
         * @return void
         */
        protected function complete()
        {
        }
    }
    /**
     * WC_Geo_IP Class.
     *
     * @deprecated 3.4.0
     */
    class WC_Geo_IP
    {
        const GEOIP_COUNTRY_BEGIN = 16776960;
        const GEOIP_STATE_BEGIN_REV0 = 16700000;
        const GEOIP_STATE_BEGIN_REV1 = 16000000;
        const GEOIP_MEMORY_CACHE = 1;
        const GEOIP_SHARED_MEMORY = 2;
        const STRUCTURE_INFO_MAX_SIZE = 20;
        const GEOIP_COUNTRY_EDITION = 1;
        const GEOIP_PROXY_EDITION = 8;
        const GEOIP_ASNUM_EDITION = 9;
        const GEOIP_NETSPEED_EDITION = 10;
        const GEOIP_REGION_EDITION_REV0 = 7;
        const GEOIP_REGION_EDITION_REV1 = 3;
        const GEOIP_CITY_EDITION_REV0 = 6;
        const GEOIP_CITY_EDITION_REV1 = 2;
        const GEOIP_ORG_EDITION = 5;
        const GEOIP_ISP_EDITION = 4;
        const SEGMENT_RECORD_LENGTH = 3;
        const STANDARD_RECORD_LENGTH = 3;
        const ORG_RECORD_LENGTH = 4;
        const GEOIP_SHM_KEY = 0x4f415401;
        const GEOIP_DOMAIN_EDITION = 11;
        const GEOIP_COUNTRY_EDITION_V6 = 12;
        const GEOIP_LOCATIONA_EDITION = 13;
        const GEOIP_ACCURACYRADIUS_EDITION = 14;
        const GEOIP_CITY_EDITION_REV1_V6 = 30;
        const GEOIP_CITY_EDITION_REV0_V6 = 31;
        const GEOIP_NETSPEED_EDITION_REV1 = 32;
        const GEOIP_NETSPEED_EDITION_REV1_V6 = 33;
        const GEOIP_USERTYPE_EDITION = 28;
        const GEOIP_USERTYPE_EDITION_V6 = 29;
        const GEOIP_ASNUM_EDITION_V6 = 21;
        const GEOIP_ISP_EDITION_V6 = 22;
        const GEOIP_ORG_EDITION_V6 = 23;
        const GEOIP_DOMAIN_EDITION_V6 = 24;
        /**
         * Flags.
         *
         * @var int
         */
        public $flags;
        /**
         * File handler.
         *
         * @var resource
         */
        public $filehandle;
        /**
         * Memory buffer.
         *
         * @var string
         */
        public $memory_buffer;
        /**
         * Database type.
         *
         * @var int
         */
        public $databaseType;
        /**
         * Database segments.
         *
         * @var int
         */
        public $databaseSegments;
        /**
         * Record length.
         *
         * @var int
         */
        public $record_length;
        /**
         * Shmid.
         *
         * @var string
         */
        public $shmid;
        /**
         * Two letters country codes.
         *
         * @var array
         */
        public $GEOIP_COUNTRY_CODES = array('', 'AP', 'EU', 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'CW', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BM', 'BN', 'BO', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'SX', 'GA', 'GB', 'GD', 'GE', 'GF', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'ST', 'SV', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TM', 'TN', 'TO', 'TL', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'RS', 'ZA', 'ZM', 'ME', 'ZW', 'A1', 'A2', 'O1', 'AX', 'GG', 'IM', 'JE', 'BL', 'MF', 'BQ', 'SS', 'O1');
        /**
         * 3 letters country codes.
         *
         * @var array
         */
        public $GEOIP_COUNTRY_CODES3 = array('', 'AP', 'EU', 'AND', 'ARE', 'AFG', 'ATG', 'AIA', 'ALB', 'ARM', 'CUW', 'AGO', 'ATA', 'ARG', 'ASM', 'AUT', 'AUS', 'ABW', 'AZE', 'BIH', 'BRB', 'BGD', 'BEL', 'BFA', 'BGR', 'BHR', 'BDI', 'BEN', 'BMU', 'BRN', 'BOL', 'BRA', 'BHS', 'BTN', 'BVT', 'BWA', 'BLR', 'BLZ', 'CAN', 'CCK', 'COD', 'CAF', 'COG', 'CHE', 'CIV', 'COK', 'CHL', 'CMR', 'CHN', 'COL', 'CRI', 'CUB', 'CPV', 'CXR', 'CYP', 'CZE', 'DEU', 'DJI', 'DNK', 'DMA', 'DOM', 'DZA', 'ECU', 'EST', 'EGY', 'ESH', 'ERI', 'ESP', 'ETH', 'FIN', 'FJI', 'FLK', 'FSM', 'FRO', 'FRA', 'SXM', 'GAB', 'GBR', 'GRD', 'GEO', 'GUF', 'GHA', 'GIB', 'GRL', 'GMB', 'GIN', 'GLP', 'GNQ', 'GRC', 'SGS', 'GTM', 'GUM', 'GNB', 'GUY', 'HKG', 'HMD', 'HND', 'HRV', 'HTI', 'HUN', 'IDN', 'IRL', 'ISR', 'IND', 'IOT', 'IRQ', 'IRN', 'ISL', 'ITA', 'JAM', 'JOR', 'JPN', 'KEN', 'KGZ', 'KHM', 'KIR', 'COM', 'KNA', 'PRK', 'KOR', 'KWT', 'CYM', 'KAZ', 'LAO', 'LBN', 'LCA', 'LIE', 'LKA', 'LBR', 'LSO', 'LTU', 'LUX', 'LVA', 'LBY', 'MAR', 'MCO', 'MDA', 'MDG', 'MHL', 'MKD', 'MLI', 'MMR', 'MNG', 'MAC', 'MNP', 'MTQ', 'MRT', 'MSR', 'MLT', 'MUS', 'MDV', 'MWI', 'MEX', 'MYS', 'MOZ', 'NAM', 'NCL', 'NER', 'NFK', 'NGA', 'NIC', 'NLD', 'NOR', 'NPL', 'NRU', 'NIU', 'NZL', 'OMN', 'PAN', 'PER', 'PYF', 'PNG', 'PHL', 'PAK', 'POL', 'SPM', 'PCN', 'PRI', 'PSE', 'PRT', 'PLW', 'PRY', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'SAU', 'SLB', 'SYC', 'SDN', 'SWE', 'SGP', 'SHN', 'SVN', 'SJM', 'SVK', 'SLE', 'SMR', 'SEN', 'SOM', 'SUR', 'STP', 'SLV', 'SYR', 'SWZ', 'TCA', 'TCD', 'ATF', 'TGO', 'THA', 'TJK', 'TKL', 'TKM', 'TUN', 'TON', 'TLS', 'TUR', 'TTO', 'TUV', 'TWN', 'TZA', 'UKR', 'UGA', 'UMI', 'USA', 'URY', 'UZB', 'VAT', 'VCT', 'VEN', 'VGB', 'VIR', 'VNM', 'VUT', 'WLF', 'WSM', 'YEM', 'MYT', 'SRB', 'ZAF', 'ZMB', 'MNE', 'ZWE', 'A1', 'A2', 'O1', 'ALA', 'GGY', 'IMN', 'JEY', 'BLM', 'MAF', 'BES', 'SSD', 'O1');
        /**
         * Contry names.
         *
         * @var array
         */
        public $GEOIP_COUNTRY_NAMES = array('', 'Asia/Pacific Region', 'Europe', 'Andorra', 'United Arab Emirates', 'Afghanistan', 'Antigua and Barbuda', 'Anguilla', 'Albania', 'Armenia', 'Curacao', 'Angola', 'Antarctica', 'Argentina', 'American Samoa', 'Austria', 'Australia', 'Aruba', 'Azerbaijan', 'Bosnia and Herzegovina', 'Barbados', 'Bangladesh', 'Belgium', 'Burkina Faso', 'Bulgaria', 'Bahrain', 'Burundi', 'Benin', 'Bermuda', 'Brunei Darussalam', 'Bolivia', 'Brazil', 'Bahamas', 'Bhutan', 'Bouvet Island', 'Botswana', 'Belarus', 'Belize', 'Canada', 'Cocos (Keeling) Islands', 'Congo, The Democratic Republic of the', 'Central African Republic', 'Congo', 'Switzerland', "Cote D'Ivoire", 'Cook Islands', 'Chile', 'Cameroon', 'China', 'Colombia', 'Costa Rica', 'Cuba', 'Cape Verde', 'Christmas Island', 'Cyprus', 'Czech Republic', 'Germany', 'Djibouti', 'Denmark', 'Dominica', 'Dominican Republic', 'Algeria', 'Ecuador', 'Estonia', 'Egypt', 'Western Sahara', 'Eritrea', 'Spain', 'Ethiopia', 'Finland', 'Fiji', 'Falkland Islands (Malvinas)', 'Micronesia, Federated States of', 'Faroe Islands', 'France', 'Sint Maarten (Dutch part)', 'Gabon', 'United Kingdom', 'Grenada', 'Georgia', 'French Guiana', 'Ghana', 'Gibraltar', 'Greenland', 'Gambia', 'Guinea', 'Guadeloupe', 'Equatorial Guinea', 'Greece', 'South Georgia and the South Sandwich Islands', 'Guatemala', 'Guam', 'Guinea-Bissau', 'Guyana', 'Hong Kong', 'Heard Island and McDonald Islands', 'Honduras', 'Croatia', 'Haiti', 'Hungary', 'Indonesia', 'Ireland', 'Israel', 'India', 'British Indian Ocean Territory', 'Iraq', 'Iran, Islamic Republic of', 'Iceland', 'Italy', 'Jamaica', 'Jordan', 'Japan', 'Kenya', 'Kyrgyzstan', 'Cambodia', 'Kiribati', 'Comoros', 'Saint Kitts and Nevis', "Korea, Democratic People's Republic of", 'Korea, Republic of', 'Kuwait', 'Cayman Islands', 'Kazakhstan', "Lao People's Democratic Republic", 'Lebanon', 'Saint Lucia', 'Liechtenstein', 'Sri Lanka', 'Liberia', 'Lesotho', 'Lithuania', 'Luxembourg', 'Latvia', 'Libya', 'Morocco', 'Monaco', 'Moldova, Republic of', 'Madagascar', 'Marshall Islands', 'Macedonia', 'Mali', 'Myanmar', 'Mongolia', 'Macau', 'Northern Mariana Islands', 'Martinique', 'Mauritania', 'Montserrat', 'Malta', 'Mauritius', 'Maldives', 'Malawi', 'Mexico', 'Malaysia', 'Mozambique', 'Namibia', 'New Caledonia', 'Niger', 'Norfolk Island', 'Nigeria', 'Nicaragua', 'Netherlands', 'Norway', 'Nepal', 'Nauru', 'Niue', 'New Zealand', 'Oman', 'Panama', 'Peru', 'French Polynesia', 'Papua New Guinea', 'Philippines', 'Pakistan', 'Poland', 'Saint Pierre and Miquelon', 'Pitcairn Islands', 'Puerto Rico', 'Palestinian Territory', 'Portugal', 'Palau', 'Paraguay', 'Qatar', 'Reunion', 'Romania', 'Russian Federation', 'Rwanda', 'Saudi Arabia', 'Solomon Islands', 'Seychelles', 'Sudan', 'Sweden', 'Singapore', 'Saint Helena', 'Slovenia', 'Svalbard and Jan Mayen', 'Slovakia', 'Sierra Leone', 'San Marino', 'Senegal', 'Somalia', 'Suriname', 'Sao Tome and Principe', 'El Salvador', 'Syrian Arab Republic', 'Swaziland', 'Turks and Caicos Islands', 'Chad', 'French Southern Territories', 'Togo', 'Thailand', 'Tajikistan', 'Tokelau', 'Turkmenistan', 'Tunisia', 'Tonga', 'Timor-Leste', 'Turkey', 'Trinidad and Tobago', 'Tuvalu', 'Taiwan', 'Tanzania, United Republic of', 'Ukraine', 'Uganda', 'United States Minor Outlying Islands', 'United States', 'Uruguay', 'Uzbekistan', 'Holy See (Vatican City State)', 'Saint Vincent and the Grenadines', 'Venezuela', 'Virgin Islands, British', 'Virgin Islands, U.S.', 'Vietnam', 'Vanuatu', 'Wallis and Futuna', 'Samoa', 'Yemen', 'Mayotte', 'Serbia', 'South Africa', 'Zambia', 'Montenegro', 'Zimbabwe', 'Anonymous Proxy', 'Satellite Provider', 'Other', 'Aland Islands', 'Guernsey', 'Isle of Man', 'Jersey', 'Saint Barthelemy', 'Saint Martin', 'Bonaire, Saint Eustatius and Saba', 'South Sudan', 'Other');
        /**
         * 2 letters continent codes.
         *
         * @var array
         */
        public $GEOIP_CONTINENT_CODES = array('--', 'AS', 'EU', 'EU', 'AS', 'AS', 'NA', 'NA', 'EU', 'AS', 'NA', 'AF', 'AN', 'SA', 'OC', 'EU', 'OC', 'NA', 'AS', 'EU', 'NA', 'AS', 'EU', 'AF', 'EU', 'AS', 'AF', 'AF', 'NA', 'AS', 'SA', 'SA', 'NA', 'AS', 'AN', 'AF', 'EU', 'NA', 'NA', 'AS', 'AF', 'AF', 'AF', 'EU', 'AF', 'OC', 'SA', 'AF', 'AS', 'SA', 'NA', 'NA', 'AF', 'AS', 'AS', 'EU', 'EU', 'AF', 'EU', 'NA', 'NA', 'AF', 'SA', 'EU', 'AF', 'AF', 'AF', 'EU', 'AF', 'EU', 'OC', 'SA', 'OC', 'EU', 'EU', 'NA', 'AF', 'EU', 'NA', 'AS', 'SA', 'AF', 'EU', 'NA', 'AF', 'AF', 'NA', 'AF', 'EU', 'AN', 'NA', 'OC', 'AF', 'SA', 'AS', 'AN', 'NA', 'EU', 'NA', 'EU', 'AS', 'EU', 'AS', 'AS', 'AS', 'AS', 'AS', 'EU', 'EU', 'NA', 'AS', 'AS', 'AF', 'AS', 'AS', 'OC', 'AF', 'NA', 'AS', 'AS', 'AS', 'NA', 'AS', 'AS', 'AS', 'NA', 'EU', 'AS', 'AF', 'AF', 'EU', 'EU', 'EU', 'AF', 'AF', 'EU', 'EU', 'AF', 'OC', 'EU', 'AF', 'AS', 'AS', 'AS', 'OC', 'NA', 'AF', 'NA', 'EU', 'AF', 'AS', 'AF', 'NA', 'AS', 'AF', 'AF', 'OC', 'AF', 'OC', 'AF', 'NA', 'EU', 'EU', 'AS', 'OC', 'OC', 'OC', 'AS', 'NA', 'SA', 'OC', 'OC', 'AS', 'AS', 'EU', 'NA', 'OC', 'NA', 'AS', 'EU', 'OC', 'SA', 'AS', 'AF', 'EU', 'EU', 'AF', 'AS', 'OC', 'AF', 'AF', 'EU', 'AS', 'AF', 'EU', 'EU', 'EU', 'AF', 'EU', 'AF', 'AF', 'SA', 'AF', 'NA', 'AS', 'AF', 'NA', 'AF', 'AN', 'AF', 'AS', 'AS', 'OC', 'AS', 'AF', 'OC', 'AS', 'EU', 'NA', 'OC', 'AS', 'AF', 'EU', 'AF', 'OC', 'NA', 'SA', 'AS', 'EU', 'NA', 'SA', 'NA', 'NA', 'AS', 'OC', 'OC', 'OC', 'AS', 'AF', 'EU', 'AF', 'AF', 'EU', 'AF', '--', '--', '--', 'EU', 'EU', 'EU', 'EU', 'NA', 'NA', 'NA', 'AF', '--');
        /** @var WC_Logger Logger instance */
        public static $log = \false;
        /**
         * Logging method.
         *
         * @param string $message Log message.
         * @param string $level   Optional. Default 'info'.
         *     emergency|alert|critical|error|warning|notice|info|debug
         */
        public static function log($message, $level = 'info')
        {
        }
        /**
         * Open geoip file.
         *
         * @param string $filename
         * @param int    $flags
         */
        public function geoip_open($filename, $flags)
        {
        }
        /**
         * Setup segments.
         *
         * @return WC_Geo_IP instance
         */
        private function _setup_segments()
        {
        }
        /**
         * Close geoip file.
         *
         * @return bool
         */
        public function geoip_close()
        {
        }
        /**
         * Common get record.
         *
         * @param  string $seek_country
         * @return WC_Geo_IP_Record instance
         */
        private function _common_get_record($seek_country)
        {
        }
        /**
         * Get record.
         *
         * @param  int $ipnum
         * @return WC_Geo_IP_Record instance
         */
        private function _get_record($ipnum)
        {
        }
        /**
         * Seek country IPv6.
         *
         * @param  int $ipnum
         * @return string
         */
        public function _geoip_seek_country_v6($ipnum)
        {
        }
        /**
         * Seek country.
         *
         * @param  int $ipnum
         * @return string
         */
        private function _geoip_seek_country($ipnum)
        {
        }
        /**
         * Record by addr.
         *
         * @param  string $addr
         *
         * @return WC_Geo_IP_Record
         */
        public function geoip_record_by_addr($addr)
        {
        }
        /**
         * Country ID by addr IPv6.
         *
         * @param  string $addr
         * @return int|bool
         */
        public function geoip_country_id_by_addr_v6($addr)
        {
        }
        /**
         * Country ID by addr.
         *
         * @param  string $addr
         * @return int
         */
        public function geoip_country_id_by_addr($addr)
        {
        }
        /**
         * Country code by addr IPv6.
         *
         * @param  string $addr
         * @return string
         */
        public function geoip_country_code_by_addr_v6($addr)
        {
        }
        /**
         * Country code by addr.
         *
         * @param  string $addr
         * @return string
         */
        public function geoip_country_code_by_addr($addr)
        {
        }
        /**
         * Encode string.
         *
         * @param  string $string
         * @param  int    $start
         * @param  int    $length
         * @return string
         */
        private function _safe_substr($string, $start, $length)
        {
        }
    }
    /**
     * Geo IP Record class.
     */
    class WC_Geo_IP_Record
    {
        /**
         * Country code.
         *
         * @var string
         */
        public $country_code;
        /**
         * 3 letters country code.
         *
         * @var string
         */
        public $country_code3;
        /**
         * Country name.
         *
         * @var string
         */
        public $country_name;
        /**
         * Region.
         *
         * @var string
         */
        public $region;
        /**
         * City.
         *
         * @var string
         */
        public $city;
        /**
         * Postal code.
         *
         * @var string
         */
        public $postal_code;
        /**
         * Latitude
         *
         * @var int
         */
        public $latitude;
        /**
         * Longitude.
         *
         * @var int
         */
        public $longitude;
        /**
         * Area code.
         *
         * @var int
         */
        public $area_code;
        /**
         * DMA Code.
         *
         * Metro and DMA code are the same.
         * Use metro code instead.
         *
         * @var float
         */
        public $dma_code;
        /**
         * Metro code.
         *
         * @var float
         */
        public $metro_code;
        /**
         * Continent code.
         *
         * @var string
         */
        public $continent_code;
    }
    /**
     * Auth class.
     */
    class WC_Auth
    {
        /**
         * Version.
         *
         * @var int
         */
        const VERSION = 1;
        /**
         * Setup class.
         *
         * @since 2.4.0
         */
        public function __construct()
        {
        }
        /**
         * Add query vars.
         *
         * @since  2.4.0
         * @param  array $vars Query variables.
         * @return string[]
         */
        public function add_query_vars($vars)
        {
        }
        /**
         * Add auth endpoint.
         *
         * @since 2.4.0
         */
        public static function add_endpoint()
        {
        }
        /**
         * Get scope name.
         *
         * @since 2.4.0
         * @param  string $scope Permission scope.
         * @return string
         */
        protected function get_i18n_scope($scope)
        {
        }
        /**
         * Return a list of permissions a scope allows.
         *
         * @since  2.4.0
         * @param  string $scope Permission scope.
         * @return array
         */
        protected function get_permissions_in_scope($scope)
        {
        }
        /**
         * Build auth urls.
         *
         * @since  2.4.0
         * @param  array  $data     Data to build URL.
         * @param  string $endpoint Endpoint.
         * @return string
         */
        protected function build_url($data, $endpoint)
        {
        }
        /**
         * Decode and format a URL.
         *
         * @param  string $url URL.
         * @return string
         */
        protected function get_formatted_url($url)
        {
        }
        /**
         * Make validation.
         *
         * @since  2.4.0
         * @throws Exception When validate fails.
         */
        protected function make_validation()
        {
        }
        /**
         * Create keys.
         *
         * @since  2.4.0
         *
         * @param  string $app_name    App name.
         * @param  string $app_user_id User ID.
         * @param  string $scope       Scope.
         *
         * @return array
         */
        protected function create_keys($app_name, $app_user_id, $scope)
        {
        }
        /**
         * Post consumer data.
         *
         * @since  2.4.0
         *
         * @throws Exception When validation fails.
         * @param  array  $consumer_data Consumer data.
         * @param  string $url           URL.
         * @return bool
         */
        protected function post_consumer_data($consumer_data, $url)
        {
        }
        /**
         * Handle auth requests.
         *
         * @since 2.4.0
         * @throws Exception When auth_endpoint validation fails.
         */
        public function handle_auth_requests()
        {
        }
        /**
         * Auth endpoint.
         *
         * @since 2.4.0
         * @throws Exception When validation fails.
         * @param string $route Route.
         */
        protected function auth_endpoint($route)
        {
        }
        /**
         * Maybe delete key.
         *
         * @since 2.4.0
         *
         * @param array $key Key.
         */
        private function maybe_delete_key($key)
        {
        }
    }
    /**
     * Post data class.
     */
    class WC_Post_Data
    {
        /**
         * Editing term.
         *
         * @var object
         */
        private static $editing_term = \null;
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Link to parent products when getting permalink for variation.
         *
         * @param string  $permalink Permalink.
         * @param WP_Post $post      Post data.
         *
         * @return string
         */
        public static function variation_post_link($permalink, $post)
        {
        }
        /**
         * Sync products queued to sync.
         */
        public static function do_deferred_product_sync()
        {
        }
        /**
         * Sync a product.
         *
         * @param int $product_id Product ID.
         */
        public static function deferred_product_sync($product_id)
        {
        }
        /**
         * When a post status changes.
         *
         * @param string  $new_status New status.
         * @param string  $old_status Old status.
         * @param WP_Post $post       Post data.
         */
        public static function transition_post_status($new_status, $old_status, $post)
        {
        }
        /**
         * Delete product view transients when needed e.g. when post status changes, or visibility/stock status is modified.
         */
        public static function delete_product_query_transients()
        {
        }
        /**
         * Handle type changes.
         *
         * @since 3.0.0
         * @param WC_Product $product Product data.
         * @param string     $from    Origin type.
         * @param string     $to      New type.
         */
        public static function product_type_changed($product, $from, $to)
        {
        }
        /**
         * When editing a term, check for product attributes.
         *
         * @param  int    $term_id  Term ID.
         * @param  int    $tt_id    Term taxonomy ID.
         * @param  string $taxonomy Taxonomy slug.
         */
        public static function edit_term($term_id, $tt_id, $taxonomy)
        {
        }
        /**
         * When a term is edited, check for product attributes and update variations.
         *
         * @param  int    $term_id  Term ID.
         * @param  int    $tt_id    Term taxonomy ID.
         * @param  string $taxonomy Taxonomy slug.
         */
        public static function edited_term($term_id, $tt_id, $taxonomy)
        {
        }
        /**
         * Ensure floats are correctly converted to strings based on PHP locale.
         *
         * @param  null   $check      Whether to allow updating metadata for the given type.
         * @param  int    $object_id  Object ID.
         * @param  string $meta_key   Meta key.
         * @param  mixed  $meta_value Meta value. Must be serializable if non-scalar.
         * @param  mixed  $prev_value If specified, only update existing metadata entries with the specified value. Otherwise, update all entries.
         * @return null|bool
         */
        public static function update_order_item_metadata($check, $object_id, $meta_key, $meta_value, $prev_value)
        {
        }
        /**
         * Ensure floats are correctly converted to strings based on PHP locale.
         *
         * @param  null   $check      Whether to allow updating metadata for the given type.
         * @param  int    $object_id  Object ID.
         * @param  string $meta_key   Meta key.
         * @param  mixed  $meta_value Meta value. Must be serializable if non-scalar.
         * @param  mixed  $prev_value If specified, only update existing metadata entries with the specified value. Otherwise, update all entries.
         * @return null|bool
         */
        public static function update_post_metadata($check, $object_id, $meta_key, $meta_value, $prev_value)
        {
        }
        /**
         * Forces the order posts to have a title in a certain format (containing the date).
         * Forces certain product data based on the product's type, e.g. grouped products cannot have a parent.
         *
         * @param array $data An array of slashed post data.
         * @return array
         */
        public static function wp_insert_post_data($data)
        {
        }
        /**
         * Change embed data for certain post types.
         *
         * @since 3.2.0
         * @param array   $data The response data.
         * @param WP_Post $post The post object.
         * @return array
         */
        public static function filter_oembed_response_data($data, $post)
        {
        }
        /**
         * Removes variations etc belonging to a deleted post, and clears transients.
         *
         * @param mixed $id ID of post being deleted.
         */
        public static function delete_post($id)
        {
        }
        /**
         * Trash post.
         *
         * @param mixed $id Post ID.
         */
        public static function trash_post($id)
        {
        }
        /**
         * Untrash post.
         *
         * @param mixed $id Post ID.
         */
        public static function untrash_post($id)
        {
        }
        /**
         * Before deleting an order, do some cleanup.
         *
         * @since 3.2.0
         * @param int $order_id Order ID.
         */
        public static function before_delete_order($order_id)
        {
        }
        /**
         * Remove item meta on permanent deletion.
         *
         * @param int $postid Post ID.
         */
        public static function delete_order_items($postid)
        {
        }
        /**
         * Remove downloadable permissions on permanent order deletion.
         *
         * @param int $postid Post ID.
         */
        public static function delete_order_downloadable_permissions($postid)
        {
        }
        /**
         * Flush meta cache for CRUD objects on direct update.
         *
         * @param  int    $meta_id    Meta ID.
         * @param  int    $object_id  Object ID.
         * @param  string $meta_key   Meta key.
         * @param  string $meta_value Meta value.
         */
        public static function flush_object_meta_cache($meta_id, $object_id, $meta_key, $meta_value)
        {
        }
        /**
         * Ensure default category gets set.
         *
         * @since 3.3.0
         * @param int    $object_id Product ID.
         * @param array  $terms     Terms array.
         * @param array  $tt_ids    Term ids array.
         * @param string $taxonomy  Taxonomy name.
         * @param bool   $append    Are we appending or setting terms.
         */
        public static function force_default_term($object_id, $terms, $tt_ids, $taxonomy, $append)
        {
        }
        /**
         * When setting stock level, ensure the stock status is kept in sync.
         *
         * @param  int    $meta_id    Meta ID.
         * @param  int    $object_id  Object ID.
         * @param  string $meta_key   Meta key.
         * @param  mixed  $meta_value Meta value.
         * @deprecated    3.3
         */
        public static function sync_product_stock_status($meta_id, $object_id, $meta_key, $meta_value)
        {
        }
        /**
         * Update changed downloads.
         *
         * @deprecated  3.3.0 No action is necessary on changes to download paths since download_id is no longer based on file hash.
         * @param int   $product_id   Product ID.
         * @param int   $variation_id Variation ID. Optional product variation identifier.
         * @param array $downloads    Newly set files.
         */
        public static function process_product_file_download_paths($product_id, $variation_id, $downloads)
        {
        }
        /**
         * Delete transients when terms are set.
         *
         * @deprecated   3.6
         * @param int    $object_id  Object ID.
         * @param mixed  $terms      An array of object terms.
         * @param array  $tt_ids     An array of term taxonomy IDs.
         * @param string $taxonomy   Taxonomy slug.
         * @param mixed  $append     Whether to append new terms to the old terms.
         * @param array  $old_tt_ids Old array of term taxonomy IDs.
         */
        public static function set_object_terms($object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids)
        {
        }
    }
    /**
     * Structured data class.
     */
    class WC_Structured_Data
    {
        /**
         * Stores the structured data.
         *
         * @var array $_data Array of structured data.
         */
        private $_data = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Sets data.
         *
         * @param  array $data  Structured data.
         * @param  bool  $reset Unset data (default: false).
         * @return bool
         */
        public function set_data($data, $reset = \false)
        {
        }
        /**
         * Gets data.
         *
         * @return array
         */
        public function get_data()
        {
        }
        /**
         * Structures and returns data.
         *
         * List of types available by default for specific request:
         *
         * 'product',
         * 'review',
         * 'breadcrumblist',
         * 'website',
         * 'order',
         *
         * @param  array $types Structured data types.
         * @return array
         */
        public function get_structured_data($types)
        {
        }
        /**
         * Get data types for pages.
         *
         * @return array
         */
        protected function get_data_type_for_page()
        {
        }
        /**
         * Makes sure email structured data only outputs on non-plain text versions.
         *
         * @param WP_Order $order         Order data.
         * @param bool     $sent_to_admin Send to admin (default: false).
         * @param bool     $plain_text    Plain text email (default: false).
         */
        public function output_email_structured_data($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
        /**
         * Sanitizes, encodes and outputs structured data.
         *
         * Hooked into `wp_footer` action hook.
         * Hooked into `woocommerce_email_order_details` action hook.
         */
        public function output_structured_data()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Generators
        |--------------------------------------------------------------------------
        |
        | Methods for generating specific structured data types:
        |
        | - Product
        | - Review
        | - BreadcrumbList
        | - WebSite
        | - Order
        |
        | The generated data is stored into `$this->_data`.
        | See the methods above for handling `$this->_data`.
        |
        */
        /**
         * Generates Product structured data.
         *
         * Hooked into `woocommerce_single_product_summary` action hook.
         *
         * @param WC_Product $product Product data (default: null).
         */
        public function generate_product_data($product = \null)
        {
        }
        /**
         * Generates Review structured data.
         *
         * Hooked into `woocommerce_review_meta` action hook.
         *
         * @param WP_Comment $comment Comment data.
         */
        public function generate_review_data($comment)
        {
        }
        /**
         * Generates BreadcrumbList structured data.
         *
         * Hooked into `woocommerce_breadcrumb` action hook.
         *
         * @param WC_Breadcrumb $breadcrumbs Breadcrumb data.
         */
        public function generate_breadcrumblist_data($breadcrumbs)
        {
        }
        /**
         * Generates WebSite structured data.
         *
         * Hooked into `woocommerce_before_main_content` action hook.
         */
        public function generate_website_data()
        {
        }
        /**
         * Generates Order structured data.
         *
         * Hooked into `woocommerce_email_order_details` action hook.
         *
         * @param WP_Order $order         Order data.
         * @param bool     $sent_to_admin Send to admin (default: false).
         * @param bool     $plain_text    Plain text email (default: false).
         */
        public function generate_order_data($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
    }
    /**
     * WC_HTTPS class.
     *
     * @class    WC_HTTPS
     * @version  2.2.0
     * @package  WooCommerce/Classes
     * @category Class
     * @author   WooThemes
     */
    class WC_HTTPS
    {
        /**
         * Hook in our HTTPS functions if we're on the frontend. This will ensure any links output to a page (when viewing via HTTPS) are also served over HTTPS.
         */
        public static function init()
        {
        }
        /**
         * Force https for urls.
         *
         * @param mixed $content
         * @return string
         */
        public static function force_https_url($content)
        {
        }
        /**
         * Force a post link to be SSL if needed.
         *
         * @param string $link
         * @param int $page_id
         *
         * @return string
         */
        public static function force_https_page_link($link, $page_id)
        {
        }
        /**
         * Template redirect - if we end up on a page ensure it has the correct http/https url.
         */
        public static function force_https_template_redirect()
        {
        }
        /**
         * Template redirect - if we end up on a page ensure it has the correct http/https url.
         */
        public static function unforce_https_template_redirect()
        {
        }
        /**
         * Force posts to PayPal to use TLS v1.2. See:
         *        https://core.trac.wordpress.org/ticket/36320
         *        https://core.trac.wordpress.org/ticket/34924#comment:13
         *        https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1914&viewlocale=en_US
         *
         * @param string $handle
         * @param mixed $r
         * @param string $url
         */
        public static function http_api_curl($handle, $r, $url)
        {
        }
    }
    /**
     * Payment gateways class.
     */
    class WC_Payment_Gateways
    {
        /**
         * Payment gateway classes.
         *
         * @var array
         */
        public $payment_gateways = array();
        /**
         * The single instance of the class.
         *
         * @var WC_Payment_Gateways
         * @since 2.1.0
         */
        protected static $_instance = \null;
        /**
         * Main WC_Payment_Gateways Instance.
         *
         * Ensures only one instance of WC_Payment_Gateways is loaded or can be loaded.
         *
         * @since 2.1
         * @return WC_Payment_Gateways Main instance
         */
        public static function instance()
        {
        }
        /**
         * Cloning is forbidden.
         *
         * @since 2.1
         */
        public function __clone()
        {
        }
        /**
         * Unserializing instances of this class is forbidden.
         *
         * @since 2.1
         */
        public function __wakeup()
        {
        }
        /**
         * Initialize payment gateways.
         */
        public function __construct()
        {
        }
        /**
         * Load gateways and hook in functions.
         */
        public function init()
        {
        }
        /**
         * Get gateways.
         *
         * @return array
         */
        public function payment_gateways()
        {
        }
        /**
         * Get array of registered gateway ids
         *
         * @since 2.6.0
         * @return array of strings
         */
        public function get_payment_gateway_ids()
        {
        }
        /**
         * Get available gateways.
         *
         * @return array
         */
        public function get_available_payment_gateways()
        {
        }
        /**
         * Callback for array filter. Returns true if gateway is of correct type.
         *
         * @since 3.6.0
         * @param object $gateway Gateway to check.
         * @return bool
         */
        protected function filter_valid_gateway_class($gateway)
        {
        }
        /**
         * Set the current, active gateway.
         *
         * @param array $gateways Available payment gateways.
         */
        public function set_current_gateway($gateways)
        {
        }
        /**
         * Save options in admin.
         */
        public function process_admin_options()
        {
        }
    }
    /**
     * WC_Deprecated_Hooks class maps old actions and filters to new ones. This is the base class for handling those deprecated hooks.
     *
     * Based on the WCS_Hook_Deprecator class by Prospress.
     */
    abstract class WC_Deprecated_Hooks
    {
        /**
         * Array of deprecated hooks we need to handle.
         *
         * @var array
         */
        protected $deprecated_hooks = array();
        /**
         * Array of versions on each hook has been deprecated.
         *
         * @var array
         */
        protected $deprecated_version = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Hook into the new hook so we can handle deprecated hooks once fired.
         *
         * @param string $hook_name Hook name.
         */
        public abstract function hook_in($hook_name);
        /**
         * Get old hooks to map to new hook.
         *
         * @param  string $new_hook New hook name.
         * @return array
         */
        public function get_old_hooks($new_hook)
        {
        }
        /**
         * If the hook is Deprecated, call the old hooks here.
         */
        public function maybe_handle_deprecated_hook()
        {
        }
        /**
         * If the old hook is in-use, trigger it.
         *
         * @param  string $new_hook          New hook name.
         * @param  string $old_hook          Old hook name.
         * @param  array  $new_callback_args New callback args.
         * @param  mixed  $return_value      Returned value.
         * @return mixed
         */
        public abstract function handle_deprecated_hook($new_hook, $old_hook, $new_callback_args, $return_value);
        /**
         * Get deprecated version.
         *
         * @param string $old_hook Old hook name.
         * @return string
         */
        protected function get_deprecated_version($old_hook)
        {
        }
        /**
         * Display a deprecated notice for old hooks.
         *
         * @param string $old_hook Old hook.
         * @param string $new_hook New hook.
         */
        protected function display_notice($old_hook, $new_hook)
        {
        }
        /**
         * Fire off a legacy hook with it's args.
         *
         * @param  string $old_hook          Old hook name.
         * @param  array  $new_callback_args New callback args.
         * @return mixed
         */
        protected abstract function trigger_hook($old_hook, $new_callback_args);
    }
    /**
     * Handles deprecation notices and triggering of legacy action hooks.
     */
    class WC_Deprecated_Action_Hooks extends \WC_Deprecated_Hooks
    {
        /**
         * Array of deprecated hooks we need to handle. Format of 'new' => 'old'.
         *
         * @var array
         */
        protected $deprecated_hooks = array('woocommerce_new_order_item' => array('woocommerce_order_add_shipping', 'woocommerce_order_add_coupon', 'woocommerce_order_add_tax', 'woocommerce_order_add_fee', 'woocommerce_add_shipping_order_item', 'woocommerce_add_order_item_meta', 'woocommerce_add_order_fee_meta'), 'woocommerce_update_order_item' => array('woocommerce_order_edit_product', 'woocommerce_order_update_coupon', 'woocommerce_order_update_shipping', 'woocommerce_order_update_fee', 'woocommerce_order_update_tax'), 'woocommerce_new_payment_token' => 'woocommerce_payment_token_created', 'woocommerce_new_product_variation' => 'woocommerce_create_product_variation', 'woocommerce_order_details_after_order_table_items' => 'woocommerce_order_items_table', 'woocommerce_settings_advanced_page_options' => array('woocommerce_settings_checkout_page_options', 'woocommerce_settings_account_page_options'), 'woocommerce_settings_advanced_page_options_end' => array('woocommerce_settings_checkout_page_options_end', 'woocommerce_settings_account_page_options_end'), 'woocommerce_settings_advanced_page_options_after' => array('woocommerce_settings_checkout_page_options_after', 'woocommerce_settings_account_page_options_after'));
        /**
         * Array of versions on each hook has been deprecated.
         *
         * @var array
         */
        protected $deprecated_version = array('woocommerce_order_add_shipping' => '3.0.0', 'woocommerce_order_add_coupon' => '3.0.0', 'woocommerce_order_add_tax' => '3.0.0', 'woocommerce_order_add_fee' => '3.0.0', 'woocommerce_add_shipping_order_item' => '3.0.0', 'woocommerce_add_order_item_meta' => '3.0.0', 'woocommerce_add_order_fee_meta' => '3.0.0', 'woocommerce_order_edit_product' => '3.0.0', 'woocommerce_order_update_coupon' => '3.0.0', 'woocommerce_order_update_shipping' => '3.0.0', 'woocommerce_order_update_fee' => '3.0.0', 'woocommerce_order_update_tax' => '3.0.0', 'woocommerce_payment_token_created' => '3.0.0', 'woocommerce_create_product_variation' => '3.0.0', 'woocommerce_order_items_table' => '3.0.0', 'woocommerce_settings_checkout_page_options' => '3.4.0', 'woocommerce_settings_account_page_options' => '3.4.0', 'woocommerce_settings_checkout_page_options_end' => '3.4.0', 'woocommerce_settings_account_page_options_end' => '3.4.0', 'woocommerce_settings_checkout_page_options_after' => '3.4.0', 'woocommerce_settings_account_page_options_after' => '3.4.0');
        /**
         * Hook into the new hook so we can handle deprecated hooks once fired.
         *
         * @param string $hook_name Hook name.
         */
        public function hook_in($hook_name)
        {
        }
        /**
         * If the old hook is in-use, trigger it.
         *
         * @param  string $new_hook          New hook name.
         * @param  string $old_hook          Old hook name.
         * @param  array  $new_callback_args New callback args.
         * @param  mixed  $return_value      Returned value.
         * @return mixed
         */
        public function handle_deprecated_hook($new_hook, $old_hook, $new_callback_args, $return_value)
        {
        }
        /**
         * Fire off a legacy hook with it's args.
         *
         * @param  string $old_hook          Old hook name.
         * @param  array  $new_callback_args New callback args.
         * @return mixed
         */
        protected function trigger_hook($old_hook, $new_callback_args)
        {
        }
    }
    /**
     * Post types Class.
     */
    class WC_Post_Types
    {
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Register core taxonomies.
         */
        public static function register_taxonomies()
        {
        }
        /**
         * Register core post types.
         */
        public static function register_post_types()
        {
        }
        /**
         * Register our custom post statuses, used for order status.
         */
        public static function register_post_status()
        {
        }
        /**
         * Flush rules if the event is queued.
         *
         * @since 3.3.0
         */
        public static function maybe_flush_rewrite_rules()
        {
        }
        /**
         * Flush rewrite rules.
         */
        public static function flush_rewrite_rules()
        {
        }
        /**
         * Disable Gutenberg for products.
         *
         * @param bool   $can_edit Whether the post type can be edited or not.
         * @param string $post_type The post type being checked.
         * @return bool
         */
        public static function gutenberg_can_edit_post_type($can_edit, $post_type)
        {
        }
        /**
         * Add Product Support to Jetpack Omnisearch.
         */
        public static function support_jetpack_omnisearch()
        {
        }
        /**
         * Added product for Jetpack related posts.
         *
         * @param  array $post_types Post types.
         * @return array
         */
        public static function rest_api_allowed_post_types($post_types)
        {
        }
    }
    /**
     * Abstract WC Data Class
     *
     * Implemented by classes using the same CRUD(s) pattern.
     *
     * @version  2.6.0
     * @package  WooCommerce/Abstracts
     */
    abstract class WC_Data
    {
        /**
         * ID for this object.
         *
         * @since 3.0.0
         * @var int
         */
        protected $id = 0;
        /**
         * Core data for this object. Name value pairs (name + default value).
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array();
        /**
         * Core data changes for this object.
         *
         * @since 3.0.0
         * @var array
         */
        protected $changes = array();
        /**
         * This is false until the object is read from the DB.
         *
         * @since 3.0.0
         * @var bool
         */
        protected $object_read = \false;
        /**
         * This is the name of this object type.
         *
         * @since 3.0.0
         * @var string
         */
        protected $object_type = 'data';
        /**
         * Extra data for this object. Name value pairs (name + default value).
         * Used as a standard way for sub classes (like product types) to add
         * additional information to an inherited class.
         *
         * @since 3.0.0
         * @var array
         */
        protected $extra_data = array();
        /**
         * Set to _data on construct so we can track and reset data if needed.
         *
         * @since 3.0.0
         * @var array
         */
        protected $default_data = array();
        /**
         * Contains a reference to the data store for this class.
         *
         * @since 3.0.0
         * @var object
         */
        protected $data_store;
        /**
         * Stores meta in cache for future reads.
         * A group must be set to to enable caching.
         *
         * @since 3.0.0
         * @var string
         */
        protected $cache_group = '';
        /**
         * Stores additional meta data.
         *
         * @since 3.0.0
         * @var array
         */
        protected $meta_data = \null;
        /**
         * Default constructor.
         *
         * @param int|object|array $read ID to load from the DB (optional) or already queried data.
         */
        public function __construct($read = 0)
        {
        }
        /**
         * Only store the object ID to avoid serializing the data object instance.
         *
         * @return array
         */
        public function __sleep()
        {
        }
        /**
         * Re-run the constructor with the object ID.
         *
         * If the object no longer exists, remove the ID.
         */
        public function __wakeup()
        {
        }
        /**
         * When the object is cloned, make sure meta is duplicated correctly.
         *
         * @since 3.0.2
         */
        public function __clone()
        {
        }
        /**
         * Get the data store.
         *
         * @since  3.0.0
         * @return object
         */
        public function get_data_store()
        {
        }
        /**
         * Returns the unique ID for this object.
         *
         * @since  2.6.0
         * @return int
         */
        public function get_id()
        {
        }
        /**
         * Delete an object, set the ID to 0, and return result.
         *
         * @since  2.6.0
         * @param  bool $force_delete Should the date be deleted permanently.
         * @return bool result
         */
        public function delete($force_delete = \false)
        {
        }
        /**
         * Save should create or update based on object existence.
         *
         * @since  2.6.0
         * @return int
         */
        public function save()
        {
        }
        /**
         * Change data to JSON format.
         *
         * @since  2.6.0
         * @return string Data in JSON format.
         */
        public function __toString()
        {
        }
        /**
         * Returns all data for this object.
         *
         * @since  2.6.0
         * @return array
         */
        public function get_data()
        {
        }
        /**
         * Returns array of expected data keys for this object.
         *
         * @since   3.0.0
         * @return array
         */
        public function get_data_keys()
        {
        }
        /**
         * Returns all "extra" data keys for an object (for sub objects like product types).
         *
         * @since  3.0.0
         * @return array
         */
        public function get_extra_data_keys()
        {
        }
        /**
         * Filter null meta values from array.
         *
         * @since  3.0.0
         * @param mixed $meta Meta value to check.
         * @return bool
         */
        protected function filter_null_meta($meta)
        {
        }
        /**
         * Get All Meta Data.
         *
         * @since 2.6.0
         * @return array of objects.
         */
        public function get_meta_data()
        {
        }
        /**
         * Check if the key is an internal one.
         *
         * @since  3.2.0
         * @param  string $key Key to check.
         * @return bool   true if it's an internal key, false otherwise
         */
        protected function is_internal_meta_key($key)
        {
        }
        /**
         * Get Meta Data by Key.
         *
         * @since  2.6.0
         * @param  string $key Meta Key.
         * @param  bool   $single return first found meta with key, or all with $key.
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return mixed
         */
        public function get_meta($key = '', $single = \true, $context = 'view')
        {
        }
        /**
         * See if meta data exists, since get_meta always returns a '' or array().
         *
         * @since  3.0.0
         * @param  string $key Meta Key.
         * @return boolean
         */
        public function meta_exists($key = '')
        {
        }
        /**
         * Set all meta data from array.
         *
         * @since 2.6.0
         * @param array $data Key/Value pairs.
         */
        public function set_meta_data($data)
        {
        }
        /**
         * Add meta data.
         *
         * @since 2.6.0
         *
         * @param string       $key Meta key.
         * @param string|array $value Meta value.
         * @param bool         $unique Should this be a unique key?.
         */
        public function add_meta_data($key, $value, $unique = \false)
        {
        }
        /**
         * Update meta data by key or ID, if provided.
         *
         * @since  2.6.0
         *
         * @param  string       $key Meta key.
         * @param  string|array $value Meta value.
         * @param  int          $meta_id Meta ID.
         */
        public function update_meta_data($key, $value, $meta_id = 0)
        {
        }
        /**
         * Delete meta data.
         *
         * @since 2.6.0
         * @param string $key Meta key.
         */
        public function delete_meta_data($key)
        {
        }
        /**
         * Delete meta data.
         *
         * @since 2.6.0
         * @param int $mid Meta ID.
         */
        public function delete_meta_data_by_mid($mid)
        {
        }
        /**
         * Read meta data if null.
         *
         * @since 3.0.0
         */
        protected function maybe_read_meta_data()
        {
        }
        /**
         * Read Meta Data from the database. Ignore any internal properties.
         * Uses it's own caches because get_metadata does not provide meta_ids.
         *
         * @since 2.6.0
         * @param bool $force_read True to force a new DB read (and update cache).
         */
        public function read_meta_data($force_read = \false)
        {
        }
        /**
         * Update Meta Data in the database.
         *
         * @since 2.6.0
         */
        public function save_meta_data()
        {
        }
        /**
         * Set ID.
         *
         * @since 3.0.0
         * @param int $id ID.
         */
        public function set_id($id)
        {
        }
        /**
         * Set all props to default values.
         *
         * @since 3.0.0
         */
        public function set_defaults()
        {
        }
        /**
         * Set object read property.
         *
         * @since 3.0.0
         * @param boolean $read Should read?.
         */
        public function set_object_read($read = \true)
        {
        }
        /**
         * Get object read property.
         *
         * @since  3.0.0
         * @return boolean
         */
        public function get_object_read()
        {
        }
        /**
         * Set a collection of props in one go, collect any errors, and return the result.
         * Only sets using public methods.
         *
         * @since  3.0.0
         *
         * @param array  $props Key value pairs to set. Key is the prop and should map to a setter function name.
         * @param string $context In what context to run this.
         *
         * @return bool|WP_Error
         */
        public function set_props($props, $context = 'set')
        {
        }
        /**
         * Sets a prop for a setter method.
         *
         * This stores changes in a special array so we can track what needs saving
         * the the DB later.
         *
         * @since 3.0.0
         * @param string $prop Name of prop to set.
         * @param mixed  $value Value of the prop.
         */
        protected function set_prop($prop, $value)
        {
        }
        /**
         * Return data changes only.
         *
         * @since 3.0.0
         * @return array
         */
        public function get_changes()
        {
        }
        /**
         * Merge changes with data and clear.
         *
         * @since 3.0.0
         */
        public function apply_changes()
        {
        }
        /**
         * Prefix for action and filter hooks on data.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_hook_prefix()
        {
        }
        /**
         * Gets a prop for a getter method.
         *
         * Gets the value from either current pending changes, or the data itself.
         * Context controls what happens to the value before it's returned.
         *
         * @since  3.0.0
         * @param  string $prop Name of prop to get.
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return mixed
         */
        protected function get_prop($prop, $context = 'view')
        {
        }
        /**
         * Sets a date prop whilst handling formatting and datetime objects.
         *
         * @since 3.0.0
         * @param string         $prop Name of prop to set.
         * @param string|integer $value Value of the prop.
         */
        protected function set_date_prop($prop, $value)
        {
        }
        /**
         * When invalid data is found, throw an exception unless reading from the DB.
         *
         * @throws WC_Data_Exception Data Exception.
         * @since 3.0.0
         * @param string $code             Error code.
         * @param string $message          Error message.
         * @param int    $http_status_code HTTP status code.
         * @param array  $data             Extra error data.
         */
        protected function error($code, $message, $http_status_code = 400, $data = array())
        {
        }
    }
    /**
     * Legacy Abstract Product
     *
     * Legacy and deprecated functions are here to keep the WC_Abstract_Product
     * clean.
     * This class will be removed in future versions.
     *
     * @version  3.0.0
     * @package  WooCommerce/Abstracts
     * @category Abstract Class
     * @author   WooThemes
     */
    abstract class WC_Abstract_Legacy_Product extends \WC_Data
    {
        /**
         * Magic __isset method for backwards compatibility. Legacy properties which could be accessed directly in the past.
         *
         * @param  string $key Key name.
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic __get method for backwards compatibility. Maps legacy vars to new getters.
         *
         * @param  string $key Key name.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * If set, get the default attributes for a variable product.
         *
         * @deprecated 3.0.0
         * @return array
         */
        public function get_variation_default_attributes()
        {
        }
        /**
         * Returns the gallery attachment ids.
         *
         * @deprecated 3.0.0
         * @return array
         */
        public function get_gallery_attachment_ids()
        {
        }
        /**
         * Set stock level of the product.
         *
         * @deprecated 3.0.0
         *
         * @param int $amount
         * @param string $mode
         *
         * @return int
         */
        public function set_stock($amount = \null, $mode = 'set')
        {
        }
        /**
         * Reduce stock level of the product.
         *
         * @deprecated 3.0.0
         * @param int $amount Amount to reduce by. Default: 1
         * @return int new stock level
         */
        public function reduce_stock($amount = 1)
        {
        }
        /**
         * Increase stock level of the product.
         *
         * @deprecated 3.0.0
         * @param int $amount Amount to increase by. Default 1.
         * @return int new stock level
         */
        public function increase_stock($amount = 1)
        {
        }
        /**
         * Check if the stock status needs changing.
         *
         * @deprecated 3.0.0 Sync is done automatically on read/save, so calling this should not be needed any more.
         */
        public function check_stock_status()
        {
        }
        /**
         * Get and return related products.
         * @deprecated 3.0.0 Use wc_get_related_products instead.
         *
         * @param int $limit
         *
         * @return array
         */
        public function get_related($limit = 5)
        {
        }
        /**
         * Retrieves related product terms.
         * @deprecated 3.0.0 Use wc_get_product_term_ids instead.
         *
         * @param $term
         *
         * @return array
         */
        protected function get_related_terms($term)
        {
        }
        /**
         * Builds the related posts query.
         * @deprecated 3.0.0 Use Product Data Store get_related_products_query instead.
         *
         * @param $cats_array
         * @param $tags_array
         * @param $exclude_ids
         * @param $limit
         */
        protected function build_related_query($cats_array, $tags_array, $exclude_ids, $limit)
        {
        }
        /**
         * Returns the child product.
         * @deprecated 3.0.0 Use wc_get_product instead.
         * @param mixed $child_id
         * @return WC_Product|WC_Product|WC_Product_variation
         */
        public function get_child($child_id)
        {
        }
        /**
         * Functions for getting parts of a price, in html, used by get_price_html.
         *
         * @deprecated 3.0.0
         * @return string
         */
        public function get_price_html_from_text()
        {
        }
        /**
         * Functions for getting parts of a price, in html, used by get_price_html.
         *
         * @deprecated 3.0.0 Use wc_format_sale_price instead.
         * @param  string $from String or float to wrap with 'from' text
         * @param  mixed $to String or float to wrap with 'to' text
         * @return string
         */
        public function get_price_html_from_to($from, $to)
        {
        }
        /**
         * Lists a table of attributes for the product page.
         * @deprecated 3.0.0 Use wc_display_product_attributes instead.
         */
        public function list_attributes()
        {
        }
        /**
         * Returns the price (including tax). Uses customer tax rates. Can work for a specific $qty for more accurate taxes.
         *
         * @deprecated 3.0.0 Use wc_get_price_including_tax instead.
         * @param  int $qty
         * @param  string $price to calculate, left blank to just use get_price()
         * @return string
         */
        public function get_price_including_tax($qty = 1, $price = '')
        {
        }
        /**
         * Returns the price including or excluding tax, based on the 'woocommerce_tax_display_shop' setting.
         *
         * @deprecated 3.0.0 Use wc_get_price_to_display instead.
         * @param  string  $price to calculate, left blank to just use get_price()
         * @param  integer $qty   passed on to get_price_including_tax() or get_price_excluding_tax()
         * @return string
         */
        public function get_display_price($price = '', $qty = 1)
        {
        }
        /**
         * Returns the price (excluding tax) - ignores tax_class filters since the price may *include* tax and thus needs subtracting.
         * Uses store base tax rates. Can work for a specific $qty for more accurate taxes.
         *
         * @deprecated 3.0.0 Use wc_get_price_excluding_tax instead.
         * @param  int $qty
         * @param  string $price to calculate, left blank to just use get_price()
         * @return string
         */
        public function get_price_excluding_tax($qty = 1, $price = '')
        {
        }
        /**
         * Adjust a products price dynamically.
         *
         * @deprecated 3.0.0
         * @param mixed $price
         */
        public function adjust_price($price)
        {
        }
        /**
         * Returns the product categories.
         *
         * @deprecated 3.0.0
         * @param string $sep (default: ', ').
         * @param string $before (default: '').
         * @param string $after (default: '').
         * @return string
         */
        public function get_categories($sep = ', ', $before = '', $after = '')
        {
        }
        /**
         * Returns the product tags.
         *
         * @deprecated 3.0.0
         * @param string $sep (default: ', ').
         * @param string $before (default: '').
         * @param string $after (default: '').
         * @return array
         */
        public function get_tags($sep = ', ', $before = '', $after = '')
        {
        }
        /**
         * Get the product's post data.
         *
         * @deprecated 3.0.0
         * @return WP_Post
         */
        public function get_post_data()
        {
        }
        /**
         * Get the parent of the post.
         *
         * @deprecated 3.0.0
         * @return int
         */
        public function get_parent()
        {
        }
        /**
         * Returns the upsell product ids.
         *
         * @deprecated 3.0.0
         * @return array
         */
        public function get_upsells()
        {
        }
        /**
         * Returns the cross sell product ids.
         *
         * @deprecated 3.0.0
         * @return array
         */
        public function get_cross_sells()
        {
        }
        /**
         * Check if variable product has default attributes set.
         *
         * @deprecated 3.0.0
         * @return bool
         */
        public function has_default_attributes()
        {
        }
        /**
         * Get variation ID.
         *
         * @deprecated 3.0.0
         * @return int
         */
        public function get_variation_id()
        {
        }
        /**
         * Get product variation description.
         *
         * @deprecated 3.0.0
         * @return string
         */
        public function get_variation_description()
        {
        }
        /**
         * Check if all variation's attributes are set.
         *
         * @deprecated 3.0.0
         * @return boolean
         */
        public function has_all_attributes_set()
        {
        }
        /**
         * Returns whether or not the variations parent is visible.
         *
         * @deprecated 3.0.0
         * @return bool
         */
        public function parent_is_visible()
        {
        }
        /**
         * Get total stock - This is the stock of parent and children combined.
         *
         * @deprecated 3.0.0
         * @return int
         */
        public function get_total_stock()
        {
        }
        /**
         * Get formatted variation data with WC < 2.4 back compat and proper formatting of text-based attribute names.
         *
         * @deprecated 3.0.0
         *
         * @param bool $flat
         *
         * @return string
         */
        public function get_formatted_variation_attributes($flat = \false)
        {
        }
        /**
         * Sync variable product prices with the children lowest/highest prices.
         *
         * @deprecated 3.0.0 not used in core.
         *
         * @param int $product_id
         */
        public function variable_product_sync($product_id = 0)
        {
        }
        /**
         * Sync the variable product's attributes with the variations.
         *
         * @param $product
         * @param bool $children
         */
        public static function sync_attributes($product, $children = \false)
        {
        }
        /**
         * Match a variation to a given set of attributes using a WP_Query.
         * @deprecated 3.0.0 in favour of Product data store's find_matching_product_variation.
         *
         * @param array $match_attributes
         */
        public function get_matching_variation($match_attributes = array())
        {
        }
        /**
         * Returns whether or not we are showing dimensions on the product page.
         * @deprecated 3.0.0 Unused.
         * @return bool
         */
        public function enable_dimensions_display()
        {
        }
        /**
         * Returns the product rating in html format.
         *
         * @deprecated 3.0.0
         * @param string $rating (default: '')
         * @return string
         */
        public function get_rating_html($rating = \null)
        {
        }
        /**
         * Sync product rating. Can be called statically.
         *
         * @deprecated 3.0.0
         * @param  int $post_id
         */
        public static function sync_average_rating($post_id)
        {
        }
        /**
         * Sync product rating count. Can be called statically.
         *
         * @deprecated 3.0.0
         * @param  int $post_id
         */
        public static function sync_rating_count($post_id)
        {
        }
        /**
         * Same as get_downloads in CRUD.
         *
         * @deprecated 3.0.0
         * @return array
         */
        public function get_files()
        {
        }
        /**
         * @deprecated 3.0.0 Sync is taken care of during save - no need to call this directly.
         */
        public function grouped_product_sync()
        {
        }
    }
    /**
     * Abstract Product Class
     *
     * The WooCommerce product class handles individual product data.
     *
     * @version 3.0.0
     * @package WooCommerce/Abstracts
     */
    class WC_Product extends \WC_Abstract_Legacy_Product
    {
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'product';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'product';
        /**
         * Cache group.
         *
         * @var string
         */
        protected $cache_group = 'products';
        /**
         * Stores product data.
         *
         * @var array
         */
        protected $data = array('name' => '', 'slug' => '', 'date_created' => \null, 'date_modified' => \null, 'status' => \false, 'featured' => \false, 'catalog_visibility' => 'visible', 'description' => '', 'short_description' => '', 'sku' => '', 'price' => '', 'regular_price' => '', 'sale_price' => '', 'date_on_sale_from' => \null, 'date_on_sale_to' => \null, 'total_sales' => '0', 'tax_status' => 'taxable', 'tax_class' => '', 'manage_stock' => \false, 'stock_quantity' => \null, 'stock_status' => 'instock', 'backorders' => 'no', 'low_stock_amount' => '', 'sold_individually' => \false, 'weight' => '', 'length' => '', 'width' => '', 'height' => '', 'upsell_ids' => array(), 'cross_sell_ids' => array(), 'parent_id' => 0, 'reviews_allowed' => \true, 'purchase_note' => '', 'attributes' => array(), 'default_attributes' => array(), 'menu_order' => 0, 'post_password' => '', 'virtual' => \false, 'downloadable' => \false, 'category_ids' => array(), 'tag_ids' => array(), 'shipping_class_id' => 0, 'downloads' => array(), 'image_id' => '', 'gallery_image_ids' => array(), 'download_limit' => -1, 'download_expiry' => -1, 'rating_counts' => array(), 'average_rating' => 0, 'review_count' => 0);
        /**
         * Supported features such as 'ajax_add_to_cart'.
         *
         * @var array
         */
        protected $supports = array();
        /**
         * Get the product if ID is passed, otherwise the product is new and empty.
         * This class should NOT be instantiated, but the wc_get_product() function
         * should be used. It is possible, but the wc_get_product() is preferred.
         *
         * @param int|WC_Product|object $product Product to init.
         */
        public function __construct($product = 0)
        {
        }
        /**
         * Get internal type. Should return string and *should be overridden* by child classes.
         *
         * The product_type property is deprecated but is used here for BW compatibility with child classes which may be defining product_type and not have a get_type method.
         *
         * @since  3.0.0
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get product name.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get product slug.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_slug($context = 'view')
        {
        }
        /**
         * Get product created date.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_created($context = 'view')
        {
        }
        /**
         * Get product modified date.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_modified($context = 'view')
        {
        }
        /**
         * Get product status.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_status($context = 'view')
        {
        }
        /**
         * If the product is featured.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return boolean
         */
        public function get_featured($context = 'view')
        {
        }
        /**
         * Get catalog visibility.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_catalog_visibility($context = 'view')
        {
        }
        /**
         * Get product description.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_description($context = 'view')
        {
        }
        /**
         * Get product short description.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_short_description($context = 'view')
        {
        }
        /**
         * Get SKU (Stock-keeping unit) - product unique ID.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_sku($context = 'view')
        {
        }
        /**
         * Returns the product's active price.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string price
         */
        public function get_price($context = 'view')
        {
        }
        /**
         * Returns the product's regular price.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string price
         */
        public function get_regular_price($context = 'view')
        {
        }
        /**
         * Returns the product's sale price.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string price
         */
        public function get_sale_price($context = 'view')
        {
        }
        /**
         * Get date on sale from.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_on_sale_from($context = 'view')
        {
        }
        /**
         * Get date on sale to.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_on_sale_to($context = 'view')
        {
        }
        /**
         * Get number total of sales.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_total_sales($context = 'view')
        {
        }
        /**
         * Returns the tax status.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_tax_status($context = 'view')
        {
        }
        /**
         * Returns the tax class.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_tax_class($context = 'view')
        {
        }
        /**
         * Return if product manage stock.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return boolean
         */
        public function get_manage_stock($context = 'view')
        {
        }
        /**
         * Returns number of items available for sale.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int|null
         */
        public function get_stock_quantity($context = 'view')
        {
        }
        /**
         * Return the stock status.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @since  3.0.0
         * @return string
         */
        public function get_stock_status($context = 'view')
        {
        }
        /**
         * Get backorders.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @since  3.0.0
         * @return string yes no or notify
         */
        public function get_backorders($context = 'view')
        {
        }
        /**
         * Get low stock amount.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @since  3.5.0
         * @return int|string Returns empty string if value not set
         */
        public function get_low_stock_amount($context = 'view')
        {
        }
        /**
         * Return if should be sold individually.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @since  3.0.0
         * @return boolean
         */
        public function get_sold_individually($context = 'view')
        {
        }
        /**
         * Returns the product's weight.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_weight($context = 'view')
        {
        }
        /**
         * Returns the product length.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_length($context = 'view')
        {
        }
        /**
         * Returns the product width.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_width($context = 'view')
        {
        }
        /**
         * Returns the product height.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_height($context = 'view')
        {
        }
        /**
         * Returns formatted dimensions.
         *
         * @param  bool $formatted True by default for legacy support - will be false/not set in future versions to return the array only. Use wc_format_dimensions for formatted versions instead.
         * @return string|array
         */
        public function get_dimensions($formatted = \true)
        {
        }
        /**
         * Get upsell IDs.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_upsell_ids($context = 'view')
        {
        }
        /**
         * Get cross sell IDs.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_cross_sell_ids($context = 'view')
        {
        }
        /**
         * Get parent ID.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_parent_id($context = 'view')
        {
        }
        /**
         * Return if reviews is allowed.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_reviews_allowed($context = 'view')
        {
        }
        /**
         * Get purchase note.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_purchase_note($context = 'view')
        {
        }
        /**
         * Returns product attributes.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_attributes($context = 'view')
        {
        }
        /**
         * Get default attributes.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_default_attributes($context = 'view')
        {
        }
        /**
         * Get menu order.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_menu_order($context = 'view')
        {
        }
        /**
         * Get post password.
         *
         * @since  3.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_post_password($context = 'view')
        {
        }
        /**
         * Get category ids.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_category_ids($context = 'view')
        {
        }
        /**
         * Get tag ids.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_tag_ids($context = 'view')
        {
        }
        /**
         * Get virtual.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_virtual($context = 'view')
        {
        }
        /**
         * Returns the gallery attachment ids.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_gallery_image_ids($context = 'view')
        {
        }
        /**
         * Get shipping class ID.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_shipping_class_id($context = 'view')
        {
        }
        /**
         * Get downloads.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_downloads($context = 'view')
        {
        }
        /**
         * Get download expiry.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_download_expiry($context = 'view')
        {
        }
        /**
         * Get downloadable.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_downloadable($context = 'view')
        {
        }
        /**
         * Get download limit.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_download_limit($context = 'view')
        {
        }
        /**
         * Get main image ID.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_image_id($context = 'view')
        {
        }
        /**
         * Get rating count.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array of counts
         */
        public function get_rating_counts($context = 'view')
        {
        }
        /**
         * Get average rating.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return float
         */
        public function get_average_rating($context = 'view')
        {
        }
        /**
         * Get review count.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_review_count($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Functions for setting product data. These should not update anything in the
        | database itself and should only change what is stored in the class
        | object.
        */
        /**
         * Set product name.
         *
         * @since 3.0.0
         * @param string $name Product name.
         */
        public function set_name($name)
        {
        }
        /**
         * Set product slug.
         *
         * @since 3.0.0
         * @param string $slug Product slug.
         */
        public function set_slug($slug)
        {
        }
        /**
         * Set product created date.
         *
         * @since 3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_date_created($date = \null)
        {
        }
        /**
         * Set product modified date.
         *
         * @since 3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_date_modified($date = \null)
        {
        }
        /**
         * Set product status.
         *
         * @since 3.0.0
         * @param string $status Product status.
         */
        public function set_status($status)
        {
        }
        /**
         * Set if the product is featured.
         *
         * @since 3.0.0
         * @param bool|string $featured Whether the product is featured or not.
         */
        public function set_featured($featured)
        {
        }
        /**
         * Set catalog visibility.
         *
         * @since  3.0.0
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         * @param  string $visibility Options: 'hidden', 'visible', 'search' and 'catalog'.
         */
        public function set_catalog_visibility($visibility)
        {
        }
        /**
         * Set product description.
         *
         * @since 3.0.0
         * @param string $description Product description.
         */
        public function set_description($description)
        {
        }
        /**
         * Set product short description.
         *
         * @since 3.0.0
         * @param string $short_description Product short description.
         */
        public function set_short_description($short_description)
        {
        }
        /**
         * Set SKU.
         *
         * @since  3.0.0
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         * @param  string $sku Product SKU.
         */
        public function set_sku($sku)
        {
        }
        /**
         * Set the product's active price.
         *
         * @param string $price Price.
         */
        public function set_price($price)
        {
        }
        /**
         * Set the product's regular price.
         *
         * @since 3.0.0
         * @param string $price Regular price.
         */
        public function set_regular_price($price)
        {
        }
        /**
         * Set the product's sale price.
         *
         * @since 3.0.0
         * @param string $price sale price.
         */
        public function set_sale_price($price)
        {
        }
        /**
         * Set date on sale from.
         *
         * @since 3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_date_on_sale_from($date = \null)
        {
        }
        /**
         * Set date on sale to.
         *
         * @since 3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_date_on_sale_to($date = \null)
        {
        }
        /**
         * Set number total of sales.
         *
         * @since 3.0.0
         * @param int $total Total of sales.
         */
        public function set_total_sales($total)
        {
        }
        /**
         * Set the tax status.
         *
         * @since  3.0.0
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         * @param  string $status Tax status.
         */
        public function set_tax_status($status)
        {
        }
        /**
         * Set the tax class.
         *
         * @since 3.0.0
         * @param string $class Tax class.
         */
        public function set_tax_class($class)
        {
        }
        /**
         * Return an array of valid tax classes
         *
         * @return array valid tax classes
         */
        protected function get_valid_tax_classes()
        {
        }
        /**
         * Set if product manage stock.
         *
         * @since 3.0.0
         * @param bool $manage_stock Whether or not manage stock is enabled.
         */
        public function set_manage_stock($manage_stock)
        {
        }
        /**
         * Set number of items available for sale.
         *
         * @since 3.0.0
         * @param float|null $quantity Stock quantity.
         */
        public function set_stock_quantity($quantity)
        {
        }
        /**
         * Set stock status.
         *
         * @param string $status New status.
         */
        public function set_stock_status($status = 'instock')
        {
        }
        /**
         * Set backorders.
         *
         * @since 3.0.0
         * @param string $backorders Options: 'yes', 'no' or 'notify'.
         */
        public function set_backorders($backorders)
        {
        }
        /**
         * Set low stock amount.
         *
         * @param int|string $amount Empty string if value not set.
         * @since 3.5.0
         */
        public function set_low_stock_amount($amount)
        {
        }
        /**
         * Set if should be sold individually.
         *
         * @since 3.0.0
         * @param bool $sold_individually Whether or not product is sold individually.
         */
        public function set_sold_individually($sold_individually)
        {
        }
        /**
         * Set the product's weight.
         *
         * @since 3.0.0
         * @param float|string $weight Total weight.
         */
        public function set_weight($weight)
        {
        }
        /**
         * Set the product length.
         *
         * @since 3.0.0
         * @param float|string $length Total length.
         */
        public function set_length($length)
        {
        }
        /**
         * Set the product width.
         *
         * @since 3.0.0
         * @param float|string $width Total width.
         */
        public function set_width($width)
        {
        }
        /**
         * Set the product height.
         *
         * @since 3.0.0
         * @param float|string $height Total height.
         */
        public function set_height($height)
        {
        }
        /**
         * Set upsell IDs.
         *
         * @since 3.0.0
         * @param array $upsell_ids IDs from the up-sell products.
         */
        public function set_upsell_ids($upsell_ids)
        {
        }
        /**
         * Set crosssell IDs.
         *
         * @since 3.0.0
         * @param array $cross_sell_ids IDs from the cross-sell products.
         */
        public function set_cross_sell_ids($cross_sell_ids)
        {
        }
        /**
         * Set parent ID.
         *
         * @since 3.0.0
         * @param int $parent_id Product parent ID.
         */
        public function set_parent_id($parent_id)
        {
        }
        /**
         * Set if reviews is allowed.
         *
         * @since 3.0.0
         * @param bool $reviews_allowed Reviews allowed or not.
         */
        public function set_reviews_allowed($reviews_allowed)
        {
        }
        /**
         * Set purchase note.
         *
         * @since 3.0.0
         * @param string $purchase_note Purchase note.
         */
        public function set_purchase_note($purchase_note)
        {
        }
        /**
         * Set product attributes.
         *
         * Attributes are made up of:
         *     id - 0 for product level attributes. ID for global attributes.
         *     name - Attribute name.
         *     options - attribute value or array of term ids/names.
         *     position - integer sort order.
         *     visible - If visible on frontend.
         *     variation - If used for variations.
         * Indexed by unqiue key to allow clearing old ones after a set.
         *
         * @since 3.0.0
         * @param array $raw_attributes Array of WC_Product_Attribute objects.
         */
        public function set_attributes($raw_attributes)
        {
        }
        /**
         * Set default attributes. These will be saved as strings and should map to attribute values.
         *
         * @since 3.0.0
         * @param array $default_attributes List of default attributes.
         */
        public function set_default_attributes($default_attributes)
        {
        }
        /**
         * Set menu order.
         *
         * @since 3.0.0
         * @param int $menu_order Menu order.
         */
        public function set_menu_order($menu_order)
        {
        }
        /**
         * Set post password.
         *
         * @since 3.6.0
         * @param int $post_password Post password.
         */
        public function set_post_password($post_password)
        {
        }
        /**
         * Set the product categories.
         *
         * @since 3.0.0
         * @param array $term_ids List of terms IDs.
         */
        public function set_category_ids($term_ids)
        {
        }
        /**
         * Set the product tags.
         *
         * @since 3.0.0
         * @param array $term_ids List of terms IDs.
         */
        public function set_tag_ids($term_ids)
        {
        }
        /**
         * Set if the product is virtual.
         *
         * @since 3.0.0
         * @param bool|string $virtual Whether product is virtual or not.
         */
        public function set_virtual($virtual)
        {
        }
        /**
         * Set shipping class ID.
         *
         * @since 3.0.0
         * @param int $id Product shipping class id.
         */
        public function set_shipping_class_id($id)
        {
        }
        /**
         * Set if the product is downloadable.
         *
         * @since 3.0.0
         * @param bool|string $downloadable Whether product is downloadable or not.
         */
        public function set_downloadable($downloadable)
        {
        }
        /**
         * Set downloads.
         *
         * @since 3.0.0
         * @param array $downloads_array Array of WC_Product_Download objects or arrays.
         */
        public function set_downloads($downloads_array)
        {
        }
        /**
         * Set download limit.
         *
         * @since 3.0.0
         * @param int|string $download_limit Product download limit.
         */
        public function set_download_limit($download_limit)
        {
        }
        /**
         * Set download expiry.
         *
         * @since 3.0.0
         * @param int|string $download_expiry Product download expiry.
         */
        public function set_download_expiry($download_expiry)
        {
        }
        /**
         * Set gallery attachment ids.
         *
         * @since 3.0.0
         * @param array $image_ids List of image ids.
         */
        public function set_gallery_image_ids($image_ids)
        {
        }
        /**
         * Set main image ID.
         *
         * @since 3.0.0
         * @param int|string $image_id Product image id.
         */
        public function set_image_id($image_id = '')
        {
        }
        /**
         * Set rating counts. Read only.
         *
         * @param array $counts Product rating counts.
         */
        public function set_rating_counts($counts)
        {
        }
        /**
         * Set average rating. Read only.
         *
         * @param float $average Product average rating.
         */
        public function set_average_rating($average)
        {
        }
        /**
         * Set review count. Read only.
         *
         * @param int $count Product review count.
         */
        public function set_review_count($count)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Other Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Ensure properties are set correctly before save.
         *
         * @since 3.0.0
         */
        public function validate_props()
        {
        }
        /**
         * Save data (either create or update depending on if we are working on an existing product).
         *
         * @since  3.0.0
         * @return int
         */
        public function save()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Conditionals
        |--------------------------------------------------------------------------
        */
        /**
         * Check if a product supports a given feature.
         *
         * Product classes should override this to declare support (or lack of support) for a feature.
         *
         * @param  string $feature string The name of a feature to test support for.
         * @return bool True if the product supports the feature, false otherwise.
         * @since  2.5.0
         */
        public function supports($feature)
        {
        }
        /**
         * Returns whether or not the product post exists.
         *
         * @return bool
         */
        public function exists()
        {
        }
        /**
         * Checks the product type.
         *
         * Backwards compatibility with downloadable/virtual.
         *
         * @param  string|array $type Array or string of types.
         * @return bool
         */
        public function is_type($type)
        {
        }
        /**
         * Checks if a product is downloadable.
         *
         * @return bool
         */
        public function is_downloadable()
        {
        }
        /**
         * Checks if a product is virtual (has no shipping).
         *
         * @return bool
         */
        public function is_virtual()
        {
        }
        /**
         * Returns whether or not the product is featured.
         *
         * @return bool
         */
        public function is_featured()
        {
        }
        /**
         * Check if a product is sold individually (no quantities).
         *
         * @return bool
         */
        public function is_sold_individually()
        {
        }
        /**
         * Returns whether or not the product is visible in the catalog.
         *
         * @return bool
         */
        public function is_visible()
        {
        }
        /**
         * Returns false if the product cannot be bought.
         *
         * @return bool
         */
        public function is_purchasable()
        {
        }
        /**
         * Returns whether or not the product is on sale.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function is_on_sale($context = 'view')
        {
        }
        /**
         * Returns whether or not the product has dimensions set.
         *
         * @return bool
         */
        public function has_dimensions()
        {
        }
        /**
         * Returns whether or not the product has weight set.
         *
         * @return bool
         */
        public function has_weight()
        {
        }
        /**
         * Returns whether or not the product can be purchased.
         * This returns true for 'instock' and 'onbackorder' stock statuses.
         *
         * @return bool
         */
        public function is_in_stock()
        {
        }
        /**
         * Checks if a product needs shipping.
         *
         * @return bool
         */
        public function needs_shipping()
        {
        }
        /**
         * Returns whether or not the product is taxable.
         *
         * @return bool
         */
        public function is_taxable()
        {
        }
        /**
         * Returns whether or not the product shipping is taxable.
         *
         * @return bool
         */
        public function is_shipping_taxable()
        {
        }
        /**
         * Returns whether or not the product is stock managed.
         *
         * @return bool
         */
        public function managing_stock()
        {
        }
        /**
         * Returns whether or not the product can be backordered.
         *
         * @return bool
         */
        public function backorders_allowed()
        {
        }
        /**
         * Returns whether or not the product needs to notify the customer on backorder.
         *
         * @return bool
         */
        public function backorders_require_notification()
        {
        }
        /**
         * Check if a product is on backorder.
         *
         * @param  int $qty_in_cart (default: 0).
         * @return bool
         */
        public function is_on_backorder($qty_in_cart = 0)
        {
        }
        /**
         * Returns whether or not the product has enough stock for the order.
         *
         * @param  mixed $quantity Quantity of a product added to an order.
         * @return bool
         */
        public function has_enough_stock($quantity)
        {
        }
        /**
         * Returns whether or not the product has any visible attributes.
         *
         * @return boolean
         */
        public function has_attributes()
        {
        }
        /**
         * Returns whether or not the product has any child product.
         *
         * @return bool
         */
        public function has_child()
        {
        }
        /**
         * Does a child have dimensions?
         *
         * @since  3.0.0
         * @return bool
         */
        public function child_has_dimensions()
        {
        }
        /**
         * Does a child have a weight?
         *
         * @since  3.0.0
         * @return boolean
         */
        public function child_has_weight()
        {
        }
        /**
         * Check if downloadable product has a file attached.
         *
         * @since 1.6.2
         *
         * @param  string $download_id file identifier.
         * @return bool Whether downloadable product has a file attached.
         */
        public function has_file($download_id = '')
        {
        }
        /**
         * Returns whether or not the product has additional options that need
         * selecting before adding to cart.
         *
         * @since  3.0.0
         * @return boolean
         */
        public function has_options()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Non-CRUD Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get the product's title. For products this is the product name.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Product permalink.
         *
         * @return string
         */
        public function get_permalink()
        {
        }
        /**
         * Returns the children IDs if applicable. Overridden by child classes.
         *
         * @return array of IDs
         */
        public function get_children()
        {
        }
        /**
         * If the stock level comes from another product ID, this should be modified.
         *
         * @since  3.0.0
         * @return int
         */
        public function get_stock_managed_by_id()
        {
        }
        /**
         * Returns the price in html format.
         *
         * @param string $deprecated Deprecated param.
         *
         * @return string
         */
        public function get_price_html($deprecated = '')
        {
        }
        /**
         * Get product name with SKU or ID. Used within admin.
         *
         * @return string Formatted product name
         */
        public function get_formatted_name()
        {
        }
        /**
         * Get min quantity which can be purchased at once.
         *
         * @since  3.0.0
         * @return int
         */
        public function get_min_purchase_quantity()
        {
        }
        /**
         * Get max quantity which can be purchased at once.
         *
         * @since  3.0.0
         * @return int Quantity or -1 if unlimited.
         */
        public function get_max_purchase_quantity()
        {
        }
        /**
         * Get the add to url used mainly in loops.
         *
         * @return string
         */
        public function add_to_cart_url()
        {
        }
        /**
         * Get the add to cart button text for the single page.
         *
         * @return string
         */
        public function single_add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text.
         *
         * @return string
         */
        public function add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text description - used in aria tags.
         *
         * @since  3.3.0
         * @return string
         */
        public function add_to_cart_description()
        {
        }
        /**
         * Returns the main product image.
         *
         * @param  string $size (default: 'woocommerce_thumbnail').
         * @param  array  $attr Image attributes.
         * @param  bool   $placeholder True to return $placeholder if no image is found, or false to return an empty string.
         * @return string
         */
        public function get_image($size = 'woocommerce_thumbnail', $attr = array(), $placeholder = \true)
        {
        }
        /**
         * Returns the product shipping class SLUG.
         *
         * @return string
         */
        public function get_shipping_class()
        {
        }
        /**
         * Returns a single product attribute as a string.
         *
         * @param  string $attribute to get.
         * @return string
         */
        public function get_attribute($attribute)
        {
        }
        /**
         * Get the total amount (COUNT) of ratings, or just the count for one rating e.g. number of 5 star ratings.
         *
         * @param  int $value Optional. Rating value to get the count for. By default returns the count of all rating values.
         * @return int
         */
        public function get_rating_count($value = \null)
        {
        }
        /**
         * Get a file by $download_id.
         *
         * @param  string $download_id file identifier.
         * @return array|false if not found
         */
        public function get_file($download_id = '')
        {
        }
        /**
         * Get file download path identified by $download_id.
         *
         * @param  string $download_id file identifier.
         * @return string
         */
        public function get_file_download_path($download_id)
        {
        }
        /**
         * Get the suffix to display after prices > 0.
         *
         * @param  string  $price to calculate, left blank to just use get_price().
         * @param  integer $qty   passed on to get_price_including_tax() or get_price_excluding_tax().
         * @return string
         */
        public function get_price_suffix($price = '', $qty = 1)
        {
        }
        /**
         * Returns the availability of the product.
         *
         * @return string[]
         */
        public function get_availability()
        {
        }
        /**
         * Get availability text based on stock status.
         *
         * @return string
         */
        protected function get_availability_text()
        {
        }
        /**
         * Get availability classname based on stock status.
         *
         * @return string
         */
        protected function get_availability_class()
        {
        }
    }
    /**
     * Variable product class.
     */
    class WC_Product_Variable extends \WC_Product
    {
        /**
         * Array of children variation IDs. Determined by children.
         *
         * @var array
         */
        protected $children = \null;
        /**
         * Array of visible children variation IDs. Determined by children.
         *
         * @var array
         */
        protected $visible_children = \null;
        /**
         * Array of variation attributes IDs. Determined by children.
         *
         * @var array
         */
        protected $variation_attributes = \null;
        /**
         * Get internal type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get the add to cart button text.
         *
         * @return string
         */
        public function add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text description - used in aria tags.
         *
         * @since 3.3.0
         * @return string
         */
        public function add_to_cart_description()
        {
        }
        /**
         * Get an array of all sale and regular prices from all variations. This is used for example when displaying the price range at variable product level or seeing if the variable product is on sale.
         *
         * @param  bool $for_display If true, prices will be adapted for display based on the `woocommerce_tax_display_shop` setting (including or excluding taxes).
         * @return array Array of RAW prices, regular prices, and sale prices with keys set to variation ID.
         */
        public function get_variation_prices($for_display = \false)
        {
        }
        /**
         * Get the min or max variation regular price.
         *
         * @param  string  $min_or_max Min or max price.
         * @param  boolean $for_display If true, prices will be adapted for display based on the `woocommerce_tax_display_shop` setting (including or excluding taxes).
         * @return string
         */
        public function get_variation_regular_price($min_or_max = 'min', $for_display = \false)
        {
        }
        /**
         * Get the min or max variation sale price.
         *
         * @param  string  $min_or_max Min or max price.
         * @param  boolean $for_display If true, prices will be adapted for display based on the `woocommerce_tax_display_shop` setting (including or excluding taxes).
         * @return string
         */
        public function get_variation_sale_price($min_or_max = 'min', $for_display = \false)
        {
        }
        /**
         * Get the min or max variation (active) price.
         *
         * @param  string  $min_or_max Min or max price.
         * @param  boolean $for_display If true, prices will be adapted for display based on the `woocommerce_tax_display_shop` setting (including or excluding taxes).
         * @return string
         */
        public function get_variation_price($min_or_max = 'min', $for_display = \false)
        {
        }
        /**
         * Returns the price in html format.
         *
         * Note: Variable prices do not show suffixes like other product types. This
         * is due to some things like tax classes being set at variation level which
         * could differ from the parent price. The only way to show accurate prices
         * would be to load the variation and get IT's price, which adds extra
         * overhead and still has edge cases where the values would be inaccurate.
         *
         * Additionally, ranges of prices no longer show 'striked out' sale prices
         * due to the strings being very long and unclear/confusing. A single range
         * is shown instead.
         *
         * @param string $price Price (default: '').
         * @return string
         */
        public function get_price_html($price = '')
        {
        }
        /**
         * Get the suffix to display after prices > 0.
         *
         * This is skipped if the suffix
         * has dynamic values such as {price_excluding_tax} for variable products.
         *
         * @see get_price_html for an explanation as to why.
         * @param  string  $price Price to calculate, left blank to just use get_price().
         * @param  integer $qty   Quantity passed on to get_price_including_tax() or get_price_excluding_tax().
         * @return string
         */
        public function get_price_suffix($price = '', $qty = 1)
        {
        }
        /**
         * Return a products child ids.
         *
         * This is lazy loaded as it's not used often and does require several queries.
         *
         * @param bool|string $visible_only Visible only.
         * @return array Children ids
         */
        public function get_children($visible_only = '')
        {
        }
        /**
         * Return a products child ids - visible only.
         *
         * This is lazy loaded as it's not used often and does require several queries.
         *
         * @since 3.0.0
         * @return array Children ids
         */
        public function get_visible_children()
        {
        }
        /**
         * Return an array of attributes used for variations, as well as their possible values.
         *
         * This is lazy loaded as it's not used often and does require several queries.
         *
         * @return array Attributes and their available values
         */
        public function get_variation_attributes()
        {
        }
        /**
         * If set, get the default attributes for a variable product.
         *
         * @param string $attribute_name Attribute name.
         * @return string
         */
        public function get_variation_default_attribute($attribute_name)
        {
        }
        /**
         * Variable products themselves cannot be downloadable.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_downloadable($context = 'view')
        {
        }
        /**
         * Variable products themselves cannot be virtual.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_virtual($context = 'view')
        {
        }
        /**
         * Get an array of available variations for the current product.
         *
         * @return array
         */
        public function get_available_variations()
        {
        }
        /**
         * Returns an array of data for a variation. Used in the add to cart form.
         *
         * @since  2.4.0
         * @param  WC_Product $variation Variation product object or ID.
         * @return array|bool
         */
        public function get_available_variation($variation)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Sets an array of variation attributes.
         *
         * @since 3.0.0
         * @param array $variation_attributes Attributes list.
         */
        public function set_variation_attributes($variation_attributes)
        {
        }
        /**
         * Sets an array of children for the product.
         *
         * @since 3.0.0
         * @param array $children Childre products.
         */
        public function set_children($children)
        {
        }
        /**
         * Sets an array of visible children only.
         *
         * @since 3.0.0
         * @param array $visible_children List of visible children products.
         */
        public function set_visible_children($visible_children)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD methods
        |--------------------------------------------------------------------------
        */
        /**
         * Ensure properties are set correctly before save.
         *
         * @since 3.0.0
         */
        public function validate_props()
        {
        }
        /**
         * Save data (either create or update depending on if we are working on an existing product).
         *
         * @since 3.0.0
         */
        public function save()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Conditionals
        |--------------------------------------------------------------------------
        */
        /**
         * Returns whether or not the product is on sale.
         *
         * @param  string $context What the value is for. Valid values are view and edit. What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function is_on_sale($context = 'view')
        {
        }
        /**
         * Is a child in stock?
         *
         * @return boolean
         */
        public function child_is_in_stock()
        {
        }
        /**
         * Is a child on backorder?
         *
         * @since 3.3.0
         * @return boolean
         */
        public function child_is_on_backorder()
        {
        }
        /**
         * Does a child have a weight set?
         *
         * @return boolean
         */
        public function child_has_weight()
        {
        }
        /**
         * Does a child have dimensions set?
         *
         * @return boolean
         */
        public function child_has_dimensions()
        {
        }
        /**
         * Returns whether or not the product has dimensions set.
         *
         * @return bool
         */
        public function has_dimensions()
        {
        }
        /**
         * Returns whether or not the product has weight set.
         *
         * @return bool
         */
        public function has_weight()
        {
        }
        /**
         * Returns whether or not the product has additional options that need
         * selecting before adding to cart.
         *
         * @since  3.0.0
         * @return boolean
         */
        public function has_options()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Sync with child variations.
        |--------------------------------------------------------------------------
        */
        /**
         * Sync a variable product with it's children. These sync functions sync
         * upwards (from child to parent) when the variation is saved.
         *
         * @param WC_Product|int $product Product object or ID for which you wish to sync.
         * @param bool           $save If true, the product object will be saved to the DB before returning it.
         * @return WC_Product Synced product object.
         */
        public static function sync($product, $save = \true)
        {
        }
        /**
         * Sync parent stock status with the status of all children and save.
         *
         * @param WC_Product|int $product Product object or ID for which you wish to sync.
         * @param bool           $save If true, the product object will be saved to the DB before returning it.
         * @return WC_Product Synced product object.
         */
        public static function sync_stock_status($product, $save = \true)
        {
        }
        /**
         * Sort an associativate array of $variation_id => $price pairs in order of min and max prices.
         *
         * @param array $prices Associativate array of $variation_id => $price pairs.
         * @return array
         */
        protected function sort_variation_prices($prices)
        {
        }
    }
    /**
     * Legacy Abstract Order
     *
     * Legacy and deprecated functions are here to keep the WC_Abstract_Order clean.
     * This class will be removed in future versions.
     *
     * @version	 3.0.0
     * @package	 WooCommerce/Abstracts
     * @category	Abstract Class
     * @author	  WooThemes
     */
    abstract class WC_Abstract_Legacy_Order extends \WC_Data
    {
        /**
         * Add coupon code to the order.
         * @param string|array $code
         * @param int $discount tax amount.
         * @param int $discount_tax amount.
         * @return int order item ID
         * @throws WC_Data_Exception
         */
        public function add_coupon($code = array(), $discount = 0, $discount_tax = 0)
        {
        }
        /**
         * Add a tax row to the order.
         * @param int $tax_rate_id
         * @param int $tax_amount amount of tax.
         * @param int $shipping_tax_amount shipping amount.
         * @return int order item ID
         * @throws WC_Data_Exception
         */
        public function add_tax($tax_rate_id, $tax_amount = 0, $shipping_tax_amount = 0)
        {
        }
        /**
         * Add a shipping row to the order.
         * @param WC_Shipping_Rate shipping_rate
         * @return int order item ID
         * @throws WC_Data_Exception
         */
        public function add_shipping($shipping_rate)
        {
        }
        /**
         * Add a fee to the order.
         * Order must be saved prior to adding items.
         *
         * Fee is an amount of money charged for a particular piece of work
         * or for a particular right or service, and not supposed to be negative.
         *
         * @throws WC_Data_Exception
         * @param  object $fee Fee data.
         * @return int         Updated order item ID.
         */
        public function add_fee($fee)
        {
        }
        /**
         * Update a line item for the order.
         *
         * Note this does not update order totals.
         *
         * @param object|int $item order item ID or item object.
         * @param WC_Product $product
         * @param array $args data to update.
         * @return int updated order item ID
         * @throws WC_Data_Exception
         */
        public function update_product($item, $product, $args)
        {
        }
        /**
         * Update coupon for order. Note this does not update order totals.
         * @param object|int $item
         * @param array $args
         * @return int updated order item ID
         * @throws WC_Data_Exception
         */
        public function update_coupon($item, $args)
        {
        }
        /**
         * Update shipping method for order.
         *
         * Note this does not update the order total.
         *
         * @param object|int $item
         * @param array $args
         * @return int updated order item ID
         * @throws WC_Data_Exception
         */
        public function update_shipping($item, $args)
        {
        }
        /**
         * Update fee for order.
         *
         * Note this does not update order totals.
         *
         * @param object|int $item
         * @param array $args
         * @return int updated order item ID
         * @throws WC_Data_Exception
         */
        public function update_fee($item, $args)
        {
        }
        /**
         * Update tax line on order.
         * Note this does not update order totals.
         *
         * @since 3.0
         * @param object|int $item
         * @param array $args
         * @return int updated order item ID
         * @throws WC_Data_Exception
         */
        public function update_tax($item, $args)
        {
        }
        /**
         * Get a product (either product or variation).
         * @deprecated Add deprecation notices in future release. Replaced with $item->get_product()
         * @param object $item
         * @return WC_Product|bool
         */
        public function get_product_from_item($item)
        {
        }
        /**
         * Set the customer address.
         * @param array $address Address data.
         * @param string $type billing or shipping.
         */
        public function set_address($address, $type = 'billing')
        {
        }
        /**
         * Set an order total.
         * @param float $amount
         * @param string $total_type
         * @return bool
         */
        public function legacy_set_total($amount, $total_type = 'total')
        {
        }
        /**
         * Magic __isset method for backwards compatibility. Handles legacy properties which could be accessed directly in the past.
         *
         * @param string $key
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic __get method for backwards compatibility.
         *
         * @param string $key
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * has_meta function for order items. This is different to the WC_Data
         * version and should be removed in future versions.
         *
         * @deprecated
         *
         * @param int $order_item_id
         *
         * @return array of meta data.
         */
        public function has_meta($order_item_id)
        {
        }
        /**
         * Display meta data belonging to an item.
         * @param  array $item
         */
        public function display_item_meta($item)
        {
        }
        /**
         * Display download links for an order item.
         * @param  array $item
         */
        public function display_item_downloads($item)
        {
        }
        /**
         * Get the Download URL.
         *
         * @param  int $product_id
         * @param  int $download_id
         * @return string
         */
        public function get_download_url($product_id, $download_id)
        {
        }
        /**
         * Get the downloadable files for an item in this order.
         *
         * @param  array $item
         * @return array
         */
        public function get_item_downloads($item)
        {
        }
        /**
         * Gets shipping total. Alias of WC_Order::get_shipping_total().
         * @deprecated 3.0.0 since this is an alias only.
         * @return float
         */
        public function get_total_shipping()
        {
        }
        /**
         * Get order item meta.
         * @deprecated 3.0.0
         * @param mixed $order_item_id
         * @param string $key (default: '')
         * @param bool $single (default: false)
         * @return array|string
         */
        public function get_item_meta($order_item_id, $key = '', $single = \false)
        {
        }
        /**
         * Get all item meta data in array format in the order it was saved. Does not group meta by key like get_item_meta().
         *
         * @param mixed $order_item_id
         * @return array of objects
         */
        public function get_item_meta_array($order_item_id)
        {
        }
        /**
         * Get coupon codes only.
         *
         * @deprecated 3.7.0 - Replaced with better named method to reflect the actual data being returned.
         * @return array
         */
        public function get_used_coupons()
        {
        }
        /**
         * Expand item meta into the $item array.
         * @deprecated 3.0.0 Item meta no longer expanded due to new order item
         *		classes. This function now does nothing to avoid data breakage.
         * @param array $item before expansion.
         * @return array
         */
        public function expand_item_meta($item)
        {
        }
        /**
         * Load the order object. Called from the constructor.
         * @deprecated 3.0.0 Logic moved to constructor
         * @param int|object|WC_Order $order Order to init.
         */
        protected function init($order)
        {
        }
        /**
         * Gets an order from the database.
         * @deprecated 3.0
         * @param int $id (default: 0).
         * @return bool
         */
        public function get_order($id = 0)
        {
        }
        /**
         * Populates an order from the loaded post data.
         * @deprecated 3.0
         * @param mixed $result
         */
        public function populate($result)
        {
        }
        /**
         * Cancel the order and restore the cart (before payment).
         * @deprecated 3.0.0 Moved to event handler.
         * @param string $note (default: '') Optional note to add.
         */
        public function cancel_order($note = '')
        {
        }
        /**
         * Record sales.
         * @deprecated 3.0.0
         */
        public function record_product_sales()
        {
        }
        /**
         * Increase applied coupon counts.
         * @deprecated 3.0.0
         */
        public function increase_coupon_usage_counts()
        {
        }
        /**
         * Decrease applied coupon counts.
         * @deprecated 3.0.0
         */
        public function decrease_coupon_usage_counts()
        {
        }
        /**
         * Reduce stock levels for all line items in the order.
         * @deprecated 3.0.0
         */
        public function reduce_order_stock()
        {
        }
        /**
         * Send the stock notifications.
         * @deprecated 3.0.0 No longer needs to be called directly.
         *
         * @param $product
         * @param $new_stock
         * @param $qty_ordered
         */
        public function send_stock_notifications($product, $new_stock, $qty_ordered)
        {
        }
        /**
         * Output items for display in html emails.
         * @deprecated 3.0.0 Moved to template functions.
         * @param array $args Items args.
         * @return string
         */
        public function email_order_items_table($args = array())
        {
        }
        /**
         * Get currency.
         * @deprecated 3.0.0
         */
        public function get_order_currency()
        {
        }
    }
    /**
     * WC_Abstract_Order class.
     */
    abstract class WC_Abstract_Order extends \WC_Abstract_Legacy_Order
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * Notes: cart_tax = cart_tax is the new name for the legacy 'order_tax'
         * which is the tax for items only, not shipping.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('parent_id' => 0, 'status' => '', 'currency' => '', 'version' => '', 'prices_include_tax' => \false, 'date_created' => \null, 'date_modified' => \null, 'discount_total' => 0, 'discount_tax' => 0, 'shipping_total' => 0, 'shipping_tax' => 0, 'cart_tax' => 0, 'total' => 0, 'total_tax' => 0);
        /**
         * Order items will be stored here, sometimes before they persist in the DB.
         *
         * @since 3.0.0
         * @var array
         */
        protected $items = array();
        /**
         * Order items that need deleting are stored here.
         *
         * @since 3.0.0
         * @var array
         */
        protected $items_to_delete = array();
        /**
         * Stores meta in cache for future reads.
         *
         * A group must be set to to enable caching.
         *
         * @var string
         */
        protected $cache_group = 'orders';
        /**
         * Which data store to load.
         *
         * @var string
         */
        protected $data_store_name = 'order';
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'order';
        /**
         * Get the order if ID is passed, otherwise the order is new and empty.
         * This class should NOT be instantiated, but the get_order function or new WC_Order_Factory.
         * should be used. It is possible, but the aforementioned are preferred and are the only.
         * methods that will be maintained going forward.
         *
         * @param  int|object|WC_Order $order Order to read.
         */
        public function __construct($order = 0)
        {
        }
        /**
         * Get internal type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get all class data in array format.
         *
         * @since 3.0.0
         * @return array
         */
        public function get_data()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD methods
        |--------------------------------------------------------------------------
        |
        | Methods which create, read, update and delete orders from the database.
        | Written in abstract fashion so that the way orders are stored can be
        | changed more easily in the future.
        |
        | A save method is included for convenience (chooses update or create based
        | on if the order exists yet).
        |
        */
        /**
         * Save data to the database.
         *
         * @since 3.0.0
         * @return int order ID
         */
        public function save()
        {
        }
        /**
         * Log an error about this order is exception is encountered.
         *
         * @param Exception $e Exception object.
         * @param string    $message Message regarding exception thrown.
         * @since 3.7.0
         */
        protected function handle_exception($e, $message = 'Error')
        {
        }
        /**
         * Save all order items which are part of this order.
         */
        protected function save_items()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get parent order ID.
         *
         * @since 3.0.0
         * @param  string $context View or edit context.
         * @return integer
         */
        public function get_parent_id($context = 'view')
        {
        }
        /**
         * Gets order currency.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_currency($context = 'view')
        {
        }
        /**
         * Get order_version.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_version($context = 'view')
        {
        }
        /**
         * Get prices_include_tax.
         *
         * @param  string $context View or edit context.
         * @return bool
         */
        public function get_prices_include_tax($context = 'view')
        {
        }
        /**
         * Get date_created.
         *
         * @param  string $context View or edit context.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_created($context = 'view')
        {
        }
        /**
         * Get date_modified.
         *
         * @param  string $context View or edit context.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_modified($context = 'view')
        {
        }
        /**
         * Return the order statuses without wc- internal prefix.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_status($context = 'view')
        {
        }
        /**
         * Get discount_total.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_discount_total($context = 'view')
        {
        }
        /**
         * Get discount_tax.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_discount_tax($context = 'view')
        {
        }
        /**
         * Get shipping_total.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_shipping_total($context = 'view')
        {
        }
        /**
         * Get shipping_tax.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_shipping_tax($context = 'view')
        {
        }
        /**
         * Gets cart tax amount.
         *
         * @param  string $context View or edit context.
         * @return float
         */
        public function get_cart_tax($context = 'view')
        {
        }
        /**
         * Gets order grand total. incl. taxes. Used in gateways.
         *
         * @param  string $context View or edit context.
         * @return float
         */
        public function get_total($context = 'view')
        {
        }
        /**
         * Get total tax amount. Alias for get_order_tax().
         *
         * @param  string $context View or edit context.
         * @return float
         */
        public function get_total_tax($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Non-CRUD Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Gets the total discount amount.
         *
         * @param  bool $ex_tax Show discount excl any tax.
         * @return float
         */
        public function get_total_discount($ex_tax = \true)
        {
        }
        /**
         * Gets order subtotal.
         *
         * @return float
         */
        public function get_subtotal()
        {
        }
        /**
         * Get taxes, merged by code, formatted ready for output.
         *
         * @return array
         */
        public function get_tax_totals()
        {
        }
        /**
         * Get all valid statuses for this order
         *
         * @since 3.0.0
         * @return array Internal status keys e.g. 'wc-processing'
         */
        protected function get_valid_statuses()
        {
        }
        /**
         * Get user ID. Used by orders, not other order types like refunds.
         *
         * @param  string $context View or edit context.
         * @return int
         */
        public function get_user_id($context = 'view')
        {
        }
        /**
         * Get user. Used by orders, not other order types like refunds.
         *
         * @return WP_User|false
         */
        public function get_user()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Functions for setting order data. These should not update anything in the
        | database itself and should only change what is stored in the class
        | object. However, for backwards compatibility pre 3.0.0 some of these
        | setters may handle both.
        */
        /**
         * Set parent order ID.
         *
         * @since 3.0.0
         * @param int $value Value to set.
         * @throws WC_Data_Exception Exception thrown if parent ID does not exist or is invalid.
         */
        public function set_parent_id($value)
        {
        }
        /**
         * Set order status.
         *
         * @since 3.0.0
         * @param string $new_status Status to change the order to. No internal wc- prefix is required.
         * @return array details of change
         */
        public function set_status($new_status)
        {
        }
        /**
         * Set order_version.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_version($value)
        {
        }
        /**
         * Set order_currency.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_currency($value)
        {
        }
        /**
         * Set prices_include_tax.
         *
         * @param bool $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_prices_include_tax($value)
        {
        }
        /**
         * Set date_created.
         *
         * @param  string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if there is no date.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_date_created($date = \null)
        {
        }
        /**
         * Set date_modified.
         *
         * @param  string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if there is no date.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_date_modified($date = \null)
        {
        }
        /**
         * Set discount_total.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_discount_total($value)
        {
        }
        /**
         * Set discount_tax.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_discount_tax($value)
        {
        }
        /**
         * Set shipping_total.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_shipping_total($value)
        {
        }
        /**
         * Set shipping_tax.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_shipping_tax($value)
        {
        }
        /**
         * Set cart tax.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_cart_tax($value)
        {
        }
        /**
         * Sets order tax (sum of cart and shipping tax). Used internally only.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        protected function set_total_tax($value)
        {
        }
        /**
         * Set total.
         *
         * @param string $value Value to set.
         * @param string $deprecated Function used to set different totals based on this.
         *
         * @return bool|void
         * @throws WC_Data_Exception Exception may be thrown if value is invalid.
         */
        public function set_total($value, $deprecated = '')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Order Item Handling
        |--------------------------------------------------------------------------
        |
        | Order items are used for products, taxes, shipping, and fees within
        | each order.
        */
        /**
         * Remove all line items (products, coupons, shipping, taxes) from the order.
         *
         * @param string $type Order item type. Default null.
         */
        public function remove_order_items($type = \null)
        {
        }
        /**
         * Convert a type to a types group.
         *
         * @param string $type type to lookup.
         * @return string
         */
        protected function type_to_group($type)
        {
        }
        /**
         * Return an array of items/products within this order.
         *
         * @param string|array $types Types of line items to get (array or string).
         * @return WC_Order_Item[]
         */
        public function get_items($types = 'line_item')
        {
        }
        /**
         * Return an array of coupons within this order.
         *
         * @since  3.7.0
         * @return WC_Order_Item_Coupon[]
         */
        public function get_coupons()
        {
        }
        /**
         * Return an array of fees within this order.
         *
         * @return WC_Order_item_Fee[]
         */
        public function get_fees()
        {
        }
        /**
         * Return an array of taxes within this order.
         *
         * @return WC_Order_Item_Tax[]
         */
        public function get_taxes()
        {
        }
        /**
         * Return an array of shipping costs within this order.
         *
         * @return WC_Order_Item_Shipping[]
         */
        public function get_shipping_methods()
        {
        }
        /**
         * Gets formatted shipping method title.
         *
         * @return string
         */
        public function get_shipping_method()
        {
        }
        /**
         * Get used coupon codes only.
         *
         * @since 3.7.0
         * @return array
         */
        public function get_coupon_codes()
        {
        }
        /**
         * Gets the count of order items of a certain type.
         *
         * @param string $item_type Item type to lookup.
         * @return int|string
         */
        public function get_item_count($item_type = '')
        {
        }
        /**
         * Get an order item object, based on its type.
         *
         * @since  3.0.0
         * @param  int  $item_id ID of item to get.
         * @param  bool $load_from_db Prior to 3.2 this item was loaded direct from WC_Order_Factory, not this object. This param is here for backwards compatility with that. If false, uses the local items variable instead.
         * @return WC_Order_Item|false
         */
        public function get_item($item_id, $load_from_db = \true)
        {
        }
        /**
         * Get key for where a certain item type is stored in _items.
         *
         * @since  3.0.0
         * @param  string $item object Order item (product, shipping, fee, coupon, tax).
         * @return string
         */
        protected function get_items_key($item)
        {
        }
        /**
         * Remove item from the order.
         *
         * @param int $item_id Item ID to delete.
         * @return false|void
         */
        public function remove_item($item_id)
        {
        }
        /**
         * Adds an order item to this order. The order item will not persist until save.
         *
         * @since 3.0.0
         * @param WC_Order_Item $item Order item object (product, shipping, fee, coupon, tax).
         * @return false|void
         */
        public function add_item($item)
        {
        }
        /**
         * Apply a coupon to the order and recalculate totals.
         *
         * @since 3.2.0
         * @param string|WC_Coupon $raw_coupon Coupon code or object.
         * @return true|WP_Error True if applied, error if not.
         */
        public function apply_coupon($raw_coupon)
        {
        }
        /**
         * Remove a coupon from the order and recalculate totals.
         *
         * Coupons affect line item totals, but there is no relationship between
         * coupon and line total, so to remove a coupon we need to work from the
         * line subtotal (price before discount) and re-apply all coupons in this
         * order.
         *
         * Manual discounts are not affected; those are separate and do not affect
         * stored line totals.
         *
         * @since  3.2.0
         * @param  string $code Coupon code.
         * @return void
         */
        public function remove_coupon($code)
        {
        }
        /**
         * Apply all coupons in this order again to all line items.
         *
         * @since  3.2.0
         */
        protected function recalculate_coupons()
        {
        }
        /**
         * After applying coupons via the WC_Discounts class, update line items.
         *
         * @since 3.2.0
         * @param WC_Discounts $discounts Discounts class.
         */
        protected function set_item_discount_amounts($discounts)
        {
        }
        /**
         * After applying coupons via the WC_Discounts class, update or create coupon items.
         *
         * @since 3.2.0
         * @param WC_Discounts $discounts Discounts class.
         */
        protected function set_coupon_discount_amounts($discounts)
        {
        }
        /**
         * Add a product line item to the order. This is the only line item type with
         * its own method because it saves looking up order amounts (costs are added up for you).
         *
         * @param  WC_Product $product Product object.
         * @param  int        $qty Quantity to add.
         * @param  array      $args Args for the added product.
         * @return int
         * @throws WC_Data_Exception Exception thrown if the item cannot be added to the cart.
         */
        public function add_product($product, $qty = 1, $args = array())
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Payment Token Handling
        |--------------------------------------------------------------------------
        |
        | Payment tokens are hashes used to take payments by certain gateways.
        |
        */
        /**
         * Add a payment token to an order
         *
         * @since 2.6
         * @param WC_Payment_Token $token Payment token object.
         * @return boolean|int The new token ID or false if it failed.
         */
        public function add_payment_token($token)
        {
        }
        /**
         * Returns a list of all payment tokens associated with the current order
         *
         * @since 2.6
         * @return array An array of payment token objects
         */
        public function get_payment_tokens()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Calculations.
        |--------------------------------------------------------------------------
        |
        | These methods calculate order totals and taxes based on the current data.
        |
        */
        /**
         * Calculate shipping total.
         *
         * @since 2.2
         * @return float
         */
        public function calculate_shipping()
        {
        }
        /**
         * Get all tax classes for items in the order.
         *
         * @since 2.6.3
         * @return array
         */
        public function get_items_tax_classes()
        {
        }
        /**
         * Get tax location for this order.
         *
         * @since 3.2.0
         * @param array $args array Override the location.
         * @return array
         */
        protected function get_tax_location($args = array())
        {
        }
        /**
         * Calculate taxes for all line items and shipping, and store the totals and tax rows.
         *
         * If by default the taxes are based on the shipping address and the current order doesn't
         * have any, it would use the billing address rather than using the Shopping base location.
         *
         * Will use the base country unless customer addresses are set.
         *
         * @param array $args Added in 3.0.0 to pass things like location.
         */
        public function calculate_taxes($args = array())
        {
        }
        /**
         * Update tax lines for the order based on the line item taxes themselves.
         */
        public function update_taxes()
        {
        }
        /**
         * Calculate totals by looking at the contents of the order. Stores the totals and returns the orders final total.
         *
         * @since 2.2
         * @param  bool $and_taxes Calc taxes if true.
         * @return float calculated grand total.
         */
        public function calculate_totals($and_taxes = \true)
        {
        }
        /**
         * Get item subtotal - this is the cost before discount.
         *
         * @param object $item Item to get total from.
         * @param bool   $inc_tax (default: false).
         * @param bool   $round (default: true).
         * @return float
         */
        public function get_item_subtotal($item, $inc_tax = \false, $round = \true)
        {
        }
        /**
         * Get line subtotal - this is the cost before discount.
         *
         * @param object $item Item to get total from.
         * @param bool   $inc_tax (default: false).
         * @param bool   $round (default: true).
         * @return float
         */
        public function get_line_subtotal($item, $inc_tax = \false, $round = \true)
        {
        }
        /**
         * Calculate item cost - useful for gateways.
         *
         * @param object $item Item to get total from.
         * @param bool   $inc_tax (default: false).
         * @param bool   $round (default: true).
         * @return float
         */
        public function get_item_total($item, $inc_tax = \false, $round = \true)
        {
        }
        /**
         * Calculate line total - useful for gateways.
         *
         * @param object $item Item to get total from.
         * @param bool   $inc_tax (default: false).
         * @param bool   $round (default: true).
         * @return float
         */
        public function get_line_total($item, $inc_tax = \false, $round = \true)
        {
        }
        /**
         * Get item tax - useful for gateways.
         *
         * @param mixed $item Item to get total from.
         * @param bool  $round (default: true).
         * @return float
         */
        public function get_item_tax($item, $round = \true)
        {
        }
        /**
         * Get line tax - useful for gateways.
         *
         * @param mixed $item Item to get total from.
         * @return float
         */
        public function get_line_tax($item)
        {
        }
        /**
         * Gets line subtotal - formatted for display.
         *
         * @param object $item Item to get total from.
         * @param string $tax_display Incl or excl tax display mode.
         * @return string
         */
        public function get_formatted_line_subtotal($item, $tax_display = '')
        {
        }
        /**
         * Gets order total - formatted for display.
         *
         * @return string
         */
        public function get_formatted_order_total()
        {
        }
        /**
         * Gets subtotal - subtotal is shown before discounts, but with localised taxes.
         *
         * @param bool   $compound (default: false).
         * @param string $tax_display (default: the tax_display_cart value).
         * @return string
         */
        public function get_subtotal_to_display($compound = \false, $tax_display = '')
        {
        }
        /**
         * Gets shipping (formatted).
         *
         * @param string $tax_display Excl or incl tax display mode.
         * @return string
         */
        public function get_shipping_to_display($tax_display = '')
        {
        }
        /**
         * Get the discount amount (formatted).
         *
         * @since  2.3.0
         * @param string $tax_display Excl or incl tax display mode.
         * @return string
         */
        public function get_discount_to_display($tax_display = '')
        {
        }
        /**
         * Add total row for subtotal.
         *
         * @param array  $total_rows Reference to total rows array.
         * @param string $tax_display Excl or incl tax display mode.
         */
        protected function add_order_item_totals_subtotal_row(&$total_rows, $tax_display)
        {
        }
        /**
         * Add total row for discounts.
         *
         * @param array  $total_rows Reference to total rows array.
         * @param string $tax_display Excl or incl tax display mode.
         */
        protected function add_order_item_totals_discount_row(&$total_rows, $tax_display)
        {
        }
        /**
         * Add total row for shipping.
         *
         * @param array  $total_rows Reference to total rows array.
         * @param string $tax_display Excl or incl tax display mode.
         */
        protected function add_order_item_totals_shipping_row(&$total_rows, $tax_display)
        {
        }
        /**
         * Add total row for fees.
         *
         * @param array  $total_rows Reference to total rows array.
         * @param string $tax_display Excl or incl tax display mode.
         */
        protected function add_order_item_totals_fee_rows(&$total_rows, $tax_display)
        {
        }
        /**
         * Add total row for taxes.
         *
         * @param array  $total_rows Reference to total rows array.
         * @param string $tax_display Excl or incl tax display mode.
         */
        protected function add_order_item_totals_tax_rows(&$total_rows, $tax_display)
        {
        }
        /**
         * Add total row for grand total.
         *
         * @param array  $total_rows Reference to total rows array.
         * @param string $tax_display Excl or incl tax display mode.
         */
        protected function add_order_item_totals_total_row(&$total_rows, $tax_display)
        {
        }
        /**
         * Get totals for display on pages and in emails.
         *
         * @param mixed $tax_display Excl or incl tax display mode.
         * @return array
         */
        public function get_order_item_totals($tax_display = '')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Conditionals
        |--------------------------------------------------------------------------
        |
        | Checks if a condition is true or false.
        |
        */
        /**
         * Checks the order status against a passed in status.
         *
         * @param array|string $status Status to check.
         * @return bool
         */
        public function has_status($status)
        {
        }
        /**
         * Check whether this order has a specific shipping method or not.
         *
         * @param string $method_id Method ID to check.
         * @return bool
         */
        public function has_shipping_method($method_id)
        {
        }
        /**
         * Returns true if the order contains a free product.
         *
         * @since 2.5.0
         * @return bool
         */
        public function has_free_item()
        {
        }
    }
    /**
     * Order refund class.
     */
    class WC_Order_Refund extends \WC_Abstract_Order
    {
        /**
         * Which data store to load.
         *
         * @var string
         */
        protected $data_store_name = 'order-refund';
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'order_refund';
        /**
         * Stores product data.
         *
         * @var array
         */
        protected $extra_data = array('amount' => '', 'reason' => '', 'refunded_by' => 0, 'refunded_payment' => \false);
        /**
         * Get internal type (post type.)
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get status - always completed for refunds.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_status($context = 'view')
        {
        }
        /**
         * Get a title for the new post type.
         */
        public function get_post_title()
        {
        }
        /**
         * Get refunded amount.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int|float
         */
        public function get_amount($context = 'view')
        {
        }
        /**
         * Get refund reason.
         *
         * @since 2.2
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int|float
         */
        public function get_reason($context = 'view')
        {
        }
        /**
         * Get ID of user who did the refund.
         *
         * @since 3.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_refunded_by($context = 'view')
        {
        }
        /**
         * Return if the payment was refunded via API.
         *
         * @since  3.3
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_refunded_payment($context = 'view')
        {
        }
        /**
         * Get formatted refunded amount.
         *
         * @since 2.4
         * @return string
         */
        public function get_formatted_refund_amount()
        {
        }
        /**
         * Set refunded amount.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception if the amount is invalid.
         */
        public function set_amount($value)
        {
        }
        /**
         * Set refund reason.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception Exception if the amount is invalid.
         */
        public function set_reason($value)
        {
        }
        /**
         * Set refunded by.
         *
         * @param int $value Value to set.
         * @throws WC_Data_Exception Exception if the amount is invalid.
         */
        public function set_refunded_by($value)
        {
        }
        /**
         * Set if the payment was refunded via API.
         *
         * @since 3.3
         * @param bool $value Value to set.
         */
        public function set_refunded_payment($value)
        {
        }
        /**
         * Magic __get method for backwards compatibility.
         *
         * @param string $key Value to get.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Gets an refund from the database.
         *
         * @deprecated 3.0
         * @param int $id (default: 0).
         * @return bool
         */
        public function get_refund($id = 0)
        {
        }
        /**
         * Get refund amount.
         *
         * @deprecated 3.0
         * @return int|float
         */
        public function get_refund_amount()
        {
        }
        /**
         * Get refund reason.
         *
         * @deprecated 3.0
         * @return int|float
         */
        public function get_refund_reason()
        {
        }
    }
    /**
     * WC_Widget
     *
     * @package  WooCommerce/Abstracts
     * @version  2.5.0
     * @extends  WP_Widget
     */
    abstract class WC_Widget extends \WP_Widget
    {
        /**
         * CSS class.
         *
         * @var string
         */
        public $widget_cssclass;
        /**
         * Widget description.
         *
         * @var string
         */
        public $widget_description;
        /**
         * Widget ID.
         *
         * @var string
         */
        public $widget_id;
        /**
         * Widget name.
         *
         * @var string
         */
        public $widget_name;
        /**
         * Settings.
         *
         * @var array
         */
        public $settings;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get cached widget.
         *
         * @param  array $args Arguments.
         * @return bool true if the widget is cached otherwise false
         */
        public function get_cached_widget($args)
        {
        }
        /**
         * Cache the widget.
         *
         * @param  array  $args Arguments.
         * @param  string $content Content.
         * @return string the content that was cached
         */
        public function cache_widget($args, $content)
        {
        }
        /**
         * Flush the cache.
         */
        public function flush_widget_cache()
        {
        }
        /**
         * Get this widgets title.
         *
         * @param array $instance Array of instance options.
         * @return string
         */
        protected function get_instance_title($instance)
        {
        }
        /**
         * Output the html at the start of a widget.
         *
         * @param array $args Arguments.
         * @param array $instance Instance.
         */
        public function widget_start($args, $instance)
        {
        }
        /**
         * Output the html at the end of a widget.
         *
         * @param  array $args Arguments.
         */
        public function widget_end($args)
        {
        }
        /**
         * Updates a particular instance of a widget.
         *
         * @see    WP_Widget->update
         * @param  array $new_instance New instance.
         * @param  array $old_instance Old instance.
         * @return array
         */
        public function update($new_instance, $old_instance)
        {
        }
        /**
         * Outputs the settings update form.
         *
         * @see   WP_Widget->form
         *
         * @param array $instance Instance.
         */
        public function form($instance)
        {
        }
        /**
         * Get current page URL with various filtering props supported by WC.
         *
         * @return string
         * @since  3.3.0
         */
        protected function get_current_page_url()
        {
        }
        /**
         * Get widget id plus scheme/protocol to prevent serving mixed content from (persistently) cached widgets.
         *
         * @since  3.4.0
         * @param  string $widget_id Id of the cached widget.
         * @param  string $scheme    Scheme for the widget id.
         * @return string            Widget id including scheme/protocol.
         */
        protected function get_widget_id_for_cache($widget_id, $scheme = '')
        {
        }
    }
    /**
     * Widget cart class.
     */
    class WC_Widget_Cart extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         *
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget top rated products class.
     */
    class WC_Widget_Top_Rated_Products extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget product search class.
     */
    class WC_Widget_Product_Search extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         *
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget price filter class.
     */
    class WC_Widget_Price_Filter extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         *
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
        /**
         * Get filtered min price for current products.
         *
         * @return int
         */
        protected function get_filtered_price()
        {
        }
    }
    /**
     * Product categories widget class.
     *
     * @extends WC_Widget
     */
    class WC_Widget_Product_Categories extends \WC_Widget
    {
        /**
         * Category ancestors.
         *
         * @var array
         */
        public $cat_ancestors;
        /**
         * Current Category.
         *
         * @var bool
         */
        public $current_cat;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         * @param array $args     Widget arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget recent reviews class.
     */
    class WC_Widget_Recent_Reviews extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget product tag cloud
     */
    class WC_Widget_Product_Tag_Cloud extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         *
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
        /**
         * Return the taxonomy being displayed.
         *
         * @param  object $instance Widget instance.
         * @return string
         */
        public function get_current_taxonomy($instance)
        {
        }
        /**
         * Returns topic count text.
         *
         * @since 3.4.0
         * @param int $count Count text.
         * @return string
         */
        public function topic_count_text($count)
        {
        }
        // Ignore whole block to avoid warnings about PSR2.Methods.MethodDeclaration.Underscore violation.
        // @codingStandardsIgnoreStart
        /**
         * Return the taxonomy being displayed.
         *
         * @deprecated 3.4.0
         * @param  object $instance Widget instance.
         * @return string
         */
        public function _get_current_taxonomy($instance)
        {
        }
        /**
         * Returns topic count text.
         *
         * @deprecated 3.4.0
         * @since 2.6.0
         * @param int $count Count text.
         * @return string
         */
        public function _topic_count_text($count)
        {
        }
    }
    /**
     * Widget layered nav filters.
     */
    class WC_Widget_Layered_Nav_Filters extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget layered nav class.
     */
    class WC_Widget_Layered_Nav extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Updates a particular instance of a widget.
         *
         * @see WP_Widget->update
         *
         * @param array $new_instance New Instance.
         * @param array $old_instance Old Instance.
         *
         * @return array
         */
        public function update($new_instance, $old_instance)
        {
        }
        /**
         * Outputs the settings update form.
         *
         * @see WP_Widget->form
         *
         * @param array $instance Instance.
         */
        public function form($instance)
        {
        }
        /**
         * Init settings after post types are registered.
         */
        public function init_settings()
        {
        }
        /**
         * Get this widgets taxonomy.
         *
         * @param array $instance Array of instance options.
         * @return string
         */
        protected function get_instance_taxonomy($instance)
        {
        }
        /**
         * Get this widgets query type.
         *
         * @param array $instance Array of instance options.
         * @return string
         */
        protected function get_instance_query_type($instance)
        {
        }
        /**
         * Get this widgets display type.
         *
         * @param array $instance Array of instance options.
         * @return string
         */
        protected function get_instance_display_type($instance)
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         *
         * @param array $args Arguments.
         * @param array $instance Instance.
         */
        public function widget($args, $instance)
        {
        }
        /**
         * Return the currently viewed taxonomy name.
         *
         * @return string
         */
        protected function get_current_taxonomy()
        {
        }
        /**
         * Return the currently viewed term ID.
         *
         * @return int
         */
        protected function get_current_term_id()
        {
        }
        /**
         * Return the currently viewed term slug.
         *
         * @return int
         */
        protected function get_current_term_slug()
        {
        }
        /**
         * Show dropdown layered nav.
         *
         * @param  array  $terms Terms.
         * @param  string $taxonomy Taxonomy.
         * @param  string $query_type Query Type.
         * @return bool Will nav display?
         */
        protected function layered_nav_dropdown($terms, $taxonomy, $query_type)
        {
        }
        /**
         * Count products within certain terms, taking the main WP query into consideration.
         *
         * This query allows counts to be generated based on the viewed products, not all products.
         *
         * @param  array  $term_ids Term IDs.
         * @param  string $taxonomy Taxonomy.
         * @param  string $query_type Query Type.
         * @return array
         */
        protected function get_filtered_term_product_counts($term_ids, $taxonomy, $query_type)
        {
        }
        /**
         * Show list based layered nav.
         *
         * @param  array  $terms Terms.
         * @param  string $taxonomy Taxonomy.
         * @param  string $query_type Query Type.
         * @return bool   Will nav display?
         */
        protected function layered_nav_list($terms, $taxonomy, $query_type)
        {
        }
    }
    /**
     * Widget recently viewed.
     */
    class WC_Widget_Recently_Viewed extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output widget.
         *
         * @see WP_Widget
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget rating filter class.
     */
    class WC_Widget_Rating_Filter extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Count products after other filters have occurred by adjusting the main query.
         *
         * @param  int $rating Rating.
         * @return int
         */
        protected function get_filtered_product_count($rating)
        {
        }
        /**
         * Widget function.
         *
         * @see WP_Widget
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * Widget products.
     */
    class WC_Widget_Products extends \WC_Widget
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Query the products and return them.
         *
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         *
         * @return WP_Query
         */
        public function get_products($args, $instance)
        {
        }
        /**
         * Output widget.
         *
         * @param array $args     Arguments.
         * @param array $instance Widget instance.
         *
         * @see WP_Widget
         */
        public function widget($args, $instance)
        {
        }
    }
    /**
     * WC_Twenty_Thirteen class.
     */
    class WC_Twenty_Thirteen
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Eleven class.
     */
    class WC_Twenty_Eleven
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Fifteen class.
     */
    class WC_Twenty_Fifteen
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Seventeen class.
     */
    class WC_Twenty_Seventeen
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Enqueue CSS for this theme.
         *
         * @param  array $styles Array of registered styles.
         * @return array
         */
        public static function enqueue_styles($styles)
        {
        }
        /**
         * Open the Twenty Seventeen wrapper.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close the Twenty Seventeen wrapper.
         */
        public static function output_content_wrapper_end()
        {
        }
        /**
         * Custom colors.
         *
         * @param  string $css Styles.
         * @param  string $hue Color.
         * @param  string $saturation Saturation.
         * @return string
         */
        public static function custom_colors_css($css, $hue, $saturation)
        {
        }
    }
    /**
     * WC_Twenty_Fourteen class.
     */
    class WC_Twenty_Fourteen
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Twelve class.
     */
    class WC_Twenty_Twelve
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Ten class.
     */
    class WC_Twenty_Ten
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Sixteen class.
     */
    class WC_Twenty_Sixteen
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open wrappers.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close wrappers.
         */
        public static function output_content_wrapper_end()
        {
        }
    }
    /**
     * WC_Twenty_Nineteen class.
     */
    class WC_Twenty_Nineteen
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open the Twenty Nineteen wrapper.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close the Twenty Nineteen wrapper.
         */
        public static function output_content_wrapper_end()
        {
        }
        /**
         * Enqueue CSS for this theme.
         *
         * @param  array $styles Array of registered styles.
         * @return array
         */
        public static function enqueue_styles($styles)
        {
        }
        /**
         * Tweak Twenty Nineteen features.
         */
        public static function tweak_theme_features()
        {
        }
        /**
         * Filters Twenty Nineteen custom colors CSS.
         *
         * @param string $css           Base theme colors CSS.
         * @param int    $primary_color The user's selected color hue.
         * @param string $saturation    Filtered theme color saturation level.
         */
        public static function custom_colors_css($css, $primary_color, $saturation)
        {
        }
    }
    /**
     * Autoloader class.
     */
    class WC_Autoloader
    {
        /**
         * Path to the includes directory.
         *
         * @var string
         */
        private $include_path = '';
        /**
         * The Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Take a class name and turn it into a file name.
         *
         * @param  string $class Class name.
         * @return string
         */
        private function get_file_name_from_class($class)
        {
        }
        /**
         * Include a class file.
         *
         * @param  string $path File path.
         * @return bool Successful or not.
         */
        private function load_file($path)
        {
        }
        /**
         * Auto-load WC classes on demand to reduce memory consumption.
         *
         * @param string $class Class name.
         */
        public function autoload($class)
        {
        }
    }
    /**
     * Order item class.
     */
    class WC_Order_Item extends \WC_Data implements \ArrayAccess
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('order_id' => 0, 'name' => '');
        /**
         * Stores meta in cache for future reads.
         * A group must be set to to enable caching.
         *
         * @var string
         */
        protected $cache_group = 'order-items';
        /**
         * Meta type. This should match up with
         * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
         * WP defines 'post', 'user', 'comment', and 'term'.
         *
         * @var string
         */
        protected $meta_type = 'order_item';
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'order_item';
        /**
         * Constructor.
         *
         * @param int|object|array $item ID to load from the DB, or WC_Order_Item object.
         */
        public function __construct($item = 0)
        {
        }
        /**
         * Merge changes with data and clear.
         * Overrides WC_Data::apply_changes.
         * array_replace_recursive does not work well for order items because it merges taxes instead
         * of replacing them.
         *
         * @since 3.2.0
         */
        public function apply_changes()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get order ID this meta belongs to.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_order_id($context = 'view')
        {
        }
        /**
         * Get order item name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get order item type. Overridden by child classes.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get quantity.
         *
         * @return int
         */
        public function get_quantity()
        {
        }
        /**
         * Get tax status.
         *
         * @return string
         */
        public function get_tax_status()
        {
        }
        /**
         * Get tax class.
         *
         * @return string
         */
        public function get_tax_class()
        {
        }
        /**
         * Get parent order object.
         *
         * @return WC_Order
         */
        public function get_order()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set order ID.
         *
         * @param int $value Order ID.
         */
        public function set_order_id($value)
        {
        }
        /**
         * Set order item name.
         *
         * @param string $value Item name.
         */
        public function set_name($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Other Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Type checking.
         *
         * @param  string|array $type Type.
         * @return boolean
         */
        public function is_type($type)
        {
        }
        /**
         * Calculate item taxes.
         *
         * @since  3.2.0
         * @param  array $calculate_tax_for Location data to get taxes for. Required.
         * @return bool  True if taxes were calculated.
         */
        public function calculate_taxes($calculate_tax_for = array())
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Meta Data Handling
        |--------------------------------------------------------------------------
        */
        /**
         * Expands things like term slugs before return.
         *
         * @param string $hideprefix  Meta data prefix, (default: _).
         * @param bool   $include_all Include all meta data, this stop skip items with values already in the product name.
         * @return array
         */
        public function get_formatted_meta_data($hideprefix = '_', $include_all = \false)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Array Access Methods
        |--------------------------------------------------------------------------
        |
        | For backwards compatibility with legacy arrays.
        |
        */
        /**
         * OffsetSet for ArrayAccess.
         *
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset for ArrayAccess.
         *
         * @param string $offset Offset.
         */
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
        /**
         * OffsetGet for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
    }
    /**
     * WC_Settings_API class.
     */
    abstract class WC_Settings_API
    {
        /**
         * The plugin ID. Used for option names.
         *
         * @var string
         */
        public $plugin_id = 'woocommerce_';
        /**
         * ID of the class extending the settings API. Used in option names.
         *
         * @var string
         */
        public $id = '';
        /**
         * Validation errors.
         *
         * @var array of strings
         */
        public $errors = array();
        /**
         * Setting values.
         *
         * @var array
         */
        public $settings = array();
        /**
         * Form option fields.
         *
         * @var array
         */
        public $form_fields = array();
        /**
         * The posted settings data. When empty, $_POST data will be used.
         *
         * @var array
         */
        protected $data = array();
        /**
         * Get the form fields after they are initialized.
         *
         * @return array of options
         */
        public function get_form_fields()
        {
        }
        /**
         * Set default required properties for each field.
         *
         * @param array $field Setting field array.
         * @return array
         */
        protected function set_defaults($field)
        {
        }
        /**
         * Output the admin options table.
         */
        public function admin_options()
        {
        }
        /**
         * Initialise settings form fields.
         *
         * Add an array of fields to be displayed on the gateway's settings screen.
         *
         * @since  1.0.0
         */
        public function init_form_fields()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_option_key()
        {
        }
        /**
         * Get a fields type. Defaults to "text" if not set.
         *
         * @param  array $field Field key.
         * @return string
         */
        public function get_field_type($field)
        {
        }
        /**
         * Get a fields default value. Defaults to "" if not set.
         *
         * @param  array $field Field key.
         * @return string
         */
        public function get_field_default($field)
        {
        }
        /**
         * Get a field's posted and validated value.
         *
         * @param string $key Field key.
         * @param array  $field Field array.
         * @param array  $post_data Posted data.
         * @return string
         */
        public function get_field_value($key, $field, $post_data = array())
        {
        }
        /**
         * Sets the POSTed data. This method can be used to set specific data, instead of taking it from the $_POST array.
         *
         * @param array $data Posted data.
         */
        public function set_post_data($data = array())
        {
        }
        /**
         * Returns the POSTed data, to be used to save the settings.
         *
         * @return array
         */
        public function get_post_data()
        {
        }
        /**
         * Update a single option.
         *
         * @since 3.4.0
         * @param string $key Option key.
         * @param mixed  $value Value to set.
         * @return bool was anything saved?
         */
        public function update_option($key, $value = '')
        {
        }
        /**
         * Processes and saves options.
         * If there is an error thrown, will continue to save and validate fields, but will leave the erroring field out.
         *
         * @return bool was anything saved?
         */
        public function process_admin_options()
        {
        }
        /**
         * Add an error message for display in admin on save.
         *
         * @param string $error Error message.
         */
        public function add_error($error)
        {
        }
        /**
         * Get admin error messages.
         */
        public function get_errors()
        {
        }
        /**
         * Display admin error messages.
         */
        public function display_errors()
        {
        }
        /**
         * Initialise Settings.
         *
         * Store all settings in a single database entry
         * and make sure the $settings array is either the default
         * or the settings stored in the database.
         *
         * @since 1.0.0
         * @uses get_option(), add_option()
         */
        public function init_settings()
        {
        }
        /**
         * Get option from DB.
         *
         * Gets an option from the settings API, using defaults if necessary to prevent undefined notices.
         *
         * @param  string $key Option key.
         * @param  mixed  $empty_value Value when empty.
         * @return string The value specified for the option or a default value for the option.
         */
        public function get_option($key, $empty_value = \null)
        {
        }
        /**
         * Prefix key for settings.
         *
         * @param  string $key Field key.
         * @return string
         */
        public function get_field_key($key)
        {
        }
        /**
         * Generate Settings HTML.
         *
         * Generate the HTML for the fields on the "settings" screen.
         *
         * @param array $form_fields (default: array()) Array of form fields.
         * @param bool  $echo Echo or return.
         * @return string the html for the settings
         * @since  1.0.0
         * @uses   method_exists()
         */
        public function generate_settings_html($form_fields = array(), $echo = \true)
        {
        }
        /**
         * Get HTML for tooltips.
         *
         * @param  array $data Data for the tooltip.
         * @return string
         */
        public function get_tooltip_html($data)
        {
        }
        /**
         * Get HTML for descriptions.
         *
         * @param  array $data Data for the description.
         * @return string
         */
        public function get_description_html($data)
        {
        }
        /**
         * Get custom attributes.
         *
         * @param  array $data Field data.
         * @return string
         */
        public function get_custom_attribute_html($data)
        {
        }
        /**
         * Generate Text Input HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_text_html($key, $data)
        {
        }
        /**
         * Generate Price Input HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_price_html($key, $data)
        {
        }
        /**
         * Generate Decimal Input HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_decimal_html($key, $data)
        {
        }
        /**
         * Generate Password Input HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_password_html($key, $data)
        {
        }
        /**
         * Generate Color Picker Input HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_color_html($key, $data)
        {
        }
        /**
         * Generate Textarea HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_textarea_html($key, $data)
        {
        }
        /**
         * Generate Checkbox HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_checkbox_html($key, $data)
        {
        }
        /**
         * Generate Select HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_select_html($key, $data)
        {
        }
        /**
         * Generate Multiselect HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_multiselect_html($key, $data)
        {
        }
        /**
         * Generate Title HTML.
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @since  1.0.0
         * @return string
         */
        public function generate_title_html($key, $data)
        {
        }
        /**
         * Validate Text Field.
         *
         * Make sure the data is escaped correctly, etc.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_text_field($key, $value)
        {
        }
        /**
         * Validate Price Field.
         *
         * Make sure the data is escaped correctly, etc.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_price_field($key, $value)
        {
        }
        /**
         * Validate Decimal Field.
         *
         * Make sure the data is escaped correctly, etc.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_decimal_field($key, $value)
        {
        }
        /**
         * Validate Password Field. No input sanitization is used to avoid corrupting passwords.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_password_field($key, $value)
        {
        }
        /**
         * Validate Textarea Field.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_textarea_field($key, $value)
        {
        }
        /**
         * Validate Checkbox Field.
         *
         * If not set, return "no", otherwise return "yes".
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_checkbox_field($key, $value)
        {
        }
        /**
         * Validate Select Field.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string
         */
        public function validate_select_field($key, $value)
        {
        }
        /**
         * Validate Multiselect Field.
         *
         * @param  string $key Field key.
         * @param  string $value Posted Value.
         * @return string|array
         */
        public function validate_multiselect_field($key, $value)
        {
        }
        /**
         * Validate the data on the "Settings" form.
         *
         * @deprecated 2.6.0 No longer used.
         * @param array $form_fields Array of fields.
         */
        public function validate_settings_fields($form_fields = array())
        {
        }
        /**
         * Format settings if needed.
         *
         * @deprecated 2.6.0 Unused.
         * @param  array $value Value to format.
         * @return array
         */
        public function format_settings($value)
        {
        }
    }
    /**
     * WooCommerce Shipping Method Class.
     *
     * Extended by shipping methods to handle shipping calculations etc.
     *
     * @class       WC_Shipping_Method
     * @version     3.0.0
     * @package     WooCommerce/Abstracts
     */
    abstract class WC_Shipping_Method extends \WC_Settings_API
    {
        /**
         * Features this method supports. Possible features used by core:
         * - shipping-zones Shipping zone functionality + instances
         * - instance-settings Instance settings screens.
         * - settings Non-instance settings screens. Enabled by default for BW compatibility with methods before instances existed.
         * - instance-settings-modal Allows the instance settings to be loaded within a modal in the zones UI.
         *
         * @var array
         */
        public $supports = array('settings');
        /**
         * Unique ID for the shipping method - must be set.
         *
         * @var string
         */
        public $id = '';
        /**
         * Method title.
         *
         * @var string
         */
        public $method_title = '';
        /**
         * Method description.
         *
         * @var string
         */
        public $method_description = '';
        /**
         * Yes or no based on whether the method is enabled.
         *
         * @var string
         */
        public $enabled = 'yes';
        /**
         * Shipping method title for the frontend.
         *
         * @var string
         */
        public $title;
        /**
         * This is an array of rates - methods must populate this array to register shipping costs.
         *
         * @var array
         */
        public $rates = array();
        /**
         * If 'taxable' tax will be charged for this method (if applicable).
         *
         * @var string
         */
        public $tax_status = 'taxable';
        /**
         * Fee for the method (if applicable).
         *
         * @var string
         */
        public $fee = \null;
        /**
         * Minimum fee for the method (if applicable).
         *
         * @var string
         */
        public $minimum_fee = \null;
        /**
         * Instance ID if used.
         *
         * @var int
         */
        public $instance_id = 0;
        /**
         * Instance form fields.
         *
         * @var array
         */
        public $instance_form_fields = array();
        /**
         * Instance settings.
         *
         * @var array
         */
        public $instance_settings = array();
        /**
         * Availability - legacy. Used for method Availability.
         * No longer useful for instance based shipping methods.
         *
         * @deprecated 2.6.0
         * @var string
         */
        public $availability;
        /**
         * Availability countries - legacy. Used for method Availability.
         * No longer useful for instance based shipping methods.
         *
         * @deprecated 2.6.0
         * @var array
         */
        public $countries = array();
        /**
         * Constructor.
         *
         * @param int $instance_id Instance ID.
         */
        public function __construct($instance_id = 0)
        {
        }
        /**
         * Check if a shipping method supports a given feature.
         *
         * Methods should override this to declare support (or lack of support) for a feature.
         *
         * @param string $feature The name of a feature to test support for.
         * @return bool True if the shipping method supports the feature, false otherwise.
         */
        public function supports($feature)
        {
        }
        /**
         * Called to calculate shipping rates for this method. Rates can be added using the add_rate() method.
         *
         * @param array $package Package array.
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Whether or not we need to calculate tax on top of the shipping rate.
         *
         * @return boolean
         */
        public function is_taxable()
        {
        }
        /**
         * Whether or not this method is enabled in settings.
         *
         * @since 2.6.0
         * @return boolean
         */
        public function is_enabled()
        {
        }
        /**
         * Return the shipping method instance ID.
         *
         * @since 2.6.0
         * @return int
         */
        public function get_instance_id()
        {
        }
        /**
         * Return the shipping method title.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_method_title()
        {
        }
        /**
         * Return the shipping method description.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_method_description()
        {
        }
        /**
         * Return the shipping title which is user set.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Return calculated rates for a package.
         *
         * @since 2.6.0
         * @param array $package Package array.
         * @return array
         */
        public function get_rates_for_package($package)
        {
        }
        /**
         * Returns a rate ID based on this methods ID and instance, with an optional
         * suffix if distinguishing between multiple rates.
         *
         * @since 2.6.0
         * @param string $suffix Suffix.
         * @return string
         */
        public function get_rate_id($suffix = '')
        {
        }
        /**
         * Add a shipping rate. If taxes are not set they will be calculated based on cost.
         *
         * @param array $args Arguments (default: array()).
         */
        public function add_rate($args = array())
        {
        }
        /**
         * Calc taxes per item being shipping in costs array.
         *
         * @since 2.6.0
         * @param  array $costs Costs.
         * @return array of taxes
         */
        protected function get_taxes_per_item($costs)
        {
        }
        /**
         * Is this method available?
         *
         * @param array $package Package.
         * @return bool
         */
        public function is_available($package)
        {
        }
        /**
         * Get fee to add to shipping cost.
         *
         * @param string|float $fee Fee.
         * @param float        $total Total.
         * @return float
         */
        public function get_fee($fee, $total)
        {
        }
        /**
         * Does this method have a settings page?
         *
         * @return bool
         */
        public function has_settings()
        {
        }
        /**
         * Return admin options as a html string.
         *
         * @return string
         */
        public function get_admin_options_html()
        {
        }
        /**
         * Output the shipping settings screen.
         */
        public function admin_options()
        {
        }
        /**
         * Get_option function.
         *
         * Gets and option from the settings API, using defaults if necessary to prevent undefined notices.
         *
         * @param  string $key Key.
         * @param  mixed  $empty_value Empty value.
         * @return mixed  The value specified for the option or a default value for the option.
         */
        public function get_option($key, $empty_value = \null)
        {
        }
        /**
         * Gets an option from the settings API, using defaults if necessary to prevent undefined notices.
         *
         * @param  string $key Key.
         * @param  mixed  $empty_value Empty value.
         * @return mixed  The value specified for the option or a default value for the option.
         */
        public function get_instance_option($key, $empty_value = \null)
        {
        }
        /**
         * Get settings fields for instances of this shipping method (within zones).
         * Should be overridden by shipping methods to add options.
         *
         * @since 2.6.0
         * @return array
         */
        public function get_instance_form_fields()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_instance_option_key()
        {
        }
        /**
         * Initialise Settings for instances.
         *
         * @since 2.6.0
         */
        public function init_instance_settings()
        {
        }
        /**
         * Processes and saves global shipping method options in the admin area.
         *
         * This method is usually attached to woocommerce_update_options_x hooks.
         *
         * @since 2.6.0
         * @return bool was anything saved?
         */
        public function process_admin_options()
        {
        }
    }
    /**
     * Local Pickup Shipping Method.
     *
     * This class is here for backwards compatibility for methods existing before zones existed.
     *
     * @deprecated  2.6.0
     * @version     2.3.0
     * @package     WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Legacy_Local_Pickup extends \WC_Shipping_Method
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Process and redirect if disabled.
         */
        public function process_admin_options()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_option_key()
        {
        }
        /**
         * Init function.
         */
        public function init()
        {
        }
        /**
         * Calculate shipping.
         *
         * @param array $package Package information.
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Initialize form fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Get postcodes for this method.
         *
         * @return array
         */
        public function get_valid_postcodes()
        {
        }
        /**
         * See if a given postcode matches valid postcodes.
         *
         * @param  string $postcode Postcode to check.
         * @param  string $country code Code of the country to check postcode against.
         * @return boolean
         */
        public function is_valid_postcode($postcode, $country)
        {
        }
        /**
         * See if the method is available.
         *
         * @param array $package Package information.
         * @return bool
         */
        public function is_available($package)
        {
        }
        /**
         * Clean function.
         *
         * @access public
         * @param mixed $code Code.
         * @return string
         */
        public function clean($code)
        {
        }
    }
    /**
     * Flat Rate Shipping Method.
     *
     * This class is here for backwards compatibility for methods existing before zones existed.
     *
     * @deprecated  2.6.0
     * @version     2.4.0
     * @package     WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Legacy_Flat_Rate extends \WC_Shipping_Method
    {
        /**
         * Cost passed to [fee] shortcode.
         *
         * @var string
         */
        protected $fee_cost = '';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Process and redirect if disabled.
         */
        public function process_admin_options()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_option_key()
        {
        }
        /**
         * Init function.
         */
        public function init()
        {
        }
        /**
         * Initialise Settings Form Fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Evaluate a cost from a sum/string.
         *
         * @param  string $sum Sum to evaluate.
         * @param  array  $args Arguments.
         * @return string
         */
        protected function evaluate_cost($sum, $args = array())
        {
        }
        /**
         * Work out fee (shortcode).
         *
         * @param  array $atts Shortcode attributes.
         * @return string
         */
        public function fee($atts)
        {
        }
        /**
         * Calculate shipping.
         *
         * @param array $package (default: array()).
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Get items in package.
         *
         * @param  array $package Package information.
         * @return int
         */
        public function get_package_item_qty($package)
        {
        }
        /**
         * Finds and returns shipping classes and the products with said class.
         *
         * @param mixed $package Package information.
         * @return array
         */
        public function find_shipping_classes($package)
        {
        }
        /**
         * Adds extra calculated flat rates.
         *
         * @deprecated 2.4.0
         *
         * Additional rates defined like this:
         *  Option Name | Additional Cost [+- Percents%] | Per Cost Type (order, class, or item).
         *
         * @param null  $method Deprecated.
         * @param array $rate Rate information.
         */
        public function calculate_extra_shipping($method, $rate)
        {
        }
        /**
         * Calculate the percentage adjustment for each shipping rate.
         *
         * @deprecated 2.4.0
         * @param  float  $cost Cost.
         * @param  float  $percent_adjustment Percent adjusment.
         * @param  string $percent_operator Percent operator.
         * @param  float  $base_price Base price.
         * @return float
         */
        public function calc_percentage_adjustment($cost, $percent_adjustment, $percent_operator, $base_price)
        {
        }
        /**
         * Get extra cost.
         *
         * @deprecated 2.4.0
         * @param  string $cost_string Cost string.
         * @param  string $type Type.
         * @param  array  $package Package information.
         * @return float
         */
        public function get_extra_cost($cost_string, $type, $package)
        {
        }
    }
    /**
     * International Delivery - Based on the Flat Rate Shipping Method.
     *
     * This class is here for backwards compatibility for methods existing before zones existed.
     *
     * @deprecated  2.6.0
     * @version     2.4.0
     * @package     WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Legacy_International_Delivery extends \WC_Shipping_Legacy_Flat_Rate
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_option_key()
        {
        }
        /**
         * Initialise settings form fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Check if package is available.
         *
         * @param array $package Package information.
         * @return bool
         */
        public function is_available($package)
        {
        }
    }
    /**
     * Local Pickup Shipping Method.
     *
     * A simple shipping method allowing free pickup as a shipping method.
     *
     * @class       WC_Shipping_Local_Pickup
     * @version     2.6.0
     * @package     WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Local_Pickup extends \WC_Shipping_Method
    {
        /**
         * Constructor.
         *
         * @param int $instance_id Instance ID.
         */
        public function __construct($instance_id = 0)
        {
        }
        /**
         * Initialize local pickup.
         */
        public function init()
        {
        }
        /**
         * Calculate local pickup shipping.
         *
         * @param array $package Package information.
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Init form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * Free Shipping Method.
     *
     * This class is here for backwards compatibility for methods existing before zones existed.
     *
     * @deprecated  2.6.0
     * @version 2.4.0
     * @package WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Legacy_Free_Shipping extends \WC_Shipping_Method
    {
        /**
         * Min amount to be valid.
         *
         * @var float
         */
        public $min_amount;
        /**
         * Requires option.
         *
         * @var string
         */
        public $requires;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Process and redirect if disabled.
         */
        public function process_admin_options()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_option_key()
        {
        }
        /**
         * Init function.
         */
        public function init()
        {
        }
        /**
         * Initialise Gateway Settings Form Fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Check if package is available.
         *
         * @param array $package Package information.
         * @return bool
         */
        public function is_available($package)
        {
        }
        /**
         * Calculate shipping.
         *
         * @param array $package Package information.
         */
        public function calculate_shipping($package = array())
        {
        }
    }
    /**
     * Free Shipping Method.
     *
     * A simple shipping method for free shipping.
     *
     * @class   WC_Shipping_Free_Shipping
     * @version 2.6.0
     * @package WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Free_Shipping extends \WC_Shipping_Method
    {
        /**
         * Min amount to be valid.
         *
         * @var integer
         */
        public $min_amount = 0;
        /**
         * Requires option.
         *
         * @var string
         */
        public $requires = '';
        /**
         * Constructor.
         *
         * @param int $instance_id Shipping method instance.
         */
        public function __construct($instance_id = 0)
        {
        }
        /**
         * Initialize free shipping.
         */
        public function init()
        {
        }
        /**
         * Init form fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Get setting form fields for instances of this shipping method within zones.
         *
         * @return array
         */
        public function get_instance_form_fields()
        {
        }
        /**
         * See if free shipping is available based on the package and cart.
         *
         * @param array $package Shipping package.
         * @return bool
         */
        public function is_available($package)
        {
        }
        /**
         * Called to calculate shipping rates for this method. Rates can be added using the add_rate() method.
         *
         * @uses WC_Shipping_Method::add_rate()
         *
         * @param array $package Shipping package.
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Enqueue JS to handle free shipping options.
         *
         * Static so that's enqueued only once.
         */
        public static function enqueue_admin_js()
        {
        }
    }
    /**
     * Local Delivery Shipping Method.
     *
     * This class is here for backwards compatibility for methods existing before zones existed.
     *
     * @deprecated  2.6.0
     * @version     2.3.0
     * @package     WooCommerce/Classes/Shipping
     */
    class WC_Shipping_Legacy_Local_Delivery extends \WC_Shipping_Local_Pickup
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Process and redirect if disabled.
         */
        public function process_admin_options()
        {
        }
        /**
         * Return the name of the option in the WP DB.
         *
         * @since 2.6.0
         * @return string
         */
        public function get_option_key()
        {
        }
        /**
         * Init function.
         */
        public function init()
        {
        }
        /**
         * Calculate_shipping function.
         *
         * @param array $package (default: array()).
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Init form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * WC_Shipping_Flat_Rate class.
     */
    class WC_Shipping_Flat_Rate extends \WC_Shipping_Method
    {
        /**
         * Cost passed to [fee] shortcode.
         *
         * @var string Cost.
         */
        protected $fee_cost = '';
        /**
         * Constructor.
         *
         * @param int $instance_id Shipping method instance ID.
         */
        public function __construct($instance_id = 0)
        {
        }
        /**
         * Init user set variables.
         */
        public function init()
        {
        }
        /**
         * Evaluate a cost from a sum/string.
         *
         * @param  string $sum Sum of shipping.
         * @param  array  $args Args.
         * @return string
         */
        protected function evaluate_cost($sum, $args = array())
        {
        }
        /**
         * Work out fee (shortcode).
         *
         * @param  array $atts Attributes.
         * @return string
         */
        public function fee($atts)
        {
        }
        /**
         * Calculate the shipping costs.
         *
         * @param array $package Package of items from cart.
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * Get items in package.
         *
         * @param  array $package Package of items from cart.
         * @return int
         */
        public function get_package_item_qty($package)
        {
        }
        /**
         * Finds and returns shipping classes and the products with said class.
         *
         * @param mixed $package Package of items from cart.
         * @return array
         */
        public function find_shipping_classes($package)
        {
        }
        /**
         * Sanitize the cost field.
         *
         * @since 3.4.0
         * @param string $value Unsanitized value.
         * @return string
         */
        public function sanitize_cost($value)
        {
        }
    }
    /**
     * Regenerate Images Class
     */
    class WC_Regenerate_Images
    {
        /**
         * Background process to regenerate all images
         *
         * @var WC_Regenerate_Images_Request
         */
        protected static $background_process;
        /**
         * Stores size being generated on the fly.
         *
         * @var string
         */
        protected static $regenerate_size;
        /**
         * Init function
         */
        public static function init()
        {
        }
        /**
         * If an intermediate size meta differs from the actual image size (settings were changed?) return false so the wrong size is not used.
         *
         * @param array  $data Size data.
         * @param int    $attachment_id Attachment ID.
         * @param string $size Size name.
         * @return array
         */
        public static function filter_image_get_intermediate_size($data, $attachment_id, $size)
        {
        }
        /**
         * We need to track if uncropped was on or off when generating the images.
         *
         * @param array $meta_data Array of meta data.
         * @return array
         */
        public static function add_uncropped_metadata($meta_data)
        {
        }
        /**
         * See if an image's dimensions match actual settings.
         *
         * @param array  $image Image dimensions array.
         * @param string $size Named size.
         * @return bool True if they match. False if they do not (may trigger regen).
         */
        protected static function image_size_matches_settings($image, $size)
        {
        }
        /**
         * Show notice when job is running in background.
         */
        public static function regenerating_notice()
        {
        }
        /**
         * Dismiss notice and cancel jobs.
         */
        public static function dismiss_regenerating_notice()
        {
        }
        /**
         * Regenerate images if the settings have changed since last re-generation.
         *
         * @return void
         */
        public static function maybe_regenerate_images()
        {
        }
        /**
         * Check if we should maybe generate a new image size if not already there.
         *
         * @param array        $image Properties of the image.
         * @param int          $attachment_id Attachment ID.
         * @param string|array $size Image size.
         * @param bool         $icon If icon or not.
         * @return array
         */
        public static function maybe_resize_image($image, $attachment_id, $size, $icon)
        {
        }
        /**
         * Get full size image dimensions.
         *
         * @param int $attachment_id Attachment ID of image.
         * @return array Width and height. Empty array if the dimensions cannot be found.
         */
        private static function get_full_size_image_dimensions($attachment_id)
        {
        }
        /**
         * Ensure we are dealing with the correct image attachment
         *
         * @param int|WP_Post $attachment Attachment object or ID.
         * @return boolean
         */
        public static function is_regeneratable($attachment)
        {
        }
        /**
         * Only regenerate images for the requested size.
         *
         * @param array $sizes Array of image sizes.
         * @return array
         */
        public static function adjust_intermediate_image_sizes($sizes)
        {
        }
        /**
         * Generate the thumbnail filename and dimensions for a given file.
         *
         * @param string $fullsizepath Path to full size image.
         * @param int    $thumbnail_width  The width of the thumbnail.
         * @param int    $thumbnail_height The height of the thumbnail.
         * @param bool   $crop             Whether to crop or not.
         * @return array|false An array of the filename, thumbnail width, and thumbnail height, or false on failure to resize such as the thumbnail being larger than the fullsize image.
         */
        private static function get_image($fullsizepath, $thumbnail_width, $thumbnail_height, $crop)
        {
        }
        /**
         * Regenerate the image according to the required size
         *
         * @param int    $attachment_id Attachment ID.
         * @param array  $image Original Image.
         * @param string $size Size to return for new URL.
         * @param bool   $icon If icon or not.
         * @return string
         */
        private static function resize_and_return_image($attachment_id, $image, $size, $icon)
        {
        }
        /**
         * Image downsize, without this classes filtering on the results.
         *
         * @param int    $attachment_id Attachment ID.
         * @param string $size Size to downsize to.
         * @return string New image URL.
         */
        private static function unfiltered_image_downsize($attachment_id, $size)
        {
        }
        /**
         * Get list of images and queue them for regeneration
         *
         * @return void
         */
        public static function queue_image_regeneration()
        {
        }
    }
    /**
     * WC Data Store Interface
     *
     * @version  3.0.0
     */
    interface WC_Object_Data_Store_Interface
    {
        /**
         * Method to create a new record of a WC_Data based object.
         *
         * @param WC_Data $data Data object.
         */
        public function create(&$data);
        /**
         * Method to read a record. Creates a new WC_Data based object.
         *
         * @param WC_Data $data Data object.
         */
        public function read(&$data);
        /**
         * Updates a record in the database.
         *
         * @param WC_Data $data Data object.
         */
        public function update(&$data);
        /**
         * Deletes a record from the database.
         *
         * @param  WC_Data $data Data object.
         * @param  array   $args Array of args to pass to the delete method.
         * @return bool result
         */
        public function delete(&$data, $args = array());
        /**
         * Returns an array of meta for an object.
         *
         * @param  WC_Data $data Data object.
         * @return array
         */
        public function read_meta(&$data);
        /**
         * Deletes meta based on meta ID.
         *
         * @param  WC_Data $data Data object.
         * @param  object  $meta Meta object (containing at least ->id).
         * @return array
         */
        public function delete_meta(&$data, $meta);
        /**
         * Add new piece of meta.
         *
         * @param  WC_Data $data Data object.
         * @param  object  $meta Meta object (containing ->key and ->value).
         * @return int meta ID
         */
        public function add_meta(&$data, $meta);
        /**
         * Update meta.
         *
         * @param  WC_Data $data Data object.
         * @param  object  $meta Meta object (containing ->id, ->key and ->value).
         */
        public function update_meta(&$data, $meta);
    }
    /**
     * WC Order Item Data Store Interface
     *
     * Functions that must be defined by order item store classes.
     *
     * @version  3.0.0
     */
    interface WC_Order_Item_Type_Data_Store_Interface
    {
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $item->get_id() will be set.
         *
         * @param WC_Order_Item $item Item object.
         */
        public function save_item_data(&$item);
    }
    /**
     * WC Order Item Data Store Interface
     *
     * Functions that must be defined by order item store classes.
     *
     * @version  3.0.0
     */
    interface WC_Order_Item_Product_Data_Store_Interface
    {
        /**
         * Get a list of download IDs for a specific item from an order.
         *
         * @param WC_Order_Item $item Item object.
         * @param WC_Order      $order Order object.
         * @return array
         */
        public function get_download_ids($item, $order);
    }
    /**
     * WC_Data_Store_WP class.
     */
    class WC_Data_Store_WP
    {
        /**
         * Meta type. This should match up with
         * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
         * WP defines 'post', 'user', 'comment', and 'term'.
         *
         * @var string
         */
        protected $meta_type = 'post';
        /**
         * This only needs set if you are using a custom metadata type (for example payment tokens.
         * This should be the name of the field your table uses for associating meta with objects.
         * For example, in payment_tokenmeta, this would be payment_token_id.
         *
         * @var string
         */
        protected $object_id_field_for_meta = '';
        /**
         * Data stored in meta keys, but not considered "meta" for an object.
         *
         * @since 3.0.0
         *
         * @var array
         */
        protected $internal_meta_keys = array();
        /**
         * Meta data which should exist in the DB, even if empty.
         *
         * @since 3.6.0
         *
         * @var array
         */
        protected $must_exist_meta_keys = array();
        /**
         * Get and store terms from a taxonomy.
         *
         * @since  3.0.0
         * @param  WC_Data|integer $object WC_Data object or object ID.
         * @param  string          $taxonomy Taxonomy name e.g. product_cat.
         * @return array of terms
         */
        protected function get_term_ids($object, $taxonomy)
        {
        }
        /**
         * Returns an array of meta for an object.
         *
         * @since  3.0.0
         * @param  WC_Data $object WC_Data object.
         * @return array
         */
        public function read_meta(&$object)
        {
        }
        /**
         * Deletes meta based on meta ID.
         *
         * @since  3.0.0
         * @param  WC_Data  $object WC_Data object.
         * @param  stdClass $meta (containing at least ->id).
         */
        public function delete_meta(&$object, $meta)
        {
        }
        /**
         * Add new piece of meta.
         *
         * @since  3.0.0
         * @param  WC_Data  $object WC_Data object.
         * @param  stdClass $meta (containing ->key and ->value).
         * @return int meta ID
         */
        public function add_meta(&$object, $meta)
        {
        }
        /**
         * Update meta.
         *
         * @since  3.0.0
         * @param  WC_Data  $object WC_Data object.
         * @param  stdClass $meta (containing ->id, ->key and ->value).
         */
        public function update_meta(&$object, $meta)
        {
        }
        /**
         * Table structure is slightly different between meta types, this function will return what we need to know.
         *
         * @since  3.0.0
         * @return array Array elements: table, object_id_field, meta_id_field
         */
        protected function get_db_info()
        {
        }
        /**
         * Internal meta keys we don't want exposed as part of meta_data. This is in
         * addition to all data props with _ prefix.
         *
         * @since 2.6.0
         *
         * @param string $key Prefix to be added to meta keys.
         * @return string
         */
        protected function prefix_key($key)
        {
        }
        /**
         * Callback to remove unwanted meta data.
         *
         * @param object $meta Meta object to check if it should be excluded or not.
         * @return bool
         */
        protected function exclude_internal_meta_keys($meta)
        {
        }
        /**
         * Gets a list of props and meta keys that need updated based on change state
         * or if they are present in the database or not.
         *
         * @param  WC_Data $object              The WP_Data object (WC_Coupon for coupons, etc).
         * @param  array   $meta_key_to_props   A mapping of meta keys => prop names.
         * @param  string  $meta_type           The internal WP meta type (post, user, etc).
         * @return array                        A mapping of meta keys => prop names, filtered by ones that should be updated.
         */
        protected function get_props_to_update($object, $meta_key_to_props, $meta_type = 'post')
        {
        }
        /**
         * Update meta data in, or delete it from, the database.
         *
         * Avoids storing meta when it's either an empty string or empty array.
         * Other empty values such as numeric 0 and null should still be stored.
         * Data-stores can force meta to exist using `must_exist_meta_keys`.
         *
         * Note: WordPress `get_metadata` function returns an empty string when meta data does not exist.
         *
         * @param WC_Data $object The WP_Data object (WC_Coupon for coupons, etc).
         * @param string  $meta_key Meta key to update.
         * @param mixed   $meta_value Value to save.
         *
         * @since 3.6.0 Added to prevent empty meta being stored unless required.
         *
         * @return bool True if updated/deleted.
         */
        protected function update_or_delete_post_meta($object, $meta_key, $meta_value)
        {
        }
        /**
         * Get valid WP_Query args from a WC_Object_Query's query variables.
         *
         * @since 3.1.0
         * @param array $query_vars query vars from a WC_Object_Query.
         * @return array
         */
        protected function get_wp_query_args($query_vars)
        {
        }
        /**
         * Map a valid date query var to WP_Query arguments.
         * Valid date formats: YYYY-MM-DD or timestamp, possibly combined with an operator from $valid_operators.
         * Also accepts a WC_DateTime object.
         *
         * @since 3.2.0
         * @param mixed  $query_var A valid date format.
         * @param string $key meta or db column key.
         * @param array  $wp_query_args WP_Query args.
         * @return array Modified $wp_query_args
         */
        public function parse_date_for_wp_query($query_var, $key, $wp_query_args = array())
        {
        }
        /**
         * Return list of internal meta keys.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_internal_meta_keys()
        {
        }
        /**
         * Check if the terms are suitable for searching.
         *
         * Uses an array of stopwords (terms) that are excluded from the separate
         * term matching when searching for posts. The list of English stopwords is
         * the approximate search engines list, and is translatable.
         *
         * @since 3.4.0
         * @param array $terms Terms to check.
         * @return array Terms that are not stopwords.
         */
        protected function get_valid_search_terms($terms)
        {
        }
        /**
         * Retrieve stopwords used when parsing search terms.
         *
         * @since 3.4.0
         * @return array Stopwords.
         */
        protected function get_search_stopwords()
        {
        }
        /**
         * Get data to save to a lookup table.
         *
         * @since 3.6.0
         * @param int    $id ID of object to update.
         * @param string $table Lookup table name.
         * @return array
         */
        protected function get_data_for_lookup_table($id, $table)
        {
        }
        /**
         * Get primary key name for lookup table.
         *
         * @since 3.6.0
         * @param string $table Lookup table name.
         * @return string
         */
        protected function get_primary_key_for_lookup_table($table)
        {
        }
        /**
         * Update a lookup table for an object.
         *
         * @since 3.6.0
         * @param int    $id ID of object to update.
         * @param string $table Lookup table name.
         *
         * @return NULL
         */
        protected function update_lookup_table($id, $table)
        {
        }
        /**
         * Delete lookup table data for an ID.
         *
         * @since 3.6.0
         * @param int    $id ID of object to update.
         * @param string $table Lookup table name.
         */
        public function delete_from_lookup_table($id, $table)
        {
        }
    }
    /**
     * WC Order Item Data Store
     *
     * @version  3.0.0
     */
    abstract class Abstract_WC_Order_Item_Type_Data_Store extends \WC_Data_Store_WP implements \WC_Object_Data_Store_Interface
    {
        /**
         * Meta type. This should match up with
         * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
         * WP defines 'post', 'user', 'comment', and 'term'.
         *
         * @var string
         */
        protected $meta_type = 'order_item';
        /**
         * This only needs set if you are using a custom metadata type (for example payment tokens.
         * This should be the name of the field your table uses for associating meta with objects.
         * For example, in payment_tokenmeta, this would be payment_token_id.
         *
         * @var string
         */
        protected $object_id_field_for_meta = 'order_item_id';
        /**
         * Create a new order item in the database.
         *
         * @since 3.0.0
         * @param WC_Order_Item $item Order item object.
         */
        public function create(&$item)
        {
        }
        /**
         * Update a order item in the database.
         *
         * @since 3.0.0
         * @param WC_Order_Item $item Order item object.
         */
        public function update(&$item)
        {
        }
        /**
         * Remove an order item from the database.
         *
         * @since 3.0.0
         * @param WC_Order_Item $item Order item object.
         * @param array         $args Array of args to pass to the delete method.
         */
        public function delete(&$item, $args = array())
        {
        }
        /**
         * Read a order item from the database.
         *
         * @since 3.0.0
         *
         * @param WC_Order_Item $item Order item object.
         *
         * @throws Exception If invalid order item.
         */
        public function read(&$item)
        {
        }
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $item->get_id() will be set.
         *
         * @since 3.0.0
         * @param WC_Order_Item $item Order item object.
         */
        public function save_item_data(&$item)
        {
        }
        /**
         * Clear meta cache.
         *
         * @param WC_Order_Item $item Order item object.
         */
        public function clear_cache(&$item)
        {
        }
    }
    /**
     * WC Order Item Product Data Store
     *
     * @version  3.0.0
     */
    class WC_Order_Item_Product_Data_Store extends \Abstract_WC_Order_Item_Type_Data_Store implements \WC_Object_Data_Store_Interface, \WC_Order_Item_Type_Data_Store_Interface, \WC_Order_Item_Product_Data_Store_Interface
    {
        /**
         * Data stored in meta keys.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('_product_id', '_variation_id', '_qty', '_tax_class', '_line_subtotal', '_line_subtotal_tax', '_line_total', '_line_tax', '_line_tax_data');
        /**
         * Read/populate data properties specific to this order item.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Product $item Product order item object.
         */
        public function read(&$item)
        {
        }
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $id will be set.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Product $item Product order item object.
         */
        public function save_item_data(&$item)
        {
        }
        /**
         * Get a list of download IDs for a specific item from an order.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Product $item Product order item object.
         * @param WC_Order              $order Order object.
         * @return array
         */
        public function get_download_ids($item, $order)
        {
        }
    }
    /**
     * WC Product Data Store Interface
     *
     * Functions that must be defined by product store classes.
     *
     * @version  3.0.0
     */
    interface WC_Product_Data_Store_Interface
    {
        /**
         * Returns an array of on sale products, as an array of objects with an
         * ID and parent_id present. Example: $return[0]->id, $return[0]->parent_id.
         *
         * @return array
         */
        public function get_on_sale_products();
        /**
         * Returns a list of product IDs ( id as key => parent as value) that are
         * featured. Uses get_posts instead of wc_get_products since we want
         * some extra meta queries and ALL products (posts_per_page = -1).
         *
         * @return array
         */
        public function get_featured_product_ids();
        /**
         * Check if product sku is found for any other product IDs.
         *
         * @param int    $product_id Product ID.
         * @param string $sku SKU.
         * @return bool
         */
        public function is_existing_sku($product_id, $sku);
        /**
         * Return product ID based on SKU.
         *
         * @param string $sku SKU.
         * @return int
         */
        public function get_product_id_by_sku($sku);
        /**
         * Returns an array of IDs of products that have sales starting soon.
         *
         * @return array
         */
        public function get_starting_sales();
        /**
         * Returns an array of IDs of products that have sales which are due to end.
         *
         * @return array
         */
        public function get_ending_sales();
        /**
         * Find a matching (enabled) variation within a variable product.
         *
         * @param WC_Product $product Variable product object.
         * @param array      $match_attributes Array of attributes we want to try to match.
         * @return int Matching variation ID or 0.
         */
        public function find_matching_product_variation($product, $match_attributes = array());
        /**
         * Make sure all variations have a sort order set so they can be reordered correctly.
         *
         * @param int $parent_id Parent ID.
         */
        public function sort_all_product_variations($parent_id);
        /**
         * Return a list of related products (using data like categories and IDs).
         *
         * @param array $cats_array List of categories IDs.
         * @param array $tags_array List of tags IDs.
         * @param array $exclude_ids Excluded IDs.
         * @param int   $limit Limit of results.
         * @param int   $product_id Product ID.
         * @return array
         */
        public function get_related_products($cats_array, $tags_array, $exclude_ids, $limit, $product_id);
        /**
         * Update a product's stock amount directly.
         *
         * Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues).
         *
         * @param int      $product_id_with_stock Product ID.
         * @param int|null $stock_quantity Stock quantity to update to.
         * @param string   $operation Either set, increase or decrease.
         */
        public function update_product_stock($product_id_with_stock, $stock_quantity = \null, $operation = 'set');
        /**
         * Update a product's sale count directly.
         *
         * Uses queries rather than update_post_meta so we can do this in one query for performance.
         *
         * @param int      $product_id Product ID.
         * @param int|null $quantity Stock quantity to use for update.
         * @param string   $operation Either set, increase or decrease.
         */
        public function update_product_sales($product_id, $quantity = \null, $operation = 'set');
        /**
         * Get shipping class ID by slug.
         *
         * @param string $slug Shipping class slug.
         * @return int|false
         */
        public function get_shipping_class_id_by_slug($slug);
        /**
         * Returns an array of products.
         *
         * @param array $args @see wc_get_products.
         * @return array
         */
        public function get_products($args = array());
        /**
         * Get the product type based on product ID.
         *
         * @param int $product_id Product ID.
         * @return bool|string
         */
        public function get_product_type($product_id);
    }
    /**
     * WC Product Data Store: Stored in CPT.
     *
     * @version  3.0.0
     */
    class WC_Product_Data_Store_CPT extends \WC_Data_Store_WP implements \WC_Object_Data_Store_Interface, \WC_Product_Data_Store_Interface
    {
        /**
         * Data stored in meta keys, but not considered "meta".
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('_visibility', '_sku', '_price', '_regular_price', '_sale_price', '_sale_price_dates_from', '_sale_price_dates_to', 'total_sales', '_tax_status', '_tax_class', '_manage_stock', '_stock', '_stock_status', '_backorders', '_low_stock_amount', '_sold_individually', '_weight', '_length', '_width', '_height', '_upsell_ids', '_crosssell_ids', '_purchase_note', '_default_attributes', '_product_attributes', '_virtual', '_downloadable', '_download_limit', '_download_expiry', '_featured', '_downloadable_files', '_wc_rating_count', '_wc_average_rating', '_wc_review_count', '_variation_description', '_thumbnail_id', '_file_paths', '_product_image_gallery', '_product_version', '_wp_old_slug', '_edit_last', '_edit_lock');
        /**
         * Meta data which should exist in the DB, even if empty.
         *
         * @since 3.6.0
         *
         * @var array
         */
        protected $must_exist_meta_keys = array('_tax_class');
        /**
         * If we have already saved our extra data, don't do automatic / default handling.
         *
         * @var bool
         */
        protected $extra_data_saved = \false;
        /**
         * Stores updated props.
         *
         * @var array
         */
        protected $updated_props = array();
        /*
        |--------------------------------------------------------------------------
        | CRUD Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Method to create a new product in the database.
         *
         * @param WC_Product $product Product object.
         */
        public function create(&$product)
        {
        }
        /**
         * Method to read a product from the database.
         *
         * @param WC_Product $product Product object.
         * @throws Exception If invalid product.
         */
        public function read(&$product)
        {
        }
        /**
         * Method to update a product in the database.
         *
         * @param WC_Product $product Product object.
         */
        public function update(&$product)
        {
        }
        /**
         * Method to delete a product from the database.
         *
         * @param WC_Product $product Product object.
         * @param array      $args Array of args to pass to the delete method.
         */
        public function delete(&$product, $args = array())
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Additional Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Read product data. Can be overridden by child classes to load other props.
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function read_product_data(&$product)
        {
        }
        /**
         * Re-reads stock from the DB ignoring changes.
         *
         * @param WC_Product $product Product object.
         * @param int|float  $new_stock New stock level if already read.
         */
        public function read_stock_quantity(&$product, $new_stock = \null)
        {
        }
        /**
         * Read extra data associated with the product, like button text or product URL for external products.
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function read_extra_data(&$product)
        {
        }
        /**
         * Convert visibility terms to props.
         * Catalog visibility valid values are 'visible', 'catalog', 'search', and 'hidden'.
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function read_visibility(&$product)
        {
        }
        /**
         * Read attributes from post meta.
         *
         * @param WC_Product $product Product object.
         */
        protected function read_attributes(&$product)
        {
        }
        /**
         * Read downloads from post meta.
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function read_downloads(&$product)
        {
        }
        /**
         * Helper method that updates all the post meta for a product based on it's settings in the WC_Product class.
         *
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         * @since 3.0.0
         */
        protected function update_post_meta(&$product, $force = \false)
        {
        }
        /**
         * Handle updated meta props after updating meta data.
         *
         * @since 3.0.0
         * @param WC_Product $product Product Object.
         */
        protected function handle_updated_props(&$product)
        {
        }
        /**
         * For all stored terms in all taxonomies, save them to the DB.
         *
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         * @since 3.0.0
         */
        protected function update_terms(&$product, $force = \false)
        {
        }
        /**
         * Update visibility terms based on props.
         *
         * @since 3.0.0
         *
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         */
        protected function update_visibility(&$product, $force = \false)
        {
        }
        /**
         * Update attributes which are a mix of terms and meta data.
         *
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         * @since 3.0.0
         */
        protected function update_attributes(&$product, $force = \false)
        {
        }
        /**
         * Update downloads.
         *
         * @since 3.0.0
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         * @return bool If updated or not.
         */
        protected function update_downloads(&$product, $force = \false)
        {
        }
        /**
         * Make sure we store the product type and version (to track data changes).
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function update_version_and_type(&$product)
        {
        }
        /**
         * Clear any caches.
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function clear_caches(&$product)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | wc-product-functions.php methods
        |--------------------------------------------------------------------------
        */
        /**
         * Returns an array of on sale products, as an array of objects with an
         * ID and parent_id present. Example: $return[0]->id, $return[0]->parent_id.
         *
         * @return array
         * @since 3.0.0
         */
        public function get_on_sale_products()
        {
        }
        /**
         * Returns a list of product IDs ( id as key => parent as value) that are
         * featured. Uses get_posts instead of wc_get_products since we want
         * some extra meta queries and ALL products (posts_per_page = -1).
         *
         * @return array
         * @since 3.0.0
         */
        public function get_featured_product_ids()
        {
        }
        /**
         * Check if product sku is found for any other product IDs.
         *
         * @since 3.0.0
         * @param int    $product_id Product ID.
         * @param string $sku Will be slashed to work around https://core.trac.wordpress.org/ticket/27421.
         * @return bool
         */
        public function is_existing_sku($product_id, $sku)
        {
        }
        /**
         * Return product ID based on SKU.
         *
         * @since 3.0.0
         * @param string $sku Product SKU.
         * @return int
         */
        public function get_product_id_by_sku($sku)
        {
        }
        /**
         * Returns an array of IDs of products that have sales starting soon.
         *
         * @since 3.0.0
         * @return array
         */
        public function get_starting_sales()
        {
        }
        /**
         * Returns an array of IDs of products that have sales which are due to end.
         *
         * @since 3.0.0
         * @return array
         */
        public function get_ending_sales()
        {
        }
        /**
         * Find a matching (enabled) variation within a variable product.
         *
         * @since  3.0.0
         * @param  WC_Product $product Variable product.
         * @param  array      $match_attributes Array of attributes we want to try to match.
         * @return int Matching variation ID or 0.
         */
        public function find_matching_product_variation($product, $match_attributes = array())
        {
        }
        /**
         * Creates all possible combinations of variations from the attributes, without creating duplicates.
         *
         * @since  3.6.0
         * @todo   Add to interface in 4.0.
         * @param  WC_Product $product Variable product.
         * @param  int        $limit Limit the number of created variations.
         * @return int        Number of created variations.
         */
        public function create_all_product_variations($product, $limit = -1)
        {
        }
        /**
         * Make sure all variations have a sort order set so they can be reordered correctly.
         *
         * @param int $parent_id Product ID.
         */
        public function sort_all_product_variations($parent_id)
        {
        }
        /**
         * Return a list of related products (using data like categories and IDs).
         *
         * @since 3.0.0
         * @param array $cats_array  List of categories IDs.
         * @param array $tags_array  List of tags IDs.
         * @param array $exclude_ids Excluded IDs.
         * @param int   $limit       Limit of results.
         * @param int   $product_id  Product ID.
         * @return array
         */
        public function get_related_products($cats_array, $tags_array, $exclude_ids, $limit, $product_id)
        {
        }
        /**
         * Builds the related posts query.
         *
         * @since 3.0.0
         *
         * @param array $cats_array  List of categories IDs.
         * @param array $tags_array  List of tags IDs.
         * @param array $exclude_ids Excluded IDs.
         * @param int   $limit       Limit of results.
         *
         * @return array
         */
        public function get_related_products_query($cats_array, $tags_array, $exclude_ids, $limit)
        {
        }
        /**
         * Update a product's stock amount directly in the database.
         *
         * Updates both post meta and lookup tables. Ignores manage stock setting on the product.
         *
         * @param int            $product_id_with_stock Product ID.
         * @param int|float|null $stock_quantity        Stock quantity.
         */
        protected function set_product_stock($product_id_with_stock, $stock_quantity)
        {
        }
        /**
         * Update a product's stock amount directly.
         *
         * Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues).
         * Ignores manage stock setting on the product and sets quantities directly in the db: post meta and lookup tables.
         * Uses locking to update the quantity. If the lock is not acquired, change is lost.
         *
         * @since  3.0.0 this supports set, increase and decrease.
         * @param  int            $product_id_with_stock Product ID.
         * @param  int|float|null $stock_quantity Stock quantity.
         * @param  string         $operation Set, increase and decrease.
         * @return int|float New stock level.
         */
        public function update_product_stock($product_id_with_stock, $stock_quantity = \null, $operation = 'set')
        {
        }
        /**
         * Update a product's sale count directly.
         *
         * Uses queries rather than update_post_meta so we can do this in one query for performance.
         *
         * @since  3.0.0 this supports set, increase and decrease.
         * @param  int      $product_id Product ID.
         * @param  int|null $quantity Quantity.
         * @param  string   $operation set, increase and decrease.
         */
        public function update_product_sales($product_id, $quantity = \null, $operation = 'set')
        {
        }
        /**
         * Update a products average rating meta.
         *
         * @since 3.0.0
         * @todo Deprecate unused function?
         * @param WC_Product $product Product object.
         */
        public function update_average_rating($product)
        {
        }
        /**
         * Update a products review count meta.
         *
         * @since 3.0.0
         * @todo Deprecate unused function?
         * @param WC_Product $product Product object.
         */
        public function update_review_count($product)
        {
        }
        /**
         * Update a products rating counts.
         *
         * @since 3.0.0
         * @todo Deprecate unused function?
         * @param WC_Product $product Product object.
         */
        public function update_rating_counts($product)
        {
        }
        /**
         * Get shipping class ID by slug.
         *
         * @since 3.0.0
         * @param string $slug Product shipping class slug.
         * @return int|false
         */
        public function get_shipping_class_id_by_slug($slug)
        {
        }
        /**
         * Returns an array of products.
         *
         * @param  array $args Args to pass to WC_Product_Query().
         * @return array|object
         * @see wc_get_products
         */
        public function get_products($args = array())
        {
        }
        /**
         * Search product data for a term and return ids.
         *
         * @param  string     $term Search term.
         * @param  string     $type Type of product.
         * @param  bool       $include_variations Include variations in search or not.
         * @param  bool       $all_statuses Should we search all statuses or limit to published.
         * @param  null|int   $limit Limit returned results. @since 3.5.0.
         * @param  null|array $include Keep specific results. @since 3.6.0.
         * @param  null|array $exclude Discard specific results. @since 3.6.0.
         * @return array of ids
         */
        public function search_products($term, $type = '', $include_variations = \false, $all_statuses = \false, $limit = \null, $include = \null, $exclude = \null)
        {
        }
        /**
         * Get the product type based on product ID.
         *
         * @since 3.0.0
         * @param int $product_id Product ID.
         * @return bool|string
         */
        public function get_product_type($product_id)
        {
        }
        /**
         * Add ability to get products by 'reviews_allowed' in WC_Product_Query.
         *
         * @since 3.2.0
         * @param string   $where Where clause.
         * @param WP_Query $wp_query WP_Query instance.
         * @return string
         */
        public function reviews_allowed_query_where($where, $wp_query)
        {
        }
        /**
         * Get valid WP_Query args from a WC_Product_Query's query variables.
         *
         * @since 3.2.0
         * @param array $query_vars Query vars from a WC_Product_Query.
         * @return array
         */
        protected function get_wp_query_args($query_vars)
        {
        }
        /**
         * Query for Products matching specific criteria.
         *
         * @since 3.2.0
         *
         * @param array $query_vars Query vars from a WC_Product_Query.
         *
         * @return array|object
         */
        public function query($query_vars)
        {
        }
        /**
         * Get data to save to a lookup table.
         *
         * @since 3.6.0
         * @param int    $id ID of object to update.
         * @param string $table Lookup table name.
         * @return array
         */
        protected function get_data_for_lookup_table($id, $table)
        {
        }
        /**
         * Get primary key name for lookup table.
         *
         * @since 3.6.0
         * @param string $table Lookup table name.
         * @return string
         */
        protected function get_primary_key_for_lookup_table($table)
        {
        }
    }
    /**
     * WooCommerce Webhook data store interface.
     */
    interface WC_Webhook_Data_Store_Interface
    {
        /**
         * Get API version number.
         *
         * @since  3.2.0
         * @param  string $api_version REST API version.
         * @return int
         */
        public function get_api_version_number($api_version);
        /**
         * Get all webhooks IDs.
         *
         * @since  3.2.0
         * @throws InvalidArgumentException If a $status value is passed in that is not in the known wc_get_webhook_statuses() keys.
         * @param  string $status Optional - status to filter results by. Must be a key in return value of @see wc_get_webhook_statuses(). @since 3.6.0.
         * @return int[]
         */
        public function get_webhooks_ids($status = '');
    }
    /**
     * Webhook data store class.
     */
    class WC_Webhook_Data_Store implements \WC_Webhook_Data_Store_Interface
    {
        /**
         * Create a new webhook in the database.
         *
         * @since 3.3.0
         * @param WC_Webhook $webhook Webhook instance.
         */
        public function create(&$webhook)
        {
        }
        /**
         * Read a webhook from the database.
         *
         * @since  3.3.0
         * @param  WC_Webhook $webhook Webhook instance.
         * @throws Exception When webhook is invalid.
         */
        public function read(&$webhook)
        {
        }
        /**
         * Update a webhook.
         *
         * @since 3.3.0
         * @param WC_Webhook $webhook Webhook instance.
         */
        public function update(&$webhook)
        {
        }
        /**
         * Remove a webhook from the database.
         *
         * @since 3.3.0
         * @param WC_Webhook $webhook      Webhook instance.
         */
        public function delete(&$webhook)
        {
        }
        /**
         * Get API version number.
         *
         * @since  3.3.0
         * @param  string $api_version REST API version.
         * @return int
         */
        public function get_api_version_number($api_version)
        {
        }
        /**
         * Get webhooks IDs from the database.
         *
         * @since  3.3.0
         * @throws InvalidArgumentException If a $status value is passed in that is not in the known wc_get_webhook_statuses() keys.
         * @param  string $status Optional - status to filter results by. Must be a key in return value of @see wc_get_webhook_statuses(). @since 3.6.0.
         * @return int[]
         */
        public function get_webhooks_ids($status = '')
        {
        }
        /**
         * Search webhooks.
         *
         * @param  array $args Search arguments.
         * @return array|object
         */
        public function search_webhooks($args)
        {
        }
        /**
         * Count webhooks.
         *
         * @since 3.6.0
         * @param string $status Status to count.
         * @return int
         */
        protected function get_webhook_count($status = 'active')
        {
        }
        /**
         * Get total webhook counts by status.
         *
         * @return array
         */
        public function get_count_webhooks_by_status()
        {
        }
        /**
         * Check if a given string is in known statuses, based on return value of @see wc_get_webhook_statuses().
         *
         * @since  3.6.0
         * @throws InvalidArgumentException If $status is not empty and not in the known wc_get_webhook_statuses() keys.
         * @param  string $status Status to check.
         */
        private function validate_status($status)
        {
        }
        /**
         * Get the transient key used to cache a set of webhook IDs, optionally filtered by status.
         *
         * @since  3.6.0
         * @param  string $status Optional - status of cache key.
         * @return string
         */
        private function get_transient_key($status = '')
        {
        }
        /**
         * Delete the transients used to cache a set of webhook IDs, optionally filtered by status.
         *
         * @since 3.6.0
         * @param string $status Optional - status of cache to delete, or 'all' to delete all caches.
         */
        private function delete_transients($status = '')
        {
        }
    }
    /**
     * WC Customer Download Data Store Interface.
     *
     * @version  3.0.0
     */
    interface WC_Customer_Download_Data_Store_Interface
    {
        /**
         * Method to delete a download permission from the database by ID.
         *
         * @param int $id Download Permission ID.
         */
        public function delete_by_id($id);
        /**
         * Method to delete a download permission from the database by order ID.
         *
         * @param int $id Order ID.
         */
        public function delete_by_order_id($id);
        /**
         * Method to delete a download permission from the database by download ID.
         *
         * @param int $id Download ID.
         */
        public function delete_by_download_id($id);
        /**
         * Get array of download ids by specified args.
         *
         * @param  array $args Arguments.
         * @return array of WC_Customer_Download
         */
        public function get_downloads($args = array());
        /**
         * Update download ids if the hash changes.
         *
         * @param  int    $product_id Product ID.
         * @param  string $old_id Old ID.
         * @param  string $new_id New ID.
         */
        public function update_download_id($product_id, $old_id, $new_id);
        /**
         * Get a customers downloads.
         *
         * @param  int $customer_id Customer ID.
         * @return array
         */
        public function get_downloads_for_customer($customer_id);
        /**
         * Update user prop for downloads based on order id.
         *
         * @param  int    $order_id Order ID.
         * @param  int    $customer_id Customer ID.
         * @param  string $email Email Address.
         */
        public function update_user_by_order_id($order_id, $customer_id, $email);
    }
    /**
     * WC Customer Download Data Store.
     *
     * @version  3.0.0
     */
    class WC_Customer_Download_Data_Store implements \WC_Customer_Download_Data_Store_Interface
    {
        /**
         * Create download permission for a user.
         *
         * @param WC_Customer_Download $download WC_Customer_Download object.
         */
        public function create(&$download)
        {
        }
        /**
         * Method to read a download permission from the database.
         *
         * @param WC_Customer_Download $download WC_Customer_Download object.
         *
         * @throws Exception Throw exception if invalid download is passed.
         */
        public function read(&$download)
        {
        }
        /**
         * Method to update a download in the database.
         *
         * @param WC_Customer_Download $download WC_Customer_Download object.
         */
        public function update(&$download)
        {
        }
        /**
         * Method to delete a download permission from the database.
         *
         * @param WC_Customer_Download $download WC_Customer_Download object.
         * @param array                $args Array of args to pass to the delete method.
         */
        public function delete(&$download, $args = array())
        {
        }
        /**
         * Method to delete a download permission from the database by ID.
         *
         * @param int $id permission_id of the download to be deleted.
         */
        public function delete_by_id($id)
        {
        }
        /**
         * Method to delete a download permission from the database by order ID.
         *
         * @param int $id Order ID of the downloads that will be deleted.
         */
        public function delete_by_order_id($id)
        {
        }
        /**
         * Method to delete a download permission from the database by download ID.
         *
         * @param int $id download_id of the downloads that will be deleted.
         */
        public function delete_by_download_id($id)
        {
        }
        /**
         * Method to delete a download permission from the database by user ID.
         *
         * @since 3.4.0
         * @param int $id user ID of the downloads that will be deleted.
         * @return bool True if deleted rows.
         */
        public function delete_by_user_id($id)
        {
        }
        /**
         * Method to delete a download permission from the database by user email.
         *
         * @since 3.4.0
         * @param string $email email of the downloads that will be deleted.
         * @return bool True if deleted rows.
         */
        public function delete_by_user_email($email)
        {
        }
        /**
         * Get a download object.
         *
         * @param  array $data From the DB.
         * @return WC_Customer_Download
         */
        private function get_download($data)
        {
        }
        /**
         * Get array of download ids by specified args.
         *
         * @param  array $args Arguments to filter downloads. $args['return'] accepts the following values: 'objects' (default), 'ids' or a comma separeted list of fields (for example: 'order_id,user_id,user_email').
         * @return array Can be an array of permission_ids, an array of WC_Customer_Download objects or an array of arrays containing specified fields depending on the value of $args['return'].
         */
        public function get_downloads($args = array())
        {
        }
        /**
         * Update download ids if the hash changes.
         *
         * @deprecated 3.3.0 Download id is now a static UUID and should not be changed based on file hash.
         *
         * @param  int    $product_id Product ID.
         * @param  string $old_id Old download_id.
         * @param  string $new_id New download_id.
         */
        public function update_download_id($product_id, $old_id, $new_id)
        {
        }
        /**
         * Get a customers downloads.
         *
         * @param  int $customer_id Customer ID.
         * @return array
         */
        public function get_downloads_for_customer($customer_id)
        {
        }
        /**
         * Update user prop for downloads based on order id.
         *
         * @param  int    $order_id Order ID.
         * @param  int    $customer_id Customer ID.
         * @param  string $email Customer email address.
         */
        public function update_user_by_order_id($order_id, $customer_id, $email)
        {
        }
    }
    /**
     * WC Order Data Store Interface
     *
     * Functions that must be defined by order store classes.
     *
     * @version  3.0.0
     */
    interface WC_Order_Data_Store_Interface
    {
        /**
         * Get amount already refunded.
         *
         * @param WC_Order $order Order object.
         * @return float
         */
        public function get_total_refunded($order);
        /**
         * Get the total tax refunded.
         *
         * @param WC_Order $order Order object.
         * @return float
         */
        public function get_total_tax_refunded($order);
        /**
         * Get the total shipping refunded.
         *
         * @param WC_Order $order Order object.
         * @return float
         */
        public function get_total_shipping_refunded($order);
        /**
         * Finds an Order ID based on an order key.
         *
         * @param string $order_key An order key has generated by.
         * @return int The ID of an order, or 0 if the order could not be found.
         */
        public function get_order_id_by_order_key($order_key);
        /**
         * Return count of orders with a specific status.
         *
         * @param string $status Order status.
         * @return int
         */
        public function get_order_count($status);
        /**
         * Get all orders matching the passed in args.
         *
         * @see    wc_get_orders()
         * @param array $args Arguments.
         * @return array of orders
         */
        public function get_orders($args = array());
        /**
         * Get unpaid orders after a certain date,
         *
         * @param int $date timestamp.
         * @return array
         */
        public function get_unpaid_orders($date);
        /**
         * Search order data for a term and return ids.
         *
         * @param  string $term Term name.
         * @return array of ids
         */
        public function search_orders($term);
        /**
         * Gets information about whether permissions were generated yet.
         *
         * @param WC_Order $order Order object.
         * @return bool
         */
        public function get_download_permissions_granted($order);
        /**
         * Stores information about whether permissions were generated yet.
         *
         * @param WC_Order $order Order object.
         * @param bool     $set If should set.
         */
        public function set_download_permissions_granted($order, $set);
        /**
         * Gets information about whether sales were recorded.
         *
         * @param WC_Order $order Order object.
         * @return bool
         */
        public function get_recorded_sales($order);
        /**
         * Stores information about whether sales were recorded.
         *
         * @param WC_Order $order Order object.
         * @param bool     $set If should set.
         */
        public function set_recorded_sales($order, $set);
        /**
         * Gets information about whether coupon counts were updated.
         *
         * @param WC_Order $order Order object.
         * @return bool
         */
        public function get_recorded_coupon_usage_counts($order);
        /**
         * Stores information about whether coupon counts were updated.
         *
         * @param WC_Order $order Order object.
         * @param bool     $set If should set.
         */
        public function set_recorded_coupon_usage_counts($order, $set);
        /**
         * Get the order type based on Order ID.
         *
         * @param int $order_id Order ID.
         * @return string
         */
        public function get_order_type($order_id);
    }
    /**
     * WC Order Data Store Interface
     *
     * Functions that must be defined by order store classes.
     *
     * @version  3.0.0
     */
    interface WC_Abstract_Order_Data_Store_Interface
    {
        /**
         * Read order items of a specific type from the database for this order.
         *
         * @param WC_Order $order Order object.
         * @param string   $type Order item type.
         * @return array
         */
        public function read_items($order, $type);
        /**
         * Remove all line items (products, coupons, shipping, taxes) from the order.
         *
         * @param WC_Order $order Order object.
         * @param string   $type Order item type. Default null.
         */
        public function delete_items($order, $type = \null);
        /**
         * Get token ids for an order.
         *
         * @param WC_Order $order Order object.
         * @return array
         */
        public function get_payment_token_ids($order);
        /**
         * Update token ids for an order.
         *
         * @param WC_Order $order Order object.
         * @param array    $token_ids Token IDs.
         */
        public function update_payment_token_ids($order, $token_ids);
    }
    /**
     * Abstract Order Data Store: Stored in CPT.
     *
     * @version  3.0.0
     */
    abstract class Abstract_WC_Order_Data_Store_CPT extends \WC_Data_Store_WP implements \WC_Object_Data_Store_Interface, \WC_Abstract_Order_Data_Store_Interface
    {
        /**
         * Internal meta type used to store order data.
         *
         * @var string
         */
        protected $meta_type = 'post';
        /**
         * Data stored in meta keys, but not considered "meta" for an order.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('_order_currency', '_cart_discount', '_cart_discount_tax', '_order_shipping', '_order_shipping_tax', '_order_tax', '_order_total', '_order_version', '_prices_include_tax', '_payment_tokens');
        /*
        |--------------------------------------------------------------------------
        | CRUD Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Method to create a new order in the database.
         *
         * @param WC_Order $order Order object.
         */
        public function create(&$order)
        {
        }
        /**
         * Method to read an order from the database.
         *
         * @param WC_Data $order Order object.
         *
         * @throws Exception If passed order is invalid.
         */
        public function read(&$order)
        {
        }
        /**
         * Method to update an order in the database.
         *
         * @param WC_Order $order Order object.
         */
        public function update(&$order)
        {
        }
        /**
         * Method to delete an order from the database.
         *
         * @param WC_Order $order Order object.
         * @param array    $args Array of args to pass to the delete method.
         *
         * @return void
         */
        public function delete(&$order, $args = array())
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Additional Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Get the status to save to the post object.
         *
         * Plugins extending the order classes can override this to change the stored status/add prefixes etc.
         *
         * @since 3.6.0
         * @param  WC_order $order Order object.
         * @return string
         */
        protected function get_post_status($order)
        {
        }
        /**
         * Excerpt for post.
         *
         * @param  WC_order $order Order object.
         * @return string
         */
        protected function get_post_excerpt($order)
        {
        }
        /**
         * Get a title for the new post type.
         *
         * @return string
         */
        protected function get_post_title()
        {
        }
        /**
         * Read order data. Can be overridden by child classes to load other props.
         *
         * @param WC_Order $order Order object.
         * @param object   $post_object Post object.
         * @since 3.0.0
         */
        protected function read_order_data(&$order, $post_object)
        {
        }
        /**
         * Helper method that updates all the post meta for an order based on it's settings in the WC_Order class.
         *
         * @param WC_Order $order Order object.
         * @since 3.0.0
         */
        protected function update_post_meta(&$order)
        {
        }
        /**
         * Clear any caches.
         *
         * @param WC_Order $order Order object.
         * @since 3.0.0
         */
        protected function clear_caches(&$order)
        {
        }
        /**
         * Read order items of a specific type from the database for this order.
         *
         * @param  WC_Order $order Order object.
         * @param  string   $type Order item type.
         * @return array
         */
        public function read_items($order, $type)
        {
        }
        /**
         * Remove all line items (products, coupons, shipping, taxes) from the order.
         *
         * @param WC_Order $order Order object.
         * @param string   $type Order item type. Default null.
         */
        public function delete_items($order, $type = \null)
        {
        }
        /**
         * Get token ids for an order.
         *
         * @param WC_Order $order Order object.
         * @return array
         */
        public function get_payment_token_ids($order)
        {
        }
        /**
         * Update token ids for an order.
         *
         * @param WC_Order $order Order object.
         * @param array    $token_ids Payment token ids.
         */
        public function update_payment_token_ids($order, $token_ids)
        {
        }
    }
    /**
     * WC Order Data Store: Stored in CPT.
     *
     * @version  3.0.0
     */
    class WC_Order_Data_Store_CPT extends \Abstract_WC_Order_Data_Store_CPT implements \WC_Object_Data_Store_Interface, \WC_Order_Data_Store_Interface
    {
        /**
         * Data stored in meta keys, but not considered "meta" for an order.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('_customer_user', '_order_key', '_order_currency', '_billing_first_name', '_billing_last_name', '_billing_company', '_billing_address_1', '_billing_address_2', '_billing_city', '_billing_state', '_billing_postcode', '_billing_country', '_billing_email', '_billing_phone', '_shipping_first_name', '_shipping_last_name', '_shipping_company', '_shipping_address_1', '_shipping_address_2', '_shipping_city', '_shipping_state', '_shipping_postcode', '_shipping_country', '_completed_date', '_paid_date', '_edit_lock', '_edit_last', '_cart_discount', '_cart_discount_tax', '_order_shipping', '_order_shipping_tax', '_order_tax', '_order_total', '_payment_method', '_payment_method_title', '_transaction_id', '_customer_ip_address', '_customer_user_agent', '_created_via', '_order_version', '_prices_include_tax', '_date_completed', '_date_paid', '_payment_tokens', '_billing_address_index', '_shipping_address_index', '_recorded_sales', '_recorded_coupon_usage_counts', '_download_permissions_granted', '_order_stock_reduced');
        /**
         * Method to create a new order in the database.
         *
         * @param WC_Order $order Order object.
         */
        public function create(&$order)
        {
        }
        /**
         * Read order data. Can be overridden by child classes to load other props.
         *
         * @param WC_Order $order Order object.
         * @param object   $post_object Post object.
         * @since 3.0.0
         */
        protected function read_order_data(&$order, $post_object)
        {
        }
        /**
         * Method to update an order in the database.
         *
         * @param WC_Order $order Order object.
         */
        public function update(&$order)
        {
        }
        /**
         * Helper method that updates all the post meta for an order based on it's settings in the WC_Order class.
         *
         * @param WC_Order $order Order object.
         * @since 3.0.0
         */
        protected function update_post_meta(&$order)
        {
        }
        /**
         * Excerpt for post.
         *
         * @param  WC_Order $order Order object.
         * @return string
         */
        protected function get_post_excerpt($order)
        {
        }
        /**
         * Get amount already refunded.
         *
         * @param  WC_Order $order Order object.
         * @return float
         */
        public function get_total_refunded($order)
        {
        }
        /**
         * Get the total tax refunded.
         *
         * @param  WC_Order $order Order object.
         * @return float
         */
        public function get_total_tax_refunded($order)
        {
        }
        /**
         * Get the total shipping refunded.
         *
         * @param  WC_Order $order Order object.
         * @return float
         */
        public function get_total_shipping_refunded($order)
        {
        }
        /**
         * Finds an Order ID based on an order key.
         *
         * @param string $order_key An order key has generated by.
         * @return int The ID of an order, or 0 if the order could not be found
         */
        public function get_order_id_by_order_key($order_key)
        {
        }
        /**
         * Return count of orders with a specific status.
         *
         * @param  string $status Order status. Function wc_get_order_statuses() returns a list of valid statuses.
         * @return int
         */
        public function get_order_count($status)
        {
        }
        /**
         * Get all orders matching the passed in args.
         *
         * @deprecated 3.1.0 - Use wc_get_orders instead.
         * @see    wc_get_orders()
         *
         * @param  array $args List of args passed to wc_get_orders().
         *
         * @return array|object
         */
        public function get_orders($args = array())
        {
        }
        /**
         * Generate meta query for wc_get_orders.
         *
         * @param  array  $values List of customers ids or emails.
         * @param  string $relation 'or' or 'and' relation used to build the WP meta_query.
         * @return array
         */
        private function get_orders_generate_customer_meta_query($values, $relation = 'or')
        {
        }
        /**
         * Get unpaid orders after a certain date,
         *
         * @param  int $date Timestamp.
         * @return array
         */
        public function get_unpaid_orders($date)
        {
        }
        /**
         * Search order data for a term and return ids.
         *
         * @param  string $term Searched term.
         * @return array of ids
         */
        public function search_orders($term)
        {
        }
        /**
         * Gets information about whether permissions were generated yet.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @return bool
         */
        public function get_download_permissions_granted($order)
        {
        }
        /**
         * Stores information about whether permissions were generated yet.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @param bool         $set True or false.
         */
        public function set_download_permissions_granted($order, $set)
        {
        }
        /**
         * Gets information about whether sales were recorded.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @return bool
         */
        public function get_recorded_sales($order)
        {
        }
        /**
         * Stores information about whether sales were recorded.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @param bool         $set True or false.
         */
        public function set_recorded_sales($order, $set)
        {
        }
        /**
         * Gets information about whether coupon counts were updated.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @return bool
         */
        public function get_recorded_coupon_usage_counts($order)
        {
        }
        /**
         * Stores information about whether coupon counts were updated.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @param bool         $set True or false.
         */
        public function set_recorded_coupon_usage_counts($order, $set)
        {
        }
        /**
         * Gets information about whether stock was reduced.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @return bool
         */
        public function get_stock_reduced($order)
        {
        }
        /**
         * Stores information about whether stock was reduced.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @param bool         $set True or false.
         */
        public function set_stock_reduced($order, $set)
        {
        }
        /**
         * Get the order type based on Order ID.
         *
         * @since 3.0.0
         * @param int $order_id Order ID.
         * @return string
         */
        public function get_order_type($order_id)
        {
        }
        /**
         * Get valid WP_Query args from a WC_Order_Query's query variables.
         *
         * @since 3.1.0
         * @param array $query_vars query vars from a WC_Order_Query.
         * @return array
         */
        protected function get_wp_query_args($query_vars)
        {
        }
        /**
         * Query for Orders matching specific criteria.
         *
         * @since 3.1.0
         *
         * @param array $query_vars query vars from a WC_Order_Query.
         *
         * @return array|object
         */
        public function query($query_vars)
        {
        }
        /**
         * Return the order type of a given item which belongs to WC_Order.
         *
         * @since  3.2.0
         * @param  WC_Order $order Order Object.
         * @param  int      $order_item_id Order item id.
         * @return string Order Item type
         */
        public function get_order_item_type($order, $order_item_id)
        {
        }
    }
    /**
     * WC Customer Download Log Data Store Interface.
     *
     * @version  3.3.0
     */
    interface WC_Customer_Download_Log_Data_Store_Interface
    {
        /**
         * Get array of download log ids by specified args.
         *
         * @param  array $args Arguments.
         * @return array of WC_Customer_Download_Log
         */
        public function get_download_logs($args = array());
        /**
         * Get logs for a specific download permission.
         *
         * @param  int $permission_id Permission ID.
         * @return array
         */
        public function get_download_logs_for_permission($permission_id);
    }
    /**
     * WC_Customer_Download_Log_Data_Store class.
     */
    class WC_Customer_Download_Log_Data_Store implements \WC_Customer_Download_Log_Data_Store_Interface
    {
        // Table name for download logs.
        const WC_DOWNLOAD_LOG_TABLE = 'wc_download_log';
        /**
         * Get the table name for download logs.
         *
         * @return string
         */
        public static function get_table_name()
        {
        }
        /**
         * Create download log entry.
         *
         * @param WC_Customer_Download_Log $download_log Customer download log object.
         */
        public function create(\WC_Customer_Download_Log &$download_log)
        {
        }
        /**
         * Method to read a download log from the database.
         *
         * @param WC_Customer_Download_Log $download_log Download log object.
         * @throws Exception Exception when read is not possible.
         */
        public function read(&$download_log)
        {
        }
        /**
         * Method to update a download log in the database.
         *
         * @param WC_Customer_Download_Log $download_log Download log object.
         */
        public function update(&$download_log)
        {
        }
        /**
         * Get a download log object.
         *
         * @param  array $data From the DB.
         * @return WC_Customer_Download_Log
         */
        private function get_download_log($data)
        {
        }
        /**
         * Get array of download log ids by specified args.
         *
         * @param  array $args Arguments to define download logs to retrieve.
         * @return array
         */
        public function get_download_logs($args = array())
        {
        }
        /**
         * Get download logs for a given download permission.
         *
         * @param int $permission_id Permission to get logs for.
         * @return array
         */
        public function get_download_logs_for_permission($permission_id)
        {
        }
        /**
         * Method to delete download logs for a given permission ID.
         *
         * @since 3.4.0
         * @param int $id download_id of the downloads that will be deleted.
         */
        public function delete_by_permission_id($id)
        {
        }
    }
    /**
     * WC Order Item Coupon Data Store
     *
     * @version  3.0.0
     */
    class WC_Order_Item_Coupon_Data_Store extends \Abstract_WC_Order_Item_Type_Data_Store implements \WC_Object_Data_Store_Interface, \WC_Order_Item_Type_Data_Store_Interface
    {
        /**
         * Data stored in meta keys.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('discount_amount', 'discount_amount_tax');
        /**
         * Read/populate data properties specific to this order item.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Coupon $item Coupon order item.
         */
        public function read(&$item)
        {
        }
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $item->get_id() will be set.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Coupon $item Coupon order item.
         */
        public function save_item_data(&$item)
        {
        }
    }
    /**
     * WC Customer Data Store Interface
     *
     * Functions that must be defined by customer store classes.
     *
     * @version  3.0.0
     */
    interface WC_Customer_Data_Store_Interface
    {
        /**
         * Gets the customers last order.
         *
         * @param WC_Customer $customer Customer object.
         * @return WC_Order|false
         */
        public function get_last_order(&$customer);
        /**
         * Return the number of orders this customer has.
         *
         * @param WC_Customer $customer Customer object.
         * @return integer
         */
        public function get_order_count(&$customer);
        /**
         * Return how much money this customer has spent.
         *
         * @param WC_Customer $customer Customer object.
         * @return float
         */
        public function get_total_spent(&$customer);
    }
    /**
     * WC Customer Data Store which stores the data in session.
     *
     * @version  3.0.0
     */
    class WC_Customer_Data_Store_Session extends \WC_Data_Store_WP implements \WC_Customer_Data_Store_Interface, \WC_Object_Data_Store_Interface
    {
        /**
         * Keys which are also stored in a session (so we can make sure they get updated...)
         *
         * @var array
         */
        protected $session_keys = array('id', 'date_modified', 'billing_postcode', 'billing_city', 'billing_address_1', 'billing_address', 'billing_address_2', 'billing_state', 'billing_country', 'shipping_postcode', 'shipping_city', 'shipping_address_1', 'shipping_address', 'shipping_address_2', 'shipping_state', 'shipping_country', 'is_vat_exempt', 'calculated_shipping', 'billing_first_name', 'billing_last_name', 'billing_company', 'billing_phone', 'billing_email', 'shipping_first_name', 'shipping_last_name', 'shipping_company');
        /**
         * Simply update the session.
         *
         * @param WC_Customer $customer Customer object.
         */
        public function create(&$customer)
        {
        }
        /**
         * Simply update the session.
         *
         * @param WC_Customer $customer Customer object.
         */
        public function update(&$customer)
        {
        }
        /**
         * Saves all customer data to the session.
         *
         * @param WC_Customer $customer Customer object.
         */
        public function save_to_session($customer)
        {
        }
        /**
         * Read customer data from the session unless the user has logged in, in
         * which case the stored ID will differ from the actual ID.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         */
        public function read(&$customer)
        {
        }
        /**
         * Load default values if props are unset.
         *
         * @param WC_Customer $customer Customer object.
         */
        protected function set_defaults(&$customer)
        {
        }
        /**
         * Deletes a customer from the database.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @param array       $args Array of args to pass to the delete method.
         */
        public function delete(&$customer, $args = array())
        {
        }
        /**
         * Gets the customers last order.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @return WC_Order|false
         */
        public function get_last_order(&$customer)
        {
        }
        /**
         * Return the number of orders this customer has.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @return integer
         */
        public function get_order_count(&$customer)
        {
        }
        /**
         * Return how much money this customer has spent.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @return float
         */
        public function get_total_spent(&$customer)
        {
        }
    }
    /**
     * WC Order Item Tax Data Store
     *
     * @version  3.0.0
     */
    class WC_Order_Item_Tax_Data_Store extends \Abstract_WC_Order_Item_Type_Data_Store implements \WC_Object_Data_Store_Interface, \WC_Order_Item_Type_Data_Store_Interface
    {
        /**
         * Data stored in meta keys.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('rate_id', 'label', 'compound', 'tax_amount', 'shipping_tax_amount', 'rate_percent');
        /**
         * Read/populate data properties specific to this order item.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Tax $item Tax order item object.
         * @throws Exception If invalid order item.
         */
        public function read(&$item)
        {
        }
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $id will be set.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Tax $item Tax order item object.
         */
        public function save_item_data(&$item)
        {
        }
    }
    /**
     * WC Variation Product Data Store: Stored in CPT.
     *
     * @version  3.0.0
     */
    class WC_Product_Variation_Data_Store_CPT extends \WC_Product_Data_Store_CPT implements \WC_Object_Data_Store_Interface
    {
        /**
         * Callback to remove unwanted meta data.
         *
         * @param object $meta Meta object.
         * @return bool false if excluded.
         */
        protected function exclude_internal_meta_keys($meta)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Reads a product from the database and sets its data to the class.
         *
         * @since 3.0.0
         * @param WC_Product_Variation $product Product object.
         * @throws WC_Data_Exception If WC_Product::set_tax_status() is called with an invalid tax status (via read_product_data).
         */
        public function read(&$product)
        {
        }
        /**
         * Create a new product.
         *
         * @since 3.0.0
         * @param WC_Product_Variation $product Product object.
         */
        public function create(&$product)
        {
        }
        /**
         * Updates an existing product.
         *
         * @since 3.0.0
         * @param WC_Product_Variation $product Product object.
         */
        public function update(&$product)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Additional Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Generates a title with attribute information for a variation.
         * Products will get a title of the form "Name - Value, Value" or just "Name".
         *
         * @since 3.0.0
         * @param WC_Product $product Product object.
         * @return string
         */
        protected function generate_product_title($product)
        {
        }
        /**
         * Generates attribute summary for the variation.
         *
         * Attribute summary contains comma-delimited 'attribute_name: attribute_value' pairs for all attributes.
         *
         * @since 3.6.0
         * @param WC_Product_Variation $product Product variation to generate the attribute summary for.
         *
         * @return string
         */
        protected function generate_attribute_summary($product)
        {
        }
        /**
         * Make sure we store the product version (to track data changes).
         *
         * @param WC_Product $product Product object.
         * @since 3.0.0
         */
        protected function update_version_and_type(&$product)
        {
        }
        /**
         * Read post data.
         *
         * @since 3.0.0
         * @param WC_Product_Variation $product Product object.
         * @throws WC_Data_Exception If WC_Product::set_tax_status() is called with an invalid tax status.
         */
        protected function read_product_data(&$product)
        {
        }
        /**
         * For all stored terms in all taxonomies, save them to the DB.
         *
         * @since 3.0.0
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         */
        protected function update_terms(&$product, $force = \false)
        {
        }
        /**
         * Update visibility terms based on props.
         *
         * @since 3.0.0
         *
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         */
        protected function update_visibility(&$product, $force = \false)
        {
        }
        /**
         * Update attribute meta values.
         *
         * @since 3.0.0
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         */
        protected function update_attributes(&$product, $force = \false)
        {
        }
        /**
         * Helper method that updates all the post meta for a product based on it's settings in the WC_Product class.
         *
         * @since 3.0.0
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         */
        public function update_post_meta(&$product, $force = \false)
        {
        }
        /**
         * Update product variation guid.
         *
         * @param WC_Product_Variation $product Product variation object.
         *
         * @since 3.6.0
         */
        protected function update_guid($product)
        {
        }
    }
    /**
     * WC Coupon Data Store Interface
     *
     * Functions that must be defined by coupon store classes.
     *
     * @version  3.0.0
     */
    interface WC_Coupon_Data_Store_Interface
    {
        /**
         * Increase usage count for current coupon.
         *
         * @param WC_Coupon $coupon Coupon object.
         * @param string    $used_by Either user ID or billing email.
         */
        public function increase_usage_count(&$coupon, $used_by = '');
        /**
         *  Decrease usage count for current coupon.
         *
         * @param WC_Coupon $coupon Coupon object.
         * @param string    $used_by Either user ID or billing email.
         */
        public function decrease_usage_count(&$coupon, $used_by = '');
        /**
         * Get the number of uses for a coupon by user ID.
         *
         * @param WC_Coupon $coupon Coupon object.
         * @param int       $user_id User ID.
         * @return int
         */
        public function get_usage_by_user_id(&$coupon, $user_id);
        /**
         * Return a coupon code for a specific ID.
         *
         * @param int $id Coupon ID.
         * @return string Coupon Code.
         */
        public function get_code_by_id($id);
        /**
         * Return an array of IDs for for a specific coupon code.
         * Can return multiple to check for existence.
         *
         * @param string $code Coupon code.
         * @return array Array of IDs.
         */
        public function get_ids_by_code($code);
    }
    /**
     * WC Coupon Data Store: Custom Post Type.
     *
     * @version  3.0.0
     */
    class WC_Coupon_Data_Store_CPT extends \WC_Data_Store_WP implements \WC_Coupon_Data_Store_Interface, \WC_Object_Data_Store_Interface
    {
        /**
         * Internal meta type used to store coupon data.
         *
         * @since 3.0.0
         * @var string
         */
        protected $meta_type = 'post';
        /**
         * Data stored in meta keys, but not considered "meta" for a coupon.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('discount_type', 'coupon_amount', 'expiry_date', 'date_expires', 'usage_count', 'individual_use', 'product_ids', 'exclude_product_ids', 'usage_limit', 'usage_limit_per_user', 'limit_usage_to_x_items', 'free_shipping', 'product_categories', 'exclude_product_categories', 'exclude_sale_items', 'minimum_amount', 'maximum_amount', 'customer_email', '_used_by', '_edit_lock', '_edit_last');
        /**
         * Method to create a new coupon in the database.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         */
        public function create(&$coupon)
        {
        }
        /**
         * Method to read a coupon.
         *
         * @since 3.0.0
         *
         * @param WC_Coupon $coupon Coupon object.
         *
         * @throws Exception If invalid coupon.
         */
        public function read(&$coupon)
        {
        }
        /**
         * Updates a coupon in the database.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         */
        public function update(&$coupon)
        {
        }
        /**
         * Deletes a coupon from the database.
         *
         * @since 3.0.0
         *
         * @param WC_Coupon $coupon Coupon object.
         * @param array     $args Array of args to pass to the delete method.
         */
        public function delete(&$coupon, $args = array())
        {
        }
        /**
         * Helper method that updates all the post meta for a coupon based on it's settings in the WC_Coupon class.
         *
         * @param WC_Coupon $coupon Coupon object.
         * @since 3.0.0
         */
        private function update_post_meta(&$coupon)
        {
        }
        /**
         * Increase usage count for current coupon.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         * @param string    $used_by Either user ID or billing email.
         * @return int New usage count.
         */
        public function increase_usage_count(&$coupon, $used_by = '')
        {
        }
        /**
         * Decrease usage count for current coupon.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         * @param string    $used_by Either user ID or billing email.
         * @return int New usage count.
         */
        public function decrease_usage_count(&$coupon, $used_by = '')
        {
        }
        /**
         * Increase or decrease the usage count for a coupon by 1.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         * @param string    $operation 'increase' or 'decrease'.
         * @return int New usage count
         */
        private function update_usage_count_meta(&$coupon, $operation = 'increase')
        {
        }
        /**
         * Get the number of uses for a coupon by user ID.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         * @param id        $user_id User ID.
         * @return int
         */
        public function get_usage_by_user_id(&$coupon, $user_id)
        {
        }
        /**
         * Get the number of uses for a coupon by email address
         *
         * @since 3.6.4
         * @param WC_Coupon $coupon Coupon object.
         * @param string    $email Email address.
         * @return int
         */
        public function get_usage_by_email(&$coupon, $email)
        {
        }
        /**
         * Return a coupon code for a specific ID.
         *
         * @since 3.0.0
         * @param int $id Coupon ID.
         * @return string Coupon Code
         */
        public function get_code_by_id($id)
        {
        }
        /**
         * Return an array of IDs for for a specific coupon code.
         * Can return multiple to check for existence.
         *
         * @since 3.0.0
         * @param string $code Coupon code.
         * @return array Array of IDs.
         */
        public function get_ids_by_code($code)
        {
        }
    }
    /**
     * WC Shipping Zone Data Store Interface.
     *
     * Functions that must be defined by shipping zone store classes.
     *
     * @version  3.0.0
     */
    interface WC_Shipping_Zone_Data_Store_Interface
    {
        /**
         * Get a list of shipping methods for a specific zone.
         *
         * @param  int  $zone_id Zone ID.
         * @param  bool $enabled_only True to request enabled methods only.
         * @return array Array of objects containing method_id, method_order, instance_id, is_enabled
         */
        public function get_methods($zone_id, $enabled_only);
        /**
         * Get count of methods for a zone.
         *
         * @param int $zone_id Zone ID.
         * @return int Method Count
         */
        public function get_method_count($zone_id);
        /**
         * Add a shipping method to a zone.
         *
         * @param int    $zone_id Zone ID.
         * @param string $type Method Type/ID.
         * @param int    $order Method Order ID.
         * @return int Instance ID
         */
        public function add_method($zone_id, $type, $order);
        /**
         * Delete a method instance.
         *
         * @param int $instance_id Intance ID.
         */
        public function delete_method($instance_id);
        /**
         * Get a shipping zone method instance.
         *
         * @param int $instance_id Instance ID.
         * @return object
         */
        public function get_method($instance_id);
        /**
         * Find a matching zone ID for a given package.
         *
         * @param object $package Zone package object.
         * @return int
         */
        public function get_zone_id_from_package($package);
        /**
         * Return an ordered list of zones.
         *
         * @return array An array of objects containing a zone_id, zone_name, and zone_order.
         */
        public function get_zones();
        /**
         * Return a zone ID from an instance ID.
         *
         * @param int $id Instance ID.
         * @return int
         */
        public function get_zone_id_by_instance_id($id);
    }
    /**
     * WC Shipping Zone Data Store.
     *
     * @version  3.0.0
     */
    class WC_Shipping_Zone_Data_Store extends \WC_Data_Store_WP implements \WC_Shipping_Zone_Data_Store_Interface, \WC_Object_Data_Store_Interface
    {
        /**
         * Method to create a new shipping zone.
         *
         * @since 3.0.0
         * @param WC_Shipping_Zone $zone Shipping zone object.
         */
        public function create(&$zone)
        {
        }
        /**
         * Update zone in the database.
         *
         * @since 3.0.0
         * @param WC_Shipping_Zone $zone Shipping zone object.
         */
        public function update(&$zone)
        {
        }
        /**
         * Method to read a shipping zone from the database.
         *
         * @since 3.0.0
         * @param WC_Shipping_Zone $zone Shipping zone object.
         * @throws Exception If invalid data store.
         */
        public function read(&$zone)
        {
        }
        /**
         * Deletes a shipping zone from the database.
         *
         * @since  3.0.0
         * @param  WC_Shipping_Zone $zone Shipping zone object.
         * @param  array            $args Array of args to pass to the delete method.
         * @return void
         */
        public function delete(&$zone, $args = array())
        {
        }
        /**
         * Get a list of shipping methods for a specific zone.
         *
         * @since  3.0.0
         * @param  int  $zone_id      Zone ID.
         * @param  bool $enabled_only True to request enabled methods only.
         * @return array               Array of objects containing method_id, method_order, instance_id, is_enabled
         */
        public function get_methods($zone_id, $enabled_only)
        {
        }
        /**
         * Get count of methods for a zone.
         *
         * @since  3.0.0
         * @param  int $zone_id Zone ID.
         * @return int Method Count
         */
        public function get_method_count($zone_id)
        {
        }
        /**
         * Add a shipping method to a zone.
         *
         * @since  3.0.0
         * @param  int    $zone_id Zone ID.
         * @param  string $type    Method Type/ID.
         * @param  int    $order   Method Order.
         * @return int             Instance ID
         */
        public function add_method($zone_id, $type, $order)
        {
        }
        /**
         * Delete a method instance.
         *
         * @since 3.0.0
         * @param int $instance_id Instance ID.
         */
        public function delete_method($instance_id)
        {
        }
        /**
         * Get a shipping zone method instance.
         *
         * @since  3.0.0
         * @param  int $instance_id Instance ID.
         * @return object
         */
        public function get_method($instance_id)
        {
        }
        /**
         * Find a matching zone ID for a given package.
         *
         * @since  3.0.0
         * @param  object $package Package information.
         * @return int
         */
        public function get_zone_id_from_package($package)
        {
        }
        /**
         * Return an ordered list of zones.
         *
         * @since 3.0.0
         * @return array An array of objects containing a zone_id, zone_name, and zone_order.
         */
        public function get_zones()
        {
        }
        /**
         * Return a zone ID from an instance ID.
         *
         * @since  3.0.0
         * @param  int $id Instnace ID.
         * @return int
         */
        public function get_zone_id_by_instance_id($id)
        {
        }
        /**
         * Read location data from the database.
         *
         * @param WC_Shipping_Zone $zone Shipping zone object.
         */
        private function read_zone_locations(&$zone)
        {
        }
        /**
         * Save locations to the DB.
         * This function clears old locations, then re-inserts new if any changes are found.
         *
         * @since 3.0.0
         *
         * @param WC_Shipping_Zone $zone Shipping zone object.
         *
         * @return bool|void
         */
        private function save_locations(&$zone)
        {
        }
    }
    /**
     * WC Order Refund Data Store Interface
     *
     * Functions that must be defined by order store classes.
     *
     * @version  3.0.0
     */
    interface WC_Order_Refund_Data_Store_Interface
    {
    }
    /**
     * WC Order Refund Data Store: Stored in CPT.
     *
     * @version  3.0.0
     */
    class WC_Order_Refund_Data_Store_CPT extends \Abstract_WC_Order_Data_Store_CPT implements \WC_Object_Data_Store_Interface, \WC_Order_Refund_Data_Store_Interface
    {
        /**
         * Data stored in meta keys, but not considered "meta" for an order.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('_order_currency', '_cart_discount', '_refund_amount', '_refunded_by', '_refunded_payment', '_refund_reason', '_cart_discount_tax', '_order_shipping', '_order_shipping_tax', '_order_tax', '_order_total', '_order_version', '_prices_include_tax', '_payment_tokens');
        /**
         * Delete a refund - no trash is supported.
         *
         * @param WC_Order $order Order object.
         * @param array    $args Array of args to pass to the delete method.
         */
        public function delete(&$order, $args = array())
        {
        }
        /**
         * Read refund data. Can be overridden by child classes to load other props.
         *
         * @param WC_Order_Refund $refund Refund object.
         * @param object          $post_object Post object.
         * @since 3.0.0
         */
        protected function read_order_data(&$refund, $post_object)
        {
        }
        /**
         * Helper method that updates all the post meta for an order based on it's settings in the WC_Order class.
         *
         * @param WC_Order_Refund $refund Refund object.
         * @since 3.0.0
         */
        protected function update_post_meta(&$refund)
        {
        }
        /**
         * Get a title for the new post type.
         *
         * @return string
         */
        protected function get_post_title()
        {
        }
    }
    /**
     * WC Grouped Product Data Store: Stored in CPT.
     *
     * @version  3.0.0
     */
    class WC_Product_Grouped_Data_Store_CPT extends \WC_Product_Data_Store_CPT implements \WC_Object_Data_Store_Interface
    {
        /**
         * Helper method that updates all the post meta for a grouped product.
         *
         * @param WC_Product $product Product object.
         * @param bool       $force Force update. Used during create.
         * @since 3.0.0
         */
        protected function update_post_meta(&$product, $force = \false)
        {
        }
        /**
         * Handle updated meta props after updating meta data.
         *
         * @since  3.0.0
         * @param  WC_Product $product Product object.
         */
        protected function handle_updated_props(&$product)
        {
        }
        /**
         * Sync grouped product prices with children.
         *
         * @since 3.0.0
         * @param WC_Product|int $product Product object or product ID.
         */
        public function sync_price(&$product)
        {
        }
        /**
         * Loop over child products and update the grouped product prices.
         *
         * @param WC_Product $product Product object.
         */
        protected function update_prices_from_children(&$product)
        {
        }
    }
    /**
     * WC Customer Data Store.
     *
     * @version  3.0.0
     */
    class WC_Customer_Data_Store extends \WC_Data_Store_WP implements \WC_Customer_Data_Store_Interface, \WC_Object_Data_Store_Interface
    {
        /**
         * Data stored in meta keys, but not considered "meta".
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('locale', 'billing_postcode', 'billing_city', 'billing_address_1', 'billing_address_2', 'billing_state', 'billing_country', 'shipping_postcode', 'shipping_city', 'shipping_address_1', 'shipping_address_2', 'shipping_state', 'shipping_country', 'paying_customer', 'last_update', 'first_name', 'last_name', 'display_name', 'show_admin_bar_front', 'use_ssl', 'admin_color', 'rich_editing', 'comment_shortcuts', 'dismissed_wp_pointers', 'show_welcome_panel', 'session_tokens', 'nickname', 'description', 'billing_first_name', 'billing_last_name', 'billing_company', 'billing_phone', 'billing_email', 'shipping_first_name', 'shipping_last_name', 'shipping_company', 'wptests_capabilities', 'wptests_user_level', 'syntax_highlighting', '_order_count', '_money_spent', '_woocommerce_tracks_anon_id');
        /**
         * Internal meta type used to store user data.
         *
         * @var string
         */
        protected $meta_type = 'user';
        /**
         * Callback to remove unwanted meta data.
         *
         * @param object $meta Meta object.
         * @return bool
         */
        protected function exclude_internal_meta_keys($meta)
        {
        }
        /**
         * Method to create a new customer in the database.
         *
         * @since 3.0.0
         *
         * @param WC_Customer $customer Customer object.
         *
         * @throws WC_Data_Exception If unable to create new customer.
         */
        public function create(&$customer)
        {
        }
        /**
         * Method to read a customer object.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @throws Exception If invalid customer.
         */
        public function read(&$customer)
        {
        }
        /**
         * Updates a customer in the database.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         */
        public function update(&$customer)
        {
        }
        /**
         * Deletes a customer from the database.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @param array       $args Array of args to pass to the delete method.
         */
        public function delete(&$customer, $args = array())
        {
        }
        /**
         * Helper method that updates all the meta for a customer. Used for update & create.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         */
        private function update_user_meta($customer)
        {
        }
        /**
         * Gets the customers last order.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @return WC_Order|false
         */
        public function get_last_order(&$customer)
        {
        }
        /**
         * Return the number of orders this customer has.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @return integer
         */
        public function get_order_count(&$customer)
        {
        }
        /**
         * Return how much money this customer has spent.
         *
         * @since 3.0.0
         * @param WC_Customer $customer Customer object.
         * @return float
         */
        public function get_total_spent(&$customer)
        {
        }
        /**
         * Search customers and return customer IDs.
         *
         * @param  string     $term Search term.
         * @param  int|string $limit Limit search results.
         * @since 3.0.7
         *
         * @return array
         */
        public function search_customers($term, $limit = '')
        {
        }
    }
    /**
     * WC_Order_Item_Shipping_Data_Store class.
     */
    class WC_Order_Item_Shipping_Data_Store extends \Abstract_WC_Order_Item_Type_Data_Store implements \WC_Object_Data_Store_Interface, \WC_Order_Item_Type_Data_Store_Interface
    {
        /**
         * Data stored in meta keys.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('method_id', 'instance_id', 'cost', 'total_tax', 'taxes');
        /**
         * Read/populate data properties specific to this order item.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Shipping $item Item to read to.
         * @throws Exception If invalid shipping order item.
         */
        public function read(&$item)
        {
        }
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $id will be set.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Shipping $item Item to save.
         */
        public function save_item_data(&$item)
        {
        }
    }
    /**
     * WC Order Item Fee Data Store
     *
     * @version  3.0.0
     */
    class WC_Order_Item_Fee_Data_Store extends \Abstract_WC_Order_Item_Type_Data_Store implements \WC_Object_Data_Store_Interface, \WC_Order_Item_Type_Data_Store_Interface
    {
        /**
         * Data stored in meta keys.
         *
         * @since 3.0.0
         * @var array
         */
        protected $internal_meta_keys = array('_fee_amount', '_tax_class', '_tax_status', '_line_subtotal', '_line_subtotal_tax', '_line_total', '_line_tax', '_line_tax_data');
        /**
         * Read/populate data properties specific to this order item.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Fee $item Fee order item object.
         */
        public function read(&$item)
        {
        }
        /**
         * Saves an item's data to the database / item meta.
         * Ran after both create and update, so $id will be set.
         *
         * @since 3.0.0
         * @param WC_Order_Item_Fee $item Fee order item object.
         */
        public function save_item_data(&$item)
        {
        }
    }
    /**
     * WC Order Item Data Store Interface
     *
     * Functions that must be defined by the order item data store (for functions).
     *
     * @version  3.0.0
     */
    interface WC_Order_Item_Data_Store_Interface
    {
        /**
         * Add an order item to an order.
         *
         * @param  int   $order_id Order ID.
         * @param  array $item order_item_name and order_item_type.
         * @return int   Order Item ID
         */
        public function add_order_item($order_id, $item);
        /**
         * Update an order item.
         *
         * @param  int   $item_id Item ID.
         * @param  array $item order_item_name or order_item_type.
         * @return boolean
         */
        public function update_order_item($item_id, $item);
        /**
         * Delete an order item.
         *
         * @param int $item_id Item ID.
         */
        public function delete_order_item($item_id);
        /**
         * Update term meta.
         *
         * @param  int    $item_id Item ID.
         * @param  string $meta_key Meta key.
         * @param  mixed  $meta_value Meta value.
         * @param  string $prev_value Previous value (default: '').
         * @return bool
         */
        public function update_metadata($item_id, $meta_key, $meta_value, $prev_value = '');
        /**
         * Add term meta.
         *
         * @param  int    $item_id Item ID.
         * @param  string $meta_key Meta key.
         * @param  mixed  $meta_value Meta value.
         * @param  bool   $unique Unique? (default: false).
         * @return int    New row ID or 0
         */
        public function add_metadata($item_id, $meta_key, $meta_value, $unique = \false);
        /**
         * Delete term meta.
         *
         * @param  int    $item_id Item ID.
         * @param  string $meta_key Meta key.
         * @param  string $meta_value Meta value (default: '').
         * @param  bool   $delete_all Delete all matching entries? (default: false).
         * @return bool
         */
        public function delete_metadata($item_id, $meta_key, $meta_value = '', $delete_all = \false);
        /**
         * Get term meta.
         *
         * @param  int    $item_id Item ID.
         * @param  string $key Meta key.
         * @param  bool   $single Store as single value and not serialised (default: true).
         * @return mixed
         */
        public function get_metadata($item_id, $key, $single = \true);
        /**
         * Get order ID by order item ID.
         *
         * @param  int $item_id Item ID.
         * @return int
         */
        public function get_order_id_by_order_item_id($item_id);
        /**
         * Get the order item type based on Item ID.
         *
         * @param  int $item_id Item ID.
         * @return string
         */
        public function get_order_item_type($item_id);
    }
    /**
     * WC Order Item Data Store: Misc Order Item Data functions.
     *
     * @version  3.0.0
     */
    class WC_Order_Item_Data_Store implements \WC_Order_Item_Data_Store_Interface
    {
        /**
         * Add an order item to an order.
         *
         * @since  3.0.0
         * @param  int   $order_id Order ID.
         * @param  array $item order_item_name and order_item_type.
         * @return int Order Item ID
         */
        public function add_order_item($order_id, $item)
        {
        }
        /**
         * Update an order item.
         *
         * @since  3.0.0
         * @param  int   $item_id Item ID.
         * @param  array $item order_item_name or order_item_type.
         * @return boolean
         */
        public function update_order_item($item_id, $item)
        {
        }
        /**
         * Delete an order item.
         *
         * @since  3.0.0
         * @param  int $item_id Item ID.
         */
        public function delete_order_item($item_id)
        {
        }
        /**
         * Update term meta.
         *
         * @since  3.0.0
         * @param  int    $item_id Item ID.
         * @param  string $meta_key Meta key.
         * @param  mixed  $meta_value Meta value.
         * @param  string $prev_value (default: '').
         * @return bool
         */
        public function update_metadata($item_id, $meta_key, $meta_value, $prev_value = '')
        {
        }
        /**
         * Add term meta.
         *
         * @since  3.0.0
         * @param  int    $item_id Item ID.
         * @param  string $meta_key Meta key.
         * @param  mixed  $meta_value Meta value.
         * @param  bool   $unique (default: false).
         * @return int    New row ID or 0
         */
        public function add_metadata($item_id, $meta_key, $meta_value, $unique = \false)
        {
        }
        /**
         * Delete term meta.
         *
         * @since  3.0.0
         * @param  int    $item_id Item ID.
         * @param  string $meta_key Meta key.
         * @param  string $meta_value (default: '').
         * @param  bool   $delete_all (default: false).
         * @return bool
         */
        public function delete_metadata($item_id, $meta_key, $meta_value = '', $delete_all = \false)
        {
        }
        /**
         * Get term meta.
         *
         * @since  3.0.0
         * @param  int    $item_id Item ID.
         * @param  string $key Meta key.
         * @param  bool   $single (default: true).
         * @return mixed
         */
        public function get_metadata($item_id, $key, $single = \true)
        {
        }
        /**
         * Get order ID by order item ID.
         *
         * @since 3.0.0
         * @param  int $item_id Item ID.
         * @return int
         */
        public function get_order_id_by_order_item_id($item_id)
        {
        }
        /**
         * Get the order item type based on Item ID.
         *
         * @since 3.0.0
         * @param int $item_id Item ID.
         * @return string
         */
        public function get_order_item_type($item_id)
        {
        }
    }
    /**
     * WC Product Variable Data Store Interface
     *
     * Functions that must be defined by product variable store classes.
     *
     * @version  3.0.0
     */
    interface WC_Product_Variable_Data_Store_Interface
    {
        /**
         * Does a child have a weight set?
         *
         * @param WC_Product $product Product object.
         * @return boolean
         */
        public function child_has_weight($product);
        /**
         * Does a child have dimensions set?
         *
         * @param WC_Product $product Product object.
         * @return boolean
         */
        public function child_has_dimensions($product);
        /**
         * Is a child in stock?
         *
         * @param WC_Product $product Product object.
         * @return boolean
         */
        public function child_is_in_stock($product);
        /**
         * Syncs all variation names if the parent name is changed.
         *
         * @param WC_Product $product Product object.
         * @param string     $previous_name Previous name.
         * @param string     $new_name New name.
         */
        public function sync_variation_names(&$product, $previous_name = '', $new_name = '');
        /**
         * Stock managed at the parent level - update children being managed by this product.
         * This sync function syncs downwards (from parent to child) when the variable product is saved.
         *
         * @param WC_Product $product Product object.
         */
        public function sync_managed_variation_stock_status(&$product);
        /**
         * Sync variable product prices with children.
         *
         * @param WC_Product|int $product Product object or ID.
         */
        public function sync_price(&$product);
        /**
         * Delete variations of a product.
         *
         * @param int  $product_id Product ID.
         * @param bool $force_delete False to trash.
         */
        public function delete_variations($product_id, $force_delete = \false);
        /**
         * Untrash variations.
         *
         * @param int $product_id Product ID.
         */
        public function untrash_variations($product_id);
    }
    /**
     * WC Variable Product Data Store: Stored in CPT.
     *
     * @version 3.0.0
     */
    class WC_Product_Variable_Data_Store_CPT extends \WC_Product_Data_Store_CPT implements \WC_Object_Data_Store_Interface, \WC_Product_Variable_Data_Store_Interface
    {
        /**
         * Cached & hashed prices array for child variations.
         *
         * @var array
         */
        protected $prices_array = array();
        /**
         * Read attributes from post meta.
         *
         * @param WC_Product $product Product object.
         */
        protected function read_attributes(&$product)
        {
        }
        /**
         * Read product data.
         *
         * @param WC_Product $product Product object.
         *
         * @since 3.0.0
         */
        protected function read_product_data(&$product)
        {
        }
        /**
         * Loads variation child IDs.
         *
         * @param WC_Product $product Product object.
         * @param bool       $force_read True to bypass the transient.
         *
         * @return array
         */
        public function read_children(&$product, $force_read = \false)
        {
        }
        /**
         * Loads an array of attributes used for variations, as well as their possible values.
         *
         * @param WC_Product $product Product object.
         *
         * @return array
         */
        public function read_variation_attributes(&$product)
        {
        }
        /**
         * Get an array of all sale and regular prices from all variations. This is used for example when displaying the price range at variable product level or seeing if the variable product is on sale.
         *
         * Can be filtered by plugins which modify costs, but otherwise will include the raw meta costs unlike get_price() which runs costs through the woocommerce_get_price filter.
         * This is to ensure modified prices are not cached, unless intended.
         *
         * @param WC_Product $product Product object.
         * @param bool       $for_display If true, prices will be adapted for display based on the `woocommerce_tax_display_shop` setting (including or excluding taxes).
         *
         * @return array of prices
         * @since  3.0.0
         */
        public function read_price_data(&$product, $for_display = \false)
        {
        }
        /**
         * Create unique cache key based on the tax location (affects displayed/cached prices), product version and active price filters.
         * DEVELOPERS should filter this hash if offering conditional pricing to keep it unique.
         *
         * @param WC_Product $product Product object.
         * @param bool       $for_display If taxes should be calculated or not.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_price_hash(&$product, $for_display = \false)
        {
        }
        /**
         * Does a child have a weight set?
         *
         * @param WC_Product $product Product object.
         *
         * @since  3.0.0
         * @return boolean
         */
        public function child_has_weight($product)
        {
        }
        /**
         * Does a child have dimensions set?
         *
         * @param WC_Product $product Product object.
         *
         * @since  3.0.0
         * @return boolean
         */
        public function child_has_dimensions($product)
        {
        }
        /**
         * Is a child in stock?
         *
         * @param WC_Product $product Product object.
         *
         * @since  3.0.0
         * @return boolean
         */
        public function child_is_in_stock($product)
        {
        }
        /**
         * Does a child have a stock status?
         *
         * @param WC_Product $product Product object.
         * @param string     $status 'instock', 'outofstock', or 'onbackorder'.
         *
         * @since  3.3.0
         * @return boolean
         */
        public function child_has_stock_status($product, $status)
        {
        }
        /**
         * Syncs all variation names if the parent name is changed.
         *
         * @param WC_Product $product Product object.
         * @param string     $previous_name Variation previous name.
         * @param string     $new_name Variation new name.
         *
         * @since 3.0.0
         */
        public function sync_variation_names(&$product, $previous_name = '', $new_name = '')
        {
        }
        /**
         * Stock managed at the parent level - update children being managed by this product.
         * This sync function syncs downwards (from parent to child) when the variable product is saved.
         *
         * @param WC_Product $product Product object.
         *
         * @since 3.0.0
         */
        public function sync_managed_variation_stock_status(&$product)
        {
        }
        /**
         * Sync variable product prices with children.
         *
         * @param WC_Product $product Product object.
         *
         * @since 3.0.0
         */
        public function sync_price(&$product)
        {
        }
        /**
         * Sync variable product stock status with children.
         * Change does not persist unless saved by caller.
         *
         * @param WC_Product $product Product object.
         *
         * @since 3.0.0
         */
        public function sync_stock_status(&$product)
        {
        }
        /**
         * Delete variations of a product.
         *
         * @param int  $product_id Product ID.
         * @param bool $force_delete False to trash.
         *
         * @since 3.0.0
         */
        public function delete_variations($product_id, $force_delete = \false)
        {
        }
        /**
         * Untrash variations.
         *
         * @param int $product_id Product ID.
         */
        public function untrash_variations($product_id)
        {
        }
    }
    /**
     * WC Payment Token Data Store Interface
     *
     * Functions that must be defined by payment token store classes.
     *
     * @version  3.0.0
     */
    interface WC_Payment_Token_Data_Store_Interface
    {
        /**
         * Returns an array of objects (stdObject) matching specific token criteria.
         * Accepts token_id, user_id, gateway_id, and type.
         * Each object should contain the fields token_id, gateway_id, token, user_id, type, is_default.
         *
         * @param array $args Arguments.
         * @return array
         */
        public function get_tokens($args);
        /**
         * Returns an stdObject of a token for a user's default token.
         * Should contain the fields token_id, gateway_id, token, user_id, type, is_default.
         *
         * @param int $user_id User ID.
         * @return object
         */
        public function get_users_default_token($user_id);
        /**
         * Returns an stdObject of a token.
         * Should contain the fields token_id, gateway_id, token, user_id, type, is_default.
         *
         * @param int $token_id Token ID.
         * @return object
         */
        public function get_token_by_id($token_id);
        /**
         * Returns metadata for a specific payment token.
         *
         * @param int $token_id Token ID.
         * @return array
         */
        public function get_metadata($token_id);
        /**
         * Get a token's type by ID.
         *
         * @param int $token_id Token ID.
         * @return string
         */
        public function get_token_type_by_id($token_id);
        /**
         * Update's a tokens default status in the database. Used for quickly
         * looping through tokens and setting their statuses instead of creating a bunch
         * of objects.
         *
         * @param int  $token_id Token ID.
         * @param bool $status If should update status.
         * @return string
         */
        public function set_default_status($token_id, $status = \true);
    }
    /**
     * WC Payment Token Data Store: Custom Table.
     *
     * @version  3.0.0
     */
    class WC_Payment_Token_Data_Store extends \WC_Data_Store_WP implements \WC_Payment_Token_Data_Store_Interface, \WC_Object_Data_Store_Interface
    {
        /**
         * Meta type. Payment tokens are a new object type.
         *
         * @var string
         */
        protected $meta_type = 'payment_token';
        /**
         * If we have already saved our extra data, don't do automatic / default handling.
         *
         * @var bool
         */
        protected $extra_data_saved = \false;
        /**
         * Create a new payment token in the database.
         *
         * @since 3.0.0
         *
         * @param WC_Payment_Token $token Payment token object.
         *
         * @throws Exception Throw exception if invalid or missing payment token fields.
         */
        public function create(&$token)
        {
        }
        /**
         * Update a payment token.
         *
         * @since 3.0.0
         *
         * @param WC_Payment_Token $token Payment token object.
         *
         * @throws Exception Throw exception if invalid or missing payment token fields.
         */
        public function update(&$token)
        {
        }
        /**
         * Remove a payment token from the database.
         *
         * @since 3.0.0
         * @param WC_Payment_Token $token Payment token object.
         * @param bool             $force_delete Unused param.
         */
        public function delete(&$token, $force_delete = \false)
        {
        }
        /**
         * Read a token from the database.
         *
         * @since 3.0.0
         *
         * @param WC_Payment_Token $token Payment token object.
         *
         * @throws Exception Throw exception if invalid payment token.
         */
        public function read(&$token)
        {
        }
        /**
         * Read extra data associated with the token (like last4 digits of a card for expiry dates).
         *
         * @param WC_Payment_Token $token Payment token object.
         * @since 3.0.0
         */
        protected function read_extra_data(&$token)
        {
        }
        /**
         * Saves extra token data as meta.
         *
         * @since 3.0.0
         * @param WC_Payment_Token $token Payment token object.
         * @param bool             $force By default, only changed props are updated. When this param is true all props are updated.
         * @return array List of updated props.
         */
        protected function save_extra_data(&$token, $force = \false)
        {
        }
        /**
         * Returns an array of objects (stdObject) matching specific token criteria.
         * Accepts token_id, user_id, gateway_id, and type.
         * Each object should contain the fields token_id, gateway_id, token, user_id, type, is_default.
         *
         * @since 3.0.0
         * @param array $args List of accepted args: token_id, gateway_id, user_id, type.
         * @return array
         */
        public function get_tokens($args)
        {
        }
        /**
         * Returns an stdObject of a token for a user's default token.
         * Should contain the fields token_id, gateway_id, token, user_id, type, is_default.
         *
         * @since 3.0.0
         * @param int $user_id User ID.
         * @return object
         */
        public function get_users_default_token($user_id)
        {
        }
        /**
         * Returns an stdObject of a token.
         * Should contain the fields token_id, gateway_id, token, user_id, type, is_default.
         *
         * @since 3.0.0
         * @param id $token_id Token ID.
         * @return object
         */
        public function get_token_by_id($token_id)
        {
        }
        /**
         * Returns metadata for a specific payment token.
         *
         * @since 3.0.0
         * @param id $token_id Token ID.
         * @return array
         */
        public function get_metadata($token_id)
        {
        }
        /**
         * Get a token's type by ID.
         *
         * @since 3.0.0
         * @param id $token_id Token ID.
         * @return string
         */
        public function get_token_type_by_id($token_id)
        {
        }
        /**
         * Update's a tokens default status in the database. Used for quickly
         * looping through tokens and setting their statuses instead of creating a bunch
         * of objects.
         *
         * @since 3.0.0
         *
         * @param id   $token_id Token ID.
         * @param bool $status Whether given payment token is the default payment token or not.
         *
         * @return void
         */
        public function set_default_status($token_id, $status = \true)
        {
        }
    }
    /**
     * Shipping rate class.
     */
    class WC_Shipping_Rate
    {
        /**
         * Stores data for this rate.
         *
         * @since 3.2.0
         * @var   array
         */
        protected $data = array('id' => '', 'method_id' => '', 'instance_id' => 0, 'label' => '', 'cost' => 0, 'taxes' => array());
        /**
         * Stores meta data for this rate.
         *
         * @since 2.6.0
         * @var   array
         */
        protected $meta_data = array();
        /**
         * Constructor.
         *
         * @param string  $id          Shipping rate ID.
         * @param string  $label       Shipping rate label.
         * @param integer $cost        Cost.
         * @param array   $taxes       Taxes applied to shipping rate.
         * @param string  $method_id   Shipping method ID.
         * @param int     $instance_id Shipping instance ID.
         */
        public function __construct($id = '', $label = '', $cost = 0, $taxes = array(), $method_id = '', $instance_id = 0)
        {
        }
        /**
         * Magic methods to support direct access to props.
         *
         * @since 3.2.0
         * @param string $key Key.
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic methods to support direct access to props.
         *
         * @since 3.2.0
         * @param string $key Key.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Magic methods to support direct access to props.
         *
         * @since 3.2.0
         * @param string $key   Key.
         * @param mixed  $value Value.
         */
        public function __set($key, $value)
        {
        }
        /**
         * Set ID for the rate. This is usually a combination of the method and instance IDs.
         *
         * @since 3.2.0
         * @param string $id Shipping rate ID.
         */
        public function set_id($id)
        {
        }
        /**
         * Set shipping method ID the rate belongs to.
         *
         * @since 3.2.0
         * @param string $method_id Shipping method ID.
         */
        public function set_method_id($method_id)
        {
        }
        /**
         * Set instance ID the rate belongs to.
         *
         * @since 3.2.0
         * @param int $instance_id Instance ID.
         */
        public function set_instance_id($instance_id)
        {
        }
        /**
         * Set rate label.
         *
         * @since 3.2.0
         * @param string $label Shipping rate label.
         */
        public function set_label($label)
        {
        }
        /**
         * Set rate cost.
         *
         * @todo 4.0 Prevent negative value being set. #19293
         * @since 3.2.0
         * @param string $cost Shipping rate cost.
         */
        public function set_cost($cost)
        {
        }
        /**
         * Set rate taxes.
         *
         * @since 3.2.0
         * @param array $taxes List of taxes applied to shipping rate.
         */
        public function set_taxes($taxes)
        {
        }
        /**
         * Set ID for the rate. This is usually a combination of the method and instance IDs.
         *
         * @since 3.2.0
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Set shipping method ID the rate belongs to.
         *
         * @since 3.2.0
         * @return string
         */
        public function get_method_id()
        {
        }
        /**
         * Set instance ID the rate belongs to.
         *
         * @since 3.2.0
         * @return int
         */
        public function get_instance_id()
        {
        }
        /**
         * Set rate label.
         *
         * @return string
         */
        public function get_label()
        {
        }
        /**
         * Set rate cost.
         *
         * @since 3.2.0
         * @return string
         */
        public function get_cost()
        {
        }
        /**
         * Set rate taxes.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_taxes()
        {
        }
        /**
         * Get shipping tax.
         *
         * @return array
         */
        public function get_shipping_tax()
        {
        }
        /**
         * Add some meta data for this rate.
         *
         * @since 2.6.0
         * @param string $key   Key.
         * @param string $value Value.
         */
        public function add_meta_data($key, $value)
        {
        }
        /**
         * Get all meta data for this rate.
         *
         * @since 2.6.0
         * @return array
         */
        public function get_meta_data()
        {
        }
    }
    /**
     * WC Logger Interface
     *
     * Functions that must be defined to correctly fulfill logger API.
     *
     * @version 3.0.0
     */
    interface WC_Logger_Interface
    {
        /**
         * Add a log entry.
         *
         * This is not the preferred method for adding log messages. Please use log() or any one of
         * the level methods (debug(), info(), etc.). This method may be deprecated in the future.
         *
         * @param string $handle File handle.
         * @param string $message Log message.
         * @param string $level Log level.
         *
         * @return bool True if log was added, otherwise false.
         */
        public function add($handle, $message, $level = \WC_Log_Levels::NOTICE);
        /**
         * Add a log entry.
         *
         * @param string $level One of the following:
         *     'emergency': System is unusable.
         *     'alert': Action must be taken immediately.
         *     'critical': Critical conditions.
         *     'error': Error conditions.
         *     'warning': Warning conditions.
         *     'notice': Normal but significant condition.
         *     'info': Informational messages.
         *     'debug': Debug-level messages.
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function log($level, $message, $context = array());
        /**
         * Adds an emergency level message.
         *
         * System is unusable.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function emergency($message, $context = array());
        /**
         * Adds an alert level message.
         *
         * Action must be taken immediately.
         * Example: Entire website down, database unavailable, etc.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function alert($message, $context = array());
        /**
         * Adds a critical level message.
         *
         * Critical conditions.
         * Example: Application component unavailable, unexpected exception.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function critical($message, $context = array());
        /**
         * Adds an error level message.
         *
         * Runtime errors that do not require immediate action but should typically be logged
         * and monitored.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function error($message, $context = array());
        /**
         * Adds a warning level message.
         *
         * Exceptional occurrences that are not errors.
         *
         * Example: Use of deprecated APIs, poor use of an API, undesirable things that are not
         * necessarily wrong.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function warning($message, $context = array());
        /**
         * Adds a notice level message.
         *
         * Normal but significant events.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function notice($message, $context = array());
        /**
         * Adds a info level message.
         *
         * Interesting events.
         * Example: User logs in, SQL logs.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function info($message, $context = array());
        /**
         * Adds a debug level message.
         *
         * Detailed debug information.
         *
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function debug($message, $context = array());
    }
    /**
     * WC Log Handler Interface
     *
     * Functions that must be defined to correctly fulfill log handler API.
     *
     * @version 3.3.0
     */
    interface WC_Log_Handler_Interface
    {
        /**
         * Handle a log entry.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context Additional information for log handlers.
         *
         * @return bool False if value was not handled and true if value was handled.
         */
        public function handle($timestamp, $level, $message, $context);
    }
    /**
     * WC Queue Interface
     *
     * Functions that must be defined to implement an action/job/event queue.
     *
     * @version 3.5.0
     */
    interface WC_Queue_Interface
    {
        /**
         * Enqueue an action to run one time, as soon as possible
         *
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID
         */
        public function add($hook, $args = array(), $group = '');
        /**
         * Schedule an action to run once at some time in the future
         *
         * @param int    $timestamp When the job will run.
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID
         */
        public function schedule_single($timestamp, $hook, $args = array(), $group = '');
        /**
         * Schedule a recurring action
         *
         * @param int    $timestamp When the first instance of the job will run.
         * @param int    $interval_in_seconds How long to wait between runs.
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID
         */
        public function schedule_recurring($timestamp, $interval_in_seconds, $hook, $args = array(), $group = '');
        /**
         * Schedule an action that recurs on a cron-like schedule.
         *
         * @param int    $timestamp The schedule will start on or after this time.
         * @param string $cron_schedule A cron-link schedule string.
         * @see http://en.wikipedia.org/wiki/Cron
         *   *    *    *    *    *    *
         *   ┬    ┬    ┬    ┬    ┬    ┬
         *   |    |    |    |    |    |
         *   |    |    |    |    |    + year [optional]
         *   |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
         *   |    |    |    +---------- month (1 - 12)
         *   |    |    +--------------- day of month (1 - 31)
         *   |    +-------------------- hour (0 - 23)
         *   +------------------------- min (0 - 59)
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID
         */
        public function schedule_cron($timestamp, $cron_schedule, $hook, $args = array(), $group = '');
        /**
         * Dequeue the next scheduled instance of an action with a matching hook (and optionally matching args and group).
         *
         * Any recurring actions with a matching hook should also be cancelled, not just the next scheduled action.
         *
         * @param string $hook The hook that the job will trigger.
         * @param array  $args Args that would have been passed to the job.
         * @param string $group The group the job is assigned to (if any).
         */
        public function cancel($hook, $args = array(), $group = '');
        /**
         * Dequeue all actions with a matching hook (and optionally matching args and group) so no matching actions are ever run.
         *
         * @param string $hook The hook that the job will trigger.
         * @param array  $args Args that would have been passed to the job.
         * @param string $group The group the job is assigned to (if any).
         */
        public function cancel_all($hook, $args = array(), $group = '');
        /**
         * Get the date and time for the next scheduled occurence of an action with a given hook
         * (an optionally that matches certain args and group), if any.
         *
         * @param string $hook The hook that the job will trigger.
         * @param array  $args Filter to a hook with matching args that will be passed to the job when it runs.
         * @param string $group Filter to only actions assigned to a specific group.
         * @return WC_DateTime|null The date and time for the next occurrence, or null if there is no pending, scheduled action for the given hook
         */
        public function get_next($hook, $args = \null, $group = '');
        /**
         * Find scheduled actions.
         *
         * @param array  $args Possible arguments, with their default values.
         *        'hook' => '' - the name of the action that will be triggered.
         *        'args' => null - the args array that will be passed with the action.
         *        'date' => null - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
         *        'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='.
         *        'modified' => null - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
         *        'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='.
         *        'group' => '' - the group the action belongs to.
         *        'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING.
         *        'claimed' => null - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID.
         *        'per_page' => 5 - Number of results to return.
         *        'offset' => 0.
         *        'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'.
         *        'order' => 'ASC'.
         * @param string $return_format OBJECT, ARRAY_A, or ids.
         * @return array
         */
        public function search($args = array(), $return_format = \OBJECT);
    }
    /**
     * Legacy Payment Tokens.
     * Payment Tokens were introduced in 2.6.0 with create and update as methods.
     * Major CRUD changes occurred in 3.0, so these were deprecated (save and delete still work).
     * This legacy class is for backwards compatibility in case any code called ->read, ->update or ->create
     * directly on the object.
     *
     * @version  3.0.0
     * @package  WooCommerce/Classes
     * @category Class
     * @author   WooCommerce
     */
    abstract class WC_Legacy_Payment_Token extends \WC_Data
    {
        /**
         * Sets the type of this payment token (CC, eCheck, or something else).
         *
         * @param string Payment Token Type (CC, eCheck)
         */
        public function set_type($type)
        {
        }
        /**
         * Read a token by ID.
         * @deprecated 3.0.0 - Init a token class with an ID.
         *
         * @param int $token_id
         */
        public function read($token_id)
        {
        }
        /**
         * Update a token.
         * @deprecated 3.0.0 - Use ::save instead.
         */
        public function update()
        {
        }
        /**
         * Create a token.
         * @deprecated 3.0.0 - Use ::save instead.
         */
        public function create()
        {
        }
    }
    /**
     * WooCommerce Payment Token.
     *
     * Representation of a general payment token to be extended by individuals types of tokens
     * examples: Credit Card, eCheck.
     *
     * @class       WC_Payment_Token
     * @version     3.0.0
     * @since       2.6.0
     * @package     WooCommerce/Abstracts
     */
    abstract class WC_Payment_Token extends \WC_Legacy_Payment_Token
    {
        /**
         * Token Data (stored in the payment_tokens table).
         *
         * @var array
         */
        protected $data = array('gateway_id' => '', 'token' => '', 'is_default' => \false, 'user_id' => 0, 'type' => '');
        /**
         * Token Type (CC, eCheck, or a custom type added by an extension).
         * Set by child classes.
         *
         * @var string
         */
        protected $type = '';
        /**
         * Initialize a payment token.
         *
         * These fields are accepted by all payment tokens:
         * is_default   - boolean Optional - Indicates this is the default payment token for a user
         * token        - string  Required - The actual token to store
         * gateway_id   - string  Required - Identifier for the gateway this token is associated with
         * user_id      - int     Optional - ID for the user this token is associated with. 0 if this token is not associated with a user
         *
         * @since 2.6.0
         * @param mixed $token Token.
         */
        public function __construct($token = '')
        {
        }
        /*
         *--------------------------------------------------------------------------
         * Getters
         *--------------------------------------------------------------------------
         */
        /**
         * Returns the raw payment token.
         *
         * @since  2.6.0
         * @param  string $context Context in which to call this.
         * @return string Raw token
         */
        public function get_token($context = 'view')
        {
        }
        /**
         * Returns the type of this payment token (CC, eCheck, or something else).
         * Overwritten by child classes.
         *
         * @since  2.6.0
         * @param  string $deprecated Deprecated since WooCommerce 3.0.
         * @return string Payment Token Type (CC, eCheck)
         */
        public function get_type($deprecated = '')
        {
        }
        /**
         * Get type to display to user.
         * Get's overwritten by child classes.
         *
         * @since  2.6.0
         * @param  string $deprecated Deprecated since WooCommerce 3.0.
         * @return string
         */
        public function get_display_name($deprecated = '')
        {
        }
        /**
         * Returns the user ID associated with the token or false if this token is not associated.
         *
         * @since 2.6.0
         * @param  string $context In what context to execute this.
         * @return int User ID if this token is associated with a user or 0 if no user is associated
         */
        public function get_user_id($context = 'view')
        {
        }
        /**
         * Returns the ID of the gateway associated with this payment token.
         *
         * @since 2.6.0
         * @param  string $context In what context to execute this.
         * @return string Gateway ID
         */
        public function get_gateway_id($context = 'view')
        {
        }
        /**
         * Returns the ID of the gateway associated with this payment token.
         *
         * @since 2.6.0
         * @param  string $context In what context to execute this.
         * @return string Gateway ID
         */
        public function get_is_default($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set the raw payment token.
         *
         * @since 2.6.0
         * @param string $token Payment token.
         */
        public function set_token($token)
        {
        }
        /**
         * Set the user ID for the user associated with this order.
         *
         * @since 2.6.0
         * @param int $user_id User ID.
         */
        public function set_user_id($user_id)
        {
        }
        /**
         * Set the gateway ID.
         *
         * @since 2.6.0
         * @param string $gateway_id Gateway ID.
         */
        public function set_gateway_id($gateway_id)
        {
        }
        /**
         * Marks the payment as default or non-default.
         *
         * @since 2.6.0
         * @param boolean $is_default True or false.
         */
        public function set_default($is_default)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Other Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Returns if the token is marked as default.
         *
         * @since 2.6.0
         * @return boolean True if the token is default
         */
        public function is_default()
        {
        }
        /**
         * Validate basic token info (token and type are required).
         *
         * @since 2.6.0
         * @return boolean True if the passed data is valid
         */
        public function validate()
        {
        }
    }
    /**
     * Abstract WC Log Handler Class
     *
     * @version        1.0.0
     * @package        WooCommerce/Abstracts
     */
    abstract class WC_Log_Handler implements \WC_Log_Handler_Interface
    {
        /**
         * Formats a timestamp for use in log messages.
         *
         * @param int $timestamp Log timestamp.
         * @return string Formatted time for use in log entry.
         */
        protected static function format_time($timestamp)
        {
        }
        /**
         * Builds a log entry text from level, timestamp and message.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context Additional information for log handlers.
         *
         * @return string Formatted log entry.
         */
        protected static function format_entry($timestamp, $level, $message, $context)
        {
        }
    }
    /**
     * Abstract class that is intended to be extended by
     * specific privacy class. It handles the display
     * of the privacy message of the privacy id to the admin,
     * privacy data to be exported and privacy data to be deleted.
     *
     * @version  3.4.0
     * @package  WooCommerce/Abstracts
     */
    abstract class WC_Abstract_Privacy
    {
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        public $name;
        /**
         * This is a list of exporters.
         *
         * @var array
         */
        protected $exporters = array();
        /**
         * This is a list of erasers.
         *
         * @var array
         */
        protected $erasers = array();
        /**
         * This is a priority for the wp_privacy_personal_data_exporters filter
         *
         * @var int
         */
        protected $export_priority;
        /**
         * This is a priority for the wp_privacy_personal_data_erasers filter
         *
         * @var int
         */
        protected $erase_priority;
        /**
         * WC_Abstract_Privacy Constructor.
         *
         * @param string $name            Plugin identifier.
         * @param int    $export_priority Export priority.
         * @param int    $erase_priority  Erase priority.
         */
        public function __construct($name = '', $export_priority = 5, $erase_priority = 10)
        {
        }
        /**
         * Hook in events.
         */
        protected function init()
        {
        }
        /**
         * Adds the privacy message on WC privacy page.
         */
        public function add_privacy_message()
        {
        }
        /**
         * Gets the message of the privacy to display.
         * To be overloaded by the implementor.
         *
         * @return string
         */
        public function get_privacy_message()
        {
        }
        /**
         * Integrate this exporter implementation within the WordPress core exporters.
         *
         * @param array $exporters List of exporter callbacks.
         * @return array
         */
        public function register_exporters($exporters = array())
        {
        }
        /**
         * Integrate this eraser implementation within the WordPress core erasers.
         *
         * @param array $erasers List of eraser callbacks.
         * @return array
         */
        public function register_erasers($erasers = array())
        {
        }
        /**
         * Add exporter to list of exporters.
         *
         * @param string       $id       ID of the Exporter.
         * @param string       $name     Exporter name.
         * @param string|array $callback Exporter callback.
         *
         * @return array
         */
        public function add_exporter($id, $name, $callback)
        {
        }
        /**
         * Add eraser to list of erasers.
         *
         * @param string       $id       ID of the Eraser.
         * @param string       $name     Exporter name.
         * @param string|array $callback Exporter callback.
         *
         * @return array
         */
        public function add_eraser($id, $name, $callback)
        {
        }
    }
    /**
     * Abstract Integration Class
     *
     * Extended by individual integrations to offer additional functionality.
     *
     * @class    WC_Integration
     * @extends  WC_Settings_API
     * @version  2.6.0
     * @package  WooCommerce/Abstracts
     */
    abstract class WC_Integration extends \WC_Settings_API
    {
        /**
         * Yes or no based on whether the integration is enabled.
         *
         * @var string
         */
        public $enabled = 'yes';
        /**
         * Integration title.
         *
         * @var string
         */
        public $method_title = '';
        /**
         * Integration description.
         *
         * @var string
         */
        public $method_description = '';
        /**
         * Return the title for admin screens.
         *
         * @return string
         */
        public function get_method_title()
        {
        }
        /**
         * Return the description for admin screens.
         *
         * @return string
         */
        public function get_method_description()
        {
        }
        /**
         * Output the gateway settings screen.
         */
        public function admin_options()
        {
        }
        /**
         * Init settings for gateways.
         */
        public function init_settings()
        {
        }
    }
    /**
     * WC_Session
     */
    abstract class WC_Session
    {
        /**
         * Customer ID.
         *
         * @var int $_customer_id Customer ID.
         */
        protected $_customer_id;
        /**
         * Session Data.
         *
         * @var array $_data Data array.
         */
        protected $_data = array();
        /**
         * Dirty when the session needs saving.
         *
         * @var bool $_dirty When something changes
         */
        protected $_dirty = \false;
        /**
         * Init hooks and session data. Extended by child classes.
         *
         * @since 3.3.0
         */
        public function init()
        {
        }
        /**
         * Cleanup session data. Extended by child classes.
         */
        public function cleanup_sessions()
        {
        }
        /**
         * Magic get method.
         *
         * @param mixed $key Key to get.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Magic set method.
         *
         * @param mixed $key Key to set.
         * @param mixed $value Value to set.
         */
        public function __set($key, $value)
        {
        }
        /**
         * Magic isset method.
         *
         * @param mixed $key Key to check.
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic unset method.
         *
         * @param mixed $key Key to unset.
         */
        public function __unset($key)
        {
        }
        /**
         * Get a session variable.
         *
         * @param string $key Key to get.
         * @param mixed  $default used if the session variable isn't set.
         * @return array|string value of session variable
         */
        public function get($key, $default = \null)
        {
        }
        /**
         * Set a session variable.
         *
         * @param string $key Key to set.
         * @param mixed  $value Value to set.
         */
        public function set($key, $value)
        {
        }
        /**
         * Get customer ID.
         *
         * @return int
         */
        public function get_customer_id()
        {
        }
    }
    /**
     * WooCommerce Payment Gateway class.
     *
     * Extended by individual payment gateways to handle payments.
     *
     * @class       WC_Payment_Gateway
     * @extends     WC_Settings_API
     * @version     2.1.0
     * @package     WooCommerce/Abstracts
     */
    abstract class WC_Payment_Gateway extends \WC_Settings_API
    {
        /**
         * Set if the place order button should be renamed on selection.
         *
         * @var string
         */
        public $order_button_text;
        /**
         * Yes or no based on whether the method is enabled.
         *
         * @var string
         */
        public $enabled = 'yes';
        /**
         * Payment method title for the frontend.
         *
         * @var string
         */
        public $title;
        /**
         * Payment method description for the frontend.
         *
         * @var string
         */
        public $description;
        /**
         * Chosen payment method id.
         *
         * @var bool
         */
        public $chosen;
        /**
         * Gateway title.
         *
         * @var string
         */
        public $method_title = '';
        /**
         * Gateway description.
         *
         * @var string
         */
        public $method_description = '';
        /**
         * True if the gateway shows fields on the checkout.
         *
         * @var bool
         */
        public $has_fields;
        /**
         * Countries this gateway is allowed for.
         *
         * @var array
         */
        public $countries;
        /**
         * Available for all counties or specific.
         *
         * @var string
         */
        public $availability;
        /**
         * Icon for the gateway.
         *
         * @var string
         */
        public $icon;
        /**
         * Supported features such as 'default_credit_card_form', 'refunds'.
         *
         * @var array
         */
        public $supports = array('products');
        /**
         * Maximum transaction amount, zero does not define a maximum.
         *
         * @var int
         */
        public $max_amount = 0;
        /**
         * Optional URL to view a transaction.
         *
         * @var string
         */
        public $view_transaction_url = '';
        /**
         * Optional label to show for "new payment method" in the payment
         * method/token selection radio selection.
         *
         * @var string
         */
        public $new_method_label = '';
        /**
         * Contains a users saved tokens for this gateway.
         *
         * @var array
         */
        protected $tokens = array();
        /**
         * Returns a users saved tokens for this gateway.
         *
         * @since 2.6.0
         * @return array
         */
        public function get_tokens()
        {
        }
        /**
         * Return the title for admin screens.
         *
         * @return string
         */
        public function get_method_title()
        {
        }
        /**
         * Return the description for admin screens.
         *
         * @return string
         */
        public function get_method_description()
        {
        }
        /**
         * Output the gateway settings screen.
         */
        public function admin_options()
        {
        }
        /**
         * Init settings for gateways.
         */
        public function init_settings()
        {
        }
        /**
         * Return whether or not this gateway still requires setup to function.
         *
         * When this gateway is toggled on via AJAX, if this returns true a
         * redirect will occur to the settings page instead.
         *
         * @since 3.4.0
         * @return bool
         */
        public function needs_setup()
        {
        }
        /**
         * Get the return url (thank you page).
         *
         * @param WC_Order $order Order object.
         * @return string
         */
        public function get_return_url($order = \null)
        {
        }
        /**
         * Get a link to the transaction on the 3rd party gateway size (if applicable).
         *
         * @param  WC_Order $order the order object.
         * @return string transaction URL, or empty string.
         */
        public function get_transaction_url($order)
        {
        }
        /**
         * Get the order total in checkout and pay_for_order.
         *
         * @return float
         */
        protected function get_order_total()
        {
        }
        /**
         * Check if the gateway is available for use.
         *
         * @return bool
         */
        public function is_available()
        {
        }
        /**
         * Check if the gateway has fields on the checkout.
         *
         * @return bool
         */
        public function has_fields()
        {
        }
        /**
         * Return the gateway's title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Return the gateway's description.
         *
         * @return string
         */
        public function get_description()
        {
        }
        /**
         * Return the gateway's icon.
         *
         * @return string
         */
        public function get_icon()
        {
        }
        /**
         * Set as current gateway.
         *
         * Set this as the current gateway.
         */
        public function set_current()
        {
        }
        /**
         * Process Payment.
         *
         * Process the payment. Override this in your gateway. When implemented, this should.
         * return the success and redirect in an array. e.g:
         *
         *        return array(
         *            'result'   => 'success',
         *            'redirect' => $this->get_return_url( $order )
         *        );
         *
         * @param int $order_id Order ID.
         * @return array
         */
        public function process_payment($order_id)
        {
        }
        /**
         * Process refund.
         *
         * If the gateway declares 'refunds' support, this will allow it to refund.
         * a passed in amount.
         *
         * @param  int    $order_id Order ID.
         * @param  float  $amount Refund amount.
         * @param  string $reason Refund reason.
         * @return boolean True or false based on success, or a WP_Error object.
         */
        public function process_refund($order_id, $amount = \null, $reason = '')
        {
        }
        /**
         * Validate frontend fields.
         *
         * Validate payment fields on the frontend.
         *
         * @return bool
         */
        public function validate_fields()
        {
        }
        /**
         * If There are no payment fields show the description if set.
         * Override this in your gateway if you have some.
         */
        public function payment_fields()
        {
        }
        /**
         * Check if a gateway supports a given feature.
         *
         * Gateways should override this to declare support (or lack of support) for a feature.
         * For backward compatibility, gateways support 'products' by default, but nothing else.
         *
         * @param string $feature string The name of a feature to test support for.
         * @return bool True if the gateway supports the feature, false otherwise.
         * @since 1.5.7
         */
        public function supports($feature)
        {
        }
        /**
         * Can the order be refunded via this gateway?
         *
         * Should be extended by gateways to do their own checks.
         *
         * @param  WC_Order $order Order object.
         * @return bool If false, the automatic refund button is hidden in the UI.
         */
        public function can_refund_order($order)
        {
        }
        /**
         * Core credit card form which gateways can used if needed. Deprecated - inherit WC_Payment_Gateway_CC instead.
         *
         * @param  array $args Arguments.
         * @param  array $fields Fields.
         */
        public function credit_card_form($args = array(), $fields = array())
        {
        }
        /**
         * Enqueues our tokenization script to handle some of the new form options.
         *
         * @since 2.6.0
         */
        public function tokenization_script()
        {
        }
        /**
         * Grab and display our saved payment methods.
         *
         * @since 2.6.0
         */
        public function saved_payment_methods()
        {
        }
        /**
         * Gets saved payment method HTML from a token.
         *
         * @since 2.6.0
         * @param  WC_Payment_Token $token Payment Token.
         * @return string Generated payment method HTML
         */
        public function get_saved_payment_method_option_html($token)
        {
        }
        /**
         * Displays a radio button for entering a new payment method (new CC details) instead of using a saved method.
         * Only displayed when a gateway supports tokenization.
         *
         * @since 2.6.0
         */
        public function get_new_payment_method_option_html()
        {
        }
        /**
         * Outputs a checkbox for saving a new payment method to the database.
         *
         * @since 2.6.0
         */
        public function save_payment_method_checkbox()
        {
        }
        /**
         * Add payment method via account screen. This should be extended by gateway plugins.
         *
         * @since 3.2.0 Included here from 3.2.0, but supported from 3.0.0.
         * @return array
         */
        public function add_payment_method()
        {
        }
    }
    /**
     * Abstract WC Object Query Class
     *
     * Extended by classes to provide a query abstraction layer for safe object searching.
     *
     * @version  3.1.0
     * @package  WooCommerce/Abstracts
     */
    abstract class WC_Object_Query
    {
        /**
         * Stores query data.
         *
         * @var array
         */
        protected $query_vars = array();
        /**
         * Create a new query.
         *
         * @param array $args Criteria to query on in a format similar to WP_Query.
         */
        public function __construct($args = array())
        {
        }
        /**
         * Get the current query vars.
         *
         * @return array
         */
        public function get_query_vars()
        {
        }
        /**
         * Get the value of a query variable.
         *
         * @param string $query_var Query variable to get value for.
         * @param mixed  $default Default value if query variable is not set.
         * @return mixed Query variable value if set, otherwise default.
         */
        public function get($query_var, $default = '')
        {
        }
        /**
         * Set a query variable.
         *
         * @param string $query_var Query variable to set.
         * @param mixed  $value Value to set for query variable.
         */
        public function set($query_var, $value)
        {
        }
        /**
         * Get the default allowed query vars.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
    }
    /**
     * WC_Privacy_Erasers Class.
     */
    class WC_Privacy_Erasers
    {
        /**
         * Finds and erases customer data by email address.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @return array An array of personal data in name value pairs
         */
        public static function customer_data_eraser($email_address, $page)
        {
        }
        /**
         * Finds and erases data which could be used to identify a person from WooCommerce data assocated with an email address.
         *
         * Orders are erased in blocks of 10 to avoid timeouts.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @return array An array of personal data in name value pairs
         */
        public static function order_data_eraser($email_address, $page)
        {
        }
        /**
         * Finds and removes customer download logs by email address.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @return array An array of personal data in name value pairs
         */
        public static function download_data_eraser($email_address, $page)
        {
        }
        /**
         * Remove personal data specific to WooCommerce from an order object.
         *
         * Note; this will hinder order processing for obvious reasons!
         *
         * @param WC_Order $order Order object.
         */
        public static function remove_order_personal_data($order)
        {
        }
        /**
         * Finds and erases customer tokens by email address.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @return array An array of personal data in name value pairs
         */
        public static function customer_tokens_eraser($email_address, $page)
        {
        }
    }
    /**
     * Integrations class.
     */
    class WC_Integrations
    {
        /**
         * Array of integrations.
         *
         * @var array
         */
        public $integrations = array();
        /**
         * Initialize integrations.
         */
        public function __construct()
        {
        }
        /**
         * Return loaded integrations.
         *
         * @return array
         */
        public function get_integrations()
        {
        }
    }
    /**
     * Shipping class.
     */
    class WC_Shipping
    {
        /**
         * True if shipping is enabled.
         *
         * @var bool
         */
        public $enabled = \false;
        /**
         * Stores methods loaded into woocommerce.
         *
         * @var array|null
         */
        public $shipping_methods = \null;
        /**
         * Stores the shipping classes.
         *
         * @var array
         */
        public $shipping_classes = array();
        /**
         * Stores packages to ship and to get quotes for.
         *
         * @var array
         */
        public $packages = array();
        /**
         * The single instance of the class
         *
         * @var WC_Shipping
         * @since 2.1
         */
        protected static $_instance = \null;
        /**
         * Main WC_Shipping Instance.
         *
         * Ensures only one instance of WC_Shipping is loaded or can be loaded.
         *
         * @since 2.1
         * @return WC_Shipping Main instance
         */
        public static function instance()
        {
        }
        /**
         * Cloning is forbidden.
         *
         * @since 2.1
         */
        public function __clone()
        {
        }
        /**
         * Unserializing instances of this class is forbidden.
         *
         * @since 2.1
         */
        public function __wakeup()
        {
        }
        /**
         * Magic getter.
         *
         * @param string $name Property name.
         * @return mixed
         */
        public function __get($name)
        {
        }
        /**
         * Initialize shipping.
         */
        public function __construct()
        {
        }
        /**
         * Initialize shipping.
         */
        public function init()
        {
        }
        /**
         * Shipping methods register themselves by returning their main class name through the woocommerce_shipping_methods filter.
         *
         * @return array
         */
        public function get_shipping_method_class_names()
        {
        }
        /**
         * Loads all shipping methods which are hooked in.
         * If a $package is passed some methods may add themselves conditionally and zones will be used.
         *
         * @param array $package Package information.
         * @return WC_Shipping_Method[]
         */
        public function load_shipping_methods($package = array())
        {
        }
        /**
         * Register a shipping method.
         *
         * @param object|string $method Either the name of the method's class, or an instance of the method's class.
         *
         * @return bool|void
         */
        public function register_shipping_method($method)
        {
        }
        /**
         * Unregister shipping methods.
         */
        public function unregister_shipping_methods()
        {
        }
        /**
         * Returns all registered shipping methods for usage.
         *
         * @return WC_Shipping_Method[]
         */
        public function get_shipping_methods()
        {
        }
        /**
         * Get an array of shipping classes.
         *
         * @return array
         */
        public function get_shipping_classes()
        {
        }
        /**
         * Calculate shipping for (multiple) packages of cart items.
         *
         * @param array $packages multi-dimensional array of cart items to calc shipping for.
         * @return array Array of calculated packages.
         */
        public function calculate_shipping($packages = array())
        {
        }
        /**
         * See if package is shippable.
         *
         * Packages are shippable until proven otherwise e.g. after getting a shipping country.
         *
         * @param  array $package Package of cart items.
         * @return bool
         */
        protected function is_package_shippable($package)
        {
        }
        /**
         * Calculate shipping rates for a package,
         *
         * Calculates each shipping methods cost. Rates are stored in the session based on the package hash to avoid re-calculation every page load.
         *
         * @param array $package Package of cart items.
         * @param int   $package_key Index of the package being calculated. Used to cache multiple package rates.
         *
         * @return array|bool
         */
        public function calculate_shipping_for_package($package = array(), $package_key = 0)
        {
        }
        /**
         * Get packages.
         *
         * @return array
         */
        public function get_packages()
        {
        }
        /**
         * Reset shipping.
         *
         * Reset the totals for shipping as a whole.
         */
        public function reset_shipping()
        {
        }
        /**
         * Deprecated
         *
         * @deprecated 2.6.0 Was previously used to determine sort order of methods, but this is now controlled by zones and thus unused.
         */
        public function sort_shipping_methods()
        {
        }
    }
    /**
     * Order item coupon class.
     */
    class WC_Order_Item_Coupon extends \WC_Order_Item
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $extra_data = array('code' => '', 'discount' => 0, 'discount_tax' => 0);
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set order item name.
         *
         * @param string $value Coupon code.
         */
        public function set_name($value)
        {
        }
        /**
         * Set code.
         *
         * @param string $value Coupon code.
         */
        public function set_code($value)
        {
        }
        /**
         * Set discount amount.
         *
         * @param string $value Discount.
         */
        public function set_discount($value)
        {
        }
        /**
         * Set discounted tax amount.
         *
         * @param string $value Discount tax.
         */
        public function set_discount_tax($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get order item type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get order item name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get coupon code.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_code($context = 'view')
        {
        }
        /**
         * Get discount amount.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_discount($context = 'view')
        {
        }
        /**
         * Get discounted tax amount.
         *
         * @param string $context What the value is for. Valid values are 'view' and 'edit'.
         *
         * @return string
         */
        public function get_discount_tax($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Array Access Methods
        |--------------------------------------------------------------------------
        |
        | For backwards compatibility with legacy arrays.
        |
        */
        /**
         * OffsetGet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Data store class.
     */
    class WC_Data_Store
    {
        /**
         * Contains an instance of the data store class that we are working with.
         *
         * @var WC_Data_Store
         */
        private $instance = \null;
        /**
         * Contains an array of default WC supported data stores.
         * Format of object name => class name.
         * Example: 'product' => 'WC_Product_Data_Store_CPT'
         * You can also pass something like product_<type> for product stores and
         * that type will be used first when available, if a store is requested like
         * this and doesn't exist, then the store would fall back to 'product'.
         * Ran through `woocommerce_data_stores`.
         *
         * @var array
         */
        private $stores = array('coupon' => 'WC_Coupon_Data_Store_CPT', 'customer' => 'WC_Customer_Data_Store', 'customer-download' => 'WC_Customer_Download_Data_Store', 'customer-download-log' => 'WC_Customer_Download_Log_Data_Store', 'customer-session' => 'WC_Customer_Data_Store_Session', 'order' => 'WC_Order_Data_Store_CPT', 'order-refund' => 'WC_Order_Refund_Data_Store_CPT', 'order-item' => 'WC_Order_Item_Data_Store', 'order-item-coupon' => 'WC_Order_Item_Coupon_Data_Store', 'order-item-fee' => 'WC_Order_Item_Fee_Data_Store', 'order-item-product' => 'WC_Order_Item_Product_Data_Store', 'order-item-shipping' => 'WC_Order_Item_Shipping_Data_Store', 'order-item-tax' => 'WC_Order_Item_Tax_Data_Store', 'payment-token' => 'WC_Payment_Token_Data_Store', 'product' => 'WC_Product_Data_Store_CPT', 'product-grouped' => 'WC_Product_Grouped_Data_Store_CPT', 'product-variable' => 'WC_Product_Variable_Data_Store_CPT', 'product-variation' => 'WC_Product_Variation_Data_Store_CPT', 'shipping-zone' => 'WC_Shipping_Zone_Data_Store', 'webhook' => 'WC_Webhook_Data_Store');
        /**
         * Contains the name of the current data store's class name.
         *
         * @var string
         */
        private $current_class_name = '';
        /**
         * The object type this store works with.
         *
         * @var string
         */
        private $object_type = '';
        /**
         * Tells WC_Data_Store which object (coupon, product, order, etc)
         * store we want to work with.
         *
         * @throws Exception When validation fails.
         * @param string $object_type Name of object.
         */
        public function __construct($object_type)
        {
        }
        /**
         * Only store the object type to avoid serializing the data store instance.
         *
         * @return array
         */
        public function __sleep()
        {
        }
        /**
         * Re-run the constructor with the object type.
         *
         * @throws Exception When validation fails.
         */
        public function __wakeup()
        {
        }
        /**
         * Loads a data store.
         *
         * @param string $object_type Name of object.
         *
         * @since 3.0.0
         * @throws Exception When validation fails.
         * @return WC_Data_Store
         */
        public static function load($object_type)
        {
        }
        /**
         * Returns the class name of the current data store.
         *
         * @since 3.0.0
         * @return string
         */
        public function get_current_class_name()
        {
        }
        /**
         * Reads an object from the data store.
         *
         * @since 3.0.0
         * @param WC_Data $data WooCommerce data instance.
         */
        public function read(&$data)
        {
        }
        /**
         * Create an object in the data store.
         *
         * @since 3.0.0
         * @param WC_Data $data WooCommerce data instance.
         */
        public function create(&$data)
        {
        }
        /**
         * Update an object in the data store.
         *
         * @since 3.0.0
         * @param WC_Data $data WooCommerce data instance.
         */
        public function update(&$data)
        {
        }
        /**
         * Delete an object from the data store.
         *
         * @since 3.0.0
         * @param WC_Data $data WooCommerce data instance.
         * @param array   $args Array of args to pass to the delete method.
         */
        public function delete(&$data, $args = array())
        {
        }
        /**
         * Data stores can define additional functions (for example, coupons have
         * some helper methods for increasing or decreasing usage). This passes
         * through to the instance if that function exists.
         *
         * @since 3.0.0
         * @param string $method     Method.
         * @param mixed  $parameters Parameters.
         * @return mixed
         */
        public function __call($method, $parameters)
        {
        }
    }
    /**
     * Legacy Webhook class.
     */
    abstract class WC_Legacy_Webhook extends \WC_Data
    {
        /**
         * Magic __isset method for backwards compatibility. Legacy properties which could be accessed directly in the past.
         *
         * @param  string $key Item to check.
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic __get method for backwards compatibility. Maps legacy vars to new getters.
         *
         * @param  string $key Item to get.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Get the post data for the webhook.
         *
         * @deprecated 3.2.0
         * @since      2.2
         * @return     null|WP_Post
         */
        public function get_post_data()
        {
        }
        /**
         * Update the webhook status.
         *
         * @deprecated 3.2.0
         * @since      2.2.0
         * @param      string $status Status to set.
         */
        public function update_status($status)
        {
        }
    }
    /**
     * Legacy Customer.
     *
     * @version  3.0.0
     * @package  WooCommerce/Classes
     * @category Class
     * @author   WooThemes
     */
    abstract class WC_Legacy_Customer extends \WC_Data
    {
        /**
         * __isset legacy.
         * @param mixed $key
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * __get function.
         * @param string $key
         * @return string
         */
        public function __get($key)
        {
        }
        /**
         * __set function.
         *
         * @param string $key
         * @param mixed $value
         */
        public function __set($key, $value)
        {
        }
        /**
         * Address and shipping_address are aliased, so we want to get the 'real' key name.
         * For all other keys, we can just return it.
         * @since 3.0.0
         * @param  string $key
         * @return string
         */
        private function filter_legacy_key($key)
        {
        }
        /**
         * Sets session data for the location.
         *
         * @param string $country
         * @param string $state
         * @param string $postcode (default: '')
         * @param string $city (default: '')
         */
        public function set_location($country, $state, $postcode = '', $city = '')
        {
        }
        /**
         * Get default country for a customer.
         * @return string
         */
        public function get_default_country()
        {
        }
        /**
         * Get default state for a customer.
         * @return string
         */
        public function get_default_state()
        {
        }
        /**
         * Set customer address to match shop base address.
         */
        public function set_to_base()
        {
        }
        /**
         * Set customer shipping address to base address.
         */
        public function set_shipping_to_base()
        {
        }
        /**
         * Calculated shipping.
         * @param boolean $calculated
         */
        public function calculated_shipping($calculated = \true)
        {
        }
        /**
         * Set default data for a customer.
         */
        public function set_default_data()
        {
        }
        /**
         * Save data function.
         */
        public function save_data()
        {
        }
        /**
         * Is the user a paying customer?
         *
         * @param int $user_id
         *
         * @return bool
         */
        function is_paying_customer($user_id = '')
        {
        }
        /**
         * Legacy get address.
         */
        function get_address()
        {
        }
        /**
         * Legacy get address 2.
         */
        function get_address_2()
        {
        }
        /**
         * Legacy get country.
         */
        function get_country()
        {
        }
        /**
         * Legacy get state.
         */
        function get_state()
        {
        }
        /**
         * Legacy get postcode.
         */
        function get_postcode()
        {
        }
        /**
         * Legacy get city.
         */
        function get_city()
        {
        }
        /**
         * Legacy set country.
         *
         * @param string $country
         */
        function set_country($country)
        {
        }
        /**
         * Legacy set state.
         *
         * @param string $state
         */
        function set_state($state)
        {
        }
        /**
         * Legacy set postcode.
         *
         * @param string $postcode
         */
        function set_postcode($postcode)
        {
        }
        /**
         * Legacy set city.
         *
         * @param string $city
         */
        function set_city($city)
        {
        }
        /**
         * Legacy set address.
         *
         * @param string $address
         */
        function set_address($address)
        {
        }
        /**
         * Legacy set address.
         *
         * @param string $address
         */
        function set_address_2($address)
        {
        }
    }
    /**
     * Legacy Shipping Zone.
     *
     * @version  3.0.0
     * @package  WooCommerce/Classes
     * @category Class
     * @author   WooThemes
     */
    abstract class WC_Legacy_Shipping_Zone extends \WC_Data
    {
        /**
         * Get zone ID
         * @return int|null Null if the zone does not exist. 0 is the default zone.
         * @deprecated 3.0
         */
        public function get_zone_id()
        {
        }
        /**
         * Read a shipping zone by ID.
         * @deprecated 3.0.0 - Init a shipping zone with an ID.
         *
         * @param int $zone_id
         */
        public function read($zone_id)
        {
        }
        /**
         * Update a zone.
         * @deprecated 3.0.0 - Use ::save instead.
         */
        public function update()
        {
        }
        /**
         * Create a zone.
         * @deprecated 3.0.0 - Use ::save instead.
         */
        public function create()
        {
        }
    }
    /**
     * Legacy cart class.
     */
    abstract class WC_Legacy_Cart
    {
        /**
         * Array of defaults. Not used since 3.2.
         *
         * @deprecated 3.2.0
         */
        public $cart_session_data = array('cart_contents_total' => 0, 'total' => 0, 'subtotal' => 0, 'subtotal_ex_tax' => 0, 'tax_total' => 0, 'taxes' => array(), 'shipping_taxes' => array(), 'discount_cart' => 0, 'discount_cart_tax' => 0, 'shipping_total' => 0, 'shipping_tax_total' => 0, 'coupon_discount_amounts' => array(), 'coupon_discount_tax_amounts' => array(), 'fee_total' => 0, 'fees' => array());
        /**
         * Contains an array of coupon usage counts after they have been applied.
         *
         * @deprecated 3.2.0
         * @var array
         */
        public $coupon_applied_count = array();
        /**
         * Map legacy variables.
         *
         * @param string $name Property name.
         * @param mixed  $value Value to set.
         */
        public function __isset($name)
        {
        }
        /**
         * Magic getters.
         *
         * @param string $name Property name.
         * @return mixed
         */
        public function &__get($name)
        {
        }
        /**
         * Map legacy variables to setters.
         *
         * @param string $name Property name.
         * @param mixed  $value Value to set.
         */
        public function __set($name, $value)
        {
        }
        /**
         * Methods moved to session class in 3.2.0.
         */
        public function get_cart_from_session()
        {
        }
        public function maybe_set_cart_cookies()
        {
        }
        public function set_session()
        {
        }
        public function get_cart_for_session()
        {
        }
        public function persistent_cart_update()
        {
        }
        public function persistent_cart_destroy()
        {
        }
        /**
         * Get the total of all cart discounts.
         *
         * @return float
         */
        public function get_cart_discount_total()
        {
        }
        /**
         * Get the total of all cart tax discounts (used for discounts on tax inclusive prices).
         *
         * @return float
         */
        public function get_cart_discount_tax_total()
        {
        }
        /**
         * Renamed for consistency.
         *
         * @param string $coupon_code
         * @return bool	True if the coupon is applied, false if it does not exist or cannot be applied.
         */
        public function add_discount($coupon_code)
        {
        }
        /**
         * Remove taxes.
         *
         * @deprecated 3.2.0 Taxes are never calculated if customer is tax except making this function unused.
         */
        public function remove_taxes()
        {
        }
        /**
         * Init.
         *
         * @deprecated 3.2.0 Session is loaded via hooks rather than directly.
         */
        public function init()
        {
        }
        /**
         * Function to apply discounts to a product and get the discounted price (before tax is applied).
         *
         * @deprecated Calculation and coupon logic is handled in WC_Cart_Totals.
         * @param mixed $values Cart item.
         * @param mixed $price Price of item.
         * @param bool  $add_totals Legacy.
         * @return float price
         */
        public function get_discounted_price($values, $price, $add_totals = \false)
        {
        }
        /**
         * Gets the url to the cart page.
         *
         * @deprecated 2.5.0 in favor to wc_get_cart_url()
         * @return string url to page
         */
        public function get_cart_url()
        {
        }
        /**
         * Gets the url to the checkout page.
         *
         * @deprecated 2.5.0 in favor to wc_get_checkout_url()
         * @return string url to page
         */
        public function get_checkout_url()
        {
        }
        /**
         * Sees if we need a shipping address.
         *
         * @deprecated 2.5.0 in favor to wc_ship_to_billing_address_only()
         * @return bool
         */
        public function ship_to_billing_address_only()
        {
        }
        /**
         * Coupons enabled function. Filterable.
         *
         * @deprecated 2.5.0 in favor to wc_coupons_enabled()
         * @return bool
         */
        public function coupons_enabled()
        {
        }
        /**
         * Gets the total (product) discount amount - these are applied before tax.
         *
         * @deprecated Order discounts (after tax) removed in 2.3 so multiple methods for discounts are no longer required.
         * @return mixed formatted price or false if there are none.
         */
        public function get_discounts_before_tax()
        {
        }
        /**
         * Get the total of all order discounts (after tax discounts).
         *
         * @deprecated Order discounts (after tax) removed in 2.3.
         * @return int
         */
        public function get_order_discount_total()
        {
        }
        /**
         * Function to apply cart discounts after tax.
         *
         * @deprecated Coupons can not be applied after tax.
         * @param $values
         * @param $price
         */
        public function apply_cart_discounts_after_tax($values, $price)
        {
        }
        /**
         * Function to apply product discounts after tax.
         *
         * @deprecated Coupons can not be applied after tax.
         *
         * @param $values
         * @param $price
         */
        public function apply_product_discounts_after_tax($values, $price)
        {
        }
        /**
         * Gets the order discount amount - these are applied after tax.
         *
         * @deprecated Coupons can not be applied after tax.
         */
        public function get_discounts_after_tax()
        {
        }
    }
    /**
     * Abstract Rest Controller Class
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends  WP_REST_Controller
     * @version  2.6.0
     */
    abstract class WC_REST_Controller extends \WP_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = '';
        /**
         * Add the schema from additional fields to an schema array.
         *
         * The type of object is inferred from the passed schema.
         *
         * @param array $schema Schema array.
         *
         * @return array
         */
        protected function add_additional_fields_schema($schema)
        {
        }
        /**
         * Get normalized rest base.
         *
         * @return string
         */
        protected function get_normalized_rest_base()
        {
        }
        /**
         * Check batch limit.
         *
         * @param array $items Request items.
         * @return bool|WP_Error
         */
        protected function check_batch_limit($items)
        {
        }
        /**
         * Bulk create, update and delete items.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return array Of WP_Error or WP_REST_Response.
         */
        public function batch_items($request)
        {
        }
        /**
         * Validate a text value for a text based setting.
         *
         * @since 3.0.0
         * @param string $value Value.
         * @param array  $setting Setting.
         * @return string
         */
        public function validate_setting_text_field($value, $setting)
        {
        }
        /**
         * Validate select based settings.
         *
         * @since 3.0.0
         * @param string $value Value.
         * @param array  $setting Setting.
         * @return string|WP_Error
         */
        public function validate_setting_select_field($value, $setting)
        {
        }
        /**
         * Validate multiselect based settings.
         *
         * @since 3.0.0
         * @param array $values Values.
         * @param array $setting Setting.
         * @return array|WP_Error
         */
        public function validate_setting_multiselect_field($values, $setting)
        {
        }
        /**
         * Validate image_width based settings.
         *
         * @since 3.0.0
         * @param array $values Values.
         * @param array $setting Setting.
         * @return string|WP_Error
         */
        public function validate_setting_image_width_field($values, $setting)
        {
        }
        /**
         * Validate radio based settings.
         *
         * @since 3.0.0
         * @param string $value Value.
         * @param array  $setting Setting.
         * @return string|WP_Error
         */
        public function validate_setting_radio_field($value, $setting)
        {
        }
        /**
         * Validate checkbox based settings.
         *
         * @since 3.0.0
         * @param string $value Value.
         * @param array  $setting Setting.
         * @return string|WP_Error
         */
        public function validate_setting_checkbox_field($value, $setting)
        {
        }
        /**
         * Validate textarea based settings.
         *
         * @since 3.0.0
         * @param string $value Value.
         * @param array  $setting Setting.
         * @return string
         */
        public function validate_setting_textarea_field($value, $setting)
        {
        }
        /**
         * Add meta query.
         *
         * @since 3.0.0
         * @param array $args       Query args.
         * @param array $meta_query Meta query.
         * @return array
         */
        protected function add_meta_query($args, $meta_query)
        {
        }
        /**
         * Get the batch schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_public_batch_schema()
        {
        }
        /**
         * Gets an array of fields to be included on the response.
         * Included fields are based on item schema and `_fields=` request argument.
         * Introduced to support WordPress 4.9.6 changes.
         *
         * @since 3.5.0
         * @param WP_REST_Request $request Full details about the request.
         * @return array Fields to be included in the response.
         */
        public function get_fields_for_response($request)
        {
        }
    }
    /**
     * WC_REST_Posts_Controller
     *
     * @package Automattic/WooCommerce/RestApi
     * @version  2.6.0
     */
    abstract class WC_REST_Posts_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = '';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = '';
        /**
         * Controls visibility on frontend.
         *
         * @var string
         */
        protected $public = \false;
        /**
         * Check if a given request has access to read items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to create an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to update an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to delete an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return boolean|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Get a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Create a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Add post meta fields.
         *
         * @param WP_Post         $post Post Object.
         * @param WP_REST_Request $request WP_REST_Request Object.
         * @return bool|WP_Error
         */
        protected function add_post_meta_fields($post, $request)
        {
        }
        /**
         * Delete post.
         *
         * @param WP_Post $post Post object.
         */
        protected function delete_post($post)
        {
        }
        /**
         * Update a single post.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Get a collection of posts.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Delete a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WP_Post         $post Post object.
         * @param WP_REST_Request $request Request object.
         * @return array Links for the given post.
         */
        protected function prepare_links($post, $request)
        {
        }
        /**
         * Determine the allowed query_vars for a get_items() response and
         * prepare for WP_Query.
         *
         * @param array           $prepared_args Prepared arguments.
         * @param WP_REST_Request $request Request object.
         * @return array          $query_args
         */
        protected function prepare_items_query($prepared_args = array(), $request = \null)
        {
        }
        /**
         * Get all the WP Query vars that are allowed for the API request.
         *
         * @return array
         */
        protected function get_allowed_query_vars()
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Update post meta fields.
         *
         * @param WP_Post         $post Post object.
         * @param WP_REST_Request $request Request object.
         * @return bool|WP_Error
         */
        protected function update_post_meta_fields($post, $request)
        {
        }
    }
    /**
     * WC_REST_CRUD_Controller class.
     *
     * @extends WC_REST_Posts_Controller
     */
    abstract class WC_REST_CRUD_Controller extends \WC_REST_Posts_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * If object is hierarchical.
         *
         * @var bool
         */
        protected $hierarchical = \false;
        /**
         * Get object.
         *
         * @param  int $id Object ID.
         * @return object WC_Data object or WP_Error object.
         */
        protected function get_object($id)
        {
        }
        /**
         * Check if a given request has access to read an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to update an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to delete an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Get object permalink.
         *
         * @param  object $object Object.
         * @return string
         */
        protected function get_permalink($object)
        {
        }
        /**
         * Prepares the object for the REST response.
         *
         * @since  3.0.0
         * @param  WC_Data         $object  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure.
         */
        protected function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepares one object for create or update operation.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data The prepared item, or WP_Error object on failure.
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Get a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Save an object data.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request  Full details about the request.
         * @param  bool            $creating If is creating a new object.
         * @return WC_Data|WP_Error
         */
        protected function save_object($request, $creating = \false)
        {
        }
        /**
         * Create a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single post.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get objects.
         *
         * @since  3.0.0
         * @param  array $query_args Query args.
         * @return array
         */
        protected function get_objects($query_args)
        {
        }
        /**
         * Get a collection of posts.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Delete a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Data         $object  Object data.
         * @param WP_REST_Request $request Request object.
         * @return array                   Links for the given post.
         */
        protected function prepare_links($object, $request)
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Legacy Coupons controller class.
     *
     * @package WooCommerce/API
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Legacy_Coupons_Controller extends \WC_REST_CRUD_Controller
    {
        /**
         * Query args.
         *
         * @deprecated 3.0.0
         *
         * @param array $args Query args
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Prepare a single coupon output for response.
         *
         * @deprecated 3.0.0
         *
         * @param WP_Post $post Post object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $data
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Prepare a single coupon for create or update.
         *
         * @deprecated 3.0.0
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_Error|stdClass $data Post object.
         */
        protected function prepare_item_for_database($request)
        {
        }
    }
    interface WC_API_Handler
    {
        /**
         * Get the content type for the response
         *
         * This should return the proper HTTP content-type for the response
         *
         * @since 2.1
         * @return string
         */
        public function get_content_type();
        /**
         * Parse the raw request body entity into an array
         *
         * @since 2.1
         * @param string $data
         * @return array
         */
        public function parse_body($data);
        /**
         * Generate a response from an array of data
         *
         * @since 2.1
         * @param array $data
         * @return string
         */
        public function generate_response($data);
    }
    class WC_API_XML_Handler implements \WC_API_Handler
    {
        /** @var XMLWriter instance */
        private $xml;
        /**
         * Add some response filters
         *
         * @since 2.1
         */
        public function __construct()
        {
        }
        /**
         * Get the content type for the response
         *
         * @since 2.1
         * @return string
         */
        public function get_content_type()
        {
        }
        /**
         * Parse the raw request body entity
         *
         * @since 2.1
         * @param string $data the raw request body
         * @return array
         */
        public function parse_body($data)
        {
        }
        /**
         * Generate an XML response given an array of data
         *
         * @since 2.1
         * @param array $data the response data
         * @return string
         */
        public function generate_response($data)
        {
        }
        /**
         * Convert array into XML by recursively generating child elements
         *
         * @since 2.1
         * @param string|array $element_key - name for element, e.g. <OrderID>
         * @param string|array $element_value - value for element, e.g. 1234
         * @return string - generated XML
         */
        private function array_to_xml($element_key, $element_value = array())
        {
        }
        /**
         * Adjust the sales report array format to change totals keyed with the sales date to become an
         * attribute for the totals element instead
         *
         * @since 2.1
         * @param array $data
         * @return array
         */
        public function format_sales_report_data($data)
        {
        }
        /**
         * Adjust the product data to handle options for attributes without a named child element and other
         * fields that have no named child elements (e.g. categories = array( 'cat1', 'cat2' ) )
         *
         * Note that the parent product data for variations is also adjusted in the same manner as needed
         *
         * @since 2.1
         * @param array $data
         * @return array
         */
        public function format_product_data($data)
        {
        }
    }
    /**
     * REST API Legacy Products controller class.
     *
     * @package WooCommerce/API
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Legacy_Products_Controller extends \WC_REST_CRUD_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Query args.
         *
         * @deprecated 3.0.0
         *
         * @param array           $args    Request args.
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Prepare a single product output for response.
         *
         * @deprecated 3.0.0
         *
         * @param WP_Post         $post    Post object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Get product menu order.
         *
         * @deprecated 3.0.0
         * @param WC_Product $product Product instance.
         * @return int
         */
        protected function get_product_menu_order($product)
        {
        }
        /**
         * Save product meta.
         *
         * @deprecated 3.0.0
         * @param WC_Product $product
         * @param WP_REST_Request $request
         * @return bool
         * @throws WC_REST_Exception
         */
        protected function save_product_meta($product, $request)
        {
        }
        /**
         * Set product meta.
         *
         * @deprecated 3.0.0
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param WC_Product      $product Product instance.
         * @param WP_REST_Request $request Request data.
         * @return WC_Product
         */
        protected function set_product_meta($product, $request)
        {
        }
        /**
         * Save variations.
         *
         * @deprecated 3.0.0
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param WC_Product      $product          Product instance.
         * @param WP_REST_Request $request          Request data.
         * @return bool
         */
        protected function save_variations_data($product, $request)
        {
        }
        /**
         * Add post meta fields.
         *
         * @deprecated 3.0.0
         *
         * @param WP_Post         $post    Post data.
         * @param WP_REST_Request $request Request data.
         * @return bool|WP_Error
         */
        protected function add_post_meta_fields($post, $request)
        {
        }
        /**
         * Update post meta fields.
         *
         * @param WP_Post         $post    Post data.
         * @param WP_REST_Request $request Request data.
         * @return bool|WP_Error
         */
        protected function update_post_meta_fields($post, $request)
        {
        }
        /**
         * Delete post.
         *
         * @deprecated 3.0.0
         *
         * @param int|WP_Post $id Post ID or WP_Post instance.
         */
        protected function delete_post($id)
        {
        }
        /**
         * Get post types.
         *
         * @deprecated 3.0.0
         *
         * @return array
         */
        protected function get_post_types()
        {
        }
        /**
         * Save product images.
         *
         * @deprecated 3.0.0
         *
         * @param int $product_id
         * @param array $images
         * @throws WC_REST_Exception
         */
        protected function save_product_images($product_id, $images)
        {
        }
    }
    /**
     * REST API Legacy Orders controller class.
     *
     * @package WooCommerce/API
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Legacy_Orders_Controller extends \WC_REST_CRUD_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Query args.
         *
         * @deprecated 3.0
         *
         * @param array $args
         * @param WP_REST_Request $request
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Prepare a single order output for response.
         *
         * @deprecated 3.0
         *
         * @param WP_Post $post Post object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $data
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Prepare a single order for create.
         *
         * @deprecated 3.0
         *
         * @param  WP_REST_Request $request Request object.
         * @return WP_Error|WC_Order $data Object.
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Create base WC Order object.
         *
         * @deprecated 3.0.0
         *
         * @param array $data
         * @return WC_Order
         */
        protected function create_base_order($data)
        {
        }
        /**
         * Create order.
         *
         * @deprecated 3.0.0
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return int|WP_Error
         */
        protected function create_order($request)
        {
        }
        /**
         * Update order.
         *
         * @deprecated 3.0.0
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return int|WP_Error
         */
        protected function update_order($request)
        {
        }
    }
    class WC_API_Resource
    {
        /** @var WC_API_Server the API server */
        protected $server;
        /** @var string sub-classes override this to set a resource-specific base route */
        protected $base;
        /**
         * Setup class
         *
         * @since 2.1
         * @param WC_API_Server $server
         */
        public function __construct(\WC_API_Server $server)
        {
        }
        /**
         * Validate the request by checking:
         *
         * 1) the ID is a valid integer
         * 2) the ID returns a valid post object and matches the provided post type
         * 3) the current user has the proper permissions to read/edit/delete the post
         *
         * @since 2.1
         * @param string|int $id the post ID
         * @param string $type the post type, either `shop_order`, `shop_coupon`, or `product`
         * @param string $context the context of the request, either `read`, `edit` or `delete`
         * @return int|WP_Error valid post ID or WP_Error if any of the checks fails
         */
        protected function validate_request($id, $type, $context)
        {
        }
        /**
         * Add common request arguments to argument list before WP_Query is run
         *
         * @since 2.1
         * @param array $base_args required arguments for the query (e.g. `post_type`, etc)
         * @param array $request_args arguments provided in the request
         * @return array
         */
        protected function merge_query_args($base_args, $request_args)
        {
        }
        /**
         * Add meta to resources when requested by the client. Meta is added as a top-level
         * `<resource_name>_meta` attribute (e.g. `order_meta`) as a list of key/value pairs
         *
         * @since 2.1
         * @param array $data the resource data
         * @param object $resource the resource object (e.g WC_Order)
         * @return mixed
         */
        public function maybe_add_meta($data, $resource)
        {
        }
        /**
         * Restrict the fields included in the response if the request specified certain only certain fields should be returned
         *
         * @since 2.1
         * @param array $data the response data
         * @param object $resource the object that provided the response data, e.g. WC_Coupon or WC_Order
         * @param array|string the requested list of fields to include in the response
         * @return array response data
         */
        public function filter_response_fields($data, $resource, $fields)
        {
        }
        /**
         * Delete a given resource
         *
         * @since 2.1
         * @param int $id the resource ID
         * @param string $type the resource post type, or `customer`
         * @param bool $force true to permanently delete resource, false to move to trash (not supported for `customer`)
         * @return array|WP_Error
         */
        protected function delete($id, $type, $force = \false)
        {
        }
        /**
         * Checks if the given post is readable by the current user
         *
         * @since 2.1
         * @see WC_API_Resource::check_permission()
         * @param WP_Post|int $post
         * @return bool
         */
        protected function is_readable($post)
        {
        }
        /**
         * Checks if the given post is editable by the current user
         *
         * @since 2.1
         * @see WC_API_Resource::check_permission()
         * @param WP_Post|int $post
         * @return bool
         */
        protected function is_editable($post)
        {
        }
        /**
         * Checks if the given post is deletable by the current user
         *
         * @since 2.1
         * @see WC_API_Resource::check_permission()
         * @param WP_Post|int $post
         * @return bool
         */
        protected function is_deletable($post)
        {
        }
        /**
         * Checks the permissions for the current user given a post and context
         *
         * @since 2.1
         * @param WP_Post|int $post
         * @param string $context the type of permission to check, either `read`, `write`, or `delete`
         * @return bool true if the current user has the permissions to perform the context on the post
         */
        private function check_permission($post, $context)
        {
        }
    }
    class WC_API_Taxes extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/taxes';
        /**
         * Register the routes for this class
         *
         * GET /taxes
         * GET /taxes/count
         * GET /taxes/<id>
         *
         * @since 2.1
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get all taxes
         *
         * @since 2.5.0
         *
         * @param string $fields
         * @param array  $filter
         * @param string $class
         * @param int    $page
         *
         * @return array
         */
        public function get_taxes($fields = \null, $filter = array(), $class = \null, $page = 1)
        {
        }
        /**
         * Get the tax for the given ID
         *
         * @since 2.5.0
         *
         * @param int $id The tax ID
         * @param string $fields fields to include in response
         *
         * @return array|WP_Error
         */
        public function get_tax($id, $fields = \null)
        {
        }
        /**
         * Create a tax
         *
         * @since 2.5.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function create_tax($data)
        {
        }
        /**
         * Edit a tax
         *
         * @since 2.5.0
         *
         * @param int $id The tax ID
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function edit_tax($id, $data)
        {
        }
        /**
         * Delete a tax
         *
         * @since 2.5.0
         *
         * @param int $id The tax ID
         *
         * @return array|WP_Error
         */
        public function delete_tax($id)
        {
        }
        /**
         * Get the total number of taxes
         *
         * @since 2.5.0
         *
         * @param string $class
         * @param array $filter
         *
         * @return array|WP_Error
         */
        public function get_taxes_count($class = \null, $filter = array())
        {
        }
        /**
         * Helper method to get tax rates objects
         *
         * @since 2.5.0
         *
         * @param  array $args
         * @param  bool  $count_only
         *
         * @return array
         */
        protected function query_tax_rates($args, $count_only = \false)
        {
        }
        /**
         * Bulk update or insert taxes
         * Accepts an array with taxes in the formats supported by
         * WC_API_Taxes->create_tax() and WC_API_Taxes->edit_tax()
         *
         * @since 2.5.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function bulk($data)
        {
        }
        /**
         * Get all tax classes
         *
         * @since 2.5.0
         *
         * @param string $fields
         *
         * @return array|WP_Error
         */
        public function get_tax_classes($fields = \null)
        {
        }
        /**
         * Create a tax class.
         *
         * @since 2.5.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function create_tax_class($data)
        {
        }
        /**
         * Delete a tax class
         *
         * @since 2.5.0
         *
         * @param int $slug The tax class slug
         *
         * @return array|WP_Error
         */
        public function delete_tax_class($slug)
        {
        }
        /**
         * Get the total number of tax classes
         *
         * @since 2.5.0
         *
         * @return array|WP_Error
         */
        public function get_tax_classes_count()
        {
        }
    }
    class WC_API_Exception extends \Exception
    {
        /** @var string sanitized error code */
        protected $error_code;
        /**
         * Setup exception, requires 3 params:
         *
         * error code - machine-readable, e.g. `woocommerce_invalid_product_id`
         * error message - friendly message, e.g. 'Product ID is invalid'
         * http status code - proper HTTP status code to respond with, e.g. 400
         *
         * @since 2.2
         * @param string $error_code
         * @param string $error_message user-friendly translated error message
         * @param int $http_status_code HTTP status code to respond with
         */
        public function __construct($error_code, $error_message, $http_status_code)
        {
        }
        /**
         * Returns the error code
         *
         * @since 2.2
         * @return string
         */
        public function getErrorCode()
        {
        }
    }
    class WC_API_Coupons extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/coupons';
        /**
         * Register the routes for this class
         *
         * GET /coupons
         * GET /coupons/count
         * GET /coupons/<id>
         *
         * @since 2.1
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get all coupons
         *
         * @since 2.1
         * @param string $fields
         * @param array $filter
         * @param int $page
         * @return array
         */
        public function get_coupons($fields = \null, $filter = array(), $page = 1)
        {
        }
        /**
         * Get the coupon for the given ID
         *
         * @since 2.1
         * @param int $id the coupon ID
         * @param string $fields fields to include in response
         * @return array|WP_Error
         */
        public function get_coupon($id, $fields = \null)
        {
        }
        /**
         * Get the total number of coupons
         *
         * @since 2.1
         * @param array $filter
         * @return array|WP_Error
         */
        public function get_coupons_count($filter = array())
        {
        }
        /**
         * Get the coupon for the given code
         *
         * @since 2.1
         * @param string $code the coupon code
         * @param string $fields fields to include in response
         * @return int|WP_Error
         */
        public function get_coupon_by_code($code, $fields = \null)
        {
        }
        /**
         * Create a coupon
         *
         * @since 2.2
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function create_coupon($data)
        {
        }
        /**
         * Edit a coupon
         *
         * @since 2.2
         *
         * @param int $id the coupon ID
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function edit_coupon($id, $data)
        {
        }
        /**
         * Delete a coupon
         *
         * @since  2.2
         *
         * @param int $id the coupon ID
         * @param bool $force true to permanently delete coupon, false to move to trash
         *
         * @return array|int|WP_Error
         */
        public function delete_coupon($id, $force = \false)
        {
        }
        /**
         * expiry_date format
         *
         * @since  2.3.0
         * @param  string $expiry_date
         * @param bool $as_timestamp (default: false)
         * @return string|int
         */
        protected function get_coupon_expiry_date($expiry_date, $as_timestamp = \false)
        {
        }
        /**
         * Helper method to get coupon post objects
         *
         * @since 2.1
         * @param array $args request arguments for filtering query
         * @return WP_Query
         */
        private function query_coupons($args)
        {
        }
        /**
         * Bulk update or insert coupons
         * Accepts an array with coupons in the formats supported by
         * WC_API_Coupons->create_coupon() and WC_API_Coupons->edit_coupon()
         *
         * @since 2.4.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function bulk($data)
        {
        }
    }
    class WC_API_Reports extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/reports';
        /** @var WC_Admin_Report instance */
        private $report;
        /**
         * Register the routes for this class
         *
         * GET /reports
         * GET /reports/sales
         *
         * @since 2.1
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get a simple listing of available reports
         *
         * @since 2.1
         * @return array
         */
        public function get_reports()
        {
        }
        /**
         * Get the sales report
         *
         * @since 2.1
         * @param string $fields fields to include in response
         * @param array $filter date filtering
         * @return array|WP_Error
         */
        public function get_sales_report($fields = \null, $filter = array())
        {
        }
        /**
         * Get the top sellers report
         *
         * @since 2.1
         * @param string $fields fields to include in response
         * @param array $filter date filtering
         * @return array|WP_Error
         */
        public function get_top_sellers_report($fields = \null, $filter = array())
        {
        }
        /**
         * Setup the report object and parse any date filtering
         *
         * @since 2.1
         * @param array $filter date filtering
         */
        private function setup_report($filter)
        {
        }
        /**
         * Verify that the current user has permission to view reports
         *
         * @since 2.1
         * @see WC_API_Resource::validate_request()
         *
         * @param null $id unused
         * @param null $type unused
         * @param null $context unused
         *
         * @return true|WP_Error
         */
        protected function validate_request($id = \null, $type = \null, $context = \null)
        {
        }
    }
    class WC_API_Server
    {
        const METHOD_GET = 1;
        const METHOD_POST = 2;
        const METHOD_PUT = 4;
        const METHOD_PATCH = 8;
        const METHOD_DELETE = 16;
        const READABLE = 1;
        // GET
        const CREATABLE = 2;
        // POST
        const EDITABLE = 14;
        // POST | PUT | PATCH
        const DELETABLE = 16;
        // DELETE
        const ALLMETHODS = 31;
        // GET | POST | PUT | PATCH | DELETE
        /**
         * Does the endpoint accept a raw request body?
         */
        const ACCEPT_RAW_DATA = 64;
        /** Does the endpoint accept a request body? (either JSON or XML) */
        const ACCEPT_DATA = 128;
        /**
         * Should we hide this endpoint from the index?
         */
        const HIDDEN_ENDPOINT = 256;
        /**
         * Map of HTTP verbs to constants
         * @var array
         */
        public static $method_map = array('HEAD' => self::METHOD_GET, 'GET' => self::METHOD_GET, 'POST' => self::METHOD_POST, 'PUT' => self::METHOD_PUT, 'PATCH' => self::METHOD_PATCH, 'DELETE' => self::METHOD_DELETE);
        /**
         * Requested path (relative to the API root, wp-json.php)
         *
         * @var string
         */
        public $path = '';
        /**
         * Requested method (GET/HEAD/POST/PUT/PATCH/DELETE)
         *
         * @var string
         */
        public $method = 'HEAD';
        /**
         * Request parameters
         *
         * This acts as an abstraction of the superglobals
         * (GET => $_GET, POST => $_POST)
         *
         * @var array
         */
        public $params = array('GET' => array(), 'POST' => array());
        /**
         * Request headers
         *
         * @var array
         */
        public $headers = array();
        /**
         * Request files (matches $_FILES)
         *
         * @var array
         */
        public $files = array();
        /**
         * Request/Response handler, either JSON by default
         * or XML if requested by client
         *
         * @var WC_API_Handler
         */
        public $handler;
        /**
         * Setup class and set request/response handler
         *
         * @since 2.1
         * @param $path
         */
        public function __construct($path)
        {
        }
        /**
         * Check authentication for the request
         *
         * @since 2.1
         * @return WP_User|WP_Error WP_User object indicates successful login, WP_Error indicates unsuccessful login
         */
        public function check_authentication()
        {
        }
        /**
         * Convert an error to an array
         *
         * This iterates over all error codes and messages to change it into a flat
         * array. This enables simpler client behaviour, as it is represented as a
         * list in JSON rather than an object/map
         *
         * @since 2.1
         * @param WP_Error $error
         * @return array List of associative arrays with code and message keys
         */
        protected function error_to_array($error)
        {
        }
        /**
         * Handle serving an API request
         *
         * Matches the current server URI to a route and runs the first matching
         * callback then outputs a JSON representation of the returned value.
         *
         * @since 2.1
         * @uses WC_API_Server::dispatch()
         */
        public function serve_request()
        {
        }
        /**
         * Retrieve the route map
         *
         * The route map is an associative array with path regexes as the keys. The
         * value is an indexed array with the callback function/method as the first
         * item, and a bitmask of HTTP methods as the second item (see the class
         * constants).
         *
         * Each route can be mapped to more than one callback by using an array of
         * the indexed arrays. This allows mapping e.g. GET requests to one callback
         * and POST requests to another.
         *
         * Note that the path regexes (array keys) must have @ escaped, as this is
         * used as the delimiter with preg_match()
         *
         * @since 2.1
         * @return array `'/path/regex' => array( $callback, $bitmask )` or `'/path/regex' => array( array( $callback, $bitmask ), ...)`
         */
        public function get_routes()
        {
        }
        /**
         * Match the request to a callback and call it
         *
         * @since 2.1
         * @return mixed The value returned by the callback, or a WP_Error instance
         */
        public function dispatch()
        {
        }
        /**
         * urldecode deep.
         *
         * @since  2.2
         * @param  string|array $value Data to decode with urldecode.
         *
         * @return string|array        Decoded data.
         */
        protected function urldecode_deep($value)
        {
        }
        /**
         * Sort parameters by order specified in method declaration
         *
         * Takes a callback and a list of available params, then filters and sorts
         * by the parameters the method actually needs, using the Reflection API
         *
         * @since 2.2
         *
         * @param callable|array $callback the endpoint callback
         * @param array $provided the provided request parameters
         *
         * @return array|WP_Error
         */
        protected function sort_callback_params($callback, $provided)
        {
        }
        /**
         * Get the site index.
         *
         * This endpoint describes the capabilities of the site.
         *
         * @since 2.3
         * @return array Index entity
         */
        public function get_index()
        {
        }
        /**
         * Send a HTTP status code
         *
         * @since 2.1
         * @param int $code HTTP status
         */
        public function send_status($code)
        {
        }
        /**
         * Send a HTTP header
         *
         * @since 2.1
         * @param string $key Header key
         * @param string $value Header value
         * @param boolean $replace Should we replace the existing header?
         */
        public function header($key, $value, $replace = \true)
        {
        }
        /**
         * Send a Link header
         *
         * @internal The $rel parameter is first, as this looks nicer when sending multiple
         *
         * @link http://tools.ietf.org/html/rfc5988
         * @link http://www.iana.org/assignments/link-relations/link-relations.xml
         *
         * @since 2.1
         * @param string $rel Link relation. Either a registered type, or an absolute URL
         * @param string $link Target IRI for the link
         * @param array $other Other parameters to send, as an associative array
         */
        public function link_header($rel, $link, $other = array())
        {
        }
        /**
         * Send pagination headers for resources
         *
         * @since 2.1
         * @param WP_Query|WP_User_Query|stdClass $query
         */
        public function add_pagination_headers($query)
        {
        }
        /**
         * Returns the request URL with the page query parameter set to the specified page
         *
         * @since 2.1
         * @param int $page
         * @return string
         */
        private function get_paginated_url($page)
        {
        }
        /**
         * Retrieve the raw request entity (body)
         *
         * @since 2.1
         * @return string
         */
        public function get_raw_data()
        {
        }
        /**
         * Parse an RFC3339 datetime into a MySQl datetime
         *
         * Invalid dates default to unix epoch
         *
         * @since 2.1
         * @param string $datetime RFC3339 datetime
         * @return string MySQl datetime (YYYY-MM-DD HH:MM:SS)
         */
        public function parse_datetime($datetime)
        {
        }
        /**
         * Format a unix timestamp or MySQL datetime into an RFC3339 datetime
         *
         * @since 2.1
         * @param int|string $timestamp unix timestamp or MySQL datetime
         * @param bool $convert_to_utc
         * @param bool $convert_to_gmt Use GMT timezone.
         * @return string RFC3339 datetime
         */
        public function format_datetime($timestamp, $convert_to_utc = \false, $convert_to_gmt = \false)
        {
        }
        /**
         * Extract headers from a PHP-style $_SERVER array
         *
         * @since 2.1
         * @param array $server Associative array similar to $_SERVER
         * @return array Headers extracted from the input
         */
        public function get_headers($server)
        {
        }
    }
    class WC_API_Products extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/products';
        /**
         * Register the routes for this class
         *
         * GET/POST /products
         * GET /products/count
         * GET/PUT/DELETE /products/<id>
         * GET /products/<id>/reviews
         *
         * @since 2.1
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get all products
         *
         * @since 2.1
         * @param string $fields
         * @param string $type
         * @param array $filter
         * @param int $page
         * @return array
         */
        public function get_products($fields = \null, $type = \null, $filter = array(), $page = 1)
        {
        }
        /**
         * Get the product for the given ID
         *
         * @since 2.1
         * @param int $id the product ID
         * @param string $fields
         * @return array|WP_Error
         */
        public function get_product($id, $fields = \null)
        {
        }
        /**
         * Get the total number of products
         *
         * @since 2.1
         *
         * @param string $type
         * @param array $filter
         *
         * @return array|WP_Error
         */
        public function get_products_count($type = \null, $filter = array())
        {
        }
        /**
         * Create a new product.
         *
         * @since 2.2
         *
         * @param array $data posted data
         *
         * @return array|WP_Error
         */
        public function create_product($data)
        {
        }
        /**
         * Edit a product
         *
         * @since 2.2
         *
         * @param int $id the product ID
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function edit_product($id, $data)
        {
        }
        /**
         * Delete a product.
         *
         * @since 2.2
         *
         * @param int $id the product ID.
         * @param bool $force true to permanently delete order, false to move to trash.
         *
         * @return array|WP_Error
         */
        public function delete_product($id, $force = \false)
        {
        }
        /**
         * Get the reviews for a product
         *
         * @since 2.1
         * @param int $id the product ID to get reviews for
         * @param string $fields fields to include in response
         * @return array|WP_Error
         */
        public function get_product_reviews($id, $fields = \null)
        {
        }
        /**
         * Get the orders for a product
         *
         * @since 2.4.0
         * @param int $id the product ID to get orders for
         * @param string fields  fields to retrieve
         * @param array $filter filters to include in response
         * @param string $status the order status to retrieve
         * @param $page  $page   page to retrieve
         * @return array|WP_Error
         */
        public function get_product_orders($id, $fields = \null, $filter = array(), $status = \null, $page = 1)
        {
        }
        /**
         * Get a listing of product categories
         *
         * @since 2.2
         *
         * @param string|null $fields fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_product_categories($fields = \null)
        {
        }
        /**
         * Get the product category for the given ID
         *
         * @since 2.2
         *
         * @param string $id product category term ID
         * @param string|null $fields fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_product_category($id, $fields = \null)
        {
        }
        /**
         * Create a new product category.
         *
         * @since  2.5.0
         * @param  array          $data Posted data
         * @return array|WP_Error       Product category if succeed, otherwise WP_Error
         *                              will be returned
         */
        public function create_product_category($data)
        {
        }
        /**
         * Edit a product category.
         *
         * @since  2.5.0
         * @param  int            $id   Product category term ID
         * @param  array          $data Posted data
         * @return array|WP_Error       Product category if succeed, otherwise WP_Error
         *                              will be returned
         */
        public function edit_product_category($id, $data)
        {
        }
        /**
         * Delete a product category.
         *
         * @since  2.5.0
         * @param  int            $id Product category term ID
         * @return array|WP_Error     Success message if succeed, otherwise WP_Error
         *                            will be returned
         */
        public function delete_product_category($id)
        {
        }
        /**
         * Get a listing of product tags.
         *
         * @since  2.5.0
         *
         * @param  string|null $fields Fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_product_tags($fields = \null)
        {
        }
        /**
         * Get the product tag for the given ID.
         *
         * @since  2.5.0
         *
         * @param  string $id          Product tag term ID
         * @param  string|null $fields Fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_product_tag($id, $fields = \null)
        {
        }
        /**
         * Create a new product tag.
         *
         * @since  2.5.0
         * @param  array          $data Posted data
         * @return array|WP_Error       Product tag if succeed, otherwise WP_Error
         *                              will be returned
         */
        public function create_product_tag($data)
        {
        }
        /**
         * Edit a product tag.
         *
         * @since  2.5.0
         * @param  int            $id   Product tag term ID
         * @param  array          $data Posted data
         * @return array|WP_Error       Product tag if succeed, otherwise WP_Error
         *                              will be returned
         */
        public function edit_product_tag($id, $data)
        {
        }
        /**
         * Delete a product tag.
         *
         * @since  2.5.0
         * @param  int            $id Product tag term ID
         * @return array|WP_Error     Success message if succeed, otherwise WP_Error
         *                            will be returned
         */
        public function delete_product_tag($id)
        {
        }
        /**
         * Helper method to get product post objects
         *
         * @since 2.1
         * @param array $args request arguments for filtering query
         * @return WP_Query
         */
        private function query_products($args)
        {
        }
        /**
         * Get standard product data that applies to every product type
         *
         * @since 2.1
         * @param WC_Product|int $product
         *
         * @return array
         */
        private function get_product_data($product)
        {
        }
        /**
         * Get product menu order.
         *
         * @since 2.5.3
         * @param WC_Product $product
         * @return int
         */
        private function get_product_menu_order($product)
        {
        }
        /**
         * Get an individual variation's data.
         *
         * @since 2.1
         * @param WC_Product $product
         * @return array
         */
        private function get_variation_data($product)
        {
        }
        /**
         * Get grouped products data
         *
         * @since  2.5.0
         * @param  WC_Product $product
         *
         * @return array
         */
        private function get_grouped_products_data($product)
        {
        }
        /**
         * Save default attributes.
         *
         * @since 3.0.0
         *
         * @param WC_Product $product
         * @param WP_REST_Request $request
         * @return WC_Product
         */
        protected function save_default_attributes($product, $request)
        {
        }
        /**
         * Save product meta.
         *
         * @since  2.2
         * @param  WC_Product $product
         * @param  array $data
         * @return WC_Product
         * @throws WC_API_Exception
         */
        protected function save_product_meta($product, $data)
        {
        }
        /**
         * Save variations.
         *
         * @since  2.2
         *
         * @param  WC_Product $product
         * @param  array $request
         *
         * @return bool
         * @throws WC_API_Exception
         */
        protected function save_variations($product, $request)
        {
        }
        /**
         * Save product shipping data
         *
         * @since 2.2
         * @param WC_Product $product
         * @param array $data
         * @return WC_Product
         */
        private function save_product_shipping_data($product, $data)
        {
        }
        /**
         * Save downloadable files
         *
         * @since 2.2
         * @param WC_Product $product
         * @param array $downloads
         * @param int $deprecated Deprecated since 3.0.
         * @return WC_Product
         */
        private function save_downloadable_files($product, $downloads, $deprecated = 0)
        {
        }
        /**
         * Get attribute taxonomy by slug.
         *
         * @since 2.2
         * @param string $slug
         * @return string|null
         */
        private function get_attribute_taxonomy_by_slug($slug)
        {
        }
        /**
         * Get the images for a product or product variation
         *
         * @since 2.1
         * @param WC_Product|WC_Product_Variation $product
         * @return array
         */
        private function get_images($product)
        {
        }
        /**
         * Save product images.
         *
         * @since  2.2
         * @param  WC_Product $product
         * @param  array $images
         * @throws WC_API_Exception
         * @return WC_Product
         */
        protected function save_product_images($product, $images)
        {
        }
        /**
         * Upload image from URL
         *
         * @since 2.2
         * @param string $image_url
         * @return int|WP_Error attachment id
         */
        public function upload_product_image($image_url)
        {
        }
        /**
         * Upload product category image from URL.
         *
         * @since 2.5.0
         * @param string $image_url
         * @return int|WP_Error attachment id
         */
        public function upload_product_category_image($image_url)
        {
        }
        /**
         * Upload image from URL.
         *
         * @throws WC_API_Exception
         *
         * @since 2.5.0
         * @param string $image_url
         * @param string $upload_for
         * @return array
         */
        protected function upload_image_from_url($image_url, $upload_for = 'product_image')
        {
        }
        /**
         * Sets product image as attachment and returns the attachment ID.
         *
         * @since 2.2
         * @param array $upload
         * @param int $id
         * @return int
         */
        protected function set_product_image_as_attachment($upload, $id)
        {
        }
        /**
         * Sets uploaded category image as attachment and returns the attachment ID.
         *
         * @since  2.5.0
         * @param  integer $upload Upload information from wp_upload_bits
         * @return int             Attachment ID
         */
        protected function set_product_category_image_as_attachment($upload)
        {
        }
        /**
         * Set uploaded image as attachment.
         *
         * @since  2.5.0
         * @param  array $upload Upload information from wp_upload_bits
         * @param  int   $id     Post ID. Default to 0.
         * @return int           Attachment ID
         */
        protected function set_uploaded_image_as_attachment($upload, $id = 0)
        {
        }
        /**
         * Get attribute options.
         *
         * @param int $product_id
         * @param array $attribute
         * @return array
         */
        protected function get_attribute_options($product_id, $attribute)
        {
        }
        /**
         * Get the attributes for a product or product variation
         *
         * @since 2.1
         * @param WC_Product|WC_Product_Variation $product
         * @return array
         */
        private function get_attributes($product)
        {
        }
        /**
         * Get the downloads for a product or product variation
         *
         * @since 2.1
         * @param WC_Product|WC_Product_Variation $product
         * @return array
         */
        private function get_downloads($product)
        {
        }
        /**
         * Get a listing of product attributes
         *
         * @since 2.5.0
         *
         * @param string|null $fields fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_product_attributes($fields = \null)
        {
        }
        /**
         * Get the product attribute for the given ID
         *
         * @since 2.5.0
         *
         * @param string $id product attribute term ID
         * @param string|null $fields fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_product_attribute($id, $fields = \null)
        {
        }
        /**
         * Validate attribute data.
         *
         * @since  2.5.0
         * @param  string $name
         * @param  string $slug
         * @param  string $type
         * @param  string $order_by
         * @param  bool   $new_data
         * @return bool
         * @throws WC_API_Exception
         */
        protected function validate_attribute_data($name, $slug, $type, $order_by, $new_data = \true)
        {
        }
        /**
         * Create a new product attribute.
         *
         * @since 2.5.0
         *
         * @param array $data Posted data.
         *
         * @return array|WP_Error
         */
        public function create_product_attribute($data)
        {
        }
        /**
         * Edit a product attribute.
         *
         * @since 2.5.0
         *
         * @param int $id the attribute ID.
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function edit_product_attribute($id, $data)
        {
        }
        /**
         * Delete a product attribute.
         *
         * @since  2.5.0
         *
         * @param  int $id the product attribute ID.
         *
         * @return array|WP_Error
         */
        public function delete_product_attribute($id)
        {
        }
        /**
         * Get a listing of product attribute terms.
         *
         * @since 2.5.0
         *
         * @param int $attribute_id Attribute ID.
         * @param string|null $fields Fields to limit response to.
         *
         * @return array|WP_Error
         */
        public function get_product_attribute_terms($attribute_id, $fields = \null)
        {
        }
        /**
         * Get the product attribute term for the given ID.
         *
         * @since 2.5.0
         *
         * @param int $attribute_id Attribute ID.
         * @param string $id Product attribute term ID.
         * @param string|null $fields Fields to limit response to.
         *
         * @return array|WP_Error
         */
        public function get_product_attribute_term($attribute_id, $id, $fields = \null)
        {
        }
        /**
         * Create a new product attribute term.
         *
         * @since 2.5.0
         *
         * @param int $attribute_id Attribute ID.
         * @param array $data Posted data.
         *
         * @return array|WP_Error
         */
        public function create_product_attribute_term($attribute_id, $data)
        {
        }
        /**
         * Edit a product attribute term.
         *
         * @since 2.5.0
         *
         * @param int $attribute_id Attribute ID.
         * @param int $id the attribute ID.
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function edit_product_attribute_term($attribute_id, $id, $data)
        {
        }
        /**
         * Delete a product attribute term.
         *
         * @since  2.5.0
         *
         * @param int $attribute_id Attribute ID.
         * @param int $id the product attribute ID.
         *
         * @return array|WP_Error
         */
        public function delete_product_attribute_term($attribute_id, $id)
        {
        }
        /**
         * Clear product
         *
         * @param int $product_id
         */
        protected function clear_product($product_id)
        {
        }
        /**
         * Bulk update or insert products
         * Accepts an array with products in the formats supported by
         * WC_API_Products->create_product() and WC_API_Products->edit_product()
         *
         * @since 2.4.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function bulk($data)
        {
        }
        /**
         * Get a listing of product shipping classes.
         *
         * @since  2.5.0
         * @param  string|null    $fields Fields to limit response to
         * @return array|WP_Error         List of product shipping classes if succeed,
         *                                otherwise WP_Error will be returned
         */
        public function get_product_shipping_classes($fields = \null)
        {
        }
        /**
         * Get the product shipping class for the given ID.
         *
         * @since  2.5.0
         * @param  string         $id     Product shipping class term ID
         * @param  string|null    $fields Fields to limit response to
         * @return array|WP_Error         Product shipping class if succeed, otherwise
         *                                WP_Error will be returned
         */
        public function get_product_shipping_class($id, $fields = \null)
        {
        }
        /**
         * Create a new product shipping class.
         *
         * @since  2.5.0
         * @param  array          $data Posted data
         * @return array|WP_Error       Product shipping class if succeed, otherwise
         *                              WP_Error will be returned
         */
        public function create_product_shipping_class($data)
        {
        }
        /**
         * Edit a product shipping class.
         *
         * @since  2.5.0
         * @param  int            $id   Product shipping class term ID
         * @param  array          $data Posted data
         * @return array|WP_Error       Product shipping class if succeed, otherwise
         *                              WP_Error will be returned
         */
        public function edit_product_shipping_class($id, $data)
        {
        }
        /**
         * Delete a product shipping class.
         *
         * @since  2.5.0
         * @param  int            $id Product shipping class term ID
         * @return array|WP_Error     Success message if succeed, otherwise WP_Error
         *                            will be returned
         */
        public function delete_product_shipping_class($id)
        {
        }
    }
    class WC_API_Orders extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/orders';
        /** @var string $post_type the custom post type */
        protected $post_type = 'shop_order';
        /**
         * Register the routes for this class
         *
         * GET|POST /orders
         * GET /orders/count
         * GET|PUT|DELETE /orders/<id>
         * GET /orders/<id>/notes
         *
         * @since 2.1
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get all orders
         *
         * @since 2.1
         * @param string $fields
         * @param array $filter
         * @param string $status
         * @param int $page
         * @return array
         */
        public function get_orders($fields = \null, $filter = array(), $status = \null, $page = 1)
        {
        }
        /**
         * Get the order for the given ID.
         *
         * @since 2.1
         * @param int $id The order ID.
         * @param array $fields Request fields.
         * @param array $filter Request filters.
         * @return array|WP_Error
         */
        public function get_order($id, $fields = \null, $filter = array())
        {
        }
        /**
         * Get the total number of orders
         *
         * @since 2.4
         *
         * @param string $status
         * @param array $filter
         *
         * @return array|WP_Error
         */
        public function get_orders_count($status = \null, $filter = array())
        {
        }
        /**
         * Get a list of valid order statuses
         *
         * Note this requires no specific permissions other than being an authenticated
         * API user. Order statuses (particularly custom statuses) could be considered
         * private information which is why it's not in the API index.
         *
         * @since 2.1
         * @return array
         */
        public function get_order_statuses()
        {
        }
        /**
         * Create an order
         *
         * @since 2.2
         * @param array $data raw order data
         * @return array|WP_Error
         */
        public function create_order($data)
        {
        }
        /**
         * Creates new WC_Order.
         *
         * Requires a separate function for classes that extend WC_API_Orders.
         *
         * @since 2.3
         *
         * @param $args array
         * @param $data
         *
         * @return WC_Order
         */
        protected function create_base_order($args, $data)
        {
        }
        /**
         * Edit an order
         *
         * @since 2.2
         * @param int $id the order ID
         * @param array $data
         * @return array|WP_Error
         */
        public function edit_order($id, $data)
        {
        }
        /**
         * Delete an order
         *
         * @param int $id the order ID
         * @param bool $force true to permanently delete order, false to move to trash
         * @return array|WP_Error
         */
        public function delete_order($id, $force = \false)
        {
        }
        /**
         * Helper method to get order post objects
         *
         * @since 2.1
         * @param array $args request arguments for filtering query
         * @return WP_Query
         */
        protected function query_orders($args)
        {
        }
        /**
         * Helper method to set/update the billing & shipping addresses for
         * an order
         *
         * @since 2.1
         * @param \WC_Order $order
         * @param array $data
         */
        protected function set_order_addresses($order, $data)
        {
        }
        /**
         * Update address.
         *
         * @param WC_Order $order
         * @param array $posted
         * @param string $type
         */
        protected function update_address($order, $posted, $type = 'billing')
        {
        }
        /**
         * Helper method to add/update order meta, with two restrictions:
         *
         * 1) Only non-protected meta (no leading underscore) can be set
         * 2) Meta values must be scalar (int, string, bool)
         *
         * @since 2.2
         * @param int $order_id valid order ID
         * @param array $order_meta order meta in array( 'meta_key' => 'meta_value' ) format
         */
        protected function set_order_meta($order_id, $order_meta)
        {
        }
        /**
         * Helper method to check if the resource ID associated with the provided item is null
         *
         * Items can be deleted by setting the resource ID to null
         *
         * @since 2.2
         * @param array $item item provided in the request body
         * @return bool true if the item resource ID is null, false otherwise
         */
        protected function item_is_null($item)
        {
        }
        /**
         * Wrapper method to create/update order items
         *
         * When updating, the item ID provided is checked to ensure it is associated
         * with the order.
         *
         * @since 2.2
         * @param \WC_Order $order order
         * @param string $item_type
         * @param array $item item provided in the request body
         * @param string $action either 'create' or 'update'
         * @throws WC_API_Exception if item ID is not associated with order
         */
        protected function set_item($order, $item_type, $item, $action)
        {
        }
        /**
         * Create or update a line item
         *
         * @since 2.2
         * @param \WC_Order $order
         * @param array $item line item data
         * @param string $action 'create' to add line item or 'update' to update it
         * @throws WC_API_Exception invalid data, server error
         */
        protected function set_line_item($order, $item, $action)
        {
        }
        /**
         * Given a product ID & API provided variations, find the correct variation ID to use for calculation
         * We can't just trust input from the API to pass a variation_id manually, otherwise you could pass
         * the cheapest variation ID but provide other information so we have to look up the variation ID.
         *
         * @param  WC_Product $product Product instance
         * @param array $variations
         *
         * @return int Returns an ID if a valid variation was found for this product
         */
        public function get_variation_id($product, $variations = array())
        {
        }
        /**
         * Utility function to see if the meta array contains data from variations
         *
         * @param array $needles
         * @param array $haystack
         *
         * @return bool
         */
        protected function array_contains($needles, $haystack)
        {
        }
        /**
         * Create or update an order shipping method
         *
         * @since 2.2
         * @param \WC_Order $order
         * @param array $shipping item data
         * @param string $action 'create' to add shipping or 'update' to update it
         * @throws WC_API_Exception invalid data, server error
         */
        protected function set_shipping($order, $shipping, $action)
        {
        }
        /**
         * Create or update an order fee
         *
         * @since 2.2
         * @param \WC_Order $order
         * @param array $fee item data
         * @param string $action 'create' to add fee or 'update' to update it
         * @throws WC_API_Exception invalid data, server error
         */
        protected function set_fee($order, $fee, $action)
        {
        }
        /**
         * Create or update an order coupon
         *
         * @since 2.2
         * @param \WC_Order $order
         * @param array $coupon item data
         * @param string $action 'create' to add coupon or 'update' to update it
         * @throws WC_API_Exception invalid data, server error
         */
        protected function set_coupon($order, $coupon, $action)
        {
        }
        /**
         * Get the admin order notes for an order
         *
         * @since 2.1
         * @param string $order_id order ID
         * @param string|null $fields fields to include in response
         * @return array|WP_Error
         */
        public function get_order_notes($order_id, $fields = \null)
        {
        }
        /**
         * Get an order note for the given order ID and ID
         *
         * @since 2.2
         *
         * @param string $order_id order ID
         * @param string $id order note ID
         * @param string|null $fields fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_order_note($order_id, $id, $fields = \null)
        {
        }
        /**
         * Create a new order note for the given order
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param array $data raw request data
         * @return WP_Error|array error or created note response data
         */
        public function create_order_note($order_id, $data)
        {
        }
        /**
         * Edit the order note
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param string $id note ID
         * @param array $data parsed request data
         * @return WP_Error|array error or edited note response data
         */
        public function edit_order_note($order_id, $id, $data)
        {
        }
        /**
         * Delete order note
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param string $id note ID
         * @return WP_Error|array error or deleted message
         */
        public function delete_order_note($order_id, $id)
        {
        }
        /**
         * Get the order refunds for an order
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param string|null $fields fields to include in response
         * @return array|WP_Error
         */
        public function get_order_refunds($order_id, $fields = \null)
        {
        }
        /**
         * Get an order refund for the given order ID and ID
         *
         * @since 2.2
         *
         * @param string $order_id order ID
         * @param int $id
         * @param string|null $fields fields to limit response to
         * @param array $filter
         *
         * @return array|WP_Error
         */
        public function get_order_refund($order_id, $id, $fields = \null, $filter = array())
        {
        }
        /**
         * Create a new order refund for the given order
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param array $data raw request data
         * @param bool $api_refund do refund using a payment gateway API
         * @return WP_Error|array error or created refund response data
         */
        public function create_order_refund($order_id, $data, $api_refund = \true)
        {
        }
        /**
         * Edit an order refund
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param string $id refund ID
         * @param array $data parsed request data
         * @return WP_Error|array error or edited refund response data
         */
        public function edit_order_refund($order_id, $id, $data)
        {
        }
        /**
         * Delete order refund
         *
         * @since 2.2
         * @param string $order_id order ID
         * @param string $id refund ID
         * @return WP_Error|array error or deleted message
         */
        public function delete_order_refund($order_id, $id)
        {
        }
        /**
         * Bulk update or insert orders
         * Accepts an array with orders in the formats supported by
         * WC_API_Orders->create_order() and WC_API_Orders->edit_order()
         *
         * @since 2.4.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function bulk($data)
        {
        }
    }
    class WC_API_Authentication
    {
        /**
         * Setup class
         *
         * @since 2.1
         */
        public function __construct()
        {
        }
        /**
         * Authenticate the request. The authentication method varies based on whether the request was made over SSL or not.
         *
         * @since 2.1
         * @param WP_User $user
         * @return null|WP_Error|WP_User
         */
        public function authenticate($user)
        {
        }
        /**
         * SSL-encrypted requests are not subject to sniffing or man-in-the-middle
         * attacks, so the request can be authenticated by simply looking up the user
         * associated with the given consumer key and confirming the consumer secret
         * provided is valid
         *
         * @since 2.1
         * @return array
         * @throws Exception
         */
        private function perform_ssl_authentication()
        {
        }
        /**
         * If the consumer_key and consumer_secret $_GET parameters are NOT provided
         * and the Basic auth headers are either not present or the consumer secret does not match the consumer
         * key provided, then return the correct Basic headers and an error message.
         *
         * @since 2.4
         */
        private function exit_with_unauthorized_headers()
        {
        }
        /**
         * Perform OAuth 1.0a "one-legged" (http://oauthbible.com/#oauth-10a-one-legged) authentication for non-SSL requests
         *
         * This is required so API credentials cannot be sniffed or intercepted when making API requests over plain HTTP
         *
         * This follows the spec for simple OAuth 1.0a authentication (RFC 5849) as closely as possible, with two exceptions:
         *
         * 1) There is no token associated with request/responses, only consumer keys/secrets are used
         *
         * 2) The OAuth parameters are included as part of the request query string instead of part of the Authorization header,
         *    This is because there is no cross-OS function within PHP to get the raw Authorization header
         *
         * @link http://tools.ietf.org/html/rfc5849 for the full spec
         * @since 2.1
         * @return array
         * @throws Exception
         */
        private function perform_oauth_authentication()
        {
        }
        /**
         * Return the keys for the given consumer key
         *
         * @since 2.4.0
         * @param string $consumer_key
         * @return array
         * @throws Exception
         */
        private function get_keys_by_consumer_key($consumer_key)
        {
        }
        /**
         * Get user by ID
         *
         * @since  2.4.0
         *
         * @param  int $user_id
         *
         * @return WP_User
         * @throws Exception
         */
        private function get_user_by_id($user_id)
        {
        }
        /**
         * Check if the consumer secret provided for the given user is valid
         *
         * @since 2.1
         * @param string $keys_consumer_secret
         * @param string $consumer_secret
         * @return bool
         */
        private function is_consumer_secret_valid($keys_consumer_secret, $consumer_secret)
        {
        }
        /**
         * Verify that the consumer-provided request signature matches our generated signature, this ensures the consumer
         * has a valid key/secret
         *
         * @param array $keys
         * @param array $params the request parameters
         * @throws Exception
         */
        private function check_oauth_signature($keys, $params)
        {
        }
        /**
         * Normalize each parameter by assuming each parameter may have already been
         * encoded, so attempt to decode, and then re-encode according to RFC 3986
         *
         * Note both the key and value is normalized so a filter param like:
         *
         * 'filter[period]' => 'week'
         *
         * is encoded to:
         *
         * 'filter%5Bperiod%5D' => 'week'
         *
         * This conforms to the OAuth 1.0a spec which indicates the entire query string
         * should be URL encoded
         *
         * @since 2.1
         * @see rawurlencode()
         * @param array $parameters un-normalized parameters
         * @return array normalized parameters
         */
        private function normalize_parameters($parameters)
        {
        }
        /**
         * Encodes a value according to RFC 3986. Supports multidimensional arrays.
         *
         * @since 2.4
         * @param  string|array $value The value to encode
         * @return string|array        Encoded values
         */
        public static function urlencode_rfc3986($value)
        {
        }
        /**
         * Verify that the timestamp and nonce provided with the request are valid. This prevents replay attacks where
         * an attacker could attempt to re-send an intercepted request at a later time.
         *
         * - A timestamp is valid if it is within 15 minutes of now
         * - A nonce is valid if it has not been used within the last 15 minutes
         *
         * @param array $keys
         * @param int $timestamp the unix timestamp for when the request was made
         * @param string $nonce a unique (for the given user) 32 alphanumeric string, consumer-generated
         * @throws Exception
         */
        private function check_oauth_timestamp_and_nonce($keys, $timestamp, $nonce)
        {
        }
        /**
         * Check that the API keys provided have the proper key-specific permissions to either read or write API resources
         *
         * @param string $key_permissions
         * @throws Exception if the permission check fails
         */
        public function check_api_key_permissions($key_permissions)
        {
        }
        /**
         * Updated API Key last access datetime
         *
         * @since 2.4.0
         *
         * @param int $key_id
         */
        private function update_api_key_last_access($key_id)
        {
        }
    }
    class WC_API_Customers extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/customers';
        /** @var string $created_at_min for date filtering */
        private $created_at_min = \null;
        /** @var string $created_at_max for date filtering */
        private $created_at_max = \null;
        /**
         * Setup class, overridden to provide customer data to order response
         *
         * @since 2.1
         * @param WC_API_Server $server
         */
        public function __construct(\WC_API_Server $server)
        {
        }
        /**
         * Register the routes for this class
         *
         * GET /customers
         * GET /customers/count
         * GET /customers/<id>
         * GET /customers/<id>/orders
         *
         * @since 2.2
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get all customers
         *
         * @since 2.1
         * @param array $fields
         * @param array $filter
         * @param int $page
         * @return array
         */
        public function get_customers($fields = \null, $filter = array(), $page = 1)
        {
        }
        /**
         * Get the customer for the given ID
         *
         * @since 2.1
         * @param int $id the customer ID
         * @param array $fields
         * @return array|WP_Error
         */
        public function get_customer($id, $fields = \null)
        {
        }
        /**
         * Get the customer for the given email
         *
         * @since 2.1
         *
         * @param string $email the customer email
         * @param array $fields
         *
         * @return array|WP_Error
         */
        public function get_customer_by_email($email, $fields = \null)
        {
        }
        /**
         * Get the total number of customers
         *
         * @since 2.1
         *
         * @param array $filter
         *
         * @return array|WP_Error
         */
        public function get_customers_count($filter = array())
        {
        }
        /**
         * Get customer billing address fields.
         *
         * @since  2.2
         * @return array
         */
        protected function get_customer_billing_address()
        {
        }
        /**
         * Get customer shipping address fields.
         *
         * @since  2.2
         * @return array
         */
        protected function get_customer_shipping_address()
        {
        }
        /**
         * Add/Update customer data.
         *
         * @since 2.2
         * @param int $id the customer ID
         * @param array $data
         * @param WC_Customer $customer
         */
        protected function update_customer_data($id, $data, $customer)
        {
        }
        /**
         * Create a customer
         *
         * @since 2.2
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function create_customer($data)
        {
        }
        /**
         * Edit a customer
         *
         * @since 2.2
         *
         * @param int $id the customer ID
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function edit_customer($id, $data)
        {
        }
        /**
         * Delete a customer
         *
         * @since 2.2
         * @param int $id the customer ID
         * @return array|WP_Error
         */
        public function delete_customer($id)
        {
        }
        /**
         * Get the orders for a customer
         *
         * @since 2.1
         * @param int $id the customer ID
         * @param string $fields fields to include in response
         * @param array $filter filters
         * @return array|WP_Error
         */
        public function get_customer_orders($id, $fields = \null, $filter = array())
        {
        }
        /**
         * Get the available downloads for a customer
         *
         * @since 2.2
         * @param int $id the customer ID
         * @param string $fields fields to include in response
         * @return array|WP_Error
         */
        public function get_customer_downloads($id, $fields = \null)
        {
        }
        /**
         * Helper method to get customer user objects
         *
         * Note that WP_User_Query does not have built-in pagination so limit & offset are used to provide limited
         * pagination support
         *
         * The filter for role can only be a single role in a string.
         *
         * @since 2.3
         * @param array $args request arguments for filtering query
         * @return WP_User_Query
         */
        private function query_customers($args = array())
        {
        }
        /**
         * Add customer data to orders
         *
         * @since 2.1
         * @param $order_data
         * @param $order
         * @return array
         */
        public function add_customer_data($order_data, $order)
        {
        }
        /**
         * Modify the WP_User_Query to support filtering on the date the customer was created
         *
         * @since 2.1
         * @param WP_User_Query $query
         */
        public function modify_user_query($query)
        {
        }
        /**
         * Validate the request by checking:
         *
         * 1) the ID is a valid integer
         * 2) the ID returns a valid WP_User
         * 3) the current user has the proper permissions
         *
         * @since 2.1
         * @see WC_API_Resource::validate_request()
         * @param integer $id the customer ID
         * @param string $type the request type, unused because this method overrides the parent class
         * @param string $context the context of the request, either `read`, `edit` or `delete`
         * @return int|WP_Error valid user ID or WP_Error if any of the checks fails
         */
        protected function validate_request($id, $type, $context)
        {
        }
        /**
         * Check if the current user can read users
         *
         * @since 2.1
         * @see WC_API_Resource::is_readable()
         * @param int|WP_Post $post unused
         * @return bool true if the current user can read users, false otherwise
         */
        protected function is_readable($post)
        {
        }
        /**
         * Bulk update or insert customers
         * Accepts an array with customers in the formats supported by
         * WC_API_Customers->create_customer() and WC_API_Customers->edit_customer()
         *
         * @since 2.4.0
         *
         * @param array $data
         *
         * @return array|WP_Error
         */
        public function bulk($data)
        {
        }
    }
    class WC_API_Webhooks extends \WC_API_Resource
    {
        /** @var string $base the route base */
        protected $base = '/webhooks';
        /**
         * Register the routes for this class
         *
         * @since 2.2
         * @param array $routes
         * @return array
         */
        public function register_routes($routes)
        {
        }
        /**
         * Get all webhooks
         *
         * @since 2.2
         *
         * @param array $fields
         * @param array $filter
         * @param string $status
         * @param int $page
         *
         * @return array
         */
        public function get_webhooks($fields = \null, $filter = array(), $status = \null, $page = 1)
        {
        }
        /**
         * Get the webhook for the given ID
         *
         * @since 2.2
         * @param int $id webhook ID
         * @param array $fields
         * @return array|WP_Error
         */
        public function get_webhook($id, $fields = \null)
        {
        }
        /**
         * Get the total number of webhooks
         *
         * @since 2.2
         *
         * @param string $status
         * @param array $filter
         *
         * @return array|WP_Error
         */
        public function get_webhooks_count($status = \null, $filter = array())
        {
        }
        /**
         * Create an webhook
         *
         * @since 2.2
         *
         * @param array $data parsed webhook data
         *
         * @return array|WP_Error
         */
        public function create_webhook($data)
        {
        }
        /**
         * Edit a webhook
         *
         * @since 2.2
         *
         * @param int $id webhook ID
         * @param array $data parsed webhook data
         *
         * @return array|WP_Error
         */
        public function edit_webhook($id, $data)
        {
        }
        /**
         * Delete a webhook
         *
         * @since 2.2
         * @param int $id webhook ID
         * @return array|WP_Error
         */
        public function delete_webhook($id)
        {
        }
        /**
         * Helper method to get webhook post objects
         *
         * @since 2.2
         * @param array $args Request arguments for filtering query.
         * @return array
         */
        private function query_webhooks($args)
        {
        }
        /**
         * Get deliveries for a webhook
         *
         * @since 2.2
         * @deprecated 3.3.0 Webhooks deliveries logs now uses logging system.
         * @param string $webhook_id webhook ID
         * @param string|null $fields fields to include in response
         * @return array|WP_Error
         */
        public function get_webhook_deliveries($webhook_id, $fields = \null)
        {
        }
        /**
         * Get the delivery log for the given webhook ID and delivery ID
         *
         * @since 2.2
         * @deprecated 3.3.0 Webhooks deliveries logs now uses logging system.
         * @param string $webhook_id webhook ID
         * @param string $id delivery log ID
         * @param string|null $fields fields to limit response to
         *
         * @return array|WP_Error
         */
        public function get_webhook_delivery($webhook_id, $id, $fields = \null)
        {
        }
        /**
         * Validate the request by checking:
         *
         * 1) the ID is a valid integer.
         * 2) the ID returns a valid post object and matches the provided post type.
         * 3) the current user has the proper permissions to read/edit/delete the post.
         *
         * @since 3.3.0
         * @param string|int $id The post ID
         * @param string $type The post type, either `shop_order`, `shop_coupon`, or `product`.
         * @param string $context The context of the request, either `read`, `edit` or `delete`.
         * @return int|WP_Error Valid post ID or WP_Error if any of the checks fails.
         */
        protected function validate_request($id, $type, $context)
        {
        }
    }
    class WC_API_JSON_Handler implements \WC_API_Handler
    {
        /**
         * Get the content type for the response
         *
         * @since 2.1
         * @return string
         */
        public function get_content_type()
        {
        }
        /**
         * Parse the raw request body entity
         *
         * @since 2.1
         * @param string $body the raw request body
         * @return array|mixed
         */
        public function parse_body($body)
        {
        }
        /**
         * Generate a JSON response given an array of data
         *
         * @since 2.1
         * @param array $data the response data
         * @return string
         */
        public function generate_response($data)
        {
        }
    }
    /**
     * Legacy Coupon.
     *
     * Legacy and deprecated functions are here to keep the WC_Legacy_Coupon class clean.
     * This class will be removed in future versions.
     *
     * @class       WC_Legacy_Coupon
     * @version     3.0.0
     * @package     WooCommerce/Classes
     * @category    Class
     * @author      WooThemes
     */
    abstract class WC_Legacy_Coupon extends \WC_Data
    {
        /**
         * Magic __isset method for backwards compatibility. Legacy properties which could be accessed directly in the past.
         * @param  string $key
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic __get method for backwards compatibility. Maps legacy vars to new getters.
         * @param  string $key
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Format loaded data as array.
         * @param  string|array $array
         * @return array
         */
        public function format_array($array)
        {
        }
        /**
         * Check if coupon needs applying before tax.
         *
         * @return bool
         */
        public function apply_before_tax()
        {
        }
        /**
         * Check if a coupon enables free shipping.
         *
         * @return bool
         */
        public function enable_free_shipping()
        {
        }
        /**
         * Check if a coupon excludes sale items.
         *
         * @return bool
         */
        public function exclude_sale_items()
        {
        }
        /**
         * Increase usage count for current coupon.
         *
         * @param string $used_by Either user ID or billing email
         */
        public function inc_usage_count($used_by = '')
        {
        }
        /**
         * Decrease usage count for current coupon.
         *
         * @param string $used_by Either user ID or billing email
         */
        public function dcr_usage_count($used_by = '')
        {
        }
    }
    /**
     * Legacy API.
     */
    class WC_Legacy_API
    {
        /**
         * This is the major version for the REST API and takes
         * first-order position in endpoint URLs.
         *
         * @deprecated 2.6.0
         * @var string
         */
        const VERSION = '3.1.0';
        /**
         * The REST API server.
         *
         * @deprecated 2.6.0
         * @var WC_API_Server
         */
        public $server;
        /**
         * REST API authentication class instance.
         *
         * @deprecated 2.6.0
         * @var WC_API_Authentication
         */
        public $authentication;
        /**
         * Init the legacy API.
         */
        public function init()
        {
        }
        /**
         * Add new query vars.
         *
         * @since 2.0
         * @param array $vars Vars.
         * @return string[]
         */
        public function add_query_vars($vars)
        {
        }
        /**
         * Add new endpoints.
         *
         * @since 2.0
         */
        public static function add_endpoint()
        {
        }
        /**
         * Handle REST API requests.
         *
         * @since 2.2
         * @deprecated 2.6.0
         */
        public function handle_rest_api_requests()
        {
        }
        /**
         * Include required files for REST API request.
         *
         * @since 2.1
         * @deprecated 2.6.0
         */
        public function includes()
        {
        }
        /**
         * Register available API resources.
         *
         * @since 2.1
         * @deprecated 2.6.0
         * @param WC_API_Server $server the REST server.
         */
        public function register_resources($server)
        {
        }
        /**
         * Handle legacy v1 REST API requests.
         *
         * @since 2.2
         * @deprecated 2.6.0
         */
        private function handle_v1_rest_api_request()
        {
        }
        /**
         * Handle legacy v2 REST API requests.
         *
         * @since 2.4
         * @deprecated 2.6.0
         */
        private function handle_v2_rest_api_request()
        {
        }
        /**
         * Rest API Init.
         *
         * @deprecated since 3.7.0 - REST API clases autoload.
         */
        public function rest_api_init()
        {
        }
        /**
         * Include REST API classes.
         *
         * @deprecated since 3.7.0 - REST API clases autoload.
         */
        public function rest_api_includes()
        {
        }
        /**
         * Register REST API routes.
         *
         * @deprecated since 3.7.0 - Not used.
         */
        public function register_rest_routes()
        {
        }
    }
    /**
     * WC_Cart class.
     */
    class WC_Cart extends \WC_Legacy_Cart
    {
        /**
         * Contains an array of cart items.
         *
         * @var array
         */
        public $cart_contents = array();
        /**
         * Contains an array of removed cart items so we can restore them if needed.
         *
         * @var array
         */
        public $removed_cart_contents = array();
        /**
         * Contains an array of coupon codes applied to the cart.
         *
         * @var array
         */
        public $applied_coupons = array();
        /**
         * Are prices in the cart displayed inc or excl tax?
         *
         * @var string
         */
        public $tax_display_cart = 'incl';
        /**
         * This stores the chosen shipping methods for the cart item packages.
         *
         * @var array
         */
        protected $shipping_methods;
        /**
         * Total defaults used to reset.
         *
         * @var array
         */
        protected $default_totals = array('subtotal' => 0, 'subtotal_tax' => 0, 'shipping_total' => 0, 'shipping_tax' => 0, 'shipping_taxes' => array(), 'discount_total' => 0, 'discount_tax' => 0, 'cart_contents_total' => 0, 'cart_contents_tax' => 0, 'cart_contents_taxes' => array(), 'fee_total' => 0, 'fee_tax' => 0, 'fee_taxes' => array(), 'total' => 0, 'total_tax' => 0);
        /**
         * Store calculated totals.
         *
         * @var array
         */
        protected $totals = array();
        /**
         * Reference to the cart session handling class.
         *
         * @var WC_Cart_Session
         */
        protected $session;
        /**
         * Reference to the cart fees API class.
         *
         * @var WC_Cart_Fees
         */
        protected $fees_api;
        /**
         * Constructor for the cart class. Loads options and hooks in the init method.
         */
        public function __construct()
        {
        }
        /**
         * When cloning, ensure object properties are handled.
         *
         * These properties store a reference to the cart, so we use new instead of clone.
         */
        public function __clone()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters.
        |--------------------------------------------------------------------------
        |
        | Methods to retrieve class properties and avoid direct access.
        */
        /**
         * Gets cart contents.
         *
         * @since 3.2.0
         * @return array of cart items
         */
        public function get_cart_contents()
        {
        }
        /**
         * Return items removed from the cart.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_removed_cart_contents()
        {
        }
        /**
         * Gets the array of applied coupon codes.
         *
         * @return array of applied coupons
         */
        public function get_applied_coupons()
        {
        }
        /**
         * Return all calculated coupon totals.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_coupon_discount_totals()
        {
        }
        /**
         * Return all calculated coupon tax totals.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_coupon_discount_tax_totals()
        {
        }
        /**
         * Return all calculated totals.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_totals()
        {
        }
        /**
         * Get a total.
         *
         * @since 3.2.0
         * @param string $key Key of element in $totals array.
         * @return mixed
         */
        protected function get_totals_var($key)
        {
        }
        /**
         * Get subtotal.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_subtotal()
        {
        }
        /**
         * Get subtotal.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_subtotal_tax()
        {
        }
        /**
         * Get discount_total.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_discount_total()
        {
        }
        /**
         * Get discount_tax.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_discount_tax()
        {
        }
        /**
         * Get shipping_total.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_shipping_total()
        {
        }
        /**
         * Get shipping_tax.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_shipping_tax()
        {
        }
        /**
         * Gets cart total. This is the total of items in the cart, but after discounts. Subtotal is before discounts.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_cart_contents_total()
        {
        }
        /**
         * Gets cart tax amount.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_cart_contents_tax()
        {
        }
        /**
         * Gets cart total after calculation.
         *
         * @since 3.2.0
         * @param string $context If the context is view, the value will be formatted for display. This keeps it compatible with pre-3.2 versions.
         * @return float
         */
        public function get_total($context = 'view')
        {
        }
        /**
         * Get total tax amount.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_total_tax()
        {
        }
        /**
         * Get total fee amount.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_fee_total()
        {
        }
        /**
         * Get total fee tax amount.
         *
         * @since 3.2.0
         * @return float
         */
        public function get_fee_tax()
        {
        }
        /**
         * Get taxes.
         *
         * @since 3.2.0
         */
        public function get_shipping_taxes()
        {
        }
        /**
         * Get taxes.
         *
         * @since 3.2.0
         */
        public function get_cart_contents_taxes()
        {
        }
        /**
         * Get taxes.
         *
         * @since 3.2.0
         */
        public function get_fee_taxes()
        {
        }
        /**
         * Return whether or not the cart is displaying prices including tax, rather than excluding tax.
         *
         * @since 3.3.0
         * @return bool
         */
        public function display_prices_including_tax()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters.
        |--------------------------------------------------------------------------
        |
        | Methods to set class properties and avoid direct access.
        */
        /**
         * Sets the contents of the cart.
         *
         * @param array $value Cart array.
         */
        public function set_cart_contents($value)
        {
        }
        /**
         * Set items removed from the cart.
         *
         * @since 3.2.0
         * @param array $value Item array.
         */
        public function set_removed_cart_contents($value = array())
        {
        }
        /**
         * Sets the array of applied coupon codes.
         *
         * @param array $value List of applied coupon codes.
         */
        public function set_applied_coupons($value = array())
        {
        }
        /**
         * Sets the array of calculated coupon totals.
         *
         * @since 3.2.0
         * @param array $value Value to set.
         */
        public function set_coupon_discount_totals($value = array())
        {
        }
        /**
         * Sets the array of calculated coupon tax totals.
         *
         * @since 3.2.0
         * @param array $value Value to set.
         */
        public function set_coupon_discount_tax_totals($value = array())
        {
        }
        /**
         * Set all calculated totals.
         *
         * @since 3.2.0
         * @param array $value Value to set.
         */
        public function set_totals($value = array())
        {
        }
        /**
         * Set subtotal.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_subtotal($value)
        {
        }
        /**
         * Set subtotal.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_subtotal_tax($value)
        {
        }
        /**
         * Set discount_total.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_discount_total($value)
        {
        }
        /**
         * Set discount_tax.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_discount_tax($value)
        {
        }
        /**
         * Set shipping_total.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_shipping_total($value)
        {
        }
        /**
         * Set shipping_tax.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_shipping_tax($value)
        {
        }
        /**
         * Set cart_contents_total.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_cart_contents_total($value)
        {
        }
        /**
         * Set cart tax amount.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_cart_contents_tax($value)
        {
        }
        /**
         * Set cart total.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_total($value)
        {
        }
        /**
         * Set total tax amount.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_total_tax($value)
        {
        }
        /**
         * Set fee amount.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_fee_total($value)
        {
        }
        /**
         * Set fee tax.
         *
         * @since 3.2.0
         * @param string $value Value to set.
         */
        public function set_fee_tax($value)
        {
        }
        /**
         * Set taxes.
         *
         * @since 3.2.0
         * @param array $value Tax values.
         */
        public function set_shipping_taxes($value)
        {
        }
        /**
         * Set taxes.
         *
         * @since 3.2.0
         * @param array $value Tax values.
         */
        public function set_cart_contents_taxes($value)
        {
        }
        /**
         * Set taxes.
         *
         * @since 3.2.0
         * @param array $value Tax values.
         */
        public function set_fee_taxes($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Helper methods.
        |--------------------------------------------------------------------------
        */
        /**
         * Returns the cart and shipping taxes, merged.
         *
         * @return array merged taxes
         */
        public function get_taxes()
        {
        }
        /**
         * Returns the contents of the cart in an array.
         *
         * @return array contents of the cart
         */
        public function get_cart()
        {
        }
        /**
         * Returns a specific item in the cart.
         *
         * @param string $item_key Cart item key.
         * @return array Item data
         */
        public function get_cart_item($item_key)
        {
        }
        /**
         * Checks if the cart is empty.
         *
         * @return bool
         */
        public function is_empty()
        {
        }
        /**
         * Empties the cart and optionally the persistent cart too.
         *
         * @param bool $clear_persistent_cart Should the persistant cart be cleared too. Defaults to true.
         */
        public function empty_cart($clear_persistent_cart = \true)
        {
        }
        /**
         * Get number of items in the cart.
         *
         * @return int
         */
        public function get_cart_contents_count()
        {
        }
        /**
         * Get weight of items in the cart.
         *
         * @since 2.5.0
         * @return int
         */
        public function get_cart_contents_weight()
        {
        }
        /**
         * Get cart items quantities - merged so we can do accurate stock checks on items across multiple lines.
         *
         * @return array
         */
        public function get_cart_item_quantities()
        {
        }
        /**
         * Check all cart items for errors.
         */
        public function check_cart_items()
        {
        }
        /**
         * Check cart coupons for errors.
         */
        public function check_cart_coupons()
        {
        }
        /**
         * Looks through cart items and checks the posts are not trashed or deleted.
         *
         * @return bool|WP_Error
         */
        public function check_cart_item_validity()
        {
        }
        /**
         * Looks through the cart to check each item is in stock. If not, add an error.
         *
         * @return bool|WP_Error
         */
        public function check_cart_item_stock()
        {
        }
        /**
         * Gets and formats a list of cart item data + variations for display on the frontend.
         *
         * @param array $cart_item Cart item object.
         * @param bool  $flat Should the data be returned flat or in a list.
         * @return string
         */
        public function get_item_data($cart_item, $flat = \false)
        {
        }
        /**
         * Gets cross sells based on the items in the cart.
         *
         * @return array cross_sells (item ids)
         */
        public function get_cross_sells()
        {
        }
        /**
         * Gets the url to remove an item from the cart.
         *
         * @param string $cart_item_key contains the id of the cart item.
         * @return string url to page
         */
        public function get_remove_url($cart_item_key)
        {
        }
        /**
         * Gets the url to re-add an item into the cart.
         *
         * @param  string $cart_item_key Cart item key to undo.
         * @return string url to page
         */
        public function get_undo_url($cart_item_key)
        {
        }
        /**
         * Get taxes, merged by code, formatted ready for output.
         *
         * @return array
         */
        public function get_tax_totals()
        {
        }
        /**
         * Get all tax classes for items in the cart.
         *
         * @return array
         */
        public function get_cart_item_tax_classes()
        {
        }
        /**
         * Get all tax classes for shipping based on the items in the cart.
         *
         * @return array
         */
        public function get_cart_item_tax_classes_for_shipping()
        {
        }
        /**
         * Determines the value that the customer spent and the subtotal
         * displayed, used for things like coupon validation.
         *
         * Since the coupon lines are displayed based on the TAX DISPLAY value
         * of cart, this is used to determine the spend.
         *
         * If cart totals are shown including tax, use the subtotal.
         * If cart totals are shown excluding tax, use the subtotal ex tax
         * (tax is shown after coupons).
         *
         * @since 2.6.0
         * @return string
         */
        public function get_displayed_subtotal()
        {
        }
        /**
         * Check if product is in the cart and return cart item key.
         *
         * Cart item key will be unique based on the item and its properties, such as variations.
         *
         * @param mixed $cart_id id of product to find in the cart.
         * @return string cart item key
         */
        public function find_product_in_cart($cart_id = \false)
        {
        }
        /**
         * Generate a unique ID for the cart item being added.
         *
         * @param int   $product_id - id of the product the key is being generated for.
         * @param int   $variation_id of the product the key is being generated for.
         * @param array $variation data for the cart item.
         * @param array $cart_item_data other cart item data passed which affects this items uniqueness in the cart.
         * @return string cart item key
         */
        public function generate_cart_id($product_id, $variation_id = 0, $variation = array(), $cart_item_data = array())
        {
        }
        /**
         * Add a product to the cart.
         *
         * @throws Exception Plugins can throw an exception to prevent adding to cart.
         * @param int   $product_id contains the id of the product to add to the cart.
         * @param int   $quantity contains the quantity of the item to add.
         * @param int   $variation_id ID of the variation being added to the cart.
         * @param array $variation attribute values.
         * @param array $cart_item_data extra cart item data we want to pass into the item.
         * @return string|bool $cart_item_key
         */
        public function add_to_cart($product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array())
        {
        }
        /**
         * Remove a cart item.
         *
         * @since  2.3.0
         * @param  string $cart_item_key Cart item key to remove from the cart.
         * @return bool
         */
        public function remove_cart_item($cart_item_key)
        {
        }
        /**
         * Restore a cart item.
         *
         * @param  string $cart_item_key Cart item key to restore to the cart.
         * @return bool
         */
        public function restore_cart_item($cart_item_key)
        {
        }
        /**
         * Set the quantity for an item in the cart using it's key.
         *
         * @param string $cart_item_key contains the id of the cart item.
         * @param int    $quantity contains the quantity of the item.
         * @param bool   $refresh_totals whether or not to calculate totals after setting the new qty. Can be used to defer calculations if setting quantities in bulk.
         * @return bool
         */
        public function set_quantity($cart_item_key, $quantity = 1, $refresh_totals = \true)
        {
        }
        /**
         * Get cart's owner.
         *
         * @since  3.2.0
         * @return WC_Customer
         */
        public function get_customer()
        {
        }
        /**
         * Calculate totals for the items in the cart.
         *
         * @uses WC_Cart_Totals
         */
        public function calculate_totals()
        {
        }
        /**
         * Looks at the totals to see if payment is actually required.
         *
         * @return bool
         */
        public function needs_payment()
        {
        }
        /*
         * Shipping related functions.
         */
        /**
         * Uses the shipping class to calculate shipping then gets the totals when its finished.
         */
        public function calculate_shipping()
        {
        }
        /**
         * Given a set of packages with rates, get the chosen ones only.
         *
         * @since 3.2.0
         * @param array $calculated_shipping_packages Array of packages.
         * @return array
         */
        protected function get_chosen_shipping_methods($calculated_shipping_packages = array())
        {
        }
        /**
         * Filter items needing shipping callback.
         *
         * @since  3.0.0
         * @param  array $item Item to check for shipping.
         * @return bool
         */
        protected function filter_items_needing_shipping($item)
        {
        }
        /**
         * Get only items that need shipping.
         *
         * @since  3.0.0
         * @return array
         */
        protected function get_items_needing_shipping()
        {
        }
        /**
         * Get packages to calculate shipping for.
         *
         * This lets us calculate costs for carts that are shipped to multiple locations.
         *
         * Shipping methods are responsible for looping through these packages.
         *
         * By default we pass the cart itself as a package - plugins can change this.
         * through the filter and break it up.
         *
         * @since 1.5.4
         * @return array of cart items
         */
        public function get_shipping_packages()
        {
        }
        /**
         * Looks through the cart to see if shipping is actually required.
         *
         * @return bool whether or not the cart needs shipping
         */
        public function needs_shipping()
        {
        }
        /**
         * Should the shipping address form be shown.
         *
         * @return bool
         */
        public function needs_shipping_address()
        {
        }
        /**
         * Sees if the customer has entered enough data to calc the shipping yet.
         *
         * @return bool
         */
        public function show_shipping()
        {
        }
        /**
         * Gets the shipping total (after calculation).
         *
         * @return string price or string for the shipping total
         */
        public function get_cart_shipping_total()
        {
        }
        /**
         * Check for user coupons (now that we have billing email). If a coupon is invalid, add an error.
         *
         * Checks two types of coupons:
         *  1. Where a list of customer emails are set (limits coupon usage to those defined).
         *  2. Where a usage_limit_per_user is set (limits coupon usage to a number based on user ID and email).
         *
         * @param array $posted Post data.
         */
        public function check_customer_coupons($posted)
        {
        }
        /**
         * Checks if the given email address(es) matches the ones specified on the coupon.
         *
         * @param array $check_emails Array of customer email addresses.
         * @param array $restrictions Array of allowed email addresses.
         * @return bool
         */
        public function is_coupon_emails_allowed($check_emails, $restrictions)
        {
        }
        /**
         * Returns whether or not a discount has been applied.
         *
         * @param string $coupon_code Coupon code to check.
         * @return bool
         */
        public function has_discount($coupon_code = '')
        {
        }
        /**
         * Applies a coupon code passed to the method.
         *
         * @param string $coupon_code - The code to apply.
         * @return bool True if the coupon is applied, false if it does not exist or cannot be applied.
         */
        public function apply_coupon($coupon_code)
        {
        }
        /**
         * Get array of applied coupon objects and codes.
         *
         * @param null $deprecated No longer used.
         * @return array of applied coupons
         */
        public function get_coupons($deprecated = \null)
        {
        }
        /**
         * Get the discount amount for a used coupon.
         *
         * @param  string $code coupon code.
         * @param  bool   $ex_tax inc or ex tax.
         * @return float discount amount
         */
        public function get_coupon_discount_amount($code, $ex_tax = \true)
        {
        }
        /**
         * Get the discount tax amount for a used coupon (for tax inclusive prices).
         *
         * @param  string $code coupon code.
         * @return float discount amount
         */
        public function get_coupon_discount_tax_amount($code)
        {
        }
        /**
         * Remove coupons from the cart of a defined type. Type 1 is before tax, type 2 is after tax.
         *
         * @param null $deprecated No longer used.
         */
        public function remove_coupons($deprecated = \null)
        {
        }
        /**
         * Remove a single coupon by code.
         *
         * @param  string $coupon_code Code of the coupon to remove.
         * @return bool
         */
        public function remove_coupon($coupon_code)
        {
        }
        /**
         * Trigger an action so 3rd parties can add custom fees.
         *
         * @since 2.0.0
         */
        public function calculate_fees()
        {
        }
        /**
         * Return reference to fees API.
         *
         * @since  3.2.0
         * @return WC_Cart_Fees
         */
        public function fees_api()
        {
        }
        /**
         * Add additional fee to the cart.
         *
         * This method should be called on a callback attached to the
         * woocommerce_cart_calculate_fees action during cart/checkout. Fees do not
         * persist.
         *
         * @uses WC_Cart_Fees::add_fee
         * @param string $name      Unique name for the fee. Multiple fees of the same name cannot be added.
         * @param float  $amount    Fee amount (do not enter negative amounts).
         * @param bool   $taxable   Is the fee taxable? (default: false).
         * @param string $tax_class The tax class for the fee if taxable. A blank string is standard tax class. (default: '').
         */
        public function add_fee($name, $amount, $taxable = \false, $tax_class = '')
        {
        }
        /**
         * Return all added fees from the Fees API.
         *
         * @uses WC_Cart_Fees::get_fees
         * @return array
         */
        public function get_fees()
        {
        }
        /**
         * Gets the total excluding taxes.
         *
         * @return string formatted price
         */
        public function get_total_ex_tax()
        {
        }
        /**
         * Gets the cart contents total (after calculation).
         *
         * @return string formatted price
         */
        public function get_cart_total()
        {
        }
        /**
         * Gets the sub total (after calculation).
         *
         * @param bool $compound whether to include compound taxes.
         * @return string formatted price
         */
        public function get_cart_subtotal($compound = \false)
        {
        }
        /**
         * Get the product row price per item.
         *
         * @param WC_Product $product Product object.
         * @return string formatted price
         */
        public function get_product_price($product)
        {
        }
        /**
         * Get the product row subtotal.
         *
         * Gets the tax etc to avoid rounding issues.
         *
         * When on the checkout (review order), this will get the subtotal based on the customer's tax rate rather than the base rate.
         *
         * @param WC_Product $product Product object.
         * @param int        $quantity Quantity being purchased.
         * @return string formatted price
         */
        public function get_product_subtotal($product, $quantity)
        {
        }
        /**
         * Gets the cart tax (after calculation).
         *
         * @return string formatted price
         */
        public function get_cart_tax()
        {
        }
        /**
         * Get a tax amount.
         *
         * @param  string $tax_rate_id ID of the tax rate to get taxes for.
         * @return float amount
         */
        public function get_tax_amount($tax_rate_id)
        {
        }
        /**
         * Get a tax amount.
         *
         * @param  string $tax_rate_id ID of the tax rate to get taxes for.
         * @return float amount
         */
        public function get_shipping_tax_amount($tax_rate_id)
        {
        }
        /**
         * Get tax row amounts with or without compound taxes includes.
         *
         * @param  bool $compound True if getting compound taxes.
         * @param  bool $display  True if getting total to display.
         * @return float price
         */
        public function get_taxes_total($compound = \true, $display = \true)
        {
        }
        /**
         * Gets the total discount amount.
         *
         * @return mixed formatted price or false if there are none
         */
        public function get_total_discount()
        {
        }
        /**
         * Reset cart totals to the defaults. Useful before running calculations.
         */
        private function reset_totals()
        {
        }
        /**
         * Returns 'incl' if tax should be included in cart, otherwise returns 'excl'.
         *
         * @return string
         */
        private function is_tax_displayed()
        {
        }
        /**
         * Returns the hash based on cart contents.
         *
         * @since 3.6.0
         * @return string hash for cart content
         */
        public function get_cart_hash()
        {
        }
    }
    /**
     * Bank Transfer Payment Gateway.
     *
     * Provides a Bank Transfer Payment Gateway. Based on code by Mike Pepper.
     *
     * @class       WC_Gateway_BACS
     * @extends     WC_Payment_Gateway
     * @version     2.1.0
     * @package     WooCommerce/Classes/Payment
     */
    class WC_Gateway_BACS extends \WC_Payment_Gateway
    {
        /**
         * Array of locales
         *
         * @var array
         */
        public $locale;
        /**
         * Constructor for the gateway.
         */
        public function __construct()
        {
        }
        /**
         * Initialise Gateway Settings Form Fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Generate account details html.
         *
         * @return string
         */
        public function generate_account_details_html()
        {
        }
        /**
         * Save account details table.
         */
        public function save_account_details()
        {
        }
        /**
         * Output for the order received page.
         *
         * @param int $order_id Order ID.
         */
        public function thankyou_page($order_id)
        {
        }
        /**
         * Add content to the WC emails.
         *
         * @param WC_Order $order Order object.
         * @param bool     $sent_to_admin Sent to admin.
         * @param bool     $plain_text Email format: plain text or HTML.
         */
        public function email_instructions($order, $sent_to_admin, $plain_text = \false)
        {
        }
        /**
         * Get bank details and place into a list format.
         *
         * @param int $order_id Order ID.
         */
        private function bank_details($order_id = '')
        {
        }
        /**
         * Process the payment and return the result.
         *
         * @param int $order_id Order ID.
         * @return array
         */
        public function process_payment($order_id)
        {
        }
        /**
         * Get country locale if localized.
         *
         * @return array
         */
        public function get_country_locale()
        {
        }
    }
    /**
     * Cheque Payment Gateway.
     *
     * Provides a Cheque Payment Gateway, mainly for testing purposes.
     *
     * @class       WC_Gateway_Cheque
     * @extends     WC_Payment_Gateway
     * @version     2.1.0
     * @package     WooCommerce/Classes/Payment
     */
    class WC_Gateway_Cheque extends \WC_Payment_Gateway
    {
        /**
         * Constructor for the gateway.
         */
        public function __construct()
        {
        }
        /**
         * Initialise Gateway Settings Form Fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Output for the order received page.
         */
        public function thankyou_page()
        {
        }
        /**
         * Add content to the WC emails.
         *
         * @access public
         * @param WC_Order $order Order object.
         * @param bool     $sent_to_admin Sent to admin.
         * @param bool     $plain_text Email format: plain text or HTML.
         */
        public function email_instructions($order, $sent_to_admin, $plain_text = \false)
        {
        }
        /**
         * Process the payment and return the result.
         *
         * @param int $order_id Order ID.
         * @return array
         */
        public function process_payment($order_id)
        {
        }
    }
    /**
     * Cash on Delivery Gateway.
     *
     * Provides a Cash on Delivery Payment Gateway.
     *
     * @class       WC_Gateway_COD
     * @extends     WC_Payment_Gateway
     * @version     2.1.0
     * @package     WooCommerce/Classes/Payment
     */
    class WC_Gateway_COD extends \WC_Payment_Gateway
    {
        /**
         * Constructor for the gateway.
         */
        public function __construct()
        {
        }
        /**
         * Setup general properties for the gateway.
         */
        protected function setup_properties()
        {
        }
        /**
         * Initialise Gateway Settings Form Fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Check If The Gateway Is Available For Use.
         *
         * @return bool
         */
        public function is_available()
        {
        }
        /**
         * Converts the chosen rate IDs generated by Shipping Methods to a canonical 'method_id:instance_id' format.
         *
         * @since  3.4.0
         *
         * @param  array $order_shipping_items  Array of WC_Order_Item_Shipping objects.
         * @return array $canonical_rate_ids    Rate IDs in a canonical format.
         */
        private function get_canonical_order_shipping_item_rate_ids($order_shipping_items)
        {
        }
        /**
         * Converts the chosen rate IDs generated by Shipping Methods to a canonical 'method_id:instance_id' format.
         *
         * @since  3.4.0
         *
         * @param  array $chosen_package_rate_ids Rate IDs as generated by shipping methods. Can be anything if a shipping method doesn't honor WC conventions.
         * @return array $canonical_rate_ids  Rate IDs in a canonical format.
         */
        private function get_canonical_package_rate_ids($chosen_package_rate_ids)
        {
        }
        /**
         * Indicates whether a rate exists in an array of canonically-formatted rate IDs that activates this gateway.
         *
         * @since  3.4.0
         *
         * @param array $rate_ids Rate ids to check.
         * @return boolean
         */
        private function get_matching_rates($rate_ids)
        {
        }
        /**
         * Process the payment and return the result.
         *
         * @param int $order_id Order ID.
         * @return array
         */
        public function process_payment($order_id)
        {
        }
        /**
         * Output for the order received page.
         */
        public function thankyou_page()
        {
        }
        /**
         * Change payment complete order status to completed for COD orders.
         *
         * @since  3.1.0
         * @param  string         $status Current order status.
         * @param  int            $order_id Order ID.
         * @param  WC_Order|false $order Order object.
         * @return string
         */
        public function change_payment_complete_order_status($status, $order_id = 0, $order = \false)
        {
        }
        /**
         * Add content to the WC emails.
         *
         * @access public
         * @param WC_Order $order Order object.
         * @param bool     $sent_to_admin  Sent to admin.
         * @param bool     $plain_text Email format: plain text or HTML.
         */
        public function email_instructions($order, $sent_to_admin, $plain_text = \false)
        {
        }
    }
    /**
     * Credit Card Payment Gateway
     *
     * @since       2.6.0
     * @package     WooCommerce/Classes
     */
    class WC_Payment_Gateway_CC extends \WC_Payment_Gateway
    {
        /**
         * Builds our payment fields area - including tokenization fields for logged
         * in users, and the actual payment fields.
         *
         * @since 2.6.0
         */
        public function payment_fields()
        {
        }
        /**
         * Output field name HTML
         *
         * Gateways which support tokenization do not require names - we don't want the data to post to the server.
         *
         * @since  2.6.0
         * @param  string $name Field name.
         * @return string
         */
        public function field_name($name)
        {
        }
        /**
         * Outputs fields for entering credit card information.
         *
         * @since 2.6.0
         */
        public function form()
        {
        }
    }
    /**
     * Class for eCheck Payment Gateway
     *
     * @since       2.6.0
     * @package     WooCommerce/Classes
     */
    class WC_Payment_Gateway_ECheck extends \WC_Payment_Gateway
    {
        /**
         * Builds our payment fields area - including tokenization fields for logged
         * in users, and the actual payment fields.
         *
         * @since 2.6.0
         */
        public function payment_fields()
        {
        }
        /**
         * Outputs fields for entering eCheck information.
         *
         * @since 2.6.0
         */
        public function form()
        {
        }
    }
    /**
     * Handles Refunds and other API requests such as capture.
     *
     * @since 3.0.0
     */
    class WC_Gateway_Paypal_API_Handler
    {
        /**
         * API Username
         *
         * @var string
         */
        public static $api_username;
        /**
         * API Password
         *
         * @var string
         */
        public static $api_password;
        /**
         * API Signature
         *
         * @var string
         */
        public static $api_signature;
        /**
         * Sandbox
         *
         * @var bool
         */
        public static $sandbox = \false;
        /**
         * Get capture request args.
         * See https://developer.paypal.com/docs/classic/api/merchant/DoCapture_API_Operation_NVP/.
         *
         * @param  WC_Order $order Order object.
         * @param  float    $amount Amount.
         * @return array
         */
        public static function get_capture_request($order, $amount = \null)
        {
        }
        /**
         * Get refund request args.
         *
         * @param  WC_Order $order Order object.
         * @param  float    $amount Refund amount.
         * @param  string   $reason Refund reason.
         * @return array
         */
        public static function get_refund_request($order, $amount = \null, $reason = '')
        {
        }
        /**
         * Capture an authorization.
         *
         * @param  WC_Order $order Order object.
         * @param  float    $amount Amount.
         * @return object Either an object of name value pairs for a success, or a WP_ERROR object.
         */
        public static function do_capture($order, $amount = \null)
        {
        }
        /**
         * Refund an order via PayPal.
         *
         * @param  WC_Order $order Order object.
         * @param  float    $amount Refund amount.
         * @param  string   $reason Refund reason.
         * @return object Either an object of name value pairs for a success, or a WP_ERROR object.
         */
        public static function refund_transaction($order, $amount = \null, $reason = '')
        {
        }
    }
    /**
     * Here for backwards compatibility.
     *
     * @since 3.0.0
     */
    class WC_Gateway_Paypal_Refund extends \WC_Gateway_Paypal_API_Handler
    {
        /**
         * Get refund request args. Proxy to WC_Gateway_Paypal_API_Handler::get_refund_request().
         *
         * @param WC_Order $order Order object.
         * @param float    $amount Refund amount.
         * @param string   $reason Refund reason.
         *
         * @return array
         */
        public static function get_request($order, $amount = \null, $reason = '')
        {
        }
        /**
         * Process an order refund.
         *
         * @param  WC_Order $order Order object.
         * @param  float    $amount Refund amount.
         * @param  string   $reason Refund reason.
         * @param  bool     $sandbox Whether to use sandbox mode or not.
         * @return object Either an object of name value pairs for a success, or a WP_ERROR object.
         */
        public static function refund_order($order, $amount = \null, $reason = '', $sandbox = \false)
        {
        }
    }
    /**
     * Handles Responses.
     */
    abstract class WC_Gateway_Paypal_Response
    {
        /**
         * Sandbox mode
         *
         * @var bool
         */
        protected $sandbox = \false;
        /**
         * Get the order from the PayPal 'Custom' variable.
         *
         * @param  string $raw_custom JSON Data passed back by PayPal.
         * @return bool|WC_Order object
         */
        protected function get_paypal_order($raw_custom)
        {
        }
        /**
         * Complete order, add transaction ID and note.
         *
         * @param  WC_Order $order Order object.
         * @param  string   $txn_id Transaction ID.
         * @param  string   $note Payment note.
         */
        protected function payment_complete($order, $txn_id = '', $note = '')
        {
        }
        /**
         * Hold order and add note.
         *
         * @param  WC_Order $order Order object.
         * @param  string   $reason Reason why the payment is on hold.
         */
        protected function payment_on_hold($order, $reason = '')
        {
        }
    }
    /**
     * Handle PDT Responses from PayPal.
     */
    class WC_Gateway_Paypal_PDT_Handler extends \WC_Gateway_Paypal_Response
    {
        /**
         * Identity token for PDT support
         *
         * @var string
         */
        protected $identity_token;
        /**
         * Constructor.
         *
         * @param bool   $sandbox Whether to use sandbox mode or not.
         * @param string $identity_token Identity token for PDT support.
         */
        public function __construct($sandbox = \false, $identity_token = '')
        {
        }
        /**
         * Validate a PDT transaction to ensure its authentic.
         *
         * @param  string $transaction TX ID.
         * @return bool|array False or result array if successful and valid.
         */
        protected function validate_transaction($transaction)
        {
        }
        /**
         * Check Response for PDT.
         */
        public function check_response()
        {
        }
    }
    /**
     * WC_Gateway_Paypal_IPN_Handler class.
     */
    class WC_Gateway_Paypal_IPN_Handler extends \WC_Gateway_Paypal_Response
    {
        /**
         * Receiver email address to validate.
         *
         * @var string Receiver email address.
         */
        protected $receiver_email;
        /**
         * Constructor.
         *
         * @param bool   $sandbox Use sandbox or not.
         * @param string $receiver_email Email to receive IPN from.
         */
        public function __construct($sandbox = \false, $receiver_email = '')
        {
        }
        /**
         * Check for PayPal IPN Response.
         */
        public function check_response()
        {
        }
        /**
         * There was a valid response.
         *
         * @param  array $posted Post data after wp_unslash.
         */
        public function valid_response($posted)
        {
        }
        /**
         * Check PayPal IPN validity.
         */
        public function validate_ipn()
        {
        }
        /**
         * Check for a valid transaction type.
         *
         * @param string $txn_type Transaction type.
         */
        protected function validate_transaction_type($txn_type)
        {
        }
        /**
         * Check currency from IPN matches the order.
         *
         * @param WC_Order $order    Order object.
         * @param string   $currency Currency code.
         */
        protected function validate_currency($order, $currency)
        {
        }
        /**
         * Check payment amount from IPN matches the order.
         *
         * @param WC_Order $order  Order object.
         * @param int      $amount Amount to validate.
         */
        protected function validate_amount($order, $amount)
        {
        }
        /**
         * Check receiver email from PayPal. If the receiver email in the IPN is different than what is stored in.
         * WooCommerce -> Settings -> Checkout -> PayPal, it will log an error about it.
         *
         * @param WC_Order $order          Order object.
         * @param string   $receiver_email Email to validate.
         */
        protected function validate_receiver_email($order, $receiver_email)
        {
        }
        /**
         * Handle a completed payment.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_completed($order, $posted)
        {
        }
        /**
         * Handle a pending payment.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_pending($order, $posted)
        {
        }
        /**
         * Handle a failed payment.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_failed($order, $posted)
        {
        }
        /**
         * Handle a denied payment.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_denied($order, $posted)
        {
        }
        /**
         * Handle an expired payment.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_expired($order, $posted)
        {
        }
        /**
         * Handle a voided payment.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_voided($order, $posted)
        {
        }
        /**
         * When a user cancelled order is marked paid.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_paid_cancelled_order($order, $posted)
        {
        }
        /**
         * Handle a refunded order.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_refunded($order, $posted)
        {
        }
        /**
         * Handle a reversal.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_reversed($order, $posted)
        {
        }
        /**
         * Handle a cancelled reversal.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function payment_status_canceled_reversal($order, $posted)
        {
        }
        /**
         * Save important data from the IPN to the order.
         *
         * @param WC_Order $order  Order object.
         * @param array    $posted Posted data.
         */
        protected function save_paypal_meta_data($order, $posted)
        {
        }
        /**
         * Send a notification to the user handling orders.
         *
         * @param string $subject Email subject.
         * @param string $message Email message.
         */
        protected function send_ipn_email_notification($subject, $message)
        {
        }
    }
    /**
     * Generates requests to send to PayPal.
     */
    class WC_Gateway_Paypal_Request
    {
        /**
         * Stores line items to send to PayPal.
         *
         * @var array
         */
        protected $line_items = array();
        /**
         * Pointer to gateway making the request.
         *
         * @var WC_Gateway_Paypal
         */
        protected $gateway;
        /**
         * Endpoint for requests from PayPal.
         *
         * @var string
         */
        protected $notify_url;
        /**
         * Endpoint for requests to PayPal.
         *
         * @var string
         */
        protected $endpoint;
        /**
         * Constructor.
         *
         * @param WC_Gateway_Paypal $gateway Paypal gateway object.
         */
        public function __construct($gateway)
        {
        }
        /**
         * Get the PayPal request URL for an order.
         *
         * @param  WC_Order $order Order object.
         * @param  bool     $sandbox Whether to use sandbox mode or not.
         * @return string
         */
        public function get_request_url($order, $sandbox = \false)
        {
        }
        /**
         * Limit length of an arg.
         *
         * @param  string  $string Argument to limit.
         * @param  integer $limit Limit size in characters.
         * @return string
         */
        protected function limit_length($string, $limit = 127)
        {
        }
        /**
         * Get transaction args for paypal request, except for line item args.
         *
         * @param WC_Order $order Order object.
         * @return array
         */
        protected function get_transaction_args($order)
        {
        }
        /**
         * If the default request with line items is too long, generate a new one with only one line item.
         *
         * If URL is longer than 2,083 chars, ignore line items and send cart to Paypal as a single item.
         * One item's name can only be 127 characters long, so the URL should not be longer than limit.
         * URL character limit via:
         * https://support.microsoft.com/en-us/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer.
         *
         * @param WC_Order $order Order to be sent to Paypal.
         * @param array    $paypal_args Arguments sent to Paypal in the request.
         * @return array
         */
        protected function fix_request_length($order, $paypal_args)
        {
        }
        /**
         * Get PayPal Args for passing to PP.
         *
         * @param  WC_Order $order Order object.
         * @return array
         */
        protected function get_paypal_args($order)
        {
        }
        /**
         * Get phone number args for paypal request.
         *
         * @param  WC_Order $order Order object.
         * @return array
         */
        protected function get_phone_number_args($order)
        {
        }
        /**
         * Get shipping args for paypal request.
         *
         * @param  WC_Order $order Order object.
         * @return array
         */
        protected function get_shipping_args($order)
        {
        }
        /**
         * Get shipping cost line item args for paypal request.
         *
         * @param  WC_Order $order Order object.
         * @param  bool     $force_one_line_item Whether one line item was forced by validation or URL length.
         * @return array
         */
        protected function get_shipping_cost_line_item($order, $force_one_line_item)
        {
        }
        /**
         * Get line item args for paypal request as a single line item.
         *
         * @param  WC_Order $order Order object.
         * @return array
         */
        protected function get_line_item_args_single_item($order)
        {
        }
        /**
         * Get line item args for paypal request.
         *
         * @param  WC_Order $order Order object.
         * @param  bool     $force_one_line_item Create only one item for this order.
         * @return array
         */
        protected function get_line_item_args($order, $force_one_line_item = \false)
        {
        }
        /**
         * Get order item names as a string.
         *
         * @param  WC_Order $order Order object.
         * @return string
         */
        protected function get_order_item_names($order)
        {
        }
        /**
         * Get order item names as a string.
         *
         * @param  WC_Order      $order Order object.
         * @param  WC_Order_Item $item Order item object.
         * @return string
         */
        protected function get_order_item_name($order, $item)
        {
        }
        /**
         * Return all line items.
         */
        protected function get_line_items()
        {
        }
        /**
         * Remove all line items.
         */
        protected function delete_line_items()
        {
        }
        /**
         * Check if the order has valid line items to use for PayPal request.
         *
         * The line items are invalid in case of mismatch in totals or if any amount < 0.
         *
         * @param WC_Order $order Order to be examined.
         * @return bool
         */
        protected function line_items_valid($order)
        {
        }
        /**
         * Get line items to send to paypal.
         *
         * @param  WC_Order $order Order object.
         */
        protected function prepare_line_items($order)
        {
        }
        /**
         * Add PayPal Line Item.
         *
         * @param  string $item_name Item name.
         * @param  int    $quantity Item quantity.
         * @param  float  $amount Amount.
         * @param  string $item_number Item number.
         */
        protected function add_line_item($item_name, $quantity = 1, $amount = 0.0, $item_number = '')
        {
        }
        /**
         * Get the state to send to paypal.
         *
         * @param  string $cc Country two letter code.
         * @param  string $state State code.
         * @return string
         */
        protected function get_paypal_state($cc, $state)
        {
        }
        /**
         * Check if currency has decimals.
         *
         * @param  string $currency Currency to check.
         * @return bool
         */
        protected function currency_has_decimals($currency)
        {
        }
        /**
         * Round prices.
         *
         * @param  double   $price Price to round.
         * @param  WC_Order $order Order object.
         * @return double
         */
        protected function round($price, $order)
        {
        }
        /**
         * Format prices.
         *
         * @param  float|int $price Price to format.
         * @param  WC_Order  $order Order object.
         * @return string
         */
        protected function number_format($price, $order)
        {
        }
    }
    /**
     * WC_Gateway_Paypal Class.
     */
    class WC_Gateway_Paypal extends \WC_Payment_Gateway
    {
        /**
         * Whether or not logging is enabled
         *
         * @var bool
         */
        public static $log_enabled = \false;
        /**
         * Logger instance
         *
         * @var WC_Logger
         */
        public static $log = \false;
        /**
         * Constructor for the gateway.
         */
        public function __construct()
        {
        }
        /**
         * Return whether or not this gateway still requires setup to function.
         *
         * When this gateway is toggled on via AJAX, if this returns true a
         * redirect will occur to the settings page instead.
         *
         * @since 3.4.0
         * @return bool
         */
        public function needs_setup()
        {
        }
        /**
         * Logging method.
         *
         * @param string $message Log message.
         * @param string $level Optional. Default 'info'. Possible values:
         *                      emergency|alert|critical|error|warning|notice|info|debug.
         */
        public static function log($message, $level = 'info')
        {
        }
        /**
         * Processes and saves options.
         * If there is an error thrown, will continue to save and validate fields, but will leave the erroring field out.
         *
         * @return bool was anything saved?
         */
        public function process_admin_options()
        {
        }
        /**
         * Get gateway icon.
         *
         * @return string
         */
        public function get_icon()
        {
        }
        /**
         * Get the link for an icon based on country.
         *
         * @param  string $country Country two letter code.
         * @return string
         */
        protected function get_icon_url($country)
        {
        }
        /**
         * Get PayPal images for a country.
         *
         * @param string $country Country code.
         * @return array of image URLs
         */
        protected function get_icon_image($country)
        {
        }
        /**
         * Check if this gateway is enabled and available in the user's country.
         *
         * @return bool
         */
        public function is_valid_for_use()
        {
        }
        /**
         * Admin Panel Options.
         * - Options for bits like 'title' and availability on a country-by-country basis.
         *
         * @since 1.0.0
         */
        public function admin_options()
        {
        }
        /**
         * Initialise Gateway Settings Form Fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Get the transaction URL.
         *
         * @param  WC_Order $order Order object.
         * @return string
         */
        public function get_transaction_url($order)
        {
        }
        /**
         * Process the payment and return the result.
         *
         * @param  int $order_id Order ID.
         * @return array
         */
        public function process_payment($order_id)
        {
        }
        /**
         * Can the order be refunded via PayPal?
         *
         * @param  WC_Order $order Order object.
         * @return bool
         */
        public function can_refund_order($order)
        {
        }
        /**
         * Init the API class and set the username/password etc.
         */
        protected function init_api()
        {
        }
        /**
         * Process a refund if supported.
         *
         * @param  int    $order_id Order ID.
         * @param  float  $amount Refund amount.
         * @param  string $reason Refund reason.
         * @return bool|WP_Error
         */
        public function process_refund($order_id, $amount = \null, $reason = '')
        {
        }
        /**
         * Capture payment when the order is changed from on-hold to complete or processing
         *
         * @param  int $order_id Order ID.
         */
        public function capture_payment($order_id)
        {
        }
        /**
         * Load admin scripts.
         *
         * @since 3.3.0
         */
        public function admin_scripts()
        {
        }
    }
    /**
     * WooCommerce Tracker Class
     */
    class WC_Tracker
    {
        /**
         * URL to the WooThemes Tracker API endpoint.
         *
         * @var string
         */
        private static $api_url = 'https://tracking.woocommerce.com/v1/';
        /**
         * Hook into cron event.
         */
        public static function init()
        {
        }
        /**
         * Decide whether to send tracking data or not.
         *
         * @param boolean $override Should override?.
         */
        public static function send_tracking_data($override = \false)
        {
        }
        /**
         * Get the last time tracking data was sent.
         *
         * @return int|bool
         */
        private static function get_last_send_time()
        {
        }
        /**
         * Get all the tracking data.
         *
         * @return array
         */
        private static function get_tracking_data()
        {
        }
        /**
         * Get the current theme info, theme name and version.
         *
         * @return array
         */
        public static function get_theme_info()
        {
        }
        /**
         * Get WordPress related data.
         *
         * @return array
         */
        private static function get_wordpress_info()
        {
        }
        /**
         * Get server related info.
         *
         * @return array
         */
        private static function get_server_info()
        {
        }
        /**
         * Get all plugins grouped into activated or not.
         *
         * @return array
         */
        private static function get_all_plugins()
        {
        }
        /**
         * Check to see if the helper is connected to woocommerce.com
         *
         * @return string
         */
        private static function get_helper_connected()
        {
        }
        /**
         * Get user totals based on user role.
         *
         * @return array
         */
        private static function get_user_counts()
        {
        }
        /**
         * Get product totals based on product type.
         *
         * @return array
         */
        public static function get_product_counts()
        {
        }
        /**
         * Get order counts
         *
         * @return array
         */
        private static function get_order_counts()
        {
        }
        /**
         * Combine all order data.
         *
         * @return array
         */
        private static function get_orders()
        {
        }
        /**
         * Get review counts for different statuses.
         *
         * @return array
         */
        private static function get_review_counts()
        {
        }
        /**
         * Get the number of product categories.
         *
         * @return int
         */
        private static function get_category_counts()
        {
        }
        /**
         * Get a list of all active payment gateways.
         *
         * @return array
         */
        private static function get_active_payment_gateways()
        {
        }
        /**
         * Get a list of all active shipping methods.
         *
         * @return array
         */
        private static function get_active_shipping_methods()
        {
        }
        /**
         * Get all options starting with woocommerce_ prefix.
         *
         * @return array
         */
        private static function get_all_woocommerce_options_values()
        {
        }
        /**
         * Look for any template override and return filenames.
         *
         * @return array
         */
        private static function get_all_template_overrides()
        {
        }
        /**
         * When an admin user logs in, there user agent is tracked in user meta and collected here.
         *
         * @return array
         */
        private static function get_admin_user_agents()
        {
        }
        /**
         * Get order totals
         *
         * @return array
         */
        public static function get_order_totals()
        {
        }
        /**
         * Get last order date
         *
         * @return string
         */
        private static function get_order_dates()
        {
        }
    }
    /**
     * WC_Privacy Class.
     */
    class WC_Privacy extends \WC_Abstract_Privacy
    {
        /**
         * Background process to clean up orders.
         *
         * @var WC_Privacy_Background_Process
         */
        protected static $background_process;
        /**
         * Init - hook into events.
         */
        public function __construct()
        {
        }
        /**
         * Add privacy policy content for the privacy policy page.
         *
         * @since 3.4.0
         */
        public function get_privacy_message()
        {
        }
        /**
         * Spawn events for order cleanup.
         */
        public function queue_cleanup_personal_data()
        {
        }
        /**
         * Handle some custom types of data and anonymize them.
         *
         * @param string $anonymous Anonymized string.
         * @param string $type Type of data.
         * @param string $data The data being anonymized.
         * @return string Anonymized string.
         */
        public function anonymize_custom_data_types($anonymous, $type, $data)
        {
        }
        /**
         * Find and trash old orders.
         *
         * @since 3.4.0
         * @param  int $limit Limit orders to process per batch.
         * @return int Number of orders processed.
         */
        public static function trash_pending_orders($limit = 20)
        {
        }
        /**
         * Find and trash old orders.
         *
         * @since 3.4.0
         * @param  int $limit Limit orders to process per batch.
         * @return int Number of orders processed.
         */
        public static function trash_failed_orders($limit = 20)
        {
        }
        /**
         * Find and trash old orders.
         *
         * @since 3.4.0
         * @param  int $limit Limit orders to process per batch.
         * @return int Number of orders processed.
         */
        public static function trash_cancelled_orders($limit = 20)
        {
        }
        /**
         * For a given query trash all matches.
         *
         * @since 3.4.0
         * @param array $query Query array to pass to wc_get_orders().
         * @return int Count of orders that were trashed.
         */
        protected static function trash_orders_query($query)
        {
        }
        /**
         * Anonymize old completed orders.
         *
         * @since 3.4.0
         * @param  int $limit Limit orders to process per batch.
         * @return int Number of orders processed.
         */
        public static function anonymize_completed_orders($limit = 20)
        {
        }
        /**
         * For a given query, anonymize all matches.
         *
         * @since 3.4.0
         * @param array $query Query array to pass to wc_get_orders().
         * @return int Count of orders that were anonymized.
         */
        protected static function anonymize_orders_query($query)
        {
        }
        /**
         * Delete inactive accounts.
         *
         * @since 3.4.0
         * @param  int $limit Limit users to process per batch.
         * @return int Number of users processed.
         */
        public static function delete_inactive_accounts($limit = 20)
        {
        }
        /**
         * Delete inactive accounts.
         *
         * @since 3.4.0
         * @param int $timestamp Timestamp to delete customers before.
         * @param int $limit     Limit number of users to delete per run.
         * @return int Count of customers that were deleted.
         */
        protected static function delete_inactive_accounts_query($timestamp, $limit = 20)
        {
        }
    }
    /**
     * WC_Install Class.
     */
    class WC_Install
    {
        /**
         * DB updates and callbacks that need to be run per version.
         *
         * @var array
         */
        private static $db_updates = array('2.0.0' => array('wc_update_200_file_paths', 'wc_update_200_permalinks', 'wc_update_200_subcat_display', 'wc_update_200_taxrates', 'wc_update_200_line_items', 'wc_update_200_images', 'wc_update_200_db_version'), '2.0.9' => array('wc_update_209_brazillian_state', 'wc_update_209_db_version'), '2.1.0' => array('wc_update_210_remove_pages', 'wc_update_210_file_paths', 'wc_update_210_db_version'), '2.2.0' => array('wc_update_220_shipping', 'wc_update_220_order_status', 'wc_update_220_variations', 'wc_update_220_attributes', 'wc_update_220_db_version'), '2.3.0' => array('wc_update_230_options', 'wc_update_230_db_version'), '2.4.0' => array('wc_update_240_options', 'wc_update_240_shipping_methods', 'wc_update_240_api_keys', 'wc_update_240_refunds', 'wc_update_240_db_version'), '2.4.1' => array('wc_update_241_variations', 'wc_update_241_db_version'), '2.5.0' => array('wc_update_250_currency', 'wc_update_250_db_version'), '2.6.0' => array('wc_update_260_options', 'wc_update_260_termmeta', 'wc_update_260_zones', 'wc_update_260_zone_methods', 'wc_update_260_refunds', 'wc_update_260_db_version'), '3.0.0' => array('wc_update_300_grouped_products', 'wc_update_300_settings', 'wc_update_300_product_visibility', 'wc_update_300_db_version'), '3.1.0' => array('wc_update_310_downloadable_products', 'wc_update_310_old_comments', 'wc_update_310_db_version'), '3.1.2' => array('wc_update_312_shop_manager_capabilities', 'wc_update_312_db_version'), '3.2.0' => array('wc_update_320_mexican_states', 'wc_update_320_db_version'), '3.3.0' => array('wc_update_330_image_options', 'wc_update_330_webhooks', 'wc_update_330_product_stock_status', 'wc_update_330_set_default_product_cat', 'wc_update_330_clear_transients', 'wc_update_330_set_paypal_sandbox_credentials', 'wc_update_330_db_version'), '3.4.0' => array('wc_update_340_states', 'wc_update_340_state', 'wc_update_340_last_active', 'wc_update_340_db_version'), '3.4.3' => array('wc_update_343_cleanup_foreign_keys', 'wc_update_343_db_version'), '3.4.4' => array('wc_update_344_recreate_roles', 'wc_update_344_db_version'), '3.5.0' => array('wc_update_350_reviews_comment_type', 'wc_update_350_db_version'), '3.5.2' => array('wc_update_352_drop_download_log_fk'), '3.5.4' => array('wc_update_354_modify_shop_manager_caps', 'wc_update_354_db_version'), '3.6.0' => array('wc_update_360_product_lookup_tables', 'wc_update_360_term_meta', 'wc_update_360_downloadable_product_permissions_index', 'wc_update_360_db_version'), '3.7.0' => array('wc_update_370_tax_rate_classes', 'wc_update_370_mro_std_currency', 'wc_update_370_db_version'));
        /**
         * Hook in tabs.
         */
        public static function init()
        {
        }
        /**
         * Check WooCommerce version and run the updater is required.
         *
         * This check is done on all requests and runs if the versions do not match.
         */
        public static function check_version()
        {
        }
        /**
         * Performan manual database update when triggered by WooCommerce System Tools.
         *
         * @since 3.6.5
         */
        public static function manual_database_update()
        {
        }
        /**
         * Run manual database update.
         */
        public static function run_manual_database_update()
        {
        }
        /**
         * Run an update callback when triggered by ActionScheduler.
         *
         * @since 3.6.0
         * @param string $callback Callback name.
         */
        public static function run_update_callback($callback)
        {
        }
        /**
         * Triggered when a callback will run.
         *
         * @since 3.6.0
         * @param string $callback Callback name.
         */
        protected static function run_update_callback_start($callback)
        {
        }
        /**
         * Triggered when a callback has ran.
         *
         * @since 3.6.0
         * @param string $callback Callback name.
         * @param bool   $result Return value from callback. Non-false need to run again.
         */
        protected static function run_update_callback_end($callback, $result)
        {
        }
        /**
         * Install actions when a update button is clicked within the admin area.
         *
         * This function is hooked into admin_init to affect admin only.
         */
        public static function install_actions()
        {
        }
        /**
         * Install WC.
         */
        public static function install()
        {
        }
        /**
         * Reset any notices added to admin.
         *
         * @since 3.2.0
         */
        private static function remove_admin_notices()
        {
        }
        /**
         * Setup WC environment - post types, taxonomies, endpoints.
         *
         * @since 3.2.0
         */
        private static function setup_environment()
        {
        }
        /**
         * Is this a brand new WC install?
         *
         * A brand new install has no version yet. Also treat empty installs as 'new'.
         *
         * @since  3.2.0
         * @return boolean
         */
        private static function is_new_install()
        {
        }
        /**
         * Is a DB update needed?
         *
         * @since  3.2.0
         * @return boolean
         */
        public static function needs_db_update()
        {
        }
        /**
         * See if we need the wizard or not.
         *
         * @since 3.2.0
         */
        private static function maybe_enable_setup_wizard()
        {
        }
        /**
         * See if we need to show or run database updates during install.
         *
         * @since 3.2.0
         */
        private static function maybe_update_db_version()
        {
        }
        /**
         * Update WC version to current.
         */
        private static function update_wc_version()
        {
        }
        /**
         * Get list of DB update callbacks.
         *
         * @since  3.0.0
         * @return array
         */
        public static function get_db_update_callbacks()
        {
        }
        /**
         * Push all needed DB updates to the queue for processing.
         */
        private static function update()
        {
        }
        /**
         * Update DB version to current.
         *
         * @param string|null $version New WooCommerce DB version or null.
         */
        public static function update_db_version($version = \null)
        {
        }
        /**
         * Add more cron schedules.
         *
         * @param array $schedules List of WP scheduled cron jobs.
         *
         * @return array
         */
        public static function cron_schedules($schedules)
        {
        }
        /**
         * Create cron jobs (clear them first).
         */
        private static function create_cron_jobs()
        {
        }
        /**
         * Create pages that the plugin relies on, storing page IDs in variables.
         */
        public static function create_pages()
        {
        }
        /**
         * Default options.
         *
         * Sets up the default options used on the settings page.
         */
        private static function create_options()
        {
        }
        /**
         * Add the default terms for WC taxonomies - product types and order statuses. Modify this at your own risk.
         */
        public static function create_terms()
        {
        }
        /**
         * Set up the database tables which the plugin needs to function.
         *
         * Tables:
         *      woocommerce_attribute_taxonomies - Table for storing attribute taxonomies - these are user defined
         *      woocommerce_downloadable_product_permissions - Table for storing user and guest download permissions.
         *          KEY(order_id, product_id, download_id) used for organizing downloads on the My Account page
         *      woocommerce_order_items - Order line items are stored in a table to make them easily queryable for reports
         *      woocommerce_order_itemmeta - Order line item meta is stored in a table for storing extra data.
         *      woocommerce_tax_rates - Tax Rates are stored inside 2 tables making tax queries simple and efficient.
         *      woocommerce_tax_rate_locations - Each rate can be applied to more than one postcode/city hence the second table.
         */
        private static function create_tables()
        {
        }
        /**
         * Get Table schema.
         *
         * See https://github.com/woocommerce/woocommerce/wiki/Database-Description/
         *
         * A note on indexes; Indexes have a maximum size of 767 bytes. Historically, we haven't need to be concerned about that.
         * As of WordPress 4.2, however, we moved to utf8mb4, which uses 4 bytes per character. This means that an index which
         * used to have room for floor(767/3) = 255 characters, now only has room for floor(767/4) = 191 characters.
         *
         * Changing indexes may cause duplicate index notices in logs due to https://core.trac.wordpress.org/ticket/34870 but dropping
         * indexes first causes too much load on some servers/larger DB.
         *
         * When adding or removing a table, make sure to update the list of tables in WC_Install::get_tables().
         *
         * @return string
         */
        private static function get_schema()
        {
        }
        /**
         * Return a list of WooCommerce tables. Used to make sure all WC tables are dropped when uninstalling the plugin
         * in a single site or multi site environment.
         *
         * @return array WC tables.
         */
        public static function get_tables()
        {
        }
        /**
         * Drop WooCommerce tables.
         *
         * @return void
         */
        public static function drop_tables()
        {
        }
        /**
         * Uninstall tables when MU blog is deleted.
         *
         * @param array $tables List of tables that will be deleted by WP.
         *
         * @return string[]
         */
        public static function wpmu_drop_tables($tables)
        {
        }
        /**
         * Create roles and capabilities.
         */
        public static function create_roles()
        {
        }
        /**
         * Get capabilities for WooCommerce - these are assigned to admin/shop manager during installation or reset.
         *
         * @return array
         */
        private static function get_core_capabilities()
        {
        }
        /**
         * Remove WooCommerce roles.
         */
        public static function remove_roles()
        {
        }
        /**
         * Create files/directories.
         */
        private static function create_files()
        {
        }
        /**
         * Create a placeholder image in the media library.
         *
         * @since 3.5.0
         */
        private static function create_placeholder_image()
        {
        }
        /**
         * Show action links on the plugin screen.
         *
         * @param mixed $links Plugin Action links.
         *
         * @return array
         */
        public static function plugin_action_links($links)
        {
        }
        /**
         * Show row meta on the plugin screen.
         *
         * @param mixed $links Plugin Row Meta.
         * @param mixed $file  Plugin Base file.
         *
         * @return array
         */
        public static function plugin_row_meta($links, $file)
        {
        }
        /**
         * Get slug from path and associate it with the path.
         *
         * @param array  $plugins Associative array of plugin files to paths.
         * @param string $key Plugin relative path. Example: woocommerce/woocommerce.php.
         */
        private static function associate_plugin_file($plugins, $key)
        {
        }
        /**
         * Install a plugin from .org in the background via a cron job (used by
         * installer - opt in).
         *
         * @param string $plugin_to_install_id Plugin ID.
         * @param array  $plugin_to_install Plugin information.
         *
         * @throws Exception If unable to proceed with plugin installation.
         * @since  2.6.0
         */
        public static function background_installer($plugin_to_install_id, $plugin_to_install)
        {
        }
        /**
         * Removes redirect added during MailChimp plugin's activation.
         *
         * @param string $option Option name.
         * @param string $value  Option value.
         */
        public static function remove_mailchimps_redirect($option, $value)
        {
        }
        /**
         * Install a theme from .org in the background via a cron job (used by installer - opt in).
         *
         * @param string $theme_slug Theme slug.
         *
         * @throws Exception If unable to proceed with theme installation.
         * @since  3.1.0
         */
        public static function theme_background_installer($theme_slug)
        {
        }
    }
    /**
     * WC_Ajax class.
     */
    class WC_AJAX
    {
        /**
         * Hook in ajax handlers.
         */
        public static function init()
        {
        }
        /**
         * Get WC Ajax Endpoint.
         *
         * @param string $request Optional.
         *
         * @return string
         */
        public static function get_endpoint($request = '')
        {
        }
        /**
         * Set WC AJAX constant and headers.
         */
        public static function define_ajax()
        {
        }
        /**
         * Send headers for WC Ajax Requests.
         *
         * @since 2.5.0
         */
        private static function wc_ajax_headers()
        {
        }
        /**
         * Check for WC Ajax request and fire action.
         */
        public static function do_wc_ajax()
        {
        }
        /**
         * Hook in methods - uses WordPress ajax handlers (admin-ajax).
         */
        public static function add_ajax_events()
        {
        }
        /**
         * Get a refreshed cart fragment, including the mini cart HTML.
         */
        public static function get_refreshed_fragments()
        {
        }
        /**
         * AJAX apply coupon on checkout page.
         */
        public static function apply_coupon()
        {
        }
        /**
         * AJAX remove coupon on cart and checkout page.
         */
        public static function remove_coupon()
        {
        }
        /**
         * AJAX update shipping method on cart page.
         */
        public static function update_shipping_method()
        {
        }
        /**
         * AJAX receive updated cart_totals div.
         */
        public static function get_cart_totals()
        {
        }
        /**
         * Session has expired.
         */
        private static function update_order_review_expired()
        {
        }
        /**
         * AJAX update order review on checkout.
         */
        public static function update_order_review()
        {
        }
        /**
         * AJAX add to cart.
         */
        public static function add_to_cart()
        {
        }
        /**
         * AJAX remove from cart.
         */
        public static function remove_from_cart()
        {
        }
        /**
         * Process ajax checkout form.
         */
        public static function checkout()
        {
        }
        /**
         * Get a matching variation based on posted attributes.
         */
        public static function get_variation()
        {
        }
        /**
         * Locate user via AJAX.
         */
        public static function get_customer_location()
        {
        }
        /**
         * Toggle Featured status of a product from admin.
         */
        public static function feature_product()
        {
        }
        /**
         * Mark an order with a status.
         */
        public static function mark_order_status()
        {
        }
        /**
         * Get order details.
         */
        public static function get_order_details()
        {
        }
        /**
         * Add an attribute row.
         */
        public static function add_attribute()
        {
        }
        /**
         * Add a new attribute via ajax function.
         */
        public static function add_new_attribute()
        {
        }
        /**
         * Delete variations via ajax function.
         */
        public static function remove_variations()
        {
        }
        /**
         * Save attributes via ajax.
         */
        public static function save_attributes()
        {
        }
        /**
         * Add variation via ajax function.
         */
        public static function add_variation()
        {
        }
        /**
         * Link all variations via ajax function.
         */
        public static function link_all_variations()
        {
        }
        /**
         * Delete download permissions via ajax function.
         */
        public static function revoke_access_to_download()
        {
        }
        /**
         * Grant download permissions via ajax function.
         */
        public static function grant_access_to_download()
        {
        }
        /**
         * Get customer details via ajax.
         */
        public static function get_customer_details()
        {
        }
        /**
         * Add order item via ajax. Used on the edit order screen in WP Admin.
         *
         * @throws Exception If order is invalid.
         */
        public static function add_order_item()
        {
        }
        /**
         * Add order fee via ajax.
         *
         * @throws Exception If order is invalid.
         */
        public static function add_order_fee()
        {
        }
        /**
         * Add order shipping cost via ajax.
         *
         * @throws Exception If order is invalid.
         */
        public static function add_order_shipping()
        {
        }
        /**
         * Add order tax column via ajax.
         *
         * @throws Exception If order or tax rate is invalid.
         */
        public static function add_order_tax()
        {
        }
        /**
         * Add order discount via ajax.
         *
         * @throws Exception If order or coupon is invalid.
         */
        public static function add_coupon_discount()
        {
        }
        /**
         * Remove coupon from an order via ajax.
         *
         * @throws Exception If order or coupon is invalid.
         */
        public static function remove_order_coupon()
        {
        }
        /**
         * Remove an order item.
         *
         * @throws Exception If order is invalid.
         */
        public static function remove_order_item()
        {
        }
        /**
         * Remove an order tax.
         *
         * @throws Exception If there is an error whilst deleting the rate.
         */
        public static function remove_order_tax()
        {
        }
        /**
         * Calc line tax.
         */
        public static function calc_line_taxes()
        {
        }
        /**
         * Save order items via ajax.
         */
        public static function save_order_items()
        {
        }
        /**
         * Load order items via ajax.
         */
        public static function load_order_items()
        {
        }
        /**
         * Add order note via ajax.
         */
        public static function add_order_note()
        {
        }
        /**
         * Delete order note via ajax.
         */
        public static function delete_order_note()
        {
        }
        /**
         * Search for products and echo json.
         *
         * @param string $term (default: '') Term to search for.
         * @param bool   $include_variations in search or not.
         */
        public static function json_search_products($term = '', $include_variations = \false)
        {
        }
        /**
         * Search for product variations and return json.
         *
         * @see WC_AJAX::json_search_products()
         */
        public static function json_search_products_and_variations()
        {
        }
        /**
         * Search for downloadable product variations and return json.
         *
         * @see WC_AJAX::json_search_products()
         */
        public static function json_search_downloadable_products_and_variations()
        {
        }
        /**
         * Search for customers and return json.
         */
        public static function json_search_customers()
        {
        }
        /**
         * Search for categories and return json.
         */
        public static function json_search_categories()
        {
        }
        /**
         * Ajax request handling for categories ordering.
         */
        public static function term_ordering()
        {
        }
        /**
         * Ajax request handling for product ordering.
         *
         * Based on Simple Page Ordering by 10up (https://wordpress.org/plugins/simple-page-ordering/).
         */
        public static function product_ordering()
        {
        }
        /**
         * Handle a refund via the edit order screen.
         *
         * @throws Exception To return errors.
         */
        public static function refund_line_items()
        {
        }
        /**
         * Delete a refund.
         */
        public static function delete_refund()
        {
        }
        /**
         * Triggered when clicking the rating footer.
         */
        public static function rated()
        {
        }
        /**
         * Create/Update API key.
         *
         * @throws Exception On invalid or empty description, user, or permissions.
         */
        public static function update_api_key()
        {
        }
        /**
         * Load variations via AJAX.
         */
        public static function load_variations()
        {
        }
        /**
         * Save variations via AJAX.
         */
        public static function save_variations()
        {
        }
        /**
         * Bulk action - Toggle Enabled.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_toggle_enabled($variations, $data)
        {
        }
        /**
         * Bulk action - Toggle Downloadable Checkbox.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_toggle_downloadable($variations, $data)
        {
        }
        /**
         * Bulk action - Toggle Virtual Checkbox.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_toggle_virtual($variations, $data)
        {
        }
        /**
         * Bulk action - Toggle Manage Stock Checkbox.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_toggle_manage_stock($variations, $data)
        {
        }
        /**
         * Bulk action - Set Regular Prices.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_regular_price($variations, $data)
        {
        }
        /**
         * Bulk action - Set Sale Prices.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_sale_price($variations, $data)
        {
        }
        /**
         * Bulk action - Set Stock Status as In Stock.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_stock_status_instock($variations, $data)
        {
        }
        /**
         * Bulk action - Set Stock Status as Out of Stock.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_stock_status_outofstock($variations, $data)
        {
        }
        /**
         * Bulk action - Set Stock Status as On Backorder.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_stock_status_onbackorder($variations, $data)
        {
        }
        /**
         * Bulk action - Set Stock.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_stock($variations, $data)
        {
        }
        /**
         * Bulk action - Set Weight.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_weight($variations, $data)
        {
        }
        /**
         * Bulk action - Set Length.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_length($variations, $data)
        {
        }
        /**
         * Bulk action - Set Width.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_width($variations, $data)
        {
        }
        /**
         * Bulk action - Set Height.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_height($variations, $data)
        {
        }
        /**
         * Bulk action - Set Download Limit.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_download_limit($variations, $data)
        {
        }
        /**
         * Bulk action - Set Download Expiry.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_download_expiry($variations, $data)
        {
        }
        /**
         * Bulk action - Delete all.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_delete_all($variations, $data)
        {
        }
        /**
         * Bulk action - Sale Schedule.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_sale_schedule($variations, $data)
        {
        }
        /**
         * Bulk action - Increase Regular Prices.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_regular_price_increase($variations, $data)
        {
        }
        /**
         * Bulk action - Decrease Regular Prices.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_regular_price_decrease($variations, $data)
        {
        }
        /**
         * Bulk action - Increase Sale Prices.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_sale_price_increase($variations, $data)
        {
        }
        /**
         * Bulk action - Decrease Sale Prices.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_sale_price_decrease($variations, $data)
        {
        }
        /**
         * Bulk action - Set Price.
         *
         * @param array  $variations List of variations.
         * @param string $field price being adjusted _regular_price or _sale_price.
         * @param string $operator + or -.
         * @param string $value Price or Percent.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_adjust_price($variations, $field, $operator, $value)
        {
        }
        /**
         * Bulk set convenience function.
         *
         * @param array  $variations List of variations.
         * @param string $field Field to set.
         * @param string $value to set.
         */
        private static function variation_bulk_set($variations, $field, $value)
        {
        }
        /**
         * Bulk toggle convenience function.
         *
         * @param array  $variations List of variations.
         * @param string $field Field to toggle.
         */
        private static function variation_bulk_toggle($variations, $field)
        {
        }
        /**
         * Bulk edit variations via AJAX.
         *
         * @uses WC_AJAX::variation_bulk_set()
         * @uses WC_AJAX::variation_bulk_adjust_price()
         * @uses WC_AJAX::variation_bulk_action_variable_sale_price_decrease()
         * @uses WC_AJAX::variation_bulk_action_variable_sale_price_increase()
         * @uses WC_AJAX::variation_bulk_action_variable_regular_price_decrease()
         * @uses WC_AJAX::variation_bulk_action_variable_regular_price_increase()
         * @uses WC_AJAX::variation_bulk_action_variable_sale_schedule()
         * @uses WC_AJAX::variation_bulk_action_delete_all()
         * @uses WC_AJAX::variation_bulk_action_variable_download_expiry()
         * @uses WC_AJAX::variation_bulk_action_variable_download_limit()
         * @uses WC_AJAX::variation_bulk_action_variable_height()
         * @uses WC_AJAX::variation_bulk_action_variable_width()
         * @uses WC_AJAX::variation_bulk_action_variable_length()
         * @uses WC_AJAX::variation_bulk_action_variable_weight()
         * @uses WC_AJAX::variation_bulk_action_variable_stock()
         * @uses WC_AJAX::variation_bulk_action_variable_sale_price()
         * @uses WC_AJAX::variation_bulk_action_variable_regular_price()
         * @uses WC_AJAX::variation_bulk_action_toggle_manage_stock()
         * @uses WC_AJAX::variation_bulk_action_toggle_virtual()
         * @uses WC_AJAX::variation_bulk_action_toggle_downloadable()
         * @uses WC_AJAX::variation_bulk_action_toggle_enabled
         */
        public static function bulk_edit_variations()
        {
        }
        /**
         * Handle submissions from assets/js/settings-views-html-settings-tax.js Backbone model.
         */
        public static function tax_rates_save_changes()
        {
        }
        /**
         * Handle submissions from assets/js/wc-shipping-zones.js Backbone model.
         */
        public static function shipping_zones_save_changes()
        {
        }
        /**
         * Handle submissions from assets/js/wc-shipping-zone-methods.js Backbone model.
         */
        public static function shipping_zone_add_method()
        {
        }
        /**
         * Handle submissions from assets/js/wc-shipping-zone-methods.js Backbone model.
         */
        public static function shipping_zone_methods_save_changes()
        {
        }
        /**
         * Save method settings
         */
        public static function shipping_zone_methods_save_settings()
        {
        }
        /**
         * Handle submissions from assets/js/wc-shipping-classes.js Backbone model.
         */
        public static function shipping_classes_save_changes()
        {
        }
        /**
         * Toggle payment gateway on or off via AJAX.
         *
         * @since 3.4.0
         */
        public static function toggle_gateway_enabled()
        {
        }
    }
    /**
     * Order item product class.
     */
    class WC_Order_Item_Product extends \WC_Order_Item
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $extra_data = array('product_id' => 0, 'variation_id' => 0, 'quantity' => 1, 'tax_class' => '', 'subtotal' => 0, 'subtotal_tax' => 0, 'total' => 0, 'total_tax' => 0, 'taxes' => array('subtotal' => array(), 'total' => array()));
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set quantity.
         *
         * @param int $value Quantity.
         */
        public function set_quantity($value)
        {
        }
        /**
         * Set tax class.
         *
         * @param string $value Tax class.
         */
        public function set_tax_class($value)
        {
        }
        /**
         * Set Product ID
         *
         * @param int $value Product ID.
         */
        public function set_product_id($value)
        {
        }
        /**
         * Set variation ID.
         *
         * @param int $value Variation ID.
         */
        public function set_variation_id($value)
        {
        }
        /**
         * Line subtotal (before discounts).
         *
         * @param string $value Subtotal.
         */
        public function set_subtotal($value)
        {
        }
        /**
         * Line total (after discounts).
         *
         * @param string $value Total.
         */
        public function set_total($value)
        {
        }
        /**
         * Line subtotal tax (before discounts).
         *
         * @param string $value Subtotal tax.
         */
        public function set_subtotal_tax($value)
        {
        }
        /**
         * Line total tax (after discounts).
         *
         * @param string $value Total tax.
         */
        public function set_total_tax($value)
        {
        }
        /**
         * Set line taxes and totals for passed in taxes.
         *
         * @param array $raw_tax_data Raw tax data.
         */
        public function set_taxes($raw_tax_data)
        {
        }
        /**
         * Set variation data (stored as meta data - write only).
         *
         * @param array $data Key/Value pairs.
         */
        public function set_variation($data = array())
        {
        }
        /**
         * Set properties based on passed in product object.
         *
         * @param WC_Product $product Product instance.
         */
        public function set_product($product)
        {
        }
        /**
         * Set meta data for backordered products.
         */
        public function set_backorder_meta()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get order item type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get product ID.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_product_id($context = 'view')
        {
        }
        /**
         * Get variation ID.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_variation_id($context = 'view')
        {
        }
        /**
         * Get quantity.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_quantity($context = 'view')
        {
        }
        /**
         * Get tax class.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_tax_class($context = 'view')
        {
        }
        /**
         * Get subtotal.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_subtotal($context = 'view')
        {
        }
        /**
         * Get subtotal tax.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_subtotal_tax($context = 'view')
        {
        }
        /**
         * Get total.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_total($context = 'view')
        {
        }
        /**
         * Get total tax.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_total_tax($context = 'view')
        {
        }
        /**
         * Get taxes.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_taxes($context = 'view')
        {
        }
        /**
         * Get the associated product.
         *
         * @return WC_Product|bool
         */
        public function get_product()
        {
        }
        /**
         * Get the Download URL.
         *
         * @param  int $download_id Download ID.
         * @return string
         */
        public function get_item_download_url($download_id)
        {
        }
        /**
         * Get any associated downloadable files.
         *
         * @return array
         */
        public function get_item_downloads()
        {
        }
        /**
         * Get tax status.
         *
         * @return string
         */
        public function get_tax_status()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Array Access Methods
        |--------------------------------------------------------------------------
        |
        | For backwards compatibility with legacy arrays.
        |
        */
        /**
         * OffsetGet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Shortcode checkout class.
     */
    class WC_Shortcode_Checkout
    {
        /**
         * Get the shortcode content.
         *
         * @param array $atts Shortcode attributes.
         * @return string
         */
        public static function get($atts)
        {
        }
        /**
         * Output the shortcode.
         *
         * @param array $atts Shortcode attributes.
         */
        public static function output($atts)
        {
        }
        /**
         * Show the pay page.
         *
         * @throws Exception When validate fails.
         * @param int $order_id Order ID.
         */
        private static function order_pay($order_id)
        {
        }
        /**
         * Show the thanks page.
         *
         * @param int $order_id Order ID.
         */
        private static function order_received($order_id = 0)
        {
        }
        /**
         * Show the checkout.
         */
        private static function checkout()
        {
        }
    }
    /**
     * Shortcode order tracking class.
     */
    class WC_Shortcode_Order_Tracking
    {
        /**
         * Get the shortcode content.
         *
         * @param array $atts Shortcode attributes.
         * @return string
         */
        public static function get($atts)
        {
        }
        /**
         * Output the shortcode.
         *
         * @param array $atts Shortcode attributes.
         */
        public static function output($atts)
        {
        }
    }
    /**
     * Shortcode my account class.
     */
    class WC_Shortcode_My_Account
    {
        /**
         * Get the shortcode content.
         *
         * @param array $atts Shortcode attributes.
         *
         * @return string
         */
        public static function get($atts)
        {
        }
        /**
         * Output the shortcode.
         *
         * @param array $atts Shortcode attributes.
         */
        public static function output($atts)
        {
        }
        /**
         * My account page.
         *
         * @param array $atts Shortcode attributes.
         */
        private static function my_account($atts)
        {
        }
        /**
         * View order page.
         *
         * @param int $order_id Order ID.
         */
        public static function view_order($order_id)
        {
        }
        /**
         * Edit account details page.
         */
        public static function edit_account()
        {
        }
        /**
         * Edit address page.
         *
         * @param string $load_address Type of address to load.
         */
        public static function edit_address($load_address = 'billing')
        {
        }
        /**
         * Lost password page handling.
         */
        public static function lost_password()
        {
        }
        /**
         * Handles sending password retrieval email to customer.
         *
         * Based on retrieve_password() in core wp-login.php.
         *
         * @uses $wpdb WordPress Database object
         * @return bool True: when finish. False: on error
         */
        public static function retrieve_password()
        {
        }
        /**
         * Retrieves a user row based on password reset key and login.
         *
         * @uses $wpdb WordPress Database object.
         * @param string $key   Hash to validate sending user's password.
         * @param string $login The user login.
         * @return WP_User|bool User's database row on success, false for invalid keys
         */
        public static function check_password_reset_key($key, $login)
        {
        }
        /**
         * Handles resetting the user's password.
         *
         * @param object $user     The user.
         * @param string $new_pass New password for the user in plaintext.
         */
        public static function reset_password($user, $new_pass)
        {
        }
        /**
         * Set or unset the cookie.
         *
         * @param string $value Cookie value.
         */
        public static function set_reset_password_cookie($value = '')
        {
        }
        /**
         * Show the add payment method page.
         */
        public static function add_payment_method()
        {
        }
    }
    /**
     * Products shortcode class.
     */
    class WC_Shortcode_Products
    {
        /**
         * Shortcode type.
         *
         * @since 3.2.0
         * @var   string
         */
        protected $type = 'products';
        /**
         * Attributes.
         *
         * @since 3.2.0
         * @var   array
         */
        protected $attributes = array();
        /**
         * Query args.
         *
         * @since 3.2.0
         * @var   array
         */
        protected $query_args = array();
        /**
         * Set custom visibility.
         *
         * @since 3.2.0
         * @var   bool
         */
        protected $custom_visibility = \false;
        /**
         * Initialize shortcode.
         *
         * @since 3.2.0
         * @param array  $attributes Shortcode attributes.
         * @param string $type       Shortcode type.
         */
        public function __construct($attributes = array(), $type = 'products')
        {
        }
        /**
         * Get shortcode attributes.
         *
         * @since  3.2.0
         * @return array
         */
        public function get_attributes()
        {
        }
        /**
         * Get query args.
         *
         * @since  3.2.0
         * @return array
         */
        public function get_query_args()
        {
        }
        /**
         * Get shortcode type.
         *
         * @since  3.2.0
         * @return array
         */
        public function get_type()
        {
        }
        /**
         * Get shortcode content.
         *
         * @since  3.2.0
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Parse attributes.
         *
         * @since  3.2.0
         * @param  array $attributes Shortcode attributes.
         * @return array
         */
        protected function parse_attributes($attributes)
        {
        }
        /**
         * Parse legacy attributes.
         *
         * @since  3.2.0
         * @param  array $attributes Attributes.
         * @return array
         */
        protected function parse_legacy_attributes($attributes)
        {
        }
        /**
         * Parse query args.
         *
         * @since  3.2.0
         * @return array
         */
        protected function parse_query_args()
        {
        }
        /**
         * Set skus query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_skus_query_args(&$query_args)
        {
        }
        /**
         * Set ids query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_ids_query_args(&$query_args)
        {
        }
        /**
         * Set attributes query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_attributes_query_args(&$query_args)
        {
        }
        /**
         * Set categories query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_categories_query_args(&$query_args)
        {
        }
        /**
         * Set tags query args.
         *
         * @since 3.3.0
         * @param array $query_args Query args.
         */
        protected function set_tags_query_args(&$query_args)
        {
        }
        /**
         * Set sale products query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_sale_products_query_args(&$query_args)
        {
        }
        /**
         * Set best selling products query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_best_selling_products_query_args(&$query_args)
        {
        }
        /**
         * Set top rated products query args.
         *
         * @since 3.6.5
         * @param array $query_args Query args.
         */
        protected function set_top_rated_products_query_args(&$query_args)
        {
        }
        /**
         * Set visibility as hidden.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_visibility_hidden_query_args(&$query_args)
        {
        }
        /**
         * Set visibility as catalog.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_visibility_catalog_query_args(&$query_args)
        {
        }
        /**
         * Set visibility as search.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_visibility_search_query_args(&$query_args)
        {
        }
        /**
         * Set visibility as featured.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_visibility_featured_query_args(&$query_args)
        {
        }
        /**
         * Set visibility query args.
         *
         * @since 3.2.0
         * @param array $query_args Query args.
         */
        protected function set_visibility_query_args(&$query_args)
        {
        }
        /**
         * Set product as visible when quering for hidden products.
         *
         * @since  3.2.0
         * @param  bool $visibility Product visibility.
         * @return bool
         */
        public function set_product_as_visible($visibility)
        {
        }
        /**
         * Get wrapper classes.
         *
         * @since  3.2.0
         * @param  array $columns Number of columns.
         * @return array
         */
        protected function get_wrapper_classes($columns)
        {
        }
        /**
         * Generate and return the transient name for this shortcode based on the query args.
         *
         * @since 3.3.0
         * @return string
         */
        protected function get_transient_name()
        {
        }
        /**
         * Run the query and return an array of data, including queried ids and pagination information.
         *
         * @since  3.3.0
         * @return object Object with the following props; ids, per_page, found_posts, max_num_pages, current_page
         */
        protected function get_query_results()
        {
        }
        /**
         * Loop over found products.
         *
         * @since  3.2.0
         * @return string
         */
        protected function product_loop()
        {
        }
        /**
         * Order by rating.
         *
         * @since  3.2.0
         * @param  array $args Query args.
         * @return array
         */
        public static function order_by_rating_post_clauses($args)
        {
        }
    }
    /**
     * Shortcode cart class.
     */
    class WC_Shortcode_Cart
    {
        /**
         * Calculate shipping for the cart.
         *
         * @throws Exception When some data is invalid.
         */
        public static function calculate_shipping()
        {
        }
        /**
         * Output the cart shortcode.
         *
         * @param array $atts Shortcode attributes.
         */
        public static function output($atts)
        {
        }
    }
    /**
     * CLI class.
     */
    class WC_CLI
    {
        /**
         * Load required files and hooks to make the CLI work.
         */
        public function __construct()
        {
        }
        /**
         * Load command files.
         */
        private function includes()
        {
        }
        /**
         * Sets up and hooks WP CLI to our CLI code.
         */
        private function hooks()
        {
        }
    }
    /**
     * Embed Class which handles any WooCommerce Products that are embedded on this site or another site.
     */
    class WC_Embed
    {
        /**
         * Init embed class.
         *
         * @since 2.4.11
         */
        public static function init()
        {
        }
        /**
         * Remove comments button on product embeds.
         *
         * @since 2.6.0
         */
        public static function remove_comments_button()
        {
        }
        /**
         * Check if this is an embedded product - to make sure we don't mess up regular posts.
         *
         * @since 2.4.11
         * @return bool
         */
        public static function is_embedded_product()
        {
        }
        /**
         * Create the excerpt for embedded products - we want to add the buy button to it.
         *
         * @since 2.4.11
         * @param string $excerpt Embed short description.
         * @return string
         */
        public static function the_excerpt($excerpt)
        {
        }
        /**
         * Create the button to go to the product page for embedded products.
         *
         * @since 2.4.11
         * @return string
         */
        public static function product_buttons()
        {
        }
        /**
         * Prints the markup for the rating stars.
         *
         * @since 2.4.11
         */
        public static function get_ratings()
        {
        }
        /**
         * Basic styling.
         */
        public static function print_embed_styles()
        {
        }
    }
    /**
     * Order item meta class.
     */
    class WC_Order_Item_Meta
    {
        /**
         * For handling backwards compatibility.
         *
         * @var bool
         */
        private $legacy = \false;
        /**
         * Order item
         *
         * @var array|null
         */
        private $item = \null;
        /**
         * Post meta data
         *
         * @var array|null
         */
        public $meta = \null;
        /**
         * Product object.
         *
         * @var WC_Product|null
         */
        public $product = \null;
        /**
         * Constructor.
         *
         * @param array       $item defaults to array().
         * @param \WC_Product $product defaults to null.
         */
        public function __construct($item = array(), $product = \null)
        {
        }
        /**
         * Display meta in a formatted list.
         *
         * @param bool   $flat       Flat (default: false).
         * @param bool   $return     Return (default: false).
         * @param string $hideprefix Hide prefix (default: _).
         * @param  string $delimiter Delimiter used to separate items when $flat is true.
         * @return string|void
         */
        public function display($flat = \false, $return = \false, $hideprefix = '_', $delimiter = ", \n")
        {
        }
        /**
         * Return an array of formatted item meta in format e.g.
         *
         * Returns: array(
         *   'pa_size' => array(
         *     'label' => 'Size',
         *     'value' => 'Medium',
         *   )
         * )
         *
         * @since 2.4
         * @param string $hideprefix exclude meta when key is prefixed with this, defaults to '_'.
         * @return array
         */
        public function get_formatted($hideprefix = '_')
        {
        }
        /**
         * Return an array of formatted item meta in format e.g.
         * Handles @deprecated args.
         *
         * @param string $hideprefix Hide prefix.
         *
         * @return array
         */
        public function get_formatted_legacy($hideprefix = '_')
        {
        }
    }
    /**
     * Webhook class.
     */
    class WC_Webhook extends \WC_Legacy_Webhook
    {
        /**
         * Stores webhook data.
         *
         * @var array
         */
        protected $data = array('date_created' => \null, 'date_modified' => \null, 'status' => 'disabled', 'delivery_url' => '', 'secret' => '', 'name' => '', 'topic' => '', 'hooks' => '', 'resource' => '', 'event' => '', 'failure_count' => 0, 'user_id' => 0, 'api_version' => 3, 'pending_delivery' => \false);
        /**
         * Load webhook data based on how WC_Webhook is called.
         *
         * @param WC_Webhook|int $data Webhook ID or data.
         * @throws Exception If webhook cannot be read/found and $data is set.
         */
        public function __construct($data = 0)
        {
        }
        /**
         * Enqueue the hooks associated with the webhook.
         *
         * @since 2.2.0
         */
        public function enqueue()
        {
        }
        /**
         * Process the webhook for delivery by verifying that it should be delivered.
         * and scheduling the delivery (in the background by default, or immediately).
         *
         * @since  2.2.0
         * @param  mixed $arg The first argument provided from the associated hooks.
         * @return mixed $arg Returns the argument in case the webhook was hooked into a filter.
         */
        public function process($arg)
        {
        }
        /**
         * Helper to check if the webhook should be delivered, as some hooks.
         * (like `wp_trash_post`) will fire for every post type, not just ours.
         *
         * @since  2.2.0
         * @param  mixed $arg First hook argument.
         * @return bool       True if webhook should be delivered, false otherwise.
         */
        private function should_deliver($arg)
        {
        }
        /**
         * Returns if webhook is active.
         *
         * @since  3.6.0
         * @return bool  True if validation passes.
         */
        private function is_active()
        {
        }
        /**
         * Returns if topic is valid.
         *
         * @since  3.6.0
         * @return bool  True if validation passes.
         */
        private function is_valid_topic()
        {
        }
        /**
         * Validates the criteria for certain actions.
         *
         * @since  3.6.0
         * @param  mixed $arg First hook argument.
         * @return bool       True if validation passes.
         */
        private function is_valid_action($arg)
        {
        }
        /**
         * Validates post actions.
         *
         * @since  3.6.0
         * @param  mixed $arg First hook argument.
         * @return bool       True if validation passes.
         */
        private function is_valid_post_action($arg)
        {
        }
        /**
         * Validates user actions.
         *
         * @since  3.6.0
         * @param  mixed $arg First hook argument.
         * @return bool       True if validation passes.
         */
        private function is_valid_user_action($arg)
        {
        }
        /**
         * Validates WC processing actions.
         *
         * @since  3.6.0
         * @param  mixed $arg First hook argument.
         * @return bool       True if validation passes.
         */
        private function is_valid_processing_action($arg)
        {
        }
        /**
         * Checks the resource for this webhook is valid e.g. valid post status.
         *
         * @since  3.6.0
         * @param  mixed $arg First hook argument.
         * @return bool       True if validation passes.
         */
        private function is_valid_resource($arg)
        {
        }
        /**
         * Deliver the webhook payload using wp_safe_remote_request().
         *
         * @since 2.2.0
         * @param mixed $arg First hook argument.
         */
        public function deliver($arg)
        {
        }
        /**
         * Get Legacy API payload.
         *
         * @since  3.0.0
         * @param  string $resource    Resource type.
         * @param  int    $resource_id Resource ID.
         * @param  string $event       Event type.
         * @return array
         */
        private function get_legacy_api_payload($resource, $resource_id, $event)
        {
        }
        /**
         * Get WP API integration payload.
         *
         * @since  3.0.0
         * @param  string $resource    Resource type.
         * @param  int    $resource_id Resource ID.
         * @param  string $event       Event type.
         * @return array
         */
        private function get_wp_api_payload($resource, $resource_id, $event)
        {
        }
        /**
         * Build the payload data for the webhook.
         *
         * @since  2.2.0
         * @param  mixed $resource_id First hook argument, typically the resource ID.
         * @return mixed              Payload data.
         */
        public function build_payload($resource_id)
        {
        }
        /**
         * Generate a base64-encoded HMAC-SHA256 signature of the payload body so the.
         * recipient can verify the authenticity of the webhook. Note that the signature.
         * is calculated after the body has already been encoded (JSON by default).
         *
         * @since  2.2.0
         * @param  string $payload Payload data to hash.
         * @return string
         */
        public function generate_signature($payload)
        {
        }
        /**
         * Generate a new unique hash as a delivery id based on current time and wehbook id.
         * Return the hash for inclusion in the webhook request.
         *
         * @since  2.2.0
         * @return string
         */
        public function get_new_delivery_id()
        {
        }
        /**
         * Log the delivery request/response.
         *
         * @since 2.2.0
         * @param string         $delivery_id Previously created hash.
         * @param array          $request     Request data.
         * @param array|WP_Error $response    Response data.
         * @param float          $duration    Request duration.
         */
        public function log_delivery($delivery_id, $request, $response, $duration)
        {
        }
        /**
         * Track consecutive delivery failures and automatically disable the webhook.
         * if more than 5 consecutive failures occur. A failure is defined as a.
         * non-2xx response.
         *
         * @since 2.2.0
         */
        private function failed_delivery()
        {
        }
        /**
         * Get the delivery logs for this webhook.
         *
         * @since  3.3.0
         * @return string
         */
        public function get_delivery_logs()
        {
        }
        /**
         * Get the delivery log specified by the ID. The delivery log includes:
         *
         * + duration
         * + summary
         * + request method/url
         * + request headers/body
         * + response code/message/headers/body
         *
         * @since 2.2
         * @deprecated 3.3.0
         * @param int $delivery_id Delivery ID.
         * @return void
         */
        public function get_delivery_log($delivery_id)
        {
        }
        /**
         * Send a test ping to the delivery URL, sent when the webhook is first created.
         *
         * @since  2.2.0
         * @return bool|WP_Error
         */
        public function deliver_ping()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get the friendly name for the webhook.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get the webhook status.
         *
         * - 'active' - delivers payload.
         * - 'paused' - does not deliver payload, paused by admin.
         * - 'disabled' - does not delivery payload, paused automatically due to consecutive failures.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return string status
         */
        public function get_status($context = 'view')
        {
        }
        /**
         * Get webhopk created date.
         *
         * @since  3.2.0
         * @param  string $context  What the value is for.
         *                          Valid values are 'view' and 'edit'.
         * @return WC_DateTime|null Object if the date is set or null if there is no date.
         */
        public function get_date_created($context = 'view')
        {
        }
        /**
         * Get webhopk modified date.
         *
         * @since  3.2.0
         * @param  string $context  What the value is for.
         *                          Valid values are 'view' and 'edit'.
         * @return WC_DateTime|null Object if the date is set or null if there is no date.
         */
        public function get_date_modified($context = 'view')
        {
        }
        /**
         * Get the secret used for generating the HMAC-SHA256 signature.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_secret($context = 'view')
        {
        }
        /**
         * Get the webhook topic, e.g. `order.created`.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_topic($context = 'view')
        {
        }
        /**
         * Get the delivery URL.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_delivery_url($context = 'view')
        {
        }
        /**
         * Get the user ID for this webhook.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_user_id($context = 'view')
        {
        }
        /**
         * API version.
         *
         * @since  3.0.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_api_version($context = 'view')
        {
        }
        /**
         * Get the failure count.
         *
         * @since  2.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_failure_count($context = 'view')
        {
        }
        /**
         * Get pending delivery.
         *
         * @since  3.2.0
         * @param  string $context What the value is for.
         *                         Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_pending_delivery($context = 'view')
        {
        }
        /*
        	|--------------------------------------------------------------------------
        	| Setters
        	|--------------------------------------------------------------------------
        */
        /**
         * Set webhook name.
         *
         * @since 3.2.0
         * @param string $name Webhook name.
         */
        public function set_name($name)
        {
        }
        /**
         * Set webhook created date.
         *
         * @since 3.2.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime.
         *                                  If the DateTime string has no timezone or offset,
         *                                  WordPress site timezone will be assumed.
         *                                  Null if their is no date.
         */
        public function set_date_created($date = \null)
        {
        }
        /**
         * Set webhook modified date.
         *
         * @since 3.2.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime.
         *                                  If the DateTime string has no timezone or offset,
         *                                  WordPress site timezone will be assumed.
         *                                  Null if their is no date.
         */
        public function set_date_modified($date = \null)
        {
        }
        /**
         * Set status.
         *
         * @since 3.2.0
         * @param string $status Status.
         */
        public function set_status($status)
        {
        }
        /**
         * Set the secret used for generating the HMAC-SHA256 signature.
         *
         * @since 2.2.0
         * @param string $secret Secret.
         */
        public function set_secret($secret)
        {
        }
        /**
         * Set the webhook topic and associated hooks.
         * The topic resource & event are also saved separately.
         *
         * @since 2.2.0
         * @param string $topic Webhook topic.
         */
        public function set_topic($topic)
        {
        }
        /**
         * Set the delivery URL.
         *
         * @since 2.2.0
         * @param string $url Delivery URL.
         */
        public function set_delivery_url($url)
        {
        }
        /**
         * Set user ID.
         *
         * @since 3.2.0
         * @param int $user_id User ID.
         */
        public function set_user_id($user_id)
        {
        }
        /**
         * Set API version.
         *
         * @since 3.0.0
         * @param int|string $version REST API version.
         */
        public function set_api_version($version)
        {
        }
        /**
         * Set pending delivery.
         *
         * @since 3.2.0
         * @param bool $pending_delivery Set true if is pending for delivery.
         */
        public function set_pending_delivery($pending_delivery)
        {
        }
        /**
         * Set failure count.
         *
         * @since 3.2.0
         * @param bool $failure_count Total of failures.
         */
        public function set_failure_count($failure_count)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Non-CRUD Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get the associated hook names for a topic.
         *
         * @since  2.2.0
         * @param  string $topic Topic name.
         * @return array
         */
        private function get_topic_hooks($topic)
        {
        }
        /**
         * Get the hook names for the webhook.
         *
         * @since  2.2.0
         * @return array
         */
        public function get_hooks()
        {
        }
        /**
         * Get the resource for the webhook, e.g. `order`.
         *
         * @since  2.2.0
         * @return string
         */
        public function get_resource()
        {
        }
        /**
         * Get the event for the webhook, e.g. `created`.
         *
         * @since  2.2.0
         * @return string
         */
        public function get_event()
        {
        }
        /**
         * Get the webhook i18n status.
         *
         * @return string
         */
        public function get_i18n_status()
        {
        }
    }
    /**
     * Customer class.
     */
    class WC_Customer extends \WC_Legacy_Customer
    {
        /**
         * Stores customer data.
         *
         * @var array
         */
        protected $data = array('date_created' => \null, 'date_modified' => \null, 'email' => '', 'first_name' => '', 'last_name' => '', 'display_name' => '', 'role' => 'customer', 'username' => '', 'billing' => array('first_name' => '', 'last_name' => '', 'company' => '', 'address_1' => '', 'address_2' => '', 'city' => '', 'postcode' => '', 'country' => '', 'state' => '', 'email' => '', 'phone' => ''), 'shipping' => array('first_name' => '', 'last_name' => '', 'company' => '', 'address_1' => '', 'address_2' => '', 'city' => '', 'postcode' => '', 'country' => '', 'state' => ''), 'is_paying_customer' => \false);
        /**
         * Stores a password if this needs to be changed. Write-only and hidden from _data.
         *
         * @var string
         */
        protected $password = '';
        /**
         * Stores if user is VAT exempt for this session.
         *
         * @var string
         */
        protected $is_vat_exempt = \false;
        /**
         * Stores if user has calculated shipping in this session.
         *
         * @var string
         */
        protected $calculated_shipping = \false;
        /**
         * Load customer data based on how WC_Customer is called.
         *
         * If $customer is 'new', you can build a new WC_Customer object. If it's empty, some
         * data will be pulled from the session for the current user/customer.
         *
         * @param WC_Customer|int $data       Customer ID or data.
         * @param bool            $is_session True if this is the customer session.
         * @throws Exception If customer cannot be read/found and $data is set.
         */
        public function __construct($data = 0, $is_session = \false)
        {
        }
        /**
         * Prefix for action and filter hooks on data.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_hook_prefix()
        {
        }
        /**
         * Delete a customer and reassign posts..
         *
         * @param int $reassign Reassign posts and links to new User ID.
         * @since 3.0.0
         * @return bool
         */
        public function delete_and_reassign($reassign = \null)
        {
        }
        /**
         * Is customer outside base country (for tax purposes)?
         *
         * @return bool
         */
        public function is_customer_outside_base()
        {
        }
        /**
         * Return this customer's avatar.
         *
         * @since 3.0.0
         * @return string
         */
        public function get_avatar_url()
        {
        }
        /**
         * Get taxable address.
         *
         * @return array
         */
        public function get_taxable_address()
        {
        }
        /**
         * Gets a customer's downloadable products.
         *
         * @return array Array of downloadable products
         */
        public function get_downloadable_products()
        {
        }
        /**
         * Is customer VAT exempt?
         *
         * @return bool
         */
        public function is_vat_exempt()
        {
        }
        /**
         * Has calculated shipping?
         *
         * @return bool
         */
        public function has_calculated_shipping()
        {
        }
        /**
         * Get if customer is VAT exempt?
         *
         * @since 3.0.0
         * @return bool
         */
        public function get_is_vat_exempt()
        {
        }
        /**
         * Get password (only used when updating the user object).
         *
         * @return string
         */
        public function get_password()
        {
        }
        /**
         * Has customer calculated shipping?
         *
         * @return bool
         */
        public function get_calculated_shipping()
        {
        }
        /**
         * Set if customer has tax exemption.
         *
         * @param bool $is_vat_exempt If is vat exempt.
         */
        public function set_is_vat_exempt($is_vat_exempt)
        {
        }
        /**
         * Calculated shipping?
         *
         * @param bool $calculated If shipping is calculated.
         */
        public function set_calculated_shipping($calculated = \true)
        {
        }
        /**
         * Set customer's password.
         *
         * @since 3.0.0
         * @param string $password Password.
         */
        public function set_password($password)
        {
        }
        /**
         * Gets the customers last order.
         *
         * @return WC_Order|false
         */
        public function get_last_order()
        {
        }
        /**
         * Return the number of orders this customer has.
         *
         * @return integer
         */
        public function get_order_count()
        {
        }
        /**
         * Return how much money this customer has spent.
         *
         * @return float
         */
        public function get_total_spent()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Return the customer's username.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_username($context = 'view')
        {
        }
        /**
         * Return the customer's email.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_email($context = 'view')
        {
        }
        /**
         * Return customer's first name.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_first_name($context = 'view')
        {
        }
        /**
         * Return customer's last name.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_last_name($context = 'view')
        {
        }
        /**
         * Return customer's display name.
         *
         * @since  3.1.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_display_name($context = 'view')
        {
        }
        /**
         * Return customer's user role.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_role($context = 'view')
        {
        }
        /**
         * Return the date this customer was created.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|null object if the date is set or null if there is no date.
         */
        public function get_date_created($context = 'view')
        {
        }
        /**
         * Return the date this customer was last updated.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|null object if the date is set or null if there is no date.
         */
        public function get_date_modified($context = 'view')
        {
        }
        /**
         * Gets a prop for a getter method.
         *
         * @since  3.0.0
         * @param  string $prop Name of prop to get.
         * @param  string $address billing or shipping.
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'. What the value is for. Valid values are view and edit.
         * @return mixed
         */
        protected function get_address_prop($prop, $address = 'billing', $context = 'view')
        {
        }
        /**
         * Get billing.
         *
         * @since  3.2.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_billing($context = 'view')
        {
        }
        /**
         * Get billing_first_name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_first_name($context = 'view')
        {
        }
        /**
         * Get billing_last_name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_last_name($context = 'view')
        {
        }
        /**
         * Get billing_company.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_company($context = 'view')
        {
        }
        /**
         * Get billing_address_1.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_address($context = 'view')
        {
        }
        /**
         * Get billing_address_1.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_address_1($context = 'view')
        {
        }
        /**
         * Get billing_address_2.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string $value
         */
        public function get_billing_address_2($context = 'view')
        {
        }
        /**
         * Get billing_city.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string $value
         */
        public function get_billing_city($context = 'view')
        {
        }
        /**
         * Get billing_state.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_state($context = 'view')
        {
        }
        /**
         * Get billing_postcode.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_postcode($context = 'view')
        {
        }
        /**
         * Get billing_country.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_country($context = 'view')
        {
        }
        /**
         * Get billing_email.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_email($context = 'view')
        {
        }
        /**
         * Get billing_phone.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_billing_phone($context = 'view')
        {
        }
        /**
         * Get shipping.
         *
         * @since  3.2.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_shipping($context = 'view')
        {
        }
        /**
         * Get shipping_first_name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_first_name($context = 'view')
        {
        }
        /**
         * Get shipping_last_name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_last_name($context = 'view')
        {
        }
        /**
         * Get shipping_company.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_company($context = 'view')
        {
        }
        /**
         * Get shipping_address_1.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_address($context = 'view')
        {
        }
        /**
         * Get shipping_address_1.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_address_1($context = 'view')
        {
        }
        /**
         * Get shipping_address_2.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_address_2($context = 'view')
        {
        }
        /**
         * Get shipping_city.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_city($context = 'view')
        {
        }
        /**
         * Get shipping_state.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_state($context = 'view')
        {
        }
        /**
         * Get shipping_postcode.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_postcode($context = 'view')
        {
        }
        /**
         * Get shipping_country.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_country($context = 'view')
        {
        }
        /**
         * Is the user a paying customer?
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_is_paying_customer($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set customer's username.
         *
         * @since 3.0.0
         * @param string $username Username.
         */
        public function set_username($username)
        {
        }
        /**
         * Set customer's email.
         *
         * @since 3.0.0
         * @param string $value Email.
         */
        public function set_email($value)
        {
        }
        /**
         * Set customer's first name.
         *
         * @since 3.0.0
         * @param string $first_name First name.
         */
        public function set_first_name($first_name)
        {
        }
        /**
         * Set customer's last name.
         *
         * @since 3.0.0
         * @param string $last_name Last name.
         */
        public function set_last_name($last_name)
        {
        }
        /**
         * Set customer's display name.
         *
         * @since 3.1.0
         * @param string $display_name Display name.
         */
        public function set_display_name($display_name)
        {
        }
        /**
         * Set customer's user role(s).
         *
         * @since 3.0.0
         * @param mixed $role User role.
         */
        public function set_role($role)
        {
        }
        /**
         * Set the date this customer was last updated.
         *
         * @since  3.0.0
         * @param  string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_date_created($date = \null)
        {
        }
        /**
         * Set the date this customer was last updated.
         *
         * @since  3.0.0
         * @param  string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_date_modified($date = \null)
        {
        }
        /**
         * Set customer address to match shop base address.
         *
         * @since 3.0.0
         */
        public function set_billing_address_to_base()
        {
        }
        /**
         * Set customer shipping address to base address.
         *
         * @since 3.0.0
         */
        public function set_shipping_address_to_base()
        {
        }
        /**
         * Sets all address info at once.
         *
         * @param string $country  Country.
         * @param string $state    State.
         * @param string $postcode Postcode.
         * @param string $city     City.
         */
        public function set_billing_location($country, $state = '', $postcode = '', $city = '')
        {
        }
        /**
         * Sets all shipping info at once.
         *
         * @param string $country  Country.
         * @param string $state    State.
         * @param string $postcode Postcode.
         * @param string $city     City.
         */
        public function set_shipping_location($country, $state = '', $postcode = '', $city = '')
        {
        }
        /**
         * Sets a prop for a setter method.
         *
         * @since 3.0.0
         * @param string $prop    Name of prop to set.
         * @param string $address Name of address to set. billing or shipping.
         * @param mixed  $value   Value of the prop.
         */
        protected function set_address_prop($prop, $address = 'billing', $value)
        {
        }
        /**
         * Set billing_first_name.
         *
         * @param string $value Billing first name.
         */
        public function set_billing_first_name($value)
        {
        }
        /**
         * Set billing_last_name.
         *
         * @param string $value Billing last name.
         */
        public function set_billing_last_name($value)
        {
        }
        /**
         * Set billing_company.
         *
         * @param string $value Billing company.
         */
        public function set_billing_company($value)
        {
        }
        /**
         * Set billing_address_1.
         *
         * @param string $value Billing address line 1.
         */
        public function set_billing_address($value)
        {
        }
        /**
         * Set billing_address_1.
         *
         * @param string $value Billing address line 1.
         */
        public function set_billing_address_1($value)
        {
        }
        /**
         * Set billing_address_2.
         *
         * @param string $value Billing address line 2.
         */
        public function set_billing_address_2($value)
        {
        }
        /**
         * Set billing_city.
         *
         * @param string $value Billing city.
         */
        public function set_billing_city($value)
        {
        }
        /**
         * Set billing_state.
         *
         * @param string $value Billing state.
         */
        public function set_billing_state($value)
        {
        }
        /**
         * Set billing_postcode.
         *
         * @param string $value Billing postcode.
         */
        public function set_billing_postcode($value)
        {
        }
        /**
         * Set billing_country.
         *
         * @param string $value Billing country.
         */
        public function set_billing_country($value)
        {
        }
        /**
         * Set billing_email.
         *
         * @param string $value Billing email.
         */
        public function set_billing_email($value)
        {
        }
        /**
         * Set billing_phone.
         *
         * @param string $value Billing phone.
         */
        public function set_billing_phone($value)
        {
        }
        /**
         * Set shipping_first_name.
         *
         * @param string $value Shipping first name.
         */
        public function set_shipping_first_name($value)
        {
        }
        /**
         * Set shipping_last_name.
         *
         * @param string $value Shipping last name.
         */
        public function set_shipping_last_name($value)
        {
        }
        /**
         * Set shipping_company.
         *
         * @param string $value Shipping company.
         */
        public function set_shipping_company($value)
        {
        }
        /**
         * Set shipping_address_1.
         *
         * @param string $value Shipping address line 1.
         */
        public function set_shipping_address($value)
        {
        }
        /**
         * Set shipping_address_1.
         *
         * @param string $value Shipping address line 1.
         */
        public function set_shipping_address_1($value)
        {
        }
        /**
         * Set shipping_address_2.
         *
         * @param string $value Shipping address line 2.
         */
        public function set_shipping_address_2($value)
        {
        }
        /**
         * Set shipping_city.
         *
         * @param string $value Shipping city.
         */
        public function set_shipping_city($value)
        {
        }
        /**
         * Set shipping_state.
         *
         * @param string $value Shipping state.
         */
        public function set_shipping_state($value)
        {
        }
        /**
         * Set shipping_postcode.
         *
         * @param string $value Shipping postcode.
         */
        public function set_shipping_postcode($value)
        {
        }
        /**
         * Set shipping_country.
         *
         * @param string $value Shipping country.
         */
        public function set_shipping_country($value)
        {
        }
        /**
         * Set if the user a paying customer.
         *
         * @since 3.0.0
         * @param bool $is_paying_customer If is a paying customer.
         */
        public function set_is_paying_customer($is_paying_customer)
        {
        }
    }
    /**
     * WC Action Queue
     *
     * A job queue using WordPress actions.
     *
     * @version 3.5.0
     */
    class WC_Action_Queue implements \WC_Queue_Interface
    {
        /**
         * Enqueue an action to run one time, as soon as possible
         *
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID.
         */
        public function add($hook, $args = array(), $group = '')
        {
        }
        /**
         * Schedule an action to run once at some time in the future
         *
         * @param int    $timestamp When the job will run.
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID.
         */
        public function schedule_single($timestamp, $hook, $args = array(), $group = '')
        {
        }
        /**
         * Schedule a recurring action
         *
         * @param int    $timestamp When the first instance of the job will run.
         * @param int    $interval_in_seconds How long to wait between runs.
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID.
         */
        public function schedule_recurring($timestamp, $interval_in_seconds, $hook, $args = array(), $group = '')
        {
        }
        /**
         * Schedule an action that recurs on a cron-like schedule.
         *
         * @param int    $timestamp The schedule will start on or after this time.
         * @param string $cron_schedule A cron-link schedule string.
         * @see http://en.wikipedia.org/wiki/Cron
         *   *    *    *    *    *    *
         *   ┬    ┬    ┬    ┬    ┬    ┬
         *   |    |    |    |    |    |
         *   |    |    |    |    |    + year [optional]
         *   |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
         *   |    |    |    +---------- month (1 - 12)
         *   |    |    +--------------- day of month (1 - 31)
         *   |    +-------------------- hour (0 - 23)
         *   +------------------------- min (0 - 59)
         * @param string $hook The hook to trigger.
         * @param array  $args Arguments to pass when the hook triggers.
         * @param string $group The group to assign this job to.
         * @return string The action ID
         */
        public function schedule_cron($timestamp, $cron_schedule, $hook, $args = array(), $group = '')
        {
        }
        /**
         * Dequeue the next scheduled instance of an action with a matching hook (and optionally matching args and group).
         *
         * Any recurring actions with a matching hook should also be cancelled, not just the next scheduled action.
         *
         * While technically only the next instance of a recurring or cron action is unscheduled by this method, that will also
         * prevent all future instances of that recurring or cron action from being run. Recurring and cron actions are scheduled
         * in a sequence instead of all being scheduled at once. Each successive occurrence of a recurring action is scheduled
         * only after the former action is run. As the next instance is never run, because it's unscheduled by this function,
         * then the following instance will never be scheduled (or exist), which is effectively the same as being unscheduled
         * by this method also.
         *
         * @param string $hook The hook that the job will trigger.
         * @param array  $args Args that would have been passed to the job.
         * @param string $group The group the job is assigned to (if any).
         */
        public function cancel($hook, $args = array(), $group = '')
        {
        }
        /**
         * Dequeue all actions with a matching hook (and optionally matching args and group) so no matching actions are ever run.
         *
         * @param string $hook The hook that the job will trigger.
         * @param array  $args Args that would have been passed to the job.
         * @param string $group The group the job is assigned to (if any).
         */
        public function cancel_all($hook, $args = array(), $group = '')
        {
        }
        /**
         * Get the date and time for the next scheduled occurence of an action with a given hook
         * (an optionally that matches certain args and group), if any.
         *
         * @param string $hook The hook that the job will trigger.
         * @param array  $args Filter to a hook with matching args that will be passed to the job when it runs.
         * @param string $group Filter to only actions assigned to a specific group.
         * @return WC_DateTime|null The date and time for the next occurrence, or null if there is no pending, scheduled action for the given hook.
         */
        public function get_next($hook, $args = \null, $group = '')
        {
        }
        /**
         * Find scheduled actions
         *
         * @param array  $args Possible arguments, with their default values:
         *        'hook' => '' - the name of the action that will be triggered
         *        'args' => null - the args array that will be passed with the action
         *        'date' => null - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
         *        'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='
         *        'modified' => null - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
         *        'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='
         *        'group' => '' - the group the action belongs to
         *        'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
         *        'claimed' => null - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID
         *        'per_page' => 5 - Number of results to return
         *        'offset' => 0
         *        'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'
         *        'order' => 'ASC'.
         *
         * @param string $return_format OBJECT, ARRAY_A, or ids.
         * @return array
         */
        public function search($args = array(), $return_format = \OBJECT)
        {
        }
    }
    /**
     * WC Queue
     *
     * Singleton for managing the WC queue instance.
     *
     * @version 3.5.0
     */
    class WC_Queue
    {
        /**
         * The single instance of the queue.
         *
         * @var WC_Queue_Interface|null
         */
        protected static $instance = \null;
        /**
         * The default queue class to initialize
         *
         * @var string
         */
        protected static $default_cass = 'WC_Action_Queue';
        /**
         * Single instance of WC_Queue_Interface
         *
         * @return WC_Queue_Interface
         */
        public static final function instance()
        {
        }
        /**
         * Get class to instantiate
         *
         * And make sure 3rd party code has the chance to attach a custom queue class.
         *
         * @return string
         */
        protected static function get_class()
        {
        }
        /**
         * Enforce a WC_Queue_Interface
         *
         * @param WC_Queue_Interface $instance Instance class.
         * @return WC_Queue_Interface
         */
        protected static function validate_instance($instance)
        {
        }
    }
    /**
     * Checkout class.
     */
    class WC_Checkout
    {
        /**
         * The single instance of the class.
         *
         * @var WC_Checkout|null
         */
        protected static $instance = \null;
        /**
         * Checkout fields are stored here.
         *
         * @var array|null
         */
        protected $fields = \null;
        /**
         * Holds posted data for backwards compatibility.
         *
         * @var array
         */
        protected $legacy_posted_data = array();
        /**
         * Caches customer object. @see get_value.
         *
         * @var WC_Customer
         */
        private $logged_in_customer = \null;
        /**
         * Gets the main WC_Checkout Instance.
         *
         * @since 2.1
         * @static
         * @return WC_Checkout Main instance
         */
        public static function instance()
        {
        }
        /**
         * See if variable is set. Used to support legacy public variables which are no longer defined.
         *
         * @param string $key Key.
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Sets the legacy public variables for backwards compatibility.
         *
         * @param string $key   Key.
         * @param mixed  $value Value.
         */
        public function __set($key, $value)
        {
        }
        /**
         * Gets the legacy public variables for backwards compatibility.
         *
         * @param string $key Key.
         * @return array|string
         */
        public function __get($key)
        {
        }
        /**
         * Cloning is forbidden.
         */
        public function __clone()
        {
        }
        /**
         * Unserializing instances of this class is forbidden.
         */
        public function __wakeup()
        {
        }
        /**
         * Is registration required to checkout?
         *
         * @since  3.0.0
         * @return boolean
         */
        public function is_registration_required()
        {
        }
        /**
         * Is registration enabled on the checkout page?
         *
         * @since  3.0.0
         * @return boolean
         */
        public function is_registration_enabled()
        {
        }
        /**
         * Get an array of checkout fields.
         *
         * @param  string $fieldset to get.
         * @return array
         */
        public function get_checkout_fields($fieldset = '')
        {
        }
        /**
         * When we process the checkout, lets ensure cart items are rechecked to prevent checkout.
         */
        public function check_cart_items()
        {
        }
        /**
         * Output the billing form.
         */
        public function checkout_form_billing()
        {
        }
        /**
         * Output the shipping form.
         */
        public function checkout_form_shipping()
        {
        }
        /**
         * Create an order. Error codes:
         *      520 - Cannot insert order into the database.
         *      521 - Cannot get order after creation.
         *      522 - Cannot update order.
         *      525 - Cannot create line item.
         *      526 - Cannot create fee item.
         *      527 - Cannot create shipping item.
         *      528 - Cannot create tax item.
         *      529 - Cannot create coupon item.
         *
         * @throws Exception When checkout validation fails.
         * @param  array $data Posted data.
         * @return int|WP_ERROR
         */
        public function create_order($data)
        {
        }
        /**
         * Add line items to the order.
         *
         * @param WC_Order $order Order instance.
         * @param WC_Cart  $cart  Cart instance.
         */
        public function create_order_line_items(&$order, $cart)
        {
        }
        /**
         * Add fees to the order.
         *
         * @param WC_Order $order Order instance.
         * @param WC_Cart  $cart  Cart instance.
         */
        public function create_order_fee_lines(&$order, $cart)
        {
        }
        /**
         * Add shipping lines to the order.
         *
         * @param WC_Order $order                   Order Instance.
         * @param array    $chosen_shipping_methods Chosen shipping methods.
         * @param array    $packages                Packages.
         */
        public function create_order_shipping_lines(&$order, $chosen_shipping_methods, $packages)
        {
        }
        /**
         * Add tax lines to the order.
         *
         * @param WC_Order $order Order instance.
         * @param WC_Cart  $cart  Cart instance.
         */
        public function create_order_tax_lines(&$order, $cart)
        {
        }
        /**
         * Add coupon lines to the order.
         *
         * @param WC_Order $order Order instance.
         * @param WC_Cart  $cart  Cart instance.
         */
        public function create_order_coupon_lines(&$order, $cart)
        {
        }
        /**
         * See if a fieldset should be skipped.
         *
         * @since 3.0.0
         * @param string $fieldset_key Fieldset key.
         * @param array  $data         Posted data.
         * @return bool
         */
        protected function maybe_skip_fieldset($fieldset_key, $data)
        {
        }
        /**
         * Get posted data from the checkout form.
         *
         * @since  3.1.0
         * @return array of data.
         */
        public function get_posted_data()
        {
        }
        /**
         * Validates the posted checkout data based on field properties.
         *
         * @since  3.0.0
         * @param  array    $data   An array of posted data.
         * @param  WP_Error $errors Validation error.
         */
        protected function validate_posted_data(&$data, &$errors)
        {
        }
        /**
         * Validates that the checkout has enough info to proceed.
         *
         * @since  3.0.0
         * @param  array    $data   An array of posted data.
         * @param  WP_Error $errors Validation errors.
         */
        protected function validate_checkout(&$data, &$errors)
        {
        }
        /**
         * Set address field for customer.
         *
         * @since 3.0.7
         * @param string $field String to update.
         * @param string $key   Field key.
         * @param array  $data  Array of data to get the value from.
         */
        protected function set_customer_address_fields($field, $key, $data)
        {
        }
        /**
         * Update customer and session data from the posted checkout data.
         *
         * @since 3.0.0
         * @param array $data Posted data.
         */
        protected function update_session($data)
        {
        }
        /**
         * Process an order that does require payment.
         *
         * @since 3.0.0
         * @param int    $order_id       Order ID.
         * @param string $payment_method Payment method.
         */
        protected function process_order_payment($order_id, $payment_method)
        {
        }
        /**
         * Process an order that doesn't require payment.
         *
         * @since 3.0.0
         * @param int $order_id Order ID.
         */
        protected function process_order_without_payment($order_id)
        {
        }
        /**
         * Create a new customer account if needed.
         *
         * @throws Exception When not able to create customer.
         * @param array $data Posted data.
         */
        protected function process_customer($data)
        {
        }
        /**
         * If checkout failed during an AJAX call, send failure response.
         */
        protected function send_ajax_failure_response()
        {
        }
        /**
         * Process the checkout after the confirm order button is pressed.
         *
         * @throws Exception When validation fails.
         */
        public function process_checkout()
        {
        }
        /**
         * Get a posted address field after sanitization and validation.
         *
         * @param string $key  Field key.
         * @param string $type Type of address. Available options: 'billing' or 'shipping'.
         * @return string
         */
        public function get_posted_address_data($key, $type = 'billing')
        {
        }
        /**
         * Gets the value either from POST, or from the customer object. Sets the default values in checkout fields.
         *
         * @param string $input Name of the input we want to grab data for. e.g. billing_country.
         * @return string The default value.
         */
        public function get_value($input)
        {
        }
    }
    /**
     * WC_Logger class.
     */
    class WC_Logger implements \WC_Logger_Interface
    {
        /**
         * Stores registered log handlers.
         *
         * @var array
         */
        protected $handlers;
        /**
         * Minimum log level this handler will process.
         *
         * @var int Integer representation of minimum log level to handle.
         */
        protected $threshold;
        /**
         * Constructor for the logger.
         *
         * @param array  $handlers Optional. Array of log handlers. If $handlers is not provided, the filter 'woocommerce_register_log_handlers' will be used to define the handlers. If $handlers is provided, the filter will not be applied and the handlers will be used directly.
         * @param string $threshold Optional. Define an explicit threshold. May be configured via  WC_LOG_THRESHOLD. By default, all logs will be processed.
         */
        public function __construct($handlers = \null, $threshold = \null)
        {
        }
        /**
         * Determine whether to handle or ignore log.
         *
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @return bool True if the log should be handled.
         */
        protected function should_handle($level)
        {
        }
        /**
         * Add a log entry.
         *
         * This is not the preferred method for adding log messages. Please use log() or any one of
         * the level methods (debug(), info(), etc.). This method may be deprecated in the future.
         *
         * @param string $handle File handle.
         * @param string $message Message to log.
         * @param string $level Logging level.
         * @return bool
         */
        public function add($handle, $message, $level = \WC_Log_Levels::NOTICE)
        {
        }
        /**
         * Add a log entry.
         *
         * @param string $level One of the following:
         *     'emergency': System is unusable.
         *     'alert': Action must be taken immediately.
         *     'critical': Critical conditions.
         *     'error': Error conditions.
         *     'warning': Warning conditions.
         *     'notice': Normal but significant condition.
         *     'info': Informational messages.
         *     'debug': Debug-level messages.
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         */
        public function log($level, $message, $context = array())
        {
        }
        /**
         * Adds an emergency level message.
         *
         * System is unusable.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function emergency($message, $context = array())
        {
        }
        /**
         * Adds an alert level message.
         *
         * Action must be taken immediately.
         * Example: Entire website down, database unavailable, etc.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function alert($message, $context = array())
        {
        }
        /**
         * Adds a critical level message.
         *
         * Critical conditions.
         * Example: Application component unavailable, unexpected exception.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function critical($message, $context = array())
        {
        }
        /**
         * Adds an error level message.
         *
         * Runtime errors that do not require immediate action but should typically be logged
         * and monitored.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function error($message, $context = array())
        {
        }
        /**
         * Adds a warning level message.
         *
         * Exceptional occurrences that are not errors.
         *
         * Example: Use of deprecated APIs, poor use of an API, undesirable things that are not
         * necessarily wrong.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function warning($message, $context = array())
        {
        }
        /**
         * Adds a notice level message.
         *
         * Normal but significant events.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function notice($message, $context = array())
        {
        }
        /**
         * Adds a info level message.
         *
         * Interesting events.
         * Example: User logs in, SQL logs.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function info($message, $context = array())
        {
        }
        /**
         * Adds a debug level message.
         *
         * Detailed debug information.
         *
         * @see WC_Logger::log
         *
         * @param string $message Message to log.
         * @param array  $context Log context.
         */
        public function debug($message, $context = array())
        {
        }
        /**
         * Clear entries for a chosen file/source.
         *
         * @param string $source Source/handle to clear.
         * @return bool
         */
        public function clear($source = '')
        {
        }
        /**
         * Clear all logs older than a defined number of days. Defaults to 30 days.
         *
         * @since 3.4.0
         */
        public function clear_expired_logs()
        {
        }
    }
    /**
     * Handles deprecation notices and triggering of legacy filter hooks
     */
    class WC_Deprecated_Filter_Hooks extends \WC_Deprecated_Hooks
    {
        /**
         * Array of deprecated hooks we need to handle.
         * Format of 'new' => 'old'.
         *
         * @var array
         */
        protected $deprecated_hooks = array('woocommerce_structured_data_order' => 'woocommerce_email_order_schema_markup', 'woocommerce_add_to_cart_fragments' => 'add_to_cart_fragments', 'woocommerce_add_to_cart_redirect' => 'add_to_cart_redirect', 'woocommerce_product_get_width' => 'woocommerce_product_width', 'woocommerce_product_get_height' => 'woocommerce_product_height', 'woocommerce_product_get_length' => 'woocommerce_product_length', 'woocommerce_product_get_weight' => 'woocommerce_product_weight', 'woocommerce_product_get_sku' => 'woocommerce_get_sku', 'woocommerce_product_get_price' => 'woocommerce_get_price', 'woocommerce_product_get_regular_price' => 'woocommerce_get_regular_price', 'woocommerce_product_get_sale_price' => 'woocommerce_get_sale_price', 'woocommerce_product_get_tax_class' => 'woocommerce_product_tax_class', 'woocommerce_product_get_stock_quantity' => 'woocommerce_get_stock_quantity', 'woocommerce_product_get_attributes' => 'woocommerce_get_product_attributes', 'woocommerce_product_get_gallery_image_ids' => 'woocommerce_product_gallery_attachment_ids', 'woocommerce_product_get_review_count' => 'woocommerce_product_review_count', 'woocommerce_product_get_downloads' => 'woocommerce_product_files', 'woocommerce_order_get_currency' => 'woocommerce_get_currency', 'woocommerce_order_get_discount_total' => 'woocommerce_order_amount_discount_total', 'woocommerce_order_get_discount_tax' => 'woocommerce_order_amount_discount_tax', 'woocommerce_order_get_shipping_total' => 'woocommerce_order_amount_shipping_total', 'woocommerce_order_get_shipping_tax' => 'woocommerce_order_amount_shipping_tax', 'woocommerce_order_get_cart_tax' => 'woocommerce_order_amount_cart_tax', 'woocommerce_order_get_total' => 'woocommerce_order_amount_total', 'woocommerce_order_get_total_tax' => 'woocommerce_order_amount_total_tax', 'woocommerce_order_get_total_discount' => 'woocommerce_order_amount_total_discount', 'woocommerce_order_get_subtotal' => 'woocommerce_order_amount_subtotal', 'woocommerce_order_get_tax_totals' => 'woocommerce_order_tax_totals', 'woocommerce_get_order_refund_get_amount' => 'woocommerce_refund_amount', 'woocommerce_get_order_refund_get_reason' => 'woocommerce_refund_reason', 'default_checkout_billing_country' => 'default_checkout_country', 'default_checkout_billing_state' => 'default_checkout_state', 'default_checkout_billing_postcode' => 'default_checkout_postcode', 'woocommerce_system_status_environment_rows' => 'woocommerce_debug_posting', 'woocommerce_credit_card_type_labels' => 'wocommerce_credit_card_type_labels', 'woocommerce_settings_tabs_advanced' => 'woocommerce_settings_tabs_api', 'woocommerce_settings_advanced' => 'woocommerce_settings_api');
        /**
         * Array of versions on each hook has been deprecated.
         *
         * @var array
         */
        protected $deprecated_version = array('woocommerce_email_order_schema_markup' => '3.0.0', 'add_to_cart_fragments' => '3.0.0', 'add_to_cart_redirect' => '3.0.0', 'woocommerce_product_width' => '3.0.0', 'woocommerce_product_height' => '3.0.0', 'woocommerce_product_length' => '3.0.0', 'woocommerce_product_weight' => '3.0.0', 'woocommerce_get_sku' => '3.0.0', 'woocommerce_get_price' => '3.0.0', 'woocommerce_get_regular_price' => '3.0.0', 'woocommerce_get_sale_price' => '3.0.0', 'woocommerce_product_tax_class' => '3.0.0', 'woocommerce_get_stock_quantity' => '3.0.0', 'woocommerce_get_product_attributes' => '3.0.0', 'woocommerce_product_gallery_attachment_ids' => '3.0.0', 'woocommerce_product_review_count' => '3.0.0', 'woocommerce_product_files' => '3.0.0', 'woocommerce_get_currency' => '3.0.0', 'woocommerce_order_amount_discount_total' => '3.0.0', 'woocommerce_order_amount_discount_tax' => '3.0.0', 'woocommerce_order_amount_shipping_total' => '3.0.0', 'woocommerce_order_amount_shipping_tax' => '3.0.0', 'woocommerce_order_amount_cart_tax' => '3.0.0', 'woocommerce_order_amount_total' => '3.0.0', 'woocommerce_order_amount_total_tax' => '3.0.0', 'woocommerce_order_amount_total_discount' => '3.0.0', 'woocommerce_order_amount_subtotal' => '3.0.0', 'woocommerce_order_tax_totals' => '3.0.0', 'woocommerce_refund_amount' => '3.0.0', 'woocommerce_refund_reason' => '3.0.0', 'default_checkout_country' => '3.0.0', 'default_checkout_state' => '3.0.0', 'default_checkout_postcode' => '3.0.0', 'woocommerce_debug_posting' => '3.0.0', 'wocommerce_credit_card_type_labels' => '3.0.0', 'woocommerce_settings_tabs_api' => '3.4.0', 'woocommerce_settings_api' => '3.4.0');
        /**
         * Hook into the new hook so we can handle deprecated hooks once fired.
         *
         * @param string $hook_name Hook name.
         */
        public function hook_in($hook_name)
        {
        }
        /**
         * If the old hook is in-use, trigger it.
         *
         * @param  string $new_hook          New hook name.
         * @param  string $old_hook          Old hook name.
         * @param  array  $new_callback_args New callback args.
         * @param  mixed  $return_value      Returned value.
         * @return mixed
         */
        public function handle_deprecated_hook($new_hook, $old_hook, $new_callback_args, $return_value)
        {
        }
        /**
         * Fire off a legacy hook with it's args.
         *
         * @param  string $old_hook          Old hook name.
         * @param  array  $new_callback_args New callback args.
         * @return mixed
         */
        protected function trigger_hook($old_hook, $new_callback_args)
        {
        }
    }
    /**
     * Product category dropdown walker class.
     */
    class WC_Product_Cat_Dropdown_Walker extends \Walker
    {
        /**
         * What the class handles.
         *
         * @var string
         */
        public $tree_type = 'category';
        /**
         * DB fields to use.
         *
         * @var array
         */
        public $db_fields = array('parent' => 'parent', 'id' => 'term_id', 'slug' => 'slug');
        /**
         * Starts the list before the elements are added.
         *
         * @see Walker::start_el()
         * @since 2.1.0
         *
         * @param string $output            Passed by reference. Used to append additional content.
         * @param object $cat               Category.
         * @param int    $depth             Depth of category in reference to parents.
         * @param array  $args              Arguments.
         * @param int    $current_object_id Current object ID.
         */
        public function start_el(&$output, $cat, $depth = 0, $args = array(), $current_object_id = 0)
        {
        }
        /**
         * Traverse elements to create list from elements.
         *
         * Display one element if the element doesn't have any children otherwise,
         * display the element and its children. Will only traverse up to the max.
         * depth and no ignore elements under that depth. It is possible to set the.
         * max depth to include all depths, see walk() method.
         *
         * This method shouldn't be called directly, use the walk() method instead.
         *
         * @since 2.5.0
         *
         * @param object $element           Data object.
         * @param array  $children_elements List of elements to continue traversing.
         * @param int    $max_depth         Max depth to traverse.
         * @param int    $depth             Depth of current element.
         * @param array  $args              Arguments.
         * @param string $output            Passed by reference. Used to append additional content.
         * @return null Null on failure with no changes to parameters.
         */
        public function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output)
        {
        }
    }
    /**
     * Product cat list walker class.
     */
    class WC_Product_Cat_List_Walker extends \Walker
    {
        /**
         * What the class handles.
         *
         * @var string
         */
        public $tree_type = 'product_cat';
        /**
         * DB fields to use.
         *
         * @var array
         */
        public $db_fields = array('parent' => 'parent', 'id' => 'term_id', 'slug' => 'slug');
        /**
         * Starts the list before the elements are added.
         *
         * @see Walker::start_lvl()
         * @since 2.1.0
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param int    $depth Depth of category. Used for tab indentation.
         * @param array  $args Will only append content if style argument value is 'list'.
         */
        public function start_lvl(&$output, $depth = 0, $args = array())
        {
        }
        /**
         * Ends the list of after the elements are added.
         *
         * @see Walker::end_lvl()
         * @since 2.1.0
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param int    $depth Depth of category. Used for tab indentation.
         * @param array  $args Will only append content if style argument value is 'list'.
         */
        public function end_lvl(&$output, $depth = 0, $args = array())
        {
        }
        /**
         * Start the element output.
         *
         * @see Walker::start_el()
         * @since 2.1.0
         *
         * @param string  $output            Passed by reference. Used to append additional content.
         * @param object  $cat               Category.
         * @param int     $depth             Depth of category in reference to parents.
         * @param array   $args              Arguments.
         * @param integer $current_object_id Current object ID.
         */
        public function start_el(&$output, $cat, $depth = 0, $args = array(), $current_object_id = 0)
        {
        }
        /**
         * Ends the element output, if needed.
         *
         * @see Walker::end_el()
         * @since 2.1.0
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param object $cat    Category.
         * @param int    $depth  Depth of category. Not used.
         * @param array  $args   Only uses 'list' for whether should append to output.
         */
        public function end_el(&$output, $cat, $depth = 0, $args = array())
        {
        }
        /**
         * Traverse elements to create list from elements.
         *
         * Display one element if the element doesn't have any children otherwise,
         * display the element and its children. Will only traverse up to the max.
         * depth and no ignore elements under that depth. It is possible to set the.
         * max depth to include all depths, see walk() method.
         *
         * This method shouldn't be called directly, use the walk() method instead.
         *
         * @since 2.5.0
         *
         * @param object $element           Data object.
         * @param array  $children_elements List of elements to continue traversing.
         * @param int    $max_depth         Max depth to traverse.
         * @param int    $depth             Depth of current element.
         * @param array  $args              Arguments.
         * @param string $output            Passed by reference. Used to append additional content.
         * @return null Null on failure with no changes to parameters.
         */
        public function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output)
        {
        }
    }
    /**
     * Customer download class.
     */
    class WC_Customer_Download extends \WC_Data implements \ArrayAccess
    {
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'customer_download';
        /**
         * Download Data array.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('download_id' => '', 'product_id' => 0, 'user_id' => 0, 'user_email' => '', 'order_id' => 0, 'order_key' => '', 'downloads_remaining' => '', 'access_granted' => \null, 'access_expires' => \null, 'download_count' => 0);
        /**
         * Constructor.
         *
         * @param int|object|array $download Download ID, instance or data.
         */
        public function __construct($download = 0)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get download id.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_download_id($context = 'view')
        {
        }
        /**
         * Get product id.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_product_id($context = 'view')
        {
        }
        /**
         * Get user id.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_user_id($context = 'view')
        {
        }
        /**
         * Get user_email.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_user_email($context = 'view')
        {
        }
        /**
         * Get order_id.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_order_id($context = 'view')
        {
        }
        /**
         * Get order_key.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_order_key($context = 'view')
        {
        }
        /**
         * Get downloads_remaining.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer|string
         */
        public function get_downloads_remaining($context = 'view')
        {
        }
        /**
         * Get access_granted.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|null Object if the date is set or null if there is no date.
         */
        public function get_access_granted($context = 'view')
        {
        }
        /**
         * Get access_expires.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|null Object if the date is set or null if there is no date.
         */
        public function get_access_expires($context = 'view')
        {
        }
        /**
         * Get download_count.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_download_count($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set download id.
         *
         * @param string $value Download ID.
         */
        public function set_download_id($value)
        {
        }
        /**
         * Set product id.
         *
         * @param int $value Product ID.
         */
        public function set_product_id($value)
        {
        }
        /**
         * Set user id.
         *
         * @param int $value User ID.
         */
        public function set_user_id($value)
        {
        }
        /**
         * Set user_email.
         *
         * @param int $value User email.
         */
        public function set_user_email($value)
        {
        }
        /**
         * Set order_id.
         *
         * @param int $value Order ID.
         */
        public function set_order_id($value)
        {
        }
        /**
         * Set order_key.
         *
         * @param string $value Order key.
         */
        public function set_order_key($value)
        {
        }
        /**
         * Set downloads_remaining.
         *
         * @param integer|string $value Amount of downloads remaining.
         */
        public function set_downloads_remaining($value)
        {
        }
        /**
         * Set access_granted.
         *
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_access_granted($date = \null)
        {
        }
        /**
         * Set access_expires.
         *
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_access_expires($date = \null)
        {
        }
        /**
         * Set download_count.
         *
         * @param int $value Download count.
         */
        public function set_download_count($value)
        {
        }
        /**
         * Track a download on this permission.
         *
         * @since 3.3.0
         * @throws Exception When permission ID is invalid.
         * @param int    $user_id         Id of the user performing the download.
         * @param string $user_ip_address IP Address of the user performing the download.
         */
        public function track_download($user_id = \null, $user_ip_address = \null)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | ArrayAccess/Backwards compatibility.
        |--------------------------------------------------------------------------
        */
        /**
         * OffsetGet.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet.
         *
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset
         *
         * @param string $offset Offset.
         */
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
        /**
         * Magic __isset method for backwards compatibility. Legacy properties which could be accessed directly in the past.
         *
         * @param  string $key Key name.
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Magic __get method for backwards compatibility. Maps legacy vars to new getters.
         *
         * @param  string $key Key name.
         * @return mixed
         */
        public function __get($key)
        {
        }
    }
    /**
     * WC_API class.
     */
    class WC_API extends \WC_Legacy_API
    {
        /**
         * Init the API by setting up action and filter hooks.
         */
        public function init()
        {
        }
        /**
         * Get the version of the REST API package being ran.
         *
         * @since 3.7.0
         * @return string|null
         */
        public function get_rest_api_package_version()
        {
        }
        /**
         * Get the version of the REST API package being ran.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_rest_api_package_path()
        {
        }
        /**
         * Return if the rest API classes were already loaded.
         *
         * @since 3.7.0
         * @return boolean
         */
        protected function is_rest_api_loaded()
        {
        }
        /**
         * Get data from a WooCommerce API endpoint.
         *
         * @since 3.7.0
         * @param string $endpoint Endpoint.
         * @param array  $params Params to passwith request.
         * @return array|\WP_Error
         */
        public function get_endpoint_data($endpoint, $params = array())
        {
        }
        /**
         * Add new query vars.
         *
         * @since 2.0
         * @param array $vars Query vars.
         * @return string[]
         */
        public function add_query_vars($vars)
        {
        }
        /**
         * WC API for payment gateway IPNs, etc.
         *
         * @since 2.0
         */
        public static function add_endpoint()
        {
        }
        /**
         * API request - Trigger any API requests.
         *
         * @since   2.0
         * @version 2.4
         */
        public function handle_api_requests()
        {
        }
        /**
         * Register WC settings from WP-API to the REST API.
         *
         * @since  3.0.0
         */
        public function register_wp_admin_settings()
        {
        }
    }
    /**
     * WC_Cart_Totals class.
     *
     * @since 3.2.0
     */
    final class WC_Cart_Totals
    {
        /**
         * Reference to cart object.
         *
         * @since 3.2.0
         * @var WC_Cart
         */
        protected $cart;
        /**
         * Reference to customer object.
         *
         * @since 3.2.0
         * @var array
         */
        protected $customer;
        /**
         * Line items to calculate.
         *
         * @since 3.2.0
         * @var array
         */
        protected $items = array();
        /**
         * Fees to calculate.
         *
         * @since 3.2.0
         * @var array
         */
        protected $fees = array();
        /**
         * Shipping costs.
         *
         * @since 3.2.0
         * @var array
         */
        protected $shipping = array();
        /**
         * Applied coupon objects.
         *
         * @since 3.2.0
         * @var array
         */
        protected $coupons = array();
        /**
         * Item/coupon discount totals.
         *
         * @since 3.2.0
         * @var array
         */
        protected $coupon_discount_totals = array();
        /**
         * Item/coupon discount tax totals.
         *
         * @since 3.2.0
         * @var array
         */
        protected $coupon_discount_tax_totals = array();
        /**
         * Should taxes be calculated?
         *
         * @var boolean
         */
        protected $calculate_tax = \true;
        /**
         * Stores totals.
         *
         * @since 3.2.0
         * @var array
         */
        protected $totals = array('fees_total' => 0, 'fees_total_tax' => 0, 'items_subtotal' => 0, 'items_subtotal_tax' => 0, 'items_total' => 0, 'items_total_tax' => 0, 'total' => 0, 'shipping_total' => 0, 'shipping_tax_total' => 0, 'discounts_total' => 0);
        /**
         * Sets up the items provided, and calculate totals.
         *
         * @since 3.2.0
         * @throws Exception If missing WC_Cart object.
         * @param WC_Cart $cart Cart object to calculate totals for.
         */
        public function __construct(&$cart = \null)
        {
        }
        /**
         * Run all calculations methods on the given items in sequence.
         *
         * @since 3.2.0
         */
        protected function calculate()
        {
        }
        /**
         * Get default blank set of props used per item.
         *
         * @since  3.2.0
         * @return array
         */
        protected function get_default_item_props()
        {
        }
        /**
         * Get default blank set of props used per fee.
         *
         * @since  3.2.0
         * @return array
         */
        protected function get_default_fee_props()
        {
        }
        /**
         * Get default blank set of props used per shipping row.
         *
         * @since  3.2.0
         * @return array
         */
        protected function get_default_shipping_props()
        {
        }
        /**
         * Should we round at subtotal level only?
         *
         * @return bool
         */
        protected function round_at_subtotal()
        {
        }
        /**
         * Handles a cart or order object passed in for calculation. Normalises data
         * into the same format for use by this class.
         *
         * Each item is made up of the following props, in addition to those returned by get_default_item_props() for totals.
         *  - key: An identifier for the item (cart item key or line item ID).
         *  - cart_item: For carts, the cart item from the cart which may include custom data.
         *  - quantity: The qty for this line.
         *  - price: The line price in cents.
         *  - product: The product object this cart item is for.
         *
         * @since 3.2.0
         */
        protected function get_items_from_cart()
        {
        }
        /**
         * Get item costs grouped by tax class.
         *
         * @since  3.2.0
         * @return array
         */
        protected function get_tax_class_costs()
        {
        }
        /**
         * Get fee objects from the cart. Normalises data
         * into the same format for use by this class.
         *
         * @since 3.2.0
         */
        protected function get_fees_from_cart()
        {
        }
        /**
         * Get shipping methods from the cart and normalise.
         *
         * @since 3.2.0
         */
        protected function get_shipping_from_cart()
        {
        }
        /**
         * Return array of coupon objects from the cart. Normalises data
         * into the same format for use by this class.
         *
         * @since  3.2.0
         */
        protected function get_coupons_from_cart()
        {
        }
        /**
         * Sort coupons so discounts apply consistently across installs.
         *
         * In order of priority;
         *  - sort param
         *  - usage restriction
         *  - coupon value
         *  - ID
         *
         * @param WC_Coupon $a Coupon object.
         * @param WC_Coupon $b Coupon object.
         * @return int
         */
        protected function sort_coupons_callback($a, $b)
        {
        }
        /**
         * Ran to remove all base taxes from an item. Used when prices include tax, and the customer is tax exempt.
         *
         * @since 3.2.2
         * @param object $item Item to adjust the prices of.
         * @return object
         */
        protected function remove_item_base_taxes($item)
        {
        }
        /**
         * Only ran if woocommerce_adjust_non_base_location_prices is true.
         *
         * If the customer is outside of the base location, this removes the base
         * taxes. This is off by default unless the filter is used.
         *
         * Uses edit context so unfiltered tax class is returned.
         *
         * @since 3.2.0
         * @param object $item Item to adjust the prices of.
         * @return object
         */
        protected function adjust_non_base_location_price($item)
        {
        }
        /**
         * Get discounted price of an item with precision (in cents).
         *
         * @since  3.2.0
         * @param  object $item_key Item to get the price of.
         * @return int
         */
        protected function get_discounted_price_in_cents($item_key)
        {
        }
        /**
         * Get tax rates for an item. Caches rates in class to avoid multiple look ups.
         *
         * @param  object $item Item to get tax rates for.
         * @return array of taxes
         */
        protected function get_item_tax_rates($item)
        {
        }
        /**
         * Get item costs grouped by tax class.
         *
         * @since  3.2.0
         * @return array
         */
        protected function get_item_costs_by_tax_class()
        {
        }
        /**
         * Get a single total with or without precision (in cents).
         *
         * @since  3.2.0
         * @param  string $key Total to get.
         * @param  bool   $in_cents Should the totals be returned in cents, or without precision.
         * @return int|float
         */
        public function get_total($key = 'total', $in_cents = \false)
        {
        }
        /**
         * Set a single total.
         *
         * @since  3.2.0
         * @param string $key Total name you want to set.
         * @param int    $total Total to set.
         */
        protected function set_total($key = 'total', $total)
        {
        }
        /**
         * Get all totals with or without precision (in cents).
         *
         * @since  3.2.0
         * @param  bool $in_cents Should the totals be returned in cents, or without precision.
         * @return array.
         */
        public function get_totals($in_cents = \false)
        {
        }
        /**
         * Get taxes merged by type.
         *
         * @since 3.2.0
         * @param  bool         $in_cents If returned value should be in cents.
         * @param  array|string $types    Types to merge and return. Defaults to all.
         * @return array
         */
        protected function get_merged_taxes($in_cents = \false, $types = array('items', 'fees', 'shipping'))
        {
        }
        /**
         * Round merged taxes.
         *
         * @since 3.5.4
         * @param array $taxes Taxes to round.
         * @return array
         */
        protected function round_merged_taxes($taxes)
        {
        }
        /**
         * Combine item taxes into a single array, preserving keys.
         *
         * @since 3.2.0
         * @param array $item_taxes Taxes to combine.
         * @return array
         */
        protected function combine_item_taxes($item_taxes)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Calculation methods.
        |--------------------------------------------------------------------------
        */
        /**
         * Calculate item totals.
         *
         * @since 3.2.0
         */
        protected function calculate_item_totals()
        {
        }
        /**
         * Subtotals are costs before discounts.
         *
         * To prevent rounding issues we need to work with the inclusive price where possible.
         * otherwise we'll see errors such as when working with a 9.99 inc price, 20% VAT which would.
         * be 8.325 leading to totals being 1p off.
         *
         * Pre tax coupons come off the price the customer thinks they are paying - tax is calculated.
         * afterwards.
         *
         * e.g. $100 bike with $10 coupon = customer pays $90 and tax worked backwards from that.
         *
         * @since 3.2.0
         */
        protected function calculate_item_subtotals()
        {
        }
        /**
         * Calculate COUPON based discounts which change item prices.
         *
         * @since 3.2.0
         * @uses  WC_Discounts class.
         */
        protected function calculate_discounts()
        {
        }
        /**
         * Triggers the cart fees API, grabs the list of fees, and calculates taxes.
         *
         * Note: This class sets the totals for the 'object' as they are calculated. This is so that APIs like the fees API can see these totals if needed.
         *
         * @since 3.2.0
         */
        protected function calculate_fee_totals()
        {
        }
        /**
         * Calculate any shipping taxes.
         *
         * @since 3.2.0
         */
        protected function calculate_shipping_totals()
        {
        }
        /**
         * Main cart totals.
         *
         * @since 3.2.0
         */
        protected function calculate_totals()
        {
        }
        /**
         * Apply rounding to an array of taxes before summing. Rounds to store DP setting, ignoring precision.
         *
         * @since  3.2.6
         * @param  float $value Tax value.
         * @return float
         */
        protected function round_line_tax($value)
        {
        }
        /**
         * Apply rounding to item subtotal before summing.
         *
         * @since 3.7.0
         * @param float $value Item subtotal value.
         * @return float
         */
        protected function round_item_subtotal($value)
        {
        }
    }
    /**
     * The WooCommerce countries class stores country/state data.
     */
    class WC_Countries
    {
        /**
         * Locales list.
         *
         * @var array
         */
        public $locale = array();
        /**
         * List of address formats for locales.
         *
         * @var array
         */
        public $address_formats = array();
        /**
         * Auto-load in-accessible properties on demand.
         *
         * @param  mixed $key Key.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Get all countries.
         *
         * @return array
         */
        public function get_countries()
        {
        }
        /**
         * Get all continents.
         *
         * @return array
         */
        public function get_continents()
        {
        }
        /**
         * Get continent code for a country code.
         *
         * @since 2.6.0
         * @param string $cc Country code.
         * @return string
         */
        public function get_continent_code_for_country($cc)
        {
        }
        /**
         * Get calling code for a country code.
         *
         * @since 3.6.0
         * @param string $cc Country code.
         * @return string|array Some countries have multiple. The code will be stripped of - and spaces and always be prefixed with +.
         */
        public function get_country_calling_code($cc)
        {
        }
        /**
         * Get continents that the store ships to.
         *
         * @since 3.6.0
         * @return array
         */
        public function get_shipping_continents()
        {
        }
        /**
         * Load the states.
         *
         * @deprecated 3.6.0 This method was used to load state files, but is no longer needed. @see get_states().
         */
        public function load_country_states()
        {
        }
        /**
         * Get the states for a country.
         *
         * @param  string $cc Country code.
         * @return false|array of states
         */
        public function get_states($cc = \null)
        {
        }
        /**
         * Get the base address (first line) for the store.
         *
         * @since 3.1.1
         * @return string
         */
        public function get_base_address()
        {
        }
        /**
         * Get the base address (second line) for the store.
         *
         * @since 3.1.1
         * @return string
         */
        public function get_base_address_2()
        {
        }
        /**
         * Get the base country for the store.
         *
         * @return string
         */
        public function get_base_country()
        {
        }
        /**
         * Get the base state for the store.
         *
         * @return string
         */
        public function get_base_state()
        {
        }
        /**
         * Get the base city for the store.
         *
         * @version 3.1.1
         * @return string
         */
        public function get_base_city()
        {
        }
        /**
         * Get the base postcode for the store.
         *
         * @since 3.1.1
         * @return string
         */
        public function get_base_postcode()
        {
        }
        /**
         * Get countries that the store sells to.
         *
         * @return array
         */
        public function get_allowed_countries()
        {
        }
        /**
         * Get countries that the store ships to.
         *
         * @return array
         */
        public function get_shipping_countries()
        {
        }
        /**
         * Get allowed country states.
         *
         * @return array
         */
        public function get_allowed_country_states()
        {
        }
        /**
         * Get shipping country states.
         *
         * @return array
         */
        public function get_shipping_country_states()
        {
        }
        /**
         * Gets an array of countries in the EU.
         *
         * MC (monaco) and IM (isle of man, part of UK) also use VAT.
         *
         * @param  string $type Type of countries to retrieve. Blank for EU member countries. eu_vat for EU VAT countries.
         * @return string[]
         */
        public function get_european_union_countries($type = '')
        {
        }
        /**
         * Gets the correct string for shipping - either 'to the' or 'to'.
         *
         * @param string $country_code Country code.
         * @return string
         */
        public function shipping_to_prefix($country_code = '')
        {
        }
        /**
         * Prefix certain countries with 'the'.
         *
         * @param string $country_code Country code.
         * @return string
         */
        public function estimated_for_prefix($country_code = '')
        {
        }
        /**
         * Correctly name tax in some countries VAT on the frontend.
         *
         * @return string
         */
        public function tax_or_vat()
        {
        }
        /**
         * Include the Inc Tax label.
         *
         * @return string
         */
        public function inc_tax_or_vat()
        {
        }
        /**
         * Include the Ex Tax label.
         *
         * @return string
         */
        public function ex_tax_or_vat()
        {
        }
        /**
         * Outputs the list of countries and states for use in dropdown boxes.
         *
         * @param string $selected_country Selected country.
         * @param string $selected_state   Selected state.
         * @param bool   $escape           If we should escape HTML.
         */
        public function country_dropdown_options($selected_country = '', $selected_state = '', $escape = \false)
        {
        }
        /**
         * Get country address formats.
         *
         * These define how addresses are formatted for display in various countries.
         *
         * @return array
         */
        public function get_address_formats()
        {
        }
        /**
         * Get country address format.
         *
         * @param  array  $args Arguments.
         * @param  string $separator How to separate address lines. @since 3.5.0.
         * @return string
         */
        public function get_formatted_address($args = array(), $separator = '<br/>')
        {
        }
        /**
         * Trim white space and commas off a line.
         *
         * @param  string $line Line.
         * @return string
         */
        private function trim_formatted_address_line($line)
        {
        }
        /**
         * Returns the fields we show by default. This can be filtered later on.
         *
         * @return array
         */
        public function get_default_address_fields()
        {
        }
        /**
         * Get JS selectors for fields which are shown/hidden depending on the locale.
         *
         * @return array
         */
        public function get_country_locale_field_selectors()
        {
        }
        /**
         * Get country locale settings.
         *
         * These locales override the default country selections after a country is chosen.
         *
         * @return array
         */
        public function get_country_locale()
        {
        }
        /**
         * Apply locale and get address fields.
         *
         * @param  mixed  $country Country.
         * @param  string $type    Address type, defaults to 'billing_'.
         * @return array
         */
        public function get_address_fields($country = '', $type = 'billing_')
        {
        }
    }
    /**
     * REST API authentication class.
     */
    class WC_REST_Authentication
    {
        /**
         * Authentication error.
         *
         * @var WP_Error
         */
        protected $error = \null;
        /**
         * Logged in user data.
         *
         * @var stdClass
         */
        protected $user = \null;
        /**
         * Current auth method.
         *
         * @var string
         */
        protected $auth_method = '';
        /**
         * Initialize authentication actions.
         */
        public function __construct()
        {
        }
        /**
         * Check if is request to our REST API.
         *
         * @return bool
         */
        protected function is_request_to_rest_api()
        {
        }
        /**
         * Authenticate user.
         *
         * @param int|false $user_id User ID if one has been determined, false otherwise.
         * @return int|false
         */
        public function authenticate($user_id)
        {
        }
        /**
         * Check for authentication error.
         *
         * @param WP_Error|null|bool $error Error data.
         * @return WP_Error|null|bool
         */
        public function check_authentication_error($error)
        {
        }
        /**
         * Set authentication error.
         *
         * @param WP_Error $error Authentication error data.
         */
        protected function set_error($error)
        {
        }
        /**
         * Get authentication error.
         *
         * @return WP_Error|null.
         */
        protected function get_error()
        {
        }
        /**
         * Basic Authentication.
         *
         * SSL-encrypted requests are not subject to sniffing or man-in-the-middle
         * attacks, so the request can be authenticated by simply looking up the user
         * associated with the given consumer key and confirming the consumer secret
         * provided is valid.
         *
         * @return int|bool
         */
        private function perform_basic_authentication()
        {
        }
        /**
         * Parse the Authorization header into parameters.
         *
         * @since 3.0.0
         *
         * @param string $header Authorization header value (not including "Authorization: " prefix).
         *
         * @return array Map of parameter values.
         */
        public function parse_header($header)
        {
        }
        /**
         * Get the authorization header.
         *
         * On certain systems and configurations, the Authorization header will be
         * stripped out by the server or PHP. Typically this is then used to
         * generate `PHP_AUTH_USER`/`PHP_AUTH_PASS` but not passed on. We use
         * `getallheaders` here to try and grab it out instead.
         *
         * @since 3.0.0
         *
         * @return string Authorization header if set.
         */
        public function get_authorization_header()
        {
        }
        /**
         * Get oAuth parameters from $_GET, $_POST or request header.
         *
         * @since 3.0.0
         *
         * @return array|WP_Error
         */
        public function get_oauth_parameters()
        {
        }
        /**
         * Perform OAuth 1.0a "one-legged" (http://oauthbible.com/#oauth-10a-one-legged) authentication for non-SSL requests.
         *
         * This is required so API credentials cannot be sniffed or intercepted when making API requests over plain HTTP.
         *
         * This follows the spec for simple OAuth 1.0a authentication (RFC 5849) as closely as possible, with two exceptions:
         *
         * 1) There is no token associated with request/responses, only consumer keys/secrets are used.
         *
         * 2) The OAuth parameters are included as part of the request query string instead of part of the Authorization header,
         *    This is because there is no cross-OS function within PHP to get the raw Authorization header.
         *
         * @link http://tools.ietf.org/html/rfc5849 for the full spec.
         *
         * @return int|bool
         */
        private function perform_oauth_authentication()
        {
        }
        /**
         * Verify that the consumer-provided request signature matches our generated signature,
         * this ensures the consumer has a valid key/secret.
         *
         * @param stdClass $user   User data.
         * @param array    $params The request parameters.
         * @return true|WP_Error
         */
        private function check_oauth_signature($user, $params)
        {
        }
        /**
         * Creates an array of urlencoded strings out of each array key/value pairs.
         *
         * @param  array  $params       Array of parameters to convert.
         * @param  array  $query_params Array to extend.
         * @param  string $key          Optional Array key to append.
         * @return string               Array of urlencoded strings.
         */
        private function join_with_equals_sign($params, $query_params = array(), $key = '')
        {
        }
        /**
         * Normalize each parameter by assuming each parameter may have already been
         * encoded, so attempt to decode, and then re-encode according to RFC 3986.
         *
         * Note both the key and value is normalized so a filter param like:
         *
         * 'filter[period]' => 'week'
         *
         * is encoded to:
         *
         * 'filter%255Bperiod%255D' => 'week'
         *
         * This conforms to the OAuth 1.0a spec which indicates the entire query string
         * should be URL encoded.
         *
         * @see rawurlencode()
         * @param array $parameters Un-normalized parameters.
         * @return array Normalized parameters.
         */
        private function normalize_parameters($parameters)
        {
        }
        /**
         * Verify that the timestamp and nonce provided with the request are valid. This prevents replay attacks where
         * an attacker could attempt to re-send an intercepted request at a later time.
         *
         * - A timestamp is valid if it is within 15 minutes of now.
         * - A nonce is valid if it has not been used within the last 15 minutes.
         *
         * @param stdClass $user      User data.
         * @param int      $timestamp The unix timestamp for when the request was made.
         * @param string   $nonce     A unique (for the given user) 32 alphanumeric string, consumer-generated.
         * @return bool|WP_Error
         */
        private function check_oauth_timestamp_and_nonce($user, $timestamp, $nonce)
        {
        }
        /**
         * Return the user data for the given consumer_key.
         *
         * @param string $consumer_key Consumer key.
         * @return array
         */
        private function get_user_data_by_consumer_key($consumer_key)
        {
        }
        /**
         * Check that the API keys provided have the proper key-specific permissions to either read or write API resources.
         *
         * @param string $method Request method.
         * @return bool|WP_Error
         */
        private function check_permissions($method)
        {
        }
        /**
         * Updated API Key last access datetime.
         */
        private function update_last_access()
        {
        }
        /**
         * If the consumer_key and consumer_secret $_GET parameters are NOT provided
         * and the Basic auth headers are either not present or the consumer secret does not match the consumer
         * key provided, then return the correct Basic headers and an error message.
         *
         * @param WP_REST_Response $response Current response being served.
         * @return WP_REST_Response
         */
        public function send_unauthorized_headers($response)
        {
        }
        /**
         * Check for user permissions and register last access.
         *
         * @param mixed           $result  Response to replace the requested version with.
         * @param WP_REST_Server  $server  Server instance.
         * @param WP_REST_Request $request Request used to generate the response.
         * @return mixed
         */
        public function check_user_permissions($result, $server, $request)
        {
        }
    }
    /**
     * Order query class.
     */
    class WC_Order_Query extends \WC_Object_Query
    {
        /**
         * Valid query vars for orders.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get orders matching the current query vars.
         *
         * @return array|object of WC_Order objects
         *
         * @throws Exception When WC_Data_Store validation fails.
         */
        public function get_orders()
        {
        }
    }
    /**
     * Comments class.
     */
    class WC_Comments
    {
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * See if comments are open.
         *
         * @since  3.1.0
         * @param  bool $open    Whether the current post is open for comments.
         * @param  int  $post_id Post ID.
         * @return bool
         */
        public static function comments_open($open, $post_id)
        {
        }
        /**
         * Exclude order comments from queries and RSS.
         *
         * This code should exclude shop_order comments from queries. Some queries (like the recent comments widget on the dashboard) are hardcoded.
         * and are not filtered, however, the code current_user_can( 'read_post', $comment->comment_post_ID ) should keep them safe since only admin and.
         * shop managers can view orders anyway.
         *
         * The frontend view order pages get around this filter by using remove_filter('comments_clauses', array( 'WC_Comments' ,'exclude_order_comments'), 10, 1 );
         *
         * @param  array $clauses A compacted array of comment query clauses.
         * @return array
         */
        public static function exclude_order_comments($clauses)
        {
        }
        /**
         * Exclude order comments from feed.
         *
         * @deprecated 3.1
         * @param mixed $join Deprecated.
         */
        public static function exclude_order_comments_from_feed_join($join)
        {
        }
        /**
         * Exclude order comments from queries and RSS.
         *
         * @param  string $where The WHERE clause of the query.
         * @return string
         */
        public static function exclude_order_comments_from_feed_where($where)
        {
        }
        /**
         * Exclude webhook comments from queries and RSS.
         *
         * @since  2.2
         * @param  array $clauses A compacted array of comment query clauses.
         * @return array
         */
        public static function exclude_webhook_comments($clauses)
        {
        }
        /**
         * Exclude webhooks comments from feed.
         *
         * @deprecated 3.1
         * @param mixed $join Deprecated.
         */
        public static function exclude_webhook_comments_from_feed_join($join)
        {
        }
        /**
         * Exclude webhook comments from queries and RSS.
         *
         * @since  2.1
         * @param  string $where The WHERE clause of the query.
         * @return string
         */
        public static function exclude_webhook_comments_from_feed_where($where)
        {
        }
        /**
         * Validate the comment ratings.
         *
         * @param  array $comment_data Comment data.
         * @return array
         */
        public static function check_comment_rating($comment_data)
        {
        }
        /**
         * Rating field for comments.
         *
         * @param int $comment_id Comment ID.
         */
        public static function add_comment_rating($comment_id)
        {
        }
        /**
         * Modify recipient of review email.
         *
         * @param array $emails     Emails.
         * @param int   $comment_id Comment ID.
         * @return array
         */
        public static function comment_moderation_recipients($emails, $comment_id)
        {
        }
        /**
         * Ensure product average rating and review count is kept up to date.
         *
         * @param int $post_id Post ID.
         */
        public static function clear_transients($post_id)
        {
        }
        /**
         * Delete comments count cache whenever there is
         * new comment or the status of a comment changes. Cache
         * will be regenerated next time WC_Comments::wp_count_comments()
         * is called.
         */
        public static function delete_comments_count_cache()
        {
        }
        /**
         * Remove order notes and webhook delivery logs from wp_count_comments().
         *
         * @since  2.2
         * @param  object $stats   Comment stats.
         * @param  int    $post_id Post ID.
         * @return object
         */
        public static function wp_count_comments($stats, $post_id)
        {
        }
        /**
         * Make sure WP displays avatars for comments with the `review` type.
         *
         * @since  2.3
         * @param  array $comment_types Comment types.
         * @return array
         */
        public static function add_avatar_for_review_comment_type($comment_types)
        {
        }
        /**
         * Determine if a review is from a verified owner at submission.
         *
         * @param int $comment_id Comment ID.
         * @return bool
         */
        public static function add_comment_purchase_verification($comment_id)
        {
        }
        /**
         * Get product rating for a product. Please note this is not cached.
         *
         * @since 3.0.0
         * @param WC_Product $product Product instance.
         * @return float
         */
        public static function get_average_rating_for_product(&$product)
        {
        }
        /**
         * Get product review count for a product (not replies). Please note this is not cached.
         *
         * @since 3.0.0
         * @param WC_Product $product Product instance.
         * @return int
         */
        public static function get_review_count_for_product(&$product)
        {
        }
        /**
         * Get product rating count for a product. Please note this is not cached.
         *
         * @since 3.0.0
         * @param WC_Product $product Product instance.
         * @return int[]
         */
        public static function get_rating_counts_for_product(&$product)
        {
        }
        /**
         * Update comment type of product reviews.
         *
         * @since 3.5.0
         * @param array $comment_data Comment data.
         * @return array
         */
        public static function update_comment_type($comment_data)
        {
        }
    }
    /**
     * Payment tokens class.
     */
    class WC_Payment_Tokens
    {
        /**
         * Gets valid tokens from the database based on user defined criteria.
         *
         * @since  2.6.0
         * @param  array $args Query argyments {
         *     Array of query parameters.
         *
         *     @type string $token_id   Token ID.
         *     @type string $user_id    User ID.
         *     @type string $gateway_id Gateway ID.
         *     @type string $type       Token type.
         * }
         * @return WC_Payment_Token[]
         */
        public static function get_tokens($args)
        {
        }
        /**
         * Returns an array of payment token objects associated with the passed customer ID.
         *
         * @since 2.6.0
         * @param  int    $customer_id Customer ID.
         * @param  string $gateway_id  Optional Gateway ID for getting tokens for a specific gateway.
         * @return WC_Payment_Token[]  Array of token objects.
         */
        public static function get_customer_tokens($customer_id, $gateway_id = '')
        {
        }
        /**
         * Returns a customers default token or NULL if there is no default token.
         *
         * @since  2.6.0
         * @param  int $customer_id Customer ID.
         * @return WC_Payment_Token|null
         */
        public static function get_customer_default_token($customer_id)
        {
        }
        /**
         * Returns an array of payment token objects associated with the passed order ID.
         *
         * @since 2.6.0
         * @param int $order_id       Order ID.
         * @return WC_Payment_Token[] Array of token objects.
         */
        public static function get_order_tokens($order_id)
        {
        }
        /**
         * Get a token object by ID.
         *
         * @since 2.6.0
         *
         * @param int    $token_id Token ID.
         * @param object $token_result Token result.
         * @return null|WC_Payment_Token Returns a valid payment token or null if no token can be found.
         */
        public static function get($token_id, $token_result = \null)
        {
        }
        /**
         * Remove a payment token from the database by ID.
         *
         * @since 2.6.0
         * @param int $token_id Token ID.
         */
        public static function delete($token_id)
        {
        }
        /**
         * Loops through all of a users payment tokens and sets is_default to false for all but a specific token.
         *
         * @since 2.6.0
         * @param int $user_id  User to set a default for.
         * @param int $token_id The ID of the token that should be default.
         */
        public static function set_users_default($user_id, $token_id)
        {
        }
        /**
         * Returns what type (credit card, echeck, etc) of token a token is by ID.
         *
         * @since  2.6.0
         * @param  int $token_id Token ID.
         * @return string        Type.
         */
        public static function get_token_type_by_id($token_id)
        {
        }
    }
    /**
     * Emails class.
     */
    class WC_Emails
    {
        /**
         * Array of email notification classes
         *
         * @var WC_Email[]
         */
        public $emails = array();
        /**
         * The single instance of the class
         *
         * @var WC_Emails
         */
        protected static $_instance = \null;
        /**
         * Background emailer class.
         *
         * @var WC_Background_Emailer
         */
        protected static $background_emailer = \null;
        /**
         * Main WC_Emails Instance.
         *
         * Ensures only one instance of WC_Emails is loaded or can be loaded.
         *
         * @since 2.1
         * @static
         * @return WC_Emails Main instance
         */
        public static function instance()
        {
        }
        /**
         * Cloning is forbidden.
         *
         * @since 2.1
         */
        public function __clone()
        {
        }
        /**
         * Unserializing instances of this class is forbidden.
         *
         * @since 2.1
         */
        public function __wakeup()
        {
        }
        /**
         * Hook in all transactional emails.
         */
        public static function init_transactional_emails()
        {
        }
        /**
         * Queues transactional email so it's not sent in current request if enabled,
         * otherwise falls back to send now.
         */
        public static function queue_transactional_email()
        {
        }
        /**
         * Init the mailer instance and call the notifications for the current filter.
         *
         * @internal
         *
         * @param string $filter Filter name.
         * @param array  $args Email args (default: []).
         */
        public static function send_queued_transactional_email($filter = '', $args = array())
        {
        }
        /**
         * Init the mailer instance and call the notifications for the current filter.
         *
         * @internal
         *
         * @param array $args Email args (default: []).
         */
        public static function send_transactional_email($args = array())
        {
        }
        /**
         * Constructor for the email class hooks in all emails that can be sent.
         */
        public function __construct()
        {
        }
        /**
         * Init email classes.
         */
        public function init()
        {
        }
        /**
         * Return the email classes - used in admin to load settings.
         *
         * @return WC_Email[]
         */
        public function get_emails()
        {
        }
        /**
         * Get from name for email.
         *
         * @return string
         */
        public function get_from_name()
        {
        }
        /**
         * Get from email address.
         *
         * @return string
         */
        public function get_from_address()
        {
        }
        /**
         * Get the email header.
         *
         * @param mixed $email_heading Heading for the email.
         */
        public function email_header($email_heading)
        {
        }
        /**
         * Get the email footer.
         */
        public function email_footer()
        {
        }
        /**
         * Replace placeholder text in strings.
         *
         * @since  3.7.0
         * @param  string $string Email footer text.
         * @return string         Email footer text with any replacements done.
         */
        public function replace_placeholders($string)
        {
        }
        /**
         * Filter callback to replace {site_title} in email footer
         *
         * @since  3.3.0
         * @deprecated 3.7.0
         * @param  string $string Email footer text.
         * @return string         Email footer text with any replacements done.
         */
        public function email_footer_replace_site_title($string)
        {
        }
        /**
         * Wraps a message in the woocommerce mail template.
         *
         * @param string $email_heading Heading text.
         * @param string $message       Email message.
         * @param bool   $plain_text    Set true to send as plain text. Default to false.
         *
         * @return string
         */
        public function wrap_message($email_heading, $message, $plain_text = \false)
        {
        }
        /**
         * Send the email.
         *
         * @param mixed  $to          Receiver.
         * @param mixed  $subject     Email subject.
         * @param mixed  $message     Message.
         * @param string $headers     Email headers (default: "Content-Type: text/html\r\n").
         * @param string $attachments Attachments (default: "").
         * @return bool
         */
        public function send($to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = '')
        {
        }
        /**
         * Prepare and send the customer invoice email on demand.
         *
         * @param int|WC_Order $order Order instance or ID.
         */
        public function customer_invoice($order)
        {
        }
        /**
         * Customer new account welcome email.
         *
         * @param int   $customer_id        Customer ID.
         * @param array $new_customer_data  New customer data.
         * @param bool  $password_generated If password is generated.
         */
        public function customer_new_account($customer_id, $new_customer_data = array(), $password_generated = \false)
        {
        }
        /**
         * Show the order details table
         *
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If should sent to admin.
         * @param bool     $plain_text    If is plain text email.
         * @param string   $email         Email address.
         */
        public function order_details($order, $sent_to_admin = \false, $plain_text = \false, $email = '')
        {
        }
        /**
         * Show order downloads in a table.
         *
         * @since 3.2.0
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If should sent to admin.
         * @param bool     $plain_text    If is plain text email.
         * @param string   $email         Email address.
         */
        public function order_downloads($order, $sent_to_admin = \false, $plain_text = \false, $email = '')
        {
        }
        /**
         * Add order meta to email templates.
         *
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If should sent to admin.
         * @param bool     $plain_text    If is plain text email.
         */
        public function order_meta($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
        /**
         * Is customer detail field valid?
         *
         * @param  array $field Field data to check if is valid.
         * @return boolean
         */
        public function customer_detail_field_is_valid($field)
        {
        }
        /**
         * Allows developers to add additional customer details to templates.
         *
         * In versions prior to 3.2 this was used for notes, phone and email but this data has moved.
         *
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If should sent to admin.
         * @param bool     $plain_text    If is plain text email.
         */
        public function customer_details($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
        /**
         * Get the email addresses.
         *
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If should sent to admin.
         * @param bool     $plain_text    If is plain text email.
         */
        public function email_addresses($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
        /**
         * Get blog name formatted for emails.
         *
         * @return string
         */
        private function get_blogname()
        {
        }
        /**
         * Low stock notification email.
         *
         * @param WC_Product $product Product instance.
         */
        public function low_stock($product)
        {
        }
        /**
         * No stock notification email.
         *
         * @param WC_Product $product Product instance.
         */
        public function no_stock($product)
        {
        }
        /**
         * Backorder notification email.
         *
         * @param array $args Arguments.
         */
        public function backorder($args)
        {
        }
        /**
         * Adds Schema.org markup for order in JSON-LD format.
         *
         * @deprecated 3.0.0
         * @see WC_Structured_Data::generate_order_data()
         *
         * @since 2.6.0
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If should sent to admin.
         * @param bool     $plain_text    If is plain text email.
         */
        public function order_schema_markup($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
    }
    /**
     * WC_Cart_Session class.
     *
     * @since 3.2.0
     */
    final class WC_Cart_Session
    {
        /**
         * Reference to cart object.
         *
         * @since 3.2.0
         * @var WC_Cart
         */
        protected $cart;
        /**
         * Sets up the items provided, and calculate totals.
         *
         * @since 3.2.0
         * @throws Exception If missing WC_Cart object.
         *
         * @param WC_Cart $cart Cart object to calculate totals for.
         */
        public function __construct(&$cart)
        {
        }
        /**
         * Register methods for this object on the appropriate WordPress hooks.
         */
        public function init()
        {
        }
        /**
         * Get the cart data from the PHP session and store it in class variables.
         *
         * @since 3.2.0
         */
        public function get_cart_from_session()
        {
        }
        /**
         * Destroy cart session data.
         *
         * @since 3.2.0
         */
        public function destroy_cart_session()
        {
        }
        /**
         * Will set cart cookies if needed and when possible.
         *
         * @since 3.2.0
         */
        public function maybe_set_cart_cookies()
        {
        }
        /**
         * Sets the php session data for the cart and coupons.
         */
        public function set_session()
        {
        }
        /**
         * Returns the contents of the cart in an array without the 'data' element.
         *
         * @return array contents of the cart
         */
        public function get_cart_for_session()
        {
        }
        /**
         * Save the persistent cart when the cart is updated.
         */
        public function persistent_cart_update()
        {
        }
        /**
         * Delete the persistent cart permanently.
         */
        public function persistent_cart_destroy()
        {
        }
        /**
         * Set cart hash cookie and items in cart if not already set.
         *
         * @param bool $set Should cookies be set (true) or unset.
         */
        private function set_cart_cookies($set = \true)
        {
        }
        /**
         * Get the persistent cart from the database.
         *
         * @since  3.5.0
         * @return array
         */
        private function get_saved_cart()
        {
        }
        /**
         * Get a cart from an order, if user has permission.
         *
         * @since  3.5.0
         *
         * @param int   $order_id Order ID to try to load.
         * @param array $cart Current cart array.
         *
         * @return array
         */
        private function populate_cart_from_order($order_id, $cart)
        {
        }
    }
    /**
     * Shipping zones class.
     */
    class WC_Shipping_Zones
    {
        /**
         * Get shipping zones from the database.
         *
         * @since 2.6.0
         * @param string $context Getting shipping methods for what context. Valid values, admin, json.
         * @return array Array of arrays.
         */
        public static function get_zones($context = 'admin')
        {
        }
        /**
         * Get shipping zone using it's ID
         *
         * @since 2.6.0
         * @param int $zone_id Zone ID.
         * @return WC_Shipping_Zone|bool
         */
        public static function get_zone($zone_id)
        {
        }
        /**
         * Get shipping zone by an ID.
         *
         * @since 2.6.0
         * @param string $by Get by 'zone_id' or 'instance_id'.
         * @param int    $id ID.
         * @return WC_Shipping_Zone|bool
         */
        public static function get_zone_by($by = 'zone_id', $id = 0)
        {
        }
        /**
         * Get shipping zone using it's ID.
         *
         * @since 2.6.0
         * @param int $instance_id Instance ID.
         * @return bool|WC_Shipping_Method
         */
        public static function get_shipping_method($instance_id)
        {
        }
        /**
         * Delete a zone using it's ID
         *
         * @param int $zone_id Zone ID.
         * @since 2.6.0
         */
        public static function delete_zone($zone_id)
        {
        }
        /**
         * Find a matching zone for a given package.
         *
         * @since  2.6.0
         * @uses   wc_make_numeric_postcode()
         * @param  array $package Shipping package.
         * @return WC_Shipping_Zone
         */
        public static function get_zone_matching_package($package)
        {
        }
    }
    /**
     * WooCommerce eCheck Payment Token.
     *
     * Representation of a payment token for eChecks.
     *
     * @class       WC_Payment_Token_ECheck
     * @version     3.0.0
     * @since       2.6.0
     * @package     WooCommerce/PaymentTokens
     */
    class WC_Payment_Token_ECheck extends \WC_Payment_Token
    {
        /**
         * Token Type String.
         *
         * @var string
         */
        protected $type = 'eCheck';
        /**
         * Stores eCheck payment token data.
         *
         * @var array
         */
        protected $extra_data = array('last4' => '');
        /**
         * Get type to display to user.
         *
         * @since  2.6.0
         * @param  string $deprecated Deprecated since WooCommerce 3.0.
         * @return string
         */
        public function get_display_name($deprecated = '')
        {
        }
        /**
         * Hook prefix
         *
         * @since 3.0.0
         */
        protected function get_hook_prefix()
        {
        }
        /**
         * Validate eCheck payment tokens.
         *
         * These fields are required by all eCheck payment tokens:
         * last4  - string Last 4 digits of the check
         *
         * @since 2.6.0
         * @return boolean True if the passed data is valid
         */
        public function validate()
        {
        }
        /**
         * Returns the last four digits.
         *
         * @since  2.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string Last 4 digits
         */
        public function get_last4($context = 'view')
        {
        }
        /**
         * Set the last four digits.
         *
         * @since 2.6.0
         * @param string $last4 eCheck last four digits.
         */
        public function set_last4($last4)
        {
        }
    }
    /**
     * WooCommerce Credit Card Payment Token.
     *
     * Representation of a payment token for credit cards.
     *
     * @class       WC_Payment_Token_CC
     * @version     3.0.0
     * @since       2.6.0
     * @package     WooCommerce/PaymentTokens
     */
    class WC_Payment_Token_CC extends \WC_Payment_Token
    {
        /**
         * Token Type String.
         *
         * @var string
         */
        protected $type = 'CC';
        /**
         * Stores Credit Card payment token data.
         *
         * @var array
         */
        protected $extra_data = array('last4' => '', 'expiry_year' => '', 'expiry_month' => '', 'card_type' => '');
        /**
         * Get type to display to user.
         *
         * @since  2.6.0
         * @param  string $deprecated Deprecated since WooCommerce 3.0.
         * @return string
         */
        public function get_display_name($deprecated = '')
        {
        }
        /**
         * Hook prefix
         *
         * @since 3.0.0
         */
        protected function get_hook_prefix()
        {
        }
        /**
         * Validate credit card payment tokens.
         *
         * These fields are required by all credit card payment tokens:
         * expiry_month  - string Expiration date (MM) for the card
         * expiry_year   - string Expiration date (YYYY) for the card
         * last4         - string Last 4 digits of the card
         * card_type     - string Card type (visa, mastercard, etc)
         *
         * @since 2.6.0
         * @return boolean True if the passed data is valid
         */
        public function validate()
        {
        }
        /**
         * Returns the card type (mastercard, visa, ...).
         *
         * @since  2.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string Card type
         */
        public function get_card_type($context = 'view')
        {
        }
        /**
         * Set the card type (mastercard, visa, ...).
         *
         * @since 2.6.0
         * @param string $type Credit card type (mastercard, visa, ...).
         */
        public function set_card_type($type)
        {
        }
        /**
         * Returns the card expiration year (YYYY).
         *
         * @since  2.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string Expiration year
         */
        public function get_expiry_year($context = 'view')
        {
        }
        /**
         * Set the expiration year for the card (YYYY format).
         *
         * @since 2.6.0
         * @param string $year Credit card expiration year.
         */
        public function set_expiry_year($year)
        {
        }
        /**
         * Returns the card expiration month (MM).
         *
         * @since  2.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string Expiration month
         */
        public function get_expiry_month($context = 'view')
        {
        }
        /**
         * Set the expiration month for the card (formats into MM format).
         *
         * @since 2.6.0
         * @param string $month Credit card expiration month.
         */
        public function set_expiry_month($month)
        {
        }
        /**
         * Returns the last four digits.
         *
         * @since  2.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string Last 4 digits
         */
        public function get_last4($context = 'view')
        {
        }
        /**
         * Set the last four digits.
         *
         * @since 2.6.0
         * @param string $last4 Credit card last four digits.
         */
        public function set_last4($last4)
        {
        }
    }
    /**
     * WC_Shipping_Zone class.
     */
    class WC_Shipping_Zone extends \WC_Legacy_Shipping_Zone
    {
        /**
         * Zone ID
         *
         * @var int|null
         */
        protected $id = \null;
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'shipping_zone';
        /**
         * Zone Data.
         *
         * @var array
         */
        protected $data = array('zone_name' => '', 'zone_order' => 0, 'zone_locations' => array());
        /**
         * Constructor for zones.
         *
         * @param int|object $zone Zone ID to load from the DB or zone object.
         */
        public function __construct($zone = \null)
        {
        }
        /**
         * --------------------------------------------------------------------------
         * Getters
         * --------------------------------------------------------------------------
         */
        /**
         * Get zone name.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_zone_name($context = 'view')
        {
        }
        /**
         * Get zone order.
         *
         * @param  string $context View or edit context.
         * @return int
         */
        public function get_zone_order($context = 'view')
        {
        }
        /**
         * Get zone locations.
         *
         * @param  string $context View or edit context.
         * @return array of zone objects
         */
        public function get_zone_locations($context = 'view')
        {
        }
        /**
         * Return a text string representing what this zone is for.
         *
         * @param  int    $max Max locations to return.
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_formatted_location($max = 10, $context = 'view')
        {
        }
        /**
         * Get shipping methods linked to this zone.
         *
         * @param bool   $enabled_only Only return enabled methods.
         * @param string $context Getting shipping methods for what context. Valid values, admin, json.
         * @return array of objects
         */
        public function get_shipping_methods($enabled_only = \false, $context = 'admin')
        {
        }
        /**
         * --------------------------------------------------------------------------
         * Setters
         * --------------------------------------------------------------------------
         */
        /**
         * Set zone name.
         *
         * @param string $set Value to set.
         */
        public function set_zone_name($set)
        {
        }
        /**
         * Set zone order. Value to set.
         *
         * @param int $set Value to set.
         */
        public function set_zone_order($set)
        {
        }
        /**
         * Set zone locations.
         *
         * @since 3.0.0
         * @param array $locations Value to set.
         */
        public function set_zone_locations($locations)
        {
        }
        /**
         * --------------------------------------------------------------------------
         * Other
         * --------------------------------------------------------------------------
         */
        /**
         * Save zone data to the database.
         *
         * @return int
         */
        public function save()
        {
        }
        /**
         * Generate a zone name based on location.
         *
         * @return string
         */
        protected function generate_zone_name()
        {
        }
        /**
         * Location type detection.
         *
         * @param  object $location Location to check.
         * @return boolean
         */
        private function location_is_continent($location)
        {
        }
        /**
         * Location type detection.
         *
         * @param  object $location Location to check.
         * @return boolean
         */
        private function location_is_country($location)
        {
        }
        /**
         * Location type detection.
         *
         * @param  object $location Location to check.
         * @return boolean
         */
        private function location_is_state($location)
        {
        }
        /**
         * Location type detection.
         *
         * @param  object $location Location to check.
         * @return boolean
         */
        private function location_is_postcode($location)
        {
        }
        /**
         * Is passed location type valid?
         *
         * @param  string $type Type to check.
         * @return boolean
         */
        public function is_valid_location_type($type)
        {
        }
        /**
         * Add location (state or postcode) to a zone.
         *
         * @param string $code Location code.
         * @param string $type state or postcode.
         */
        public function add_location($code, $type)
        {
        }
        /**
         * Clear all locations for this zone.
         *
         * @param array|string $types of location to clear.
         */
        public function clear_locations($types = array('postcode', 'state', 'country', 'continent'))
        {
        }
        /**
         * Set locations.
         *
         * @param array $locations Array of locations.
         */
        public function set_locations($locations = array())
        {
        }
        /**
         * Add a shipping method to this zone.
         *
         * @param string $type shipping method type.
         * @return int new instance_id, 0 on failure
         */
        public function add_shipping_method($type)
        {
        }
        /**
         * Delete a shipping method from a zone.
         *
         * @param int $instance_id Shipping method instance ID.
         * @return True on success, false on failure
         */
        public function delete_shipping_method($instance_id)
        {
        }
    }
    /**
     * Datetime class.
     */
    class WC_DateTime extends \DateTime
    {
        /**
         * UTC Offset, if needed. Only used when a timezone is not set. When
         * timezones are used this will equal 0.
         *
         * @var integer
         */
        protected $utc_offset = 0;
        /**
         * Output an ISO 8601 date string in local (WordPress) timezone.
         *
         * @since  3.0.0
         * @return string
         */
        public function __toString()
        {
        }
        /**
         * Set UTC offset - this is a fixed offset instead of a timezone.
         *
         * @param int $offset Offset.
         */
        public function set_utc_offset($offset)
        {
        }
        /**
         * Get UTC offset if set, or default to the DateTime object's offset.
         */
        public function getOffset()
        {
        }
        /**
         * Set timezone.
         *
         * @param DateTimeZone $timezone DateTimeZone instance.
         * @return DateTime
         */
        public function setTimezone($timezone)
        {
        }
        /**
         * Missing in PHP 5.2 so just here so it can be supported consistently.
         *
         * @since  3.0.0
         * @return int
         */
        public function getTimestamp()
        {
        }
        /**
         * Get the timestamp with the WordPress timezone offset added or subtracted.
         *
         * @since  3.0.0
         * @return int
         */
        public function getOffsetTimestamp()
        {
        }
        /**
         * Format a date based on the offset timestamp.
         *
         * @since  3.0.0
         * @param  string $format Date format.
         * @return string
         */
        public function date($format)
        {
        }
        /**
         * Return a localised date based on offset timestamp. Wrapper for date_i18n function.
         *
         * @since  3.0.0
         * @param  string $format Date format.
         * @return string
         */
        public function date_i18n($format = 'Y-m-d')
        {
        }
    }
    /**
     * Order item tax.
     */
    class WC_Order_Item_Tax extends \WC_Order_Item
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $extra_data = array('rate_code' => '', 'rate_id' => 0, 'label' => '', 'compound' => \false, 'tax_total' => 0, 'shipping_tax_total' => 0, 'rate_percent' => \null);
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set order item name.
         *
         * @param string $value Name.
         */
        public function set_name($value)
        {
        }
        /**
         * Set item name.
         *
         * @param string $value Rate code.
         */
        public function set_rate_code($value)
        {
        }
        /**
         * Set item name.
         *
         * @param string $value Label.
         */
        public function set_label($value)
        {
        }
        /**
         * Set tax rate id.
         *
         * @param int $value Rate ID.
         */
        public function set_rate_id($value)
        {
        }
        /**
         * Set tax total.
         *
         * @param string $value Tax total.
         */
        public function set_tax_total($value)
        {
        }
        /**
         * Set shipping tax total.
         *
         * @param string $value Shipping tax total.
         */
        public function set_shipping_tax_total($value)
        {
        }
        /**
         * Set compound.
         *
         * @param bool $value If tax is compound.
         */
        public function set_compound($value)
        {
        }
        /**
         * Set rate value.
         *
         * @param float $value tax rate value.
         */
        public function set_rate_percent($value)
        {
        }
        /**
         * Set properties based on passed in tax rate by ID.
         *
         * @param int $tax_rate_id Tax rate ID.
         */
        public function set_rate($tax_rate_id)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get order item type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get rate code/name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get rate code/name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_rate_code($context = 'view')
        {
        }
        /**
         * Get label.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_label($context = 'view')
        {
        }
        /**
         * Get tax rate ID.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return int
         */
        public function get_rate_id($context = 'view')
        {
        }
        /**
         * Get tax_total
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_tax_total($context = 'view')
        {
        }
        /**
         * Get shipping_tax_total
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_tax_total($context = 'view')
        {
        }
        /**
         * Get compound.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_compound($context = 'view')
        {
        }
        /**
         * Is this a compound tax rate?
         *
         * @return boolean
         */
        public function is_compound()
        {
        }
        /**
         * Get rate value
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return float
         */
        public function get_rate_percent($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Array Access Methods
        |--------------------------------------------------------------------------
        |
        | For backwards compatibility with legacy arrays.
        |
        */
        /**
         * O for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * WC_Geolocation Class.
     */
    class WC_Geolocation
    {
        /**
         * GeoLite IPv4 DB.
         *
         * @deprecated 3.4.0
         */
        const GEOLITE_DB = 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz';
        /**
         * GeoLite IPv6 DB.
         *
         * @deprecated 3.4.0
         */
        const GEOLITE_IPV6_DB = 'http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz';
        /**
         * GeoLite2 DB.
         *
         * @since 3.4.0
         */
        const GEOLITE2_DB = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz';
        /**
         * API endpoints for looking up user IP address.
         *
         * @var array
         */
        private static $ip_lookup_apis = array('ipify' => 'http://api.ipify.org/', 'ipecho' => 'http://ipecho.net/plain', 'ident' => 'http://ident.me', 'whatismyipaddress' => 'http://bot.whatismyipaddress.com');
        /**
         * API endpoints for geolocating an IP address
         *
         * @var array
         */
        private static $geoip_apis = array('ipinfo.io' => 'https://ipinfo.io/%s/json', 'ip-api.com' => 'http://ip-api.com/json/%s');
        /**
         * Check if server supports MaxMind GeoLite2 Reader.
         *
         * @since 3.4.0
         * @return bool
         */
        private static function supports_geolite2()
        {
        }
        /**
         * Check if geolocation is enabled.
         *
         * @since 3.4.0
         * @param string $current_settings Current geolocation settings.
         * @return bool
         */
        private static function is_geolocation_enabled($current_settings)
        {
        }
        /**
         * Prevent geolocation via MaxMind when using legacy versions of php.
         *
         * @since 3.4.0
         * @param string $default_customer_address current value.
         * @return string
         */
        public static function disable_geolocation_on_legacy_php($default_customer_address)
        {
        }
        /**
         * Hook in geolocation functionality.
         */
        public static function init()
        {
        }
        /**
         * Maybe trigger a DB update for the first time.
         *
         * @param  string $new_value New value.
         * @param  string $old_value Old value.
         * @return string
         */
        public static function maybe_update_database($new_value, $old_value)
        {
        }
        /**
         * Get current user IP Address.
         *
         * @return string
         */
        public static function get_ip_address()
        {
        }
        /**
         * Get user IP Address using an external service.
         * This can be used as a fallback for users on localhost where
         * get_ip_address() will be a local IP and non-geolocatable.
         *
         * @return string
         */
        public static function get_external_ip_address()
        {
        }
        /**
         * Geolocate an IP address.
         *
         * @param  string $ip_address   IP Address.
         * @param  bool   $fallback     If true, fallbacks to alternative IP detection (can be slower).
         * @param  bool   $api_fallback If true, uses geolocation APIs if the database file doesn't exist (can be slower).
         * @return array
         */
        public static function geolocate_ip($ip_address = '', $fallback = \false, $api_fallback = \true)
        {
        }
        /**
         * Path to our local db.
         *
         * @param  string $deprecated Deprecated since 3.4.0.
         * @return string
         */
        public static function get_local_database_path($deprecated = '2')
        {
        }
        /**
         * Update geoip database.
         *
         * Extract files with PharData. Tool built into PHP since 5.3.
         */
        public static function update_database()
        {
        }
        /**
         * Use MAXMIND GeoLite database to geolocation the user.
         *
         * @param  string $ip_address IP address.
         * @param  string $database   Database path.
         * @return string
         */
        private static function geolocate_via_db($ip_address, $database)
        {
        }
        /**
         * Use APIs to Geolocate the user.
         *
         * Geolocation APIs can be added through the use of the woocommerce_geolocation_geoip_apis filter.
         * Provide a name=>value pair for service-slug=>endpoint.
         *
         * If APIs are defined, one will be chosen at random to fulfil the request. After completing, the result
         * will be cached in a transient.
         *
         * @param  string $ip_address IP address.
         * @return string
         */
        private static function geolocate_via_api($ip_address)
        {
        }
    }
    /**
     * Order item fee.
     */
    class WC_Order_Item_Fee extends \WC_Order_Item
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $extra_data = array('tax_class' => '', 'tax_status' => 'taxable', 'amount' => '', 'total' => '', 'total_tax' => '', 'taxes' => array('total' => array()));
        /**
         * Get item costs grouped by tax class.
         *
         * @since  3.2.0
         * @param  WC_Order $order Order object.
         * @return array
         */
        protected function get_tax_class_costs($order)
        {
        }
        /**
         * Calculate item taxes.
         *
         * @since  3.2.0
         * @param  array $calculate_tax_for Location data to get taxes for. Required.
         * @return bool  True if taxes were calculated.
         */
        public function calculate_taxes($calculate_tax_for = array())
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set fee amount.
         *
         * @param string $value Amount.
         */
        public function set_amount($value)
        {
        }
        /**
         * Set tax class.
         *
         * @param string $value Tax class.
         */
        public function set_tax_class($value)
        {
        }
        /**
         * Set tax_status.
         *
         * @param string $value Tax status.
         */
        public function set_tax_status($value)
        {
        }
        /**
         * Set total.
         *
         * @param string $amount Fee amount (do not enter negative amounts).
         */
        public function set_total($amount)
        {
        }
        /**
         * Set total tax.
         *
         * @param string $amount Amount.
         */
        public function set_total_tax($amount)
        {
        }
        /**
         * Set taxes.
         *
         * This is an array of tax ID keys with total amount values.
         *
         * @param array $raw_tax_data Raw tax data.
         */
        public function set_taxes($raw_tax_data)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get fee amount.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_amount($context = 'view')
        {
        }
        /**
         * Get order item name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get order item type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get tax class.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_tax_class($context = 'view')
        {
        }
        /**
         * Get tax status.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_tax_status($context = 'view')
        {
        }
        /**
         * Get total fee.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_total($context = 'view')
        {
        }
        /**
         * Get total tax.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_total_tax($context = 'view')
        {
        }
        /**
         * Get fee taxes.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_taxes($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Array Access Methods
        |--------------------------------------------------------------------------
        |
        | For backwards compatibility with legacy arrays.
        |
        */
        /**
         * OffsetGet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Register WP admin settings class.
     */
    class WC_Register_WP_Admin_Settings
    {
        /**
         * Contains the current class to pull settings from.
         * Either a admin page object or WC_Email object
         *
         * @var WC_Register_WP_Admin_Settings
         */
        protected $object;
        /**
         * Hooks into the settings API and starts registering our settings.
         *
         * @since 3.0.0
         * @param WC_Email|WC_Settings_Page $object The object that contains the settings to register.
         * @param string                    $type   Type of settings to register (email or page).
         */
        public function __construct($object, $type)
        {
        }
        /**
         * Register's all of our different notification emails as sub groups
         * of email settings.
         *
         * @since  3.0.0
         * @param  array $groups Existing registered groups.
         * @return array
         */
        public function register_email_group($groups)
        {
        }
        /**
         * Registers all of the setting form fields for emails to each email type's group.
         *
         * @since  3.0.0
         * @param  array $settings Existing registered settings.
         * @return array
         */
        public function register_email_settings($settings)
        {
        }
        /**
         * Registers a setting group, based on admin page ID & label as parent group.
         *
         * @since  3.0.0
         * @param  array $groups Array of previously registered groups.
         * @return array
         */
        public function register_page_group($groups)
        {
        }
        /**
         * Registers settings to a specific group.
         *
         * @since  3.0.0
         * @param  array $settings Existing registered settings.
         * @return array
         */
        public function register_page_settings($settings)
        {
        }
        /**
         * Register a setting into the format expected for the Settings REST API.
         *
         * @since 3.0.0
         * @param  array $setting Setting data.
         * @return array|bool
         */
        public function register_setting($setting)
        {
        }
    }
    /**
     * Data exception class.
     */
    class WC_Data_Exception extends \Exception
    {
        /**
         * Sanitized error code.
         *
         * @var string
         */
        protected $error_code;
        /**
         * Error extra data.
         *
         * @var array
         */
        protected $error_data;
        /**
         * Setup exception.
         *
         * @param string $code             Machine-readable error code, e.g `woocommerce_invalid_product_id`.
         * @param string $message          User-friendly translated error message, e.g. 'Product ID is invalid'.
         * @param int    $http_status_code Proper HTTP status code to respond with, e.g. 400.
         * @param array  $data             Extra error data.
         */
        public function __construct($code, $message, $http_status_code = 400, $data = array())
        {
        }
        /**
         * Returns the error code.
         *
         * @return string
         */
        public function getErrorCode()
        {
        }
        /**
         * Returns error data.
         *
         * @return array
         */
        public function getErrorData()
        {
        }
    }
    /**
     * Product attribute class.
     */
    class WC_Product_Attribute implements \ArrayAccess
    {
        /**
         * Data array.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('id' => 0, 'name' => '', 'options' => array(), 'position' => 0, 'visible' => \false, 'variation' => \false);
        /**
         * Return if this attribute is a taxonomy.
         *
         * @return boolean
         */
        public function is_taxonomy()
        {
        }
        /**
         * Get taxonomy name if applicable.
         *
         * @return string
         */
        public function get_taxonomy()
        {
        }
        /**
         * Get taxonomy object.
         *
         * @return array|null
         */
        public function get_taxonomy_object()
        {
        }
        /**
         * Gets terms from the stored options.
         *
         * @return array|null
         */
        public function get_terms()
        {
        }
        /**
         * Gets slugs from the stored options, or just the string if text based.
         *
         * @return array
         */
        public function get_slugs()
        {
        }
        /**
         * Returns all data for this object.
         *
         * @return array
         */
        public function get_data()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set ID (this is the attribute ID).
         *
         * @param int $value Attribute ID.
         */
        public function set_id($value)
        {
        }
        /**
         * Set name (this is the attribute name or taxonomy).
         *
         * @param int $value Attribute name.
         */
        public function set_name($value)
        {
        }
        /**
         * Set options.
         *
         * @param array $value Attribute options.
         */
        public function set_options($value)
        {
        }
        /**
         * Set position.
         *
         * @param int $value Attribute position.
         */
        public function set_position($value)
        {
        }
        /**
         * Set if visible.
         *
         * @param bool $value If is visible on Product's additional info tab.
         */
        public function set_visible($value)
        {
        }
        /**
         * Set if variation.
         *
         * @param bool $value If is used for variations.
         */
        public function set_variation($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get the ID.
         *
         * @return int
         */
        public function get_id()
        {
        }
        /**
         * Get name.
         *
         * @return string
         */
        public function get_name()
        {
        }
        /**
         * Get options.
         *
         * @return array
         */
        public function get_options()
        {
        }
        /**
         * Get position.
         *
         * @return int
         */
        public function get_position()
        {
        }
        /**
         * Get if visible.
         *
         * @return bool
         */
        public function get_visible()
        {
        }
        /**
         * Get if variation.
         *
         * @return bool
         */
        public function get_variation()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | ArrayAccess/Backwards compatibility.
        |--------------------------------------------------------------------------
        */
        /**
         * OffsetGet.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet.
         *
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset.
         *
         * @param string $offset Offset.
         */
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Orders.
     */
    class WC_Status_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Add Tracks events to the status page.
         */
        public function track_status_view()
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Settings.
     */
    class WC_Settings_Tracking
    {
        /**
         * Whitelisted WooCommerce settings to potentially track updates for.
         *
         * @var array
         */
        protected $whitelist = array();
        /**
         * WooCommerce settings that have been updated (and will be tracked).
         *
         * @var array
         */
        protected $updated_options = array();
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Add a WooCommerce option name to our whitelist and attach
         * the `update_option` hook. Rather than inspecting every updated
         * option and pattern matching for "woocommerce", just build a dynamic
         * whitelist for WooCommerce options that might get updated.
         *
         * See `woocommerce_update_option` hook.
         *
         * @param array $option WooCommerce option (config) that might get updated.
         */
        public function add_option_to_whitelist($option)
        {
        }
        /**
         * Add WooCommerce option to a list of updated options.
         *
         * @param string $option_name Option being updated.
         * @param mixed  $old_value Old value of option.
         * @param mixed  $new_value New value of option.
         */
        public function track_setting_change($option_name, $old_value, $new_value)
        {
        }
        /**
         * Send a Tracks event for WooCommerce options that changed values.
         */
        public function send_settings_change_event()
        {
        }
        /**
         * Send a Tracks event for WooCommerce settings page views.
         */
        public function track_settings_page_view()
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Orders.
     */
    class WC_Orders_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a Tracks event when the Orders page is viewed.
         */
        public function track_orders_view()
        {
        }
        /**
         * Send a Tracks event when an order status is changed.
         *
         * @param int    $id Order id.
         * @param string $previous_status the old WooCommerce order status.
         * @param string $next_status the new WooCommerce order status.
         */
        public function track_order_status_change($id, $previous_status, $next_status)
        {
        }
        /**
         * Send a Tracks event when an order date is changed.
         *
         * @param int $id Order id.
         */
        public function track_created_date_change($id)
        {
        }
        /**
         * Track order actions taken.
         *
         * @param int $order_id Order ID.
         */
        public function track_order_action($order_id)
        {
        }
        /**
         * Track "add order" button on the Edit Order screen.
         */
        public function track_add_order_from_edit()
        {
        }
    }
    /**
     * This class adds actions to track usage of the WooCommerce Onboarding Wizard.
     */
    class WC_Admin_Setup_Wizard_Tracking
    {
        /**
         * Steps for the setup wizard
         *
         * @var array
         */
        private $steps = array();
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Get the name of the current step.
         *
         * @return string
         */
        public function get_current_step()
        {
        }
        /**
         * Add footer scripts to OBW via woocommerce_setup_footer
         */
        public function add_footer_scripts()
        {
        }
        /**
         * Dequeue unwanted scripts from OBW footer.
         */
        public function dequeue_non_whitelisted_scripts()
        {
        }
        /**
         * Track when tracking is opted into and OBW has started.
         *
         * @param string $option Option name.
         * @param string $value  Option value.
         * @return void
         */
        public function track_start($option, $value)
        {
        }
        /**
         * Track the marketing form on submit.
         */
        public function track_ready_next_steps()
        {
        }
        /**
         * Track various events when a step is saved.
         */
        public function add_step_save_events()
        {
        }
        /**
         * Track store setup and store properties on save.
         *
         * @return void
         */
        public function track_store_setup()
        {
        }
        /**
         * Track payment gateways selected.
         *
         * @return void
         */
        public function track_payments()
        {
        }
        /**
         * Track shipping units and whether or not labels are set.
         *
         * @return void
         */
        public function track_shipping()
        {
        }
        /**
         * Track recommended plugins selected for install.
         *
         * @return void
         */
        public function track_recommended()
        {
        }
        /**
         * Tracks when Jetpack is activated through the OBW.
         *
         * @return void
         */
        public function track_jetpack_activate()
        {
        }
        /**
         * Tracks when last next_steps screen is viewed in the OBW.
         *
         * @return void
         */
        public function track_next_steps()
        {
        }
        /**
         * Track skipped steps.
         *
         * @return void
         */
        public function track_skip_step()
        {
        }
        /**
         * Set the OBW steps inside this class instance.
         *
         * @param array $steps Array of OBW steps.
         */
        public function set_obw_steps($steps)
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Imports.
     */
    class WC_Importer_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Route product importer action to the right callback.
         *
         * @return void
         */
        public function track_product_importer()
        {
        }
        /**
         * Send a Tracks event when the product importer is started.
         *
         * @return void
         */
        public function track_product_importer_start()
        {
        }
        /**
         * Send a Tracks event when the product importer has finished.
         *
         * @return void
         */
        public function track_product_importer_complete()
        {
        }
    }
    /**
     * This class adds actions to track usage of the WooCommerce Extensions page.
     */
    class WC_Extensions_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a Tracks event when an Extensions page is viewed.
         */
        public function track_extensions_page()
        {
        }
        /**
         * Send a Tracks even when a Helper connection process is initiated.
         */
        public function track_helper_connection_start()
        {
        }
        /**
         * Send a Tracks even when a Helper connection process is cancelled.
         */
        public function track_helper_connection_cancelled()
        {
        }
        /**
         * Send a Tracks even when a Helper connection process completed successfully.
         */
        public function track_helper_connection_complete()
        {
        }
        /**
         * Send a Tracks even when a Helper has been disconnected.
         */
        public function track_helper_disconnected()
        {
        }
        /**
         * Send a Tracks even when Helper subscriptions are refreshed.
         */
        public function track_helper_subscriptions_refresh()
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Products.
     */
    class WC_Products_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a Tracks event when a product is updated.
         *
         * @param int    $product_id Product id.
         * @param object $post WordPress post.
         */
        public function track_product_updated($product_id, $post)
        {
        }
        /**
         * Send a Tracks event when a product is published.
         *
         * @param string $new_status New post_status.
         * @param string $old_status Previous post_status.
         * @param object $post WordPress post.
         */
        public function track_product_published($new_status, $old_status, $post)
        {
        }
        /**
         * Send a Tracks event when a product category is created.
         *
         * @param int $category_id Category ID.
         */
        public function track_product_category_created($category_id)
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Orders.
     */
    class WC_Coupons_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Add a listener on the "Apply" button to track bulk actions.
         */
        public function tracks_coupons_bulk_actions()
        {
        }
        /**
         * Track page view events.
         */
        public function tracks_coupons_events()
        {
        }
    }
    /**
     * WC_Tracks_Client class.
     */
    class WC_Tracks_Client
    {
        /**
         * Pixel URL.
         */
        const PIXEL = 'https://pixel.wp.com/t.gif';
        /**
         * Browser type.
         */
        const BROWSER_TYPE = 'php-agent';
        /**
         * User agent.
         */
        const USER_AGENT_SLUG = 'tracks-client';
        /**
         * Initialize tracks client class
         *
         * @return void
         */
        public static function init()
        {
        }
        /**
         * Check if identiy cookie is set, if not set it.
         *
         * @return void
         */
        public static function maybe_set_identity_cookie()
        {
        }
        /**
         * Record a Tracks event
         *
         * @param  array $event Array of event properties.
         * @return bool|WP_Error         True on success, WP_Error on failure.
         */
        public static function record_event($event)
        {
        }
        /**
         * Synchronously request the pixel.
         *
         * @param string $pixel pixel url and query string.
         * @return bool Always returns true.
         */
        public static function record_pixel($pixel)
        {
        }
        /**
         * Create a timestap representing milliseconds since 1970-01-01
         *
         * @return string A string representing a timestamp.
         */
        public static function build_timestamp()
        {
        }
        /**
         * Get a user's identity to send to Tracks. If Jetpack exists, default to its implementation.
         *
         * @param int $user_id User id.
         * @return array Identity properties.
         */
        public static function get_identity($user_id)
        {
        }
        /**
         * Grabs the user's anon id from cookies, or generates and sets a new one
         *
         * @return string An anon id for the user
         */
        public static function get_anon_id()
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce.
     */
    class WC_Site_Tracking
    {
        /**
         * Check if tracking is enabled.
         *
         * @return bool
         */
        public static function is_tracking_enabled()
        {
        }
        /**
         * Add scripts required to record events from javascript.
         */
        public static function enqueue_scripts()
        {
        }
        /**
         * Adds the tracking function to the admin footer.
         */
        public static function add_tracking_function()
        {
        }
        /**
         * Add empty tracking function to admin footer when tracking is disabled in case
         * it's called without checking if it's defined beforehand.
         */
        public static function add_empty_tracking_function()
        {
        }
        /**
         * Init tracking.
         */
        public static function init()
        {
        }
    }
    /**
     * WC_Tracks_Footer_Pixel class.
     */
    class WC_Tracks_Footer_Pixel
    {
        /**
         * Singleton instance.
         *
         * @var WC_Tracks_Footer_Pixel
         */
        protected static $instance = \null;
        /**
         * Events to send to Tracks.
         *
         * @var array
         */
        protected $events = array();
        /**
         * Instantiate the singleton.
         *
         * @return WC_Tracks_Footer_Pixel
         */
        public static function instance()
        {
        }
        /**
         * Constructor - attach hooks to the singleton instance.
         */
        public function __construct()
        {
        }
        /**
         * Record a Tracks event
         *
         * @param  array $event Array of event properties.
         * @return bool|WP_Error True on success, WP_Error on failure.
         */
        public static function record_event($event)
        {
        }
        /**
         * Add a Tracks event to the queue.
         *
         * @param WC_Tracks_Event $event Event to track.
         */
        public function add_event($event)
        {
        }
        /**
         * Add events as tracking pixels to page footer.
         */
        public function render_tracking_pixels()
        {
        }
        /**
         * Fire off API calls for events that weren't converted to pixels.
         *
         * This handles wp_redirect().
         */
        public function send_tracks_requests()
        {
        }
    }
    /**
     * PHP Tracks Client
     *
     * @package WooCommerce\Tracks
     */
    /**
     * WC_Tracks class.
     */
    class WC_Tracks
    {
        /**
         * Tracks event name prefix.
         */
        const PREFIX = 'wcadmin_';
        /**
         * Get total product counts.
         *
         * @return int Number of products.
         */
        public static function get_products_count()
        {
        }
        /**
         * Gather blog related properties.
         *
         * @param int $user_id User id.
         * @return array Blog details.
         */
        public static function get_blog_details($user_id)
        {
        }
        /**
         * Gather details from the request to the server.
         *
         * @return array Server details.
         */
        public static function get_server_details()
        {
        }
        /**
         * Record an event in Tracks - this is the preferred way to record events from PHP.
         *
         * @param string $event_name The name of the event.
         * @param array  $properties Custom properties to send with the event.
         * @return bool|WP_Error True for success or WP_Error if the event pixel could not be fired.
         */
        public static function record_event($event_name, $properties = array())
        {
        }
    }
    /**
     * WC_Tracks_Event class.
     */
    class WC_Tracks_Event
    {
        /**
         * Event name regex.
         */
        const EVENT_NAME_REGEX = '/^(([a-z0-9]+)_){2}([a-z0-9_]+)$/';
        /**
         * Property name regex.
         */
        const PROP_NAME_REGEX = '/^[a-z_][a-z0-9_]*$/';
        /**
         * Error message as WP_Error.
         *
         * @var WP_Error
         */
        public $error;
        /**
         * WC_Tracks_Event constructor.
         *
         * @param array $event Event properties.
         */
        public function __construct($event)
        {
        }
        /**
         * Record Tracks event
         *
         * @return bool Always returns true.
         */
        public function record()
        {
        }
        /**
         * Annotate the event with all relevant info.
         *
         * @param  array $event Event arguments.
         * @return bool|WP_Error True on success, WP_Error on failure.
         */
        public static function validate_and_sanitize($event)
        {
        }
        /**
         * Build a pixel URL that will send a Tracks event when fired.
         * On error, returns an empty string ('').
         *
         * @return string A pixel URL or empty string ('') if there were invalid args.
         */
        public function build_pixel_url()
        {
        }
        /**
         * Check if event name is valid.
         *
         * @param string $name Event name.
         * @return false|int
         */
        public static function event_name_is_valid($name)
        {
        }
        /**
         * Check if a property name is valid.
         *
         * @param string $name Event property.
         * @return false|int
         */
        public static function prop_name_is_valid($name)
        {
        }
        /**
         * Check event names
         *
         * @param object $event An event object.
         */
        public static function scrutinize_event_names($event)
        {
        }
    }
    /**
     * Validation class.
     */
    class WC_Validation
    {
        /**
         * Validates an email using WordPress native is_email function.
         *
         * @param  string $email Email address to validate.
         * @return bool
         */
        public static function is_email($email)
        {
        }
        /**
         * Validates a phone number using a regular expression.
         *
         * @param  string $phone Phone number to validate.
         * @return bool
         */
        public static function is_phone($phone)
        {
        }
        /**
         * Checks for a valid postcode.
         *
         * @param  string $postcode Postcode to validate.
         * @param  string $country Country to validate the postcode for.
         * @return bool
         */
        public static function is_postcode($postcode, $country)
        {
        }
        /**
         * Check if is a GB postcode.
         *
         * @param  string $to_check A postcode.
         * @return bool
         */
        public static function is_gb_postcode($to_check)
        {
        }
        /**
         * Format the postcode according to the country and length of the postcode.
         *
         * @param  string $postcode Postcode to format.
         * @param  string $country Country to format the postcode for.
         * @return string  Formatted postcode.
         */
        public static function format_postcode($postcode, $country)
        {
        }
        /**
         * Format a given phone number.
         *
         * @param  mixed $tel Phone number to format.
         * @return string
         */
        public static function format_phone($tel)
        {
        }
    }
    /**
     * WC_Cache_Helper.
     */
    class WC_Cache_Helper
    {
        /**
         * Transients to delete on shutdown.
         *
         * @var array Array of transient keys.
         */
        private static $delete_transients = array();
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Set additional nocache headers.
         *
         * @param array $headers Header names and field values.
         * @since 3.6.0
         */
        public static function additional_nocache_headers($headers)
        {
        }
        /**
         * Add a transient to delete on shutdown.
         *
         * @since 3.6.0
         * @param string|array $keys Transient key or keys.
         */
        public static function queue_delete_transient($keys)
        {
        }
        /**
         * Transients that don't need to be cleaned right away can be deleted on shutdown to avoid repetition.
         *
         * @since 3.6.0
         */
        public static function delete_transients_on_shutdown()
        {
        }
        /**
         * Used to clear layered nav counts based on passed attribute names.
         *
         * @since 3.6.0
         * @param array $attribute_keys Attribute keys.
         */
        public static function invalidate_attribute_count($attribute_keys)
        {
        }
        /**
         * Get prefix for use with wp_cache_set. Allows all cache in a group to be invalidated at once.
         *
         * @param  string $group Group of cache to get.
         * @return string
         */
        public static function get_cache_prefix($group)
        {
        }
        /**
         * Increment group cache prefix (invalidates cache).
         *
         * @param string $group Group of cache to clear.
         */
        public static function incr_cache_prefix($group)
        {
        }
        /**
         * Get a hash of the customer location.
         *
         * @return string
         */
        public static function geolocation_ajax_get_location_hash()
        {
        }
        /**
         * Prevent caching on certain pages
         */
        public static function prevent_caching()
        {
        }
        /**
         * When using geolocation via ajax, to bust cache, redirect if the location hash does not equal the querystring.
         *
         * This prevents caching of the wrong data for this request.
         */
        public static function geolocation_ajax_redirect()
        {
        }
        /**
         * Get transient version.
         *
         * When using transients with unpredictable names, e.g. those containing an md5
         * hash in the name, we need a way to invalidate them all at once.
         *
         * When using default WP transients we're able to do this with a DB query to
         * delete transients manually.
         *
         * With external cache however, this isn't possible. Instead, this function is used
         * to append a unique string (based on time()) to each transient. When transients
         * are invalidated, the transient version will increment and data will be regenerated.
         *
         * Raised in issue https://github.com/woocommerce/woocommerce/issues/5777.
         * Adapted from ideas in http://tollmanz.com/invalidation-schemes/.
         *
         * @param  string  $group   Name for the group of transients we need to invalidate.
         * @param  boolean $refresh true to force a new version.
         * @return string transient version based on time(), 10 digits.
         */
        public static function get_transient_version($group, $refresh = \false)
        {
        }
        /**
         * Set constants to prevent caching by some plugins.
         *
         * @param  mixed $return Value to return. Previously hooked into a filter.
         * @return mixed
         */
        public static function set_nocache_constants($return = \true)
        {
        }
        /**
         * Notices function.
         */
        public static function notices()
        {
        }
        /**
         * Clean term caches added by WooCommerce.
         *
         * @since 3.3.4
         * @param array|int $ids Array of ids or single ID to clear cache for.
         * @param string    $taxonomy Taxonomy name.
         */
        public static function clean_term_cache($ids, $taxonomy)
        {
        }
        /**
         * When the transient version increases, this is used to remove all past transients to avoid filling the DB.
         *
         * Note; this only works on transients appended with the transient version, and when object caching is not being used.
         *
         * @deprecated 3.6.0 Adjusted transient usage to include versions within the transient values, making this cleanup obsolete.
         * @since  2.3.10
         * @param string $version Version of the transient to remove.
         */
        public static function delete_version_transients($version = '')
        {
        }
    }
    /**
     * Simple product class.
     */
    class WC_Product_Simple extends \WC_Product
    {
        /**
         * Initialize simple product.
         *
         * @param WC_Product|int $product Product instance or ID.
         */
        public function __construct($product = 0)
        {
        }
        /**
         * Get internal type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get the add to url used mainly in loops.
         *
         * @return string
         */
        public function add_to_cart_url()
        {
        }
        /**
         * Get the add to cart button text.
         *
         * @return string
         */
        public function add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text description - used in aria tags.
         *
         * @since 3.3.0
         * @return string
         */
        public function add_to_cart_description()
        {
        }
    }
    /**
     * Product variation class.
     */
    class WC_Product_Variation extends \WC_Product_Simple
    {
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'product_variation';
        /**
         * Parent data.
         *
         * @var array
         */
        protected $parent_data = array('title' => '', 'sku' => '', 'manage_stock' => '', 'backorders' => '', 'stock_quantity' => '', 'weight' => '', 'length' => '', 'width' => '', 'height' => '', 'tax_class' => '', 'shipping_class_id' => '', 'image_id' => '', 'purchase_note' => '');
        /**
         * Override the default constructor to set custom defaults.
         *
         * @param int|WC_Product|object $product Product to init.
         */
        public function __construct($product = 0)
        {
        }
        /**
         * Prefix for action and filter hooks on data.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_hook_prefix()
        {
        }
        /**
         * Get internal type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * If the stock level comes from another product ID.
         *
         * @since  3.0.0
         * @return int
         */
        public function get_stock_managed_by_id()
        {
        }
        /**
         * Get the product's title. For variations this is the parent product name.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Get product name with SKU or ID. Used within admin.
         *
         * @return string Formatted product name
         */
        public function get_formatted_name()
        {
        }
        /**
         * Get variation attribute values. Keys are prefixed with attribute_, as stored.
         *
         * @return array of attributes and their values for this variation
         */
        public function get_variation_attributes()
        {
        }
        /**
         * Returns a single product attribute as a string.
         *
         * @param  string $attribute to get.
         * @return string
         */
        public function get_attribute($attribute)
        {
        }
        /**
         * Wrapper for get_permalink. Adds this variations attributes to the URL.
         *
         * @param  array|null $item_object item array If a cart or order item is passed, we can get a link containing the exact attributes selected for the variation, rather than the default attributes.
         * @return string
         */
        public function get_permalink($item_object = \null)
        {
        }
        /**
         * Get the add to url used mainly in loops.
         *
         * @return string
         */
        public function add_to_cart_url()
        {
        }
        /**
         * Get SKU (Stock-keeping unit) - product unique ID.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_sku($context = 'view')
        {
        }
        /**
         * Returns the product's weight.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_weight($context = 'view')
        {
        }
        /**
         * Returns the product length.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_length($context = 'view')
        {
        }
        /**
         * Returns the product width.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_width($context = 'view')
        {
        }
        /**
         * Returns the product height.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_height($context = 'view')
        {
        }
        /**
         * Returns the tax class.
         *
         * Does not use get_prop so it can handle 'parent' Inheritance correctly.
         *
         * @param  string $context view, edit, or unfiltered.
         * @return string
         */
        public function get_tax_class($context = 'view')
        {
        }
        /**
         * Return if product manage stock.
         *
         * @since 3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return boolean|string true, false, or parent.
         */
        public function get_manage_stock($context = 'view')
        {
        }
        /**
         * Returns number of items available for sale.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int|null
         */
        public function get_stock_quantity($context = 'view')
        {
        }
        /**
         * Get backorders.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @since 3.0.0
         * @return string yes no or notify
         */
        public function get_backorders($context = 'view')
        {
        }
        /**
         * Get main image ID.
         *
         * @since 3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_image_id($context = 'view')
        {
        }
        /**
         * Get purchase note.
         *
         * @since 3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_purchase_note($context = 'view')
        {
        }
        /**
         * Get shipping class ID.
         *
         * @since 3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_shipping_class_id($context = 'view')
        {
        }
        /**
         * Get catalog visibility.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_catalog_visibility($context = 'view')
        {
        }
        /**
         * Get attribute summary.
         *
         * By default, attribute summary contains comma-delimited 'attribute_name: attribute_value' pairs for all attributes.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         *
         * @since 3.6.0
         * @return string
         */
        public function get_attribute_summary($context = 'view')
        {
        }
        /**
         * Set attribute summary.
         *
         * By default, attribute summary contains comma-delimited 'attribute_name: attribute_value' pairs for all attributes.
         *
         * @since 3.6.0
         * @param string $attribute_summary Summary of attribute names and values assigned to the variation.
         */
        public function set_attribute_summary($attribute_summary)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD methods
        |--------------------------------------------------------------------------
        */
        /**
         * Set the parent data array for this variation.
         *
         * @since 3.0.0
         * @param array $parent_data parent data array for this variation.
         */
        public function set_parent_data($parent_data)
        {
        }
        /**
         * Get the parent data array for this variation.
         *
         * @since  3.0.0
         * @return array
         */
        public function get_parent_data()
        {
        }
        /**
         * Set attributes. Unlike the parent product which uses terms, variations are assigned
         * specific attributes using name value pairs.
         *
         * @param array $raw_attributes array of raw attributes.
         */
        public function set_attributes($raw_attributes)
        {
        }
        /**
         * Returns whether or not the product has any visible attributes.
         *
         * Variations are mapped to specific attributes unlike products, and the return
         * value of ->get_attributes differs. Therefore this returns false.
         *
         * @return boolean
         */
        public function has_attributes()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Conditionals
        |--------------------------------------------------------------------------
        */
        /**
         * Returns false if the product cannot be bought.
         * Override abstract method so that: i) Disabled variations are not be purchasable by admins. ii) Enabled variations are not purchasable if the parent product is not purchasable.
         *
         * @return bool
         */
        public function is_purchasable()
        {
        }
        /**
         * Controls whether this particular variation will appear greyed-out (inactive) or not (active).
         * Used by extensions to make incompatible variations appear greyed-out, etc.
         * Other possible uses: prevent out-of-stock variations from being selected.
         *
         * @return bool
         */
        public function variation_is_active()
        {
        }
        /**
         * Checks if this particular variation is visible. Invisible variations are enabled and can be selected, but no price / stock info is displayed.
         * Instead, a suitable 'unavailable' message is displayed.
         * Invisible by default: Disabled variations and variations with an empty price.
         *
         * @return bool
         */
        public function variation_is_visible()
        {
        }
        /**
         * Return valid tax classes. Adds 'parent' to the default list of valid tax classes.
         *
         * @return array valid tax classes
         */
        protected function get_valid_tax_classes()
        {
        }
    }
    /**
     * Template loader class.
     */
    class WC_Template_Loader
    {
        /**
         * Store the shop page ID.
         *
         * @var integer
         */
        private static $shop_page_id = 0;
        /**
         * Store whether we're processing a product inside the_content filter.
         *
         * @var boolean
         */
        private static $in_content_filter = \false;
        /**
         * Is WooCommerce support defined?
         *
         * @var boolean
         */
        private static $theme_support = \false;
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Load a template.
         *
         * Handles template usage so that we can use our own templates instead of the theme's.
         *
         * Templates are in the 'templates' folder. WooCommerce looks for theme
         * overrides in /theme/woocommerce/ by default.
         *
         * For beginners, it also looks for a woocommerce.php template first. If the user adds
         * this to the theme (containing a woocommerce() inside) this will be used for all
         * WooCommerce templates.
         *
         * @param string $template Template to load.
         * @return string
         */
        public static function template_loader($template)
        {
        }
        /**
         * Get the default filename for a template.
         *
         * @since  3.0.0
         * @return string
         */
        private static function get_template_loader_default_file()
        {
        }
        /**
         * Get an array of filenames to search for a given template.
         *
         * @since  3.0.0
         * @param  string $default_file The default file name.
         * @return string[]
         */
        private static function get_template_loader_files($default_file)
        {
        }
        /**
         * Load comments template.
         *
         * @param string $template template to load.
         * @return string
         */
        public static function comments_template_loader($template)
        {
        }
        /**
         * Unsupported theme compatibility methods.
         */
        /**
         * Hook in methods to enhance the unsupported theme experience on pages.
         *
         * @since 3.3.0
         */
        public static function unsupported_theme_init()
        {
        }
        /**
         * Hook in methods to enhance the unsupported theme experience on the Shop page.
         *
         * @since 3.3.0
         */
        private static function unsupported_theme_shop_page_init()
        {
        }
        /**
         * Hook in methods to enhance the unsupported theme experience on Product pages.
         *
         * @since 3.3.0
         */
        private static function unsupported_theme_product_page_init()
        {
        }
        /**
         * Enhance the unsupported theme experience on Product Category and Attribute pages by rendering
         * those pages using the single template and shortcode-based content. To do this we make a dummy
         * post and set a shortcode as the post content. This approach is adapted from bbPress.
         *
         * @since 3.3.0
         */
        private static function unsupported_theme_tax_archive_init()
        {
        }
        /**
         * Add layered nav args to WP_Query args generated by the 'products' shortcode.
         *
         * @since 3.3.4
         * @param array $query WP_Query args.
         * @return array
         */
        public static function unsupported_archive_layered_nav_compatibility($query)
        {
        }
        /**
         * Force the loading of one of the single templates instead of whatever template was about to be loaded.
         *
         * @since 3.3.0
         * @param string $template Path to template.
         * @return string
         */
        public static function force_single_template_filter($template)
        {
        }
        /**
         * Get information about the current shop page view.
         *
         * @since 3.3.0
         * @return array
         */
        private static function get_current_shop_view_args()
        {
        }
        /**
         * Filter the title and insert WooCommerce content on the shop page.
         *
         * For non-WC themes, this will setup the main shop page to be shortcode based to improve default appearance.
         *
         * @since 3.3.0
         * @param string $title Existing title.
         * @param int    $id ID of the post being filtered.
         * @return string
         */
        public static function unsupported_theme_title_filter($title, $id)
        {
        }
        /**
         * Filter the content and insert WooCommerce content on the shop page.
         *
         * For non-WC themes, this will setup the main shop page to be shortcode based to improve default appearance.
         *
         * @since 3.3.0
         * @param string $content Existing post content.
         * @return string
         */
        public static function unsupported_theme_shop_content_filter($content)
        {
        }
        /**
         * Filter the content and insert WooCommerce content on the shop page.
         *
         * For non-WC themes, this will setup the main shop page to be shortcode based to improve default appearance.
         *
         * @since 3.3.0
         * @param string $content Existing post content.
         * @return string
         */
        public static function unsupported_theme_product_content_filter($content)
        {
        }
        /**
         * Suppress the comments number on the Shop page for unsupported themes since there is no commenting on the Shop page.
         *
         * @since 3.4.5
         * @param string $comments_number The comments number text.
         * @return string
         */
        public static function unsupported_theme_comments_number_filter($comments_number)
        {
        }
        /**
         * Are we filtering content for unsupported themes?
         *
         * @since 3.3.2
         * @return bool
         */
        public static function in_content_filter()
        {
        }
        /**
         * Prevent the main featured image on product pages because there will be another featured image
         * in the gallery.
         *
         * @since 3.3.0
         * @param string $html Img element HTML.
         * @return string
         */
        public static function unsupported_theme_single_featured_image_filter($html)
        {
        }
        /**
         * Remove the Review tab and just use the regular comment form.
         *
         * @param array $tabs Tab info.
         * @return array
         */
        public static function unsupported_theme_remove_review_tab($tabs)
        {
        }
    }
    /**
     * WC_Privacy_Exporters Class.
     */
    class WC_Privacy_Exporters
    {
        /**
         * Finds and exports customer data by email address.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @return array An array of personal data in name value pairs
         */
        public static function customer_data_exporter($email_address)
        {
        }
        /**
         * Finds and exports data which could be used to identify a person from WooCommerce data associated with an email address.
         *
         * Orders are exported in blocks of 10 to avoid timeouts.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @return array An array of personal data in name value pairs
         */
        public static function order_data_exporter($email_address, $page)
        {
        }
        /**
         * Finds and exports customer download logs by email address.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @throws Exception When WC_Data_Store validation fails.
         * @return array An array of personal data in name value pairs
         */
        public static function download_data_exporter($email_address, $page)
        {
        }
        /**
         * Get personal data (key/value pairs) for a user object.
         *
         * @since 3.4.0
         * @param WP_User $user user object.
         * @throws Exception If customer cannot be read/found and $data is set to WC_Customer class.
         * @return array
         */
        protected static function get_customer_personal_data($user)
        {
        }
        /**
         * Get personal data (key/value pairs) for an order object.
         *
         * @since 3.4.0
         * @param WC_Order $order Order object.
         * @return array
         */
        protected static function get_order_personal_data($order)
        {
        }
        /**
         * Get personal data (key/value pairs) for a download object.
         *
         * @since 3.4.0
         * @param WC_Order $download Download object.
         * @return array
         */
        protected static function get_download_personal_data($download)
        {
        }
        /**
         * Finds and exports payment tokens by email address for a customer.
         *
         * @since 3.4.0
         * @param string $email_address The user email address.
         * @param int    $page  Page.
         * @return array An array of personal data in name value pairs
         */
        public static function customer_tokens_exporter($email_address, $page)
        {
        }
    }
    /**
     * Customer download log class.
     */
    class WC_Customer_Download_Log extends \WC_Data
    {
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'customer_download_log';
        /**
         * Download Log Data array.
         *
         * @var array
         */
        protected $data = array('timestamp' => \null, 'permission_id' => 0, 'user_id' => \null, 'user_ip_address' => \null);
        /**
         * Constructor.
         *
         * @param int|object|array $download_log Download log ID.
         */
        public function __construct($download_log = 0)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get timestamp.
         *
         * @param  string $context Get context.
         * @return WC_DateTime|null Object if the date is set or null if there is no date.
         */
        public function get_timestamp($context = 'view')
        {
        }
        /**
         * Get permission id.
         *
         * @param  string $context Get context.
         * @return integer
         */
        public function get_permission_id($context = 'view')
        {
        }
        /**
         * Get user id.
         *
         * @param  string $context Get context.
         * @return integer
         */
        public function get_user_id($context = 'view')
        {
        }
        /**
         * Get user ip address.
         *
         * @param  string $context Get context.
         * @return string
         */
        public function get_user_ip_address($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set timestamp.
         *
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         */
        public function set_timestamp($date = \null)
        {
        }
        /**
         * Set permission id.
         *
         * @param int $value Value to set.
         */
        public function set_permission_id($value)
        {
        }
        /**
         * Set user id.
         *
         * @param int $value Value to set.
         */
        public function set_user_id($value)
        {
        }
        /**
         * Set user ip address.
         *
         * @param string $value Value to set.
         */
        public function set_user_ip_address($value)
        {
        }
    }
    /**
     * Order factory class
     */
    class WC_Order_Factory
    {
        /**
         * Get order.
         *
         * @param  mixed $order_id (default: false) Order ID to get.
         * @return WC_Order|bool
         */
        public static function get_order($order_id = \false)
        {
        }
        /**
         * Get order item.
         *
         * @param int $item_id Order item ID to get.
         * @return WC_Order_Item|false if not found
         */
        public static function get_order_item($item_id = 0)
        {
        }
        /**
         * Get the order ID depending on what was passed.
         *
         * @since 3.0.0
         * @param  mixed $order Order data to convert to an ID.
         * @return int|bool false on failure
         */
        public static function get_order_id($order)
        {
        }
    }
    /**
     * WC_Admin_Setup_Wizard class.
     */
    class WC_Admin_Setup_Wizard
    {
        /**
         * Current step
         *
         * @var string
         */
        private $step = '';
        /**
         * Steps for the setup wizard
         *
         * @var array
         */
        private $steps = array();
        /**
         * Actions to be executed after the HTTP response has completed
         *
         * @var array
         */
        private $deferred_actions = array();
        /**
         * Tweets user can optionally send after install
         *
         * @var array
         */
        private $tweets = array('Someone give me woo-t, I just set up a new store with #WordPress and @WooCommerce!', 'Someone give me high five, I just set up a new store with #WordPress and @WooCommerce!');
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Add admin menus/screens.
         */
        public function admin_menus()
        {
        }
        /**
         * The theme "extra" should only be shown if the current user can modify themes
         * and the store doesn't already have a WooCommerce theme.
         *
         * @return boolean
         */
        protected function should_show_theme()
        {
        }
        /**
         * Is the user using a default WP theme?
         *
         * @return boolean
         */
        protected function is_default_theme()
        {
        }
        /**
         * The "automated tax" extra should only be shown if the current user can
         * install plugins and the store is in a supported country.
         */
        protected function should_show_automated_tax()
        {
        }
        /**
         * Should we show the MailChimp install option?
         * True only if the user can install plugins.
         *
         * @return boolean
         */
        protected function should_show_mailchimp()
        {
        }
        /**
         * Should we show the Facebook install option?
         * True only if the user can install plugins,
         * and up until the end date of the recommendation.
         *
         * @return boolean
         */
        protected function should_show_facebook()
        {
        }
        /**
         * Should we show the WooCommerce Admin install option?
         * True only if the user can install plugins,
         * and up until the end date of the recommendation.
         *
         * @return boolean
         */
        protected function should_show_wc_admin()
        {
        }
        /**
         * Should we display the 'Recommended' step?
         * True if at least one of the recommendations will be displayed.
         *
         * @return boolean
         */
        protected function should_show_recommended_step()
        {
        }
        /**
         * Register/enqueue scripts and styles for the Setup Wizard.
         *
         * Hooked onto 'admin_enqueue_scripts'.
         */
        public function enqueue_scripts()
        {
        }
        /**
         * Helper method to get postcode configurations from `WC()->countries->get_country_locale()`.
         * We don't use `wp_list_pluck` because it will throw notices when postcode configuration is not defined for a country.
         *
         * @return array
         */
        private function get_postcodes()
        {
        }
        /**
         * Show the setup wizard.
         */
        public function setup_wizard()
        {
        }
        /**
         * Get the URL for the next step's screen.
         *
         * @param string $step  slug (default: current step).
         * @return string       URL for next step if a next step exists.
         *                      Admin URL if it's the last step.
         *                      Empty string on failure.
         * @since 3.0.0
         */
        public function get_next_step_link($step = '')
        {
        }
        /**
         * Setup Wizard Header.
         */
        public function setup_wizard_header()
        {
        }
        /**
         * Setup Wizard Footer.
         */
        public function setup_wizard_footer()
        {
        }
        /**
         * Output the steps.
         */
        public function setup_wizard_steps()
        {
        }
        /**
         * Output the content for the current step.
         */
        public function setup_wizard_content()
        {
        }
        /**
         * Initial "store setup" step.
         * Location, product type, page setup, and tracking opt-in.
         */
        public function wc_setup_store_setup()
        {
        }
        /**
         * Save initial store settings.
         */
        public function wc_setup_store_setup_save()
        {
        }
        /**
         * Finishes replying to the client, but keeps the process running for further (async) code execution.
         *
         * @see https://core.trac.wordpress.org/ticket/41358 .
         */
        protected function close_http_connection()
        {
        }
        /**
         * Function called after the HTTP request is finished, so it's executed without the client having to wait for it.
         *
         * @see WC_Admin_Setup_Wizard::install_plugin
         * @see WC_Admin_Setup_Wizard::install_theme
         */
        public function run_deferred_actions()
        {
        }
        /**
         * Helper method to queue the background install of a plugin.
         *
         * @param string $plugin_id  Plugin id used for background install.
         * @param array  $plugin_info Plugin info array containing name and repo-slug, and optionally file if different from [repo-slug].php.
         */
        protected function install_plugin($plugin_id, $plugin_info)
        {
        }
        /**
         * Helper method to queue the background install of a theme.
         *
         * @param string $theme_id  Theme id used for background install.
         */
        protected function install_theme($theme_id)
        {
        }
        /**
         * Helper method to install Jetpack.
         */
        protected function install_jetpack()
        {
        }
        /**
         * Helper method to install WooCommerce Services and its Jetpack dependency.
         */
        protected function install_woocommerce_services()
        {
        }
        /**
         * Retrieve info for missing WooCommerce Services and/or Jetpack plugin.
         *
         * @return array
         */
        protected function get_wcs_requisite_plugins()
        {
        }
        /**
         * Plugin install info message markup with heading.
         */
        public function plugin_install_info()
        {
        }
        /**
         * Get shipping methods based on country code.
         *
         * @param string $country_code Country code.
         * @param string $currency_code Currency code.
         * @return array
         */
        protected function get_wizard_shipping_methods($country_code, $currency_code)
        {
        }
        /**
         * Render the available shipping methods for a given country code.
         *
         * @param string $country_code Country code.
         * @param string $currency_code Currency code.
         * @param string $input_prefix Input prefix.
         */
        protected function shipping_method_selection_form($country_code, $currency_code, $input_prefix)
        {
        }
        /**
         * Render a product weight unit dropdown.
         *
         * @return string
         */
        protected function get_product_weight_selection()
        {
        }
        /**
         * Render a product dimension unit dropdown.
         *
         * @return string
         */
        protected function get_product_dimension_selection()
        {
        }
        /**
         * Shipping.
         */
        public function wc_setup_shipping()
        {
        }
        /**
         * Save shipping options.
         */
        public function wc_setup_shipping_save()
        {
        }
        /**
         * Is Stripe country supported
         * https://stripe.com/global .
         *
         * @param string $country_code Country code.
         */
        protected function is_stripe_supported_country($country_code)
        {
        }
        /**
         * Is PayPal currency supported.
         *
         * @param string $currency Currency code.
         * @return boolean
         */
        protected function is_paypal_supported_currency($currency)
        {
        }
        /**
         * Is Klarna Checkout country supported.
         *
         * @param string $country_code Country code.
         */
        protected function is_klarna_checkout_supported_country($country_code)
        {
        }
        /**
         * Is Klarna Payments country supported.
         *
         * @param string $country_code Country code.
         */
        protected function is_klarna_payments_supported_country($country_code)
        {
        }
        /**
         * Is Square country supported
         *
         * @param string $country_code Country code.
         */
        protected function is_square_supported_country($country_code)
        {
        }
        /**
         * Is eWAY Payments country supported
         *
         * @param string $country_code Country code.
         */
        protected function is_eway_payments_supported_country($country_code)
        {
        }
        /**
         * Is ShipStation country supported
         *
         * @param string $country_code Country code.
         */
        protected function is_shipstation_supported_country($country_code)
        {
        }
        /**
         * Is WooCommerce Services shipping label country supported
         *
         * @param string $country_code Country code.
         */
        protected function is_wcs_shipping_labels_supported_country($country_code)
        {
        }
        /**
         * Helper method to retrieve the current user's email address.
         *
         * @return string Email address
         */
        protected function get_current_user_email()
        {
        }
        /**
         * Array of all possible "in cart" gateways that can be offered.
         *
         * @return array
         */
        protected function get_wizard_available_in_cart_payment_gateways()
        {
        }
        /**
         * Simple array of "in cart" gateways to show in wizard.
         *
         * @return array
         */
        public function get_wizard_in_cart_payment_gateways()
        {
        }
        /**
         * Simple array of "manual" gateways to show in wizard.
         *
         * @return array
         */
        public function get_wizard_manual_payment_gateways()
        {
        }
        /**
         * Display service item in list.
         *
         * @param int   $item_id Item ID.
         * @param array $item_info Item info array.
         */
        public function display_service_item($item_id, $item_info)
        {
        }
        /**
         * Is it a featured service?
         *
         * @param array $service Service info array.
         * @return boolean
         */
        public function is_featured_service($service)
        {
        }
        /**
         * Is this a non featured service?
         *
         * @param array $service Service info array.
         * @return boolean
         */
        public function is_not_featured_service($service)
        {
        }
        /**
         * Payment Step.
         */
        public function wc_setup_payment()
        {
        }
        /**
         * Payment Step save.
         */
        public function wc_setup_payment_save()
        {
        }
        protected function display_recommended_item($item_info)
        {
        }
        /**
         * Recommended step
         */
        public function wc_setup_recommended()
        {
        }
        /**
         * Recommended step save.
         */
        public function wc_setup_recommended_save()
        {
        }
        /**
         * Go to the next step if Jetpack was connected.
         */
        protected function wc_setup_activate_actions()
        {
        }
        protected function wc_setup_activate_get_feature_list()
        {
        }
        protected function wc_setup_activate_get_feature_list_str()
        {
        }
        /**
         * Activate step.
         */
        public function wc_setup_activate()
        {
        }
        protected function get_all_activate_errors()
        {
        }
        protected function get_activate_error_message($code = '')
        {
        }
        /**
         * Activate step save.
         *
         * Install, activate, and launch connection flow for Jetpack.
         */
        public function wc_setup_activate_save()
        {
        }
        /**
         * Final step.
         */
        public function wc_setup_ready()
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Downloads Class.
     */
    class WC_Meta_Box_Order_Downloads
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int     $post_id
         * @param WP_Post $post
         */
        public static function save($post_id, $post)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Items Class.
     */
    class WC_Meta_Box_Order_Items
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int $post_id
         */
        public static function save($post_id)
        {
        }
    }
    /**
     * WC_Meta_Box_Product_Reviews
     */
    class WC_Meta_Box_Product_Reviews
    {
        /**
         * Output the metabox.
         *
         * @param object $comment Comment being shown.
         */
        public static function output($comment)
        {
        }
        /**
         * Save meta box data
         *
         * @param mixed $data Data to save.
         * @return mixed
         */
        public static function save($data)
        {
        }
    }
    /**
     * WC_Meta_Box_Product_Data Class.
     */
    class WC_Meta_Box_Product_Data
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post Post object.
         */
        public static function output($post)
        {
        }
        /**
         * Show tab content/settings.
         */
        private static function output_tabs()
        {
        }
        /**
         * Return array of product type options.
         *
         * @return array
         */
        private static function get_product_type_options()
        {
        }
        /**
         * Return array of tabs to show.
         *
         * @return array
         */
        private static function get_product_data_tabs()
        {
        }
        /**
         * Callback to sort product data tabs on priority.
         *
         * @since 3.1.0
         * @param int $a First item.
         * @param int $b Second item.
         *
         * @return bool
         */
        private static function product_data_tabs_sort($a, $b)
        {
        }
        /**
         * Filter callback for finding variation attributes.
         *
         * @param  WC_Product_Attribute $attribute Product attribute.
         * @return bool
         */
        private static function filter_variation_attributes($attribute)
        {
        }
        /**
         * Show options for the variable product type.
         */
        public static function output_variations()
        {
        }
        /**
         * Prepare downloads for save.
         *
         * @param array $file_names File names.
         * @param array $file_urls File urls.
         * @param array $file_hashes File hashes.
         *
         * @return array
         */
        private static function prepare_downloads($file_names, $file_urls, $file_hashes)
        {
        }
        /**
         * Prepare children for save.
         *
         * @return array
         */
        private static function prepare_children()
        {
        }
        /**
         * Prepare attributes for save.
         *
         * @param array $data Attribute data.
         *
         * @return array
         */
        public static function prepare_attributes($data = \false)
        {
        }
        /**
         * Prepare attributes for a specific variation or defaults.
         *
         * @param  array  $all_attributes List of attribute keys.
         * @param  string $key_prefix Attribute key prefix.
         * @param  int    $index Attribute array index.
         * @return array
         */
        private static function prepare_set_attributes($all_attributes, $key_prefix = 'attribute_', $index = \null)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int     $post_id WP post id.
         * @param WP_Post $post Post object.
         */
        public static function save($post_id, $post)
        {
        }
        /**
         * Save variation meta box data.
         *
         * @param int     $post_id WP post id.
         * @param WP_Post $post Post object.
         */
        public static function save_variations($post_id, $post)
        {
        }
    }
    /**
     * WC_Meta_Box_Coupon_Data Class.
     */
    class WC_Meta_Box_Coupon_Data
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int     $post_id
         * @param WP_Post $post
         */
        public static function save($post_id, $post)
        {
        }
    }
    /**
     * WC_Meta_Box_Product_Short_Description Class.
     */
    class WC_Meta_Box_Product_Short_Description
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post Post object.
         */
        public static function output($post)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Data Class.
     */
    class WC_Meta_Box_Order_Data
    {
        /**
         * Billing fields.
         *
         * @var array
         */
        protected static $billing_fields = array();
        /**
         * Shipping fields.
         *
         * @var array
         */
        protected static $shipping_fields = array();
        /**
         * Init billing and shipping fields we display + save.
         */
        public static function init_address_fields()
        {
        }
        /**
         * Output the metabox.
         *
         * @param WP_Post $post
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int $order_id Order ID.
         */
        public static function save($order_id)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Notes Class.
     */
    class WC_Meta_Box_Order_Notes
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post Post object.
         */
        public static function output($post)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Actions Class.
     */
    class WC_Meta_Box_Order_Actions
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post Post object.
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int     $post_id Post ID.
         * @param WP_Post $post Post Object.
         */
        public static function save($post_id, $post)
        {
        }
        /**
         * Set the correct message ID.
         *
         * @param string $location Location.
         * @since  2.3.0
         * @static
         * @return string
         */
        public static function set_email_sent_message($location)
        {
        }
    }
    /**
     * WC_Meta_Box_Product_Images Class.
     */
    class WC_Meta_Box_Product_Images
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int     $post_id
         * @param WP_Post $post
         */
        public static function save($post_id, $post)
        {
        }
    }
    /**
     * WC_Admin_Permalink_Settings Class.
     */
    class WC_Admin_Permalink_Settings
    {
        /**
         * Permalink settings.
         *
         * @var array
         */
        private $permalinks = array();
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Init our settings.
         */
        public function settings_init()
        {
        }
        /**
         * Show a slug input box.
         */
        public function product_category_slug_input()
        {
        }
        /**
         * Show a slug input box.
         */
        public function product_tag_slug_input()
        {
        }
        /**
         * Show a slug input box.
         */
        public function product_attribute_slug_input()
        {
        }
        /**
         * Show the settings.
         */
        public function settings()
        {
        }
        /**
         * Save the settings.
         */
        public function settings_save()
        {
        }
    }
    /**
     * WC_Admin_Profile Class.
     */
    class WC_Admin_Profile
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Get Address Fields for the edit user pages.
         *
         * @return array Fields to display which are filtered through woocommerce_customer_meta_fields before being returned
         */
        public function get_customer_meta_fields()
        {
        }
        /**
         * Show Address Fields on edit user pages.
         *
         * @param WP_User $user
         */
        public function add_customer_meta_fields($user)
        {
        }
        /**
         * Save Address Fields on edit user pages.
         *
         * @param int $user_id User ID of the user being saved
         */
        public function save_customer_meta_fields($user_id)
        {
        }
        /**
         * Get user meta for a given key, with fallbacks to core user info for pre-existing fields.
         *
         * @since 3.1.0
         * @param int    $user_id User ID of the user being edited
         * @param string $key     Key for user meta field
         * @return string
         */
        protected function get_user_meta($user_id, $key)
        {
        }
    }
    /**
     * WC_Settings_Page.
     */
    abstract class WC_Settings_Page
    {
        /**
         * Setting page id.
         *
         * @var string
         */
        protected $id = '';
        /**
         * Setting page label.
         *
         * @var string
         */
        protected $label = '';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get settings page ID.
         *
         * @since 3.0.0
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Get settings page label.
         *
         * @since 3.0.0
         * @return string
         */
        public function get_label()
        {
        }
        /**
         * Add this page to settings.
         *
         * @param array $pages
         *
         * @return mixed
         */
        public function add_settings_page($pages)
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        public function get_settings()
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Output sections.
         */
        public function output_sections()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
    }
    /**
     * WC_Settings_Advanced.
     */
    class WC_Settings_Advanced extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @param string $current_section Current section slug.
         *
         * @return array
         */
        public function get_settings($current_section = '')
        {
        }
        /**
         * Form method.
         *
         * @deprecated 3.4.4
         *
         * @param  string $method Method name.
         *
         * @return string
         */
        public function form_method($method)
        {
        }
        /**
         * Notices.
         */
        private function notices()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
    }
    /**
     * WC_Settings_Rest_API class.
     *
     * @deprecated 3.4 in favour of WC_Settings_Advanced.
     * @todo remove in 4.0.
     */
    class WC_Settings_Rest_API extends \WC_Settings_Advanced
    {
    }
    /**
     * WC_Settings_Integrations.
     */
    class WC_Settings_Integrations extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
    }
    /**
     * WC_Settings_Products.
     */
    class WC_Settings_Products extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
        /**
         * Get settings array.
         *
         * @param string $current_section Current section name.
         * @return array
         */
        public function get_settings($current_section = '')
        {
        }
    }
    /**
     * WC_Settings_Accounts.
     */
    class WC_Settings_Accounts extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        public function get_settings()
        {
        }
    }
    /**
     * WC_Settings_Shipping.
     */
    class WC_Settings_Shipping extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Add this page to settings.
         *
         * @param array $pages Current pages.
         * @return array|mixed
         */
        public function add_settings_page($pages)
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @param string $current_section Current section.
         * @return array
         */
        public function get_settings($current_section = '')
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
        /**
         * Handles output of the shipping zones page in admin.
         */
        protected function output_zones_screen()
        {
        }
        /**
         * Show method for a zone
         *
         * @param int $zone_id Zone ID.
         */
        protected function zone_methods_screen($zone_id)
        {
        }
        /**
         * Show zones
         */
        protected function zones_screen()
        {
        }
        /**
         * Show instance settings
         *
         * @param int $instance_id Shipping instance ID.
         */
        protected function instance_settings_screen($instance_id)
        {
        }
        /**
         * Handles output of the shipping class settings screen.
         */
        protected function output_shipping_class_screen()
        {
        }
    }
    /**
     * WC_Settings_Payment_Gateways.
     */
    class WC_Settings_Payment_Gateways extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @param string $current_section Section being shown.
         * @return array
         */
        public function get_settings($current_section = '')
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Output payment gateway settings.
         */
        public function payment_gateways_setting()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
    }
    /**
     * WC_Settings_Tax.
     */
    class WC_Settings_Tax extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Add this page to settings.
         *
         * @param array $pages Existing pages.
         * @return array|mixed
         */
        public function add_settings_page($pages)
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @param string $current_section Current section being shown.
         * @return array
         */
        public function get_settings($current_section = '')
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
        /**
         * Saves tax classes defined in the textarea to the tax class table instead of an option.
         *
         * @param string $raw_tax_classes Posted value.
         * @return null
         */
        public function save_tax_classes($raw_tax_classes)
        {
        }
        /**
         * Output tax rate tables.
         */
        public function output_tax_rates()
        {
        }
        /**
         * Get tax class being edited.
         *
         * @return string
         */
        private static function get_current_tax_class()
        {
        }
        /**
         * Get a posted tax rate.
         *
         * @param string $key   Key of tax rate in the post data array.
         * @param int    $order Position/order of rate.
         * @param string $class Tax class for rate.
         * @return array
         */
        private function get_posted_tax_rate($key, $order, $class)
        {
        }
        /**
         * Save tax rates.
         */
        public function save_tax_rates()
        {
        }
    }
    /**
     * WC_Admin_Settings_General.
     */
    class WC_Settings_General extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        public function get_settings()
        {
        }
        /**
         * Output a color picker input box.
         *
         * @param mixed  $name Name of input.
         * @param string $id ID of input.
         * @param mixed  $value Value of input.
         * @param string $desc (default: '') Description for input.
         */
        public function color_picker($name, $id, $value, $desc = '')
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
    }
    /**
     * WC_Settings_Emails.
     */
    class WC_Settings_Emails extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get sections.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        public function get_settings()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
        /**
         * Output email notification settings.
         */
        public function email_notification_setting()
        {
        }
    }
    /**
     * WC_Admin_Duplicate_Product Class.
     */
    class WC_Admin_Duplicate_Product
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Show the "Duplicate" link in admin products list.
         *
         * @param array   $actions Array of actions.
         * @param WP_Post $post Post object.
         * @return array
         */
        public function dupe_link($actions, $post)
        {
        }
        /**
         * Show the dupe product link in admin.
         */
        public function dupe_button()
        {
        }
        /**
         * Duplicate a product action.
         */
        public function duplicate_product_action()
        {
        }
        /**
         * Function to create the duplicate of the product.
         *
         * @param WC_Product $product
         * @return WC_Product
         */
        public function product_duplicate($product)
        {
        }
        /**
         * Get a product from the database to duplicate.
         *
         * @deprecated 3.0.0
         * @param mixed $id
         * @return object|bool
         * @see duplicate_product
         */
        private function get_product_to_duplicate($id)
        {
        }
    }
    /**
     * WC_Admin_List_Table Class.
     */
    abstract class WC_Admin_List_Table
    {
        /**
         * Post type.
         *
         * @var string
         */
        protected $list_table_type = '';
        /**
         * Object being shown on the row.
         *
         * @var object|null
         */
        protected $object = \null;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Show blank slate.
         *
         * @param string $which String which tablenav is being shown.
         */
        public function maybe_render_blank_state($which)
        {
        }
        /**
         * Render blank state. Extend to add content.
         */
        protected function render_blank_state()
        {
        }
        /**
         * Removes this type from list of post types that support "View Mode" switching.
         * View mode is seen on posts where you can switch between list or excerpt. Our post types don't support
         * it, so we want to hide the useless UI from the screen options tab.
         *
         * @param  array $post_types Array of post types supporting view mode.
         * @return array             Array of post types supporting view mode, without this type.
         */
        public function disable_view_mode($post_types)
        {
        }
        /**
         * See if we should render search filters or not.
         */
        public function restrict_manage_posts()
        {
        }
        /**
         * Handle any filters.
         *
         * @param array $query_vars Query vars.
         * @return array
         */
        public function request_query($query_vars)
        {
        }
        /**
         * Render any custom filters and search inputs for the list table.
         */
        protected function render_filters()
        {
        }
        /**
         * Handle any custom filters.
         *
         * @param array $query_vars Query vars.
         * @return array
         */
        protected function query_filters($query_vars)
        {
        }
        /**
         * Set row actions.
         *
         * @param array   $actions Array of actions.
         * @param WP_Post $post Current post object.
         * @return array
         */
        public function row_actions($actions, $post)
        {
        }
        /**
         * Get row actions to show in the list table.
         *
         * @param array   $actions Array of actions.
         * @param WP_Post $post Current post object.
         * @return array
         */
        protected function get_row_actions($actions, $post)
        {
        }
        /**
         * Adjust which columns are displayed by default.
         *
         * @param array  $hidden Current hidden columns.
         * @param object $screen Current screen.
         * @return array
         */
        public function default_hidden_columns($hidden, $screen)
        {
        }
        /**
         * Set list table primary column.
         *
         * @param  string $default Default value.
         * @param  string $screen_id Current screen ID.
         * @return string
         */
        public function list_table_primary_column($default, $screen_id)
        {
        }
        /**
         * Define primary column.
         *
         * @return array
         */
        protected function get_primary_column()
        {
        }
        /**
         * Define hidden columns.
         *
         * @return array
         */
        protected function define_hidden_columns()
        {
        }
        /**
         * Define which columns are sortable.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_sortable_columns($columns)
        {
        }
        /**
         * Define which columns to show on this screen.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_columns($columns)
        {
        }
        /**
         * Define bulk actions.
         *
         * @param array $actions Existing actions.
         * @return array
         */
        public function define_bulk_actions($actions)
        {
        }
        /**
         * Pre-fetch any data for the row each column has access to it.
         *
         * @param int $post_id Post ID being shown.
         */
        protected function prepare_row_data($post_id)
        {
        }
        /**
         * Render individual columns.
         *
         * @param string $column Column ID to render.
         * @param int    $post_id Post ID being shown.
         */
        public function render_columns($column, $post_id)
        {
        }
        /**
         * Handle bulk actions.
         *
         * @param  string $redirect_to URL to redirect to.
         * @param  string $action      Action name.
         * @param  array  $ids         List of ids.
         * @return string
         */
        public function handle_bulk_actions($redirect_to, $action, $ids)
        {
        }
    }
    /**
     * WC_Admin_List_Table_Coupons Class.
     */
    class WC_Admin_List_Table_Coupons extends \WC_Admin_List_Table
    {
        /**
         * Post type.
         *
         * @var string
         */
        protected $list_table_type = 'shop_coupon';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Render blank state.
         */
        protected function render_blank_state()
        {
        }
        /**
         * Define primary column.
         *
         * @return string
         */
        protected function get_primary_column()
        {
        }
        /**
         * Get row actions to show in the list table.
         *
         * @param array   $actions Array of actions.
         * @param WP_Post $post Current post object.
         * @return array
         */
        protected function get_row_actions($actions, $post)
        {
        }
        /**
         * Define which columns to show on this screen.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_columns($columns)
        {
        }
        /**
         * Pre-fetch any data for the row each column has access to it. the_coupon global is there for bw compat.
         *
         * @param int $post_id Post ID being shown.
         */
        protected function prepare_row_data($post_id)
        {
        }
        /**
         * Render columm: coupon_code.
         */
        protected function render_coupon_code_column()
        {
        }
        /**
         * Render columm: type.
         */
        protected function render_type_column()
        {
        }
        /**
         * Render columm: amount.
         */
        protected function render_amount_column()
        {
        }
        /**
         * Render columm: products.
         */
        protected function render_products_column()
        {
        }
        /**
         * Render columm: usage_limit.
         */
        protected function render_usage_limit_column()
        {
        }
        /**
         * Render columm: usage.
         */
        protected function render_usage_column()
        {
        }
        /**
         * Render columm: expiry_date.
         */
        protected function render_expiry_date_column()
        {
        }
        /**
         * Render columm: description.
         */
        protected function render_description_column()
        {
        }
        /**
         * Render any custom filters and search inputs for the list table.
         */
        protected function render_filters()
        {
        }
        /**
         * Handle any custom filters.
         *
         * @param array $query_vars Query vars.
         * @return array
         */
        protected function query_filters($query_vars)
        {
        }
    }
    /**
     * WC_Admin_List_Table_Products Class.
     */
    class WC_Admin_List_Table_Products extends \WC_Admin_List_Table
    {
        /**
         * Post type.
         *
         * @var string
         */
        protected $list_table_type = 'product';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Render blank state.
         */
        protected function render_blank_state()
        {
        }
        /**
         * Define primary column.
         *
         * @return string
         */
        protected function get_primary_column()
        {
        }
        /**
         * Get row actions to show in the list table.
         *
         * @param array   $actions Array of actions.
         * @param WP_Post $post Current post object.
         * @return array
         */
        protected function get_row_actions($actions, $post)
        {
        }
        /**
         * Define which columns are sortable.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_sortable_columns($columns)
        {
        }
        /**
         * Define which columns to show on this screen.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_columns($columns)
        {
        }
        /**
         * Pre-fetch any data for the row each column has access to it. the_product global is there for bw compat.
         *
         * @param int $post_id Post ID being shown.
         */
        protected function prepare_row_data($post_id)
        {
        }
        /**
         * Render columm: thumb.
         */
        protected function render_thumb_column()
        {
        }
        /**
         * Render column: name.
         */
        protected function render_name_column()
        {
        }
        /**
         * Render columm: sku.
         */
        protected function render_sku_column()
        {
        }
        /**
         * Render columm: price.
         */
        protected function render_price_column()
        {
        }
        /**
         * Render columm: product_cat.
         */
        protected function render_product_cat_column()
        {
        }
        /**
         * Render columm: product_tag.
         */
        protected function render_product_tag_column()
        {
        }
        /**
         * Render columm: featured.
         */
        protected function render_featured_column()
        {
        }
        /**
         * Render columm: is_in_stock.
         */
        protected function render_is_in_stock_column()
        {
        }
        /**
         * Query vars for custom searches.
         *
         * @param mixed $public_query_vars Array of query vars.
         * @return array
         */
        public function add_custom_query_var($public_query_vars)
        {
        }
        /**
         * Render any custom filters and search inputs for the list table.
         */
        protected function render_filters()
        {
        }
        /**
         * Render the product category filter for the list table.
         *
         * @since 3.5.0
         */
        protected function render_products_category_filter()
        {
        }
        /**
         * Render the product type filter for the list table.
         *
         * @since 3.5.0
         */
        protected function render_products_type_filter()
        {
        }
        /**
         * Render the stock status filter for the list table.
         *
         * @since 3.5.0
         */
        public function render_products_stock_status_filter()
        {
        }
        /**
         * Search by SKU or ID for products.
         *
         * @deprecated Logic moved to query_filters.
         * @param string $where Where clause SQL.
         * @return string
         */
        public function sku_search($where)
        {
        }
        /**
         * Change views on the edit product screen.
         *
         * @param  array $views Array of views.
         * @return array
         */
        public function product_views($views)
        {
        }
        /**
         * Change the label when searching products
         *
         * @param string $query Search Query.
         * @return string
         */
        public function search_label($query)
        {
        }
        /**
         * Handle any custom filters.
         *
         * @param array $query_vars Query vars.
         * @return array
         */
        protected function query_filters($query_vars)
        {
        }
        /**
         * Undocumented function
         *
         * @param array    $args  Array of SELECT statement pieces (from, where, etc).
         * @param WP_Query $query WP_Query instance.
         * @return array
         */
        public function posts_clauses($args, $query)
        {
        }
        /**
         * Remove ordering queries.
         *
         * @param array $posts Posts array, keeping this for backwards compatibility defaulting to empty array.
         * @return array
         */
        public function remove_ordering_args($posts = array())
        {
        }
        /**
         * Handle numeric price sorting.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_price_asc_post_clauses($args)
        {
        }
        /**
         * Handle numeric price sorting.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_price_desc_post_clauses($args)
        {
        }
        /**
         * Handle sku sorting.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_sku_asc_post_clauses($args)
        {
        }
        /**
         * Handle sku sorting.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_sku_desc_post_clauses($args)
        {
        }
        /**
         * Filter by type.
         *
         * @param array $args Query args.
         * @return array
         */
        public function filter_downloadable_post_clauses($args)
        {
        }
        /**
         * Filter by type.
         *
         * @param array $args Query args.
         * @return array
         */
        public function filter_virtual_post_clauses($args)
        {
        }
        /**
         * Filter by stock status.
         *
         * @param array $args Query args.
         * @return array
         */
        public function filter_stock_status_post_clauses($args)
        {
        }
        /**
         * Join wc_product_meta_lookup to posts if not already joined.
         *
         * @param string $sql SQL join.
         * @return string
         */
        private function append_product_sorting_table_join($sql)
        {
        }
        /**
         * Modifies post query so that it includes parent products whose variations have particular shipping class assigned.
         *
         * @param array    $pieces   Array of SELECT statement pieces (from, where, etc).
         * @param WP_Query $wp_query WP_Query instance.
         * @return array             Array of products, including parents of variations.
         */
        public function add_variation_parents_for_shipping_class($pieces, $wp_query)
        {
        }
    }
    /**
     * WC_Admin_List_Table_Orders Class.
     */
    class WC_Admin_List_Table_Orders extends \WC_Admin_List_Table
    {
        /**
         * Post type.
         *
         * @var string
         */
        protected $list_table_type = 'shop_order';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Render blank state.
         */
        protected function render_blank_state()
        {
        }
        /**
         * Define primary column.
         *
         * @return string
         */
        protected function get_primary_column()
        {
        }
        /**
         * Get row actions to show in the list table.
         *
         * @param array   $actions Array of actions.
         * @param WP_Post $post Current post object.
         * @return array
         */
        protected function get_row_actions($actions, $post)
        {
        }
        /**
         * Define hidden columns.
         *
         * @return array
         */
        protected function define_hidden_columns()
        {
        }
        /**
         * Define which columns are sortable.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_sortable_columns($columns)
        {
        }
        /**
         * Define which columns to show on this screen.
         *
         * @param array $columns Existing columns.
         * @return array
         */
        public function define_columns($columns)
        {
        }
        /**
         * Define bulk actions.
         *
         * @param array $actions Existing actions.
         * @return array
         */
        public function define_bulk_actions($actions)
        {
        }
        /**
         * Pre-fetch any data for the row each column has access to it. the_order global is there for bw compat.
         *
         * @param int $post_id Post ID being shown.
         */
        protected function prepare_row_data($post_id)
        {
        }
        /**
         * Render columm: order_number.
         */
        protected function render_order_number_column()
        {
        }
        /**
         * Render columm: order_status.
         */
        protected function render_order_status_column()
        {
        }
        /**
         * Render columm: order_date.
         */
        protected function render_order_date_column()
        {
        }
        /**
         * Render columm: order_total.
         */
        protected function render_order_total_column()
        {
        }
        /**
         * Render columm: wc_actions.
         */
        protected function render_wc_actions_column()
        {
        }
        /**
         * Render columm: billing_address.
         */
        protected function render_billing_address_column()
        {
        }
        /**
         * Render columm: shipping_address.
         */
        protected function render_shipping_address_column()
        {
        }
        /**
         * Template for order preview.
         *
         * @since 3.3.0
         */
        public function order_preview_template()
        {
        }
        /**
         * Get items to display in the preview as HTML.
         *
         * @param  WC_Order $order Order object.
         * @return string
         */
        public static function get_order_preview_item_html($order)
        {
        }
        /**
         * Get actions to display in the preview as HTML.
         *
         * @param  WC_Order $order Order object.
         * @return string
         */
        public static function get_order_preview_actions_html($order)
        {
        }
        /**
         * Get order details to send to the ajax endpoint for previews.
         *
         * @param  WC_Order $order Order object.
         * @return array
         */
        public static function order_preview_get_order_details($order)
        {
        }
        /**
         * Handle bulk actions.
         *
         * @param  string $redirect_to URL to redirect to.
         * @param  string $action      Action name.
         * @param  array  $ids         List of ids.
         * @return string
         */
        public function handle_bulk_actions($redirect_to, $action, $ids)
        {
        }
        /**
         * Show confirmation message that order status changed for number of orders.
         */
        public function bulk_admin_notices()
        {
        }
        /**
         * See if we should render search filters or not.
         */
        public function restrict_manage_posts()
        {
        }
        /**
         * Render any custom filters and search inputs for the list table.
         */
        protected function render_filters()
        {
        }
        /**
         * Handle any filters.
         *
         * @param array $query_vars Query vars.
         * @return array
         */
        public function request_query($query_vars)
        {
        }
        /**
         * Handle any custom filters.
         *
         * @param array $query_vars Query vars.
         * @return array
         */
        protected function query_filters($query_vars)
        {
        }
        /**
         * Change the label when searching orders.
         *
         * @param mixed $query Current search query.
         * @return string
         */
        public function search_label($query)
        {
        }
        /**
         * Query vars for custom searches.
         *
         * @param mixed $public_query_vars Array of query vars.
         * @return array
         */
        public function add_custom_query_var($public_query_vars)
        {
        }
        /**
         * Search custom fields as well as content.
         *
         * @param WP_Query $wp Query object.
         */
        public function search_custom_fields($wp)
        {
        }
    }
    /**
     * WC_Report_Stock.
     *
     * @author      WooThemes
     * @category    Admin
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Stock extends \WP_List_Table
    {
        /**
         * Max items.
         *
         * @var int
         */
        protected $max_items;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Don't need this.
         *
         * @param string $position
         */
        public function display_tablenav($position)
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get column value.
         *
         * @param mixed  $item
         * @param string $column_name
         */
        public function column_default($item, $column_name)
        {
        }
        /**
         * Get columns.
         *
         * @return array
         */
        public function get_columns()
        {
        }
        /**
         * Prepare customer list items.
         */
        public function prepare_items()
        {
        }
    }
    /**
     * WC_Report_Most_Stocked.
     */
    class WC_Report_Most_Stocked extends \WC_Report_Stock
    {
        /**
         * Get Products matching stock criteria.
         *
         * @param int $current_page Current page number.
         * @param int $per_page How many results to show per page.
         */
        public function get_items($current_page, $per_page)
        {
        }
    }
    /**
     * WC_Report_Downloads.
     */
    class WC_Report_Downloads extends \WP_List_Table
    {
        /**
         * Max items.
         *
         * @var int
         */
        protected $max_items;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Don't need this.
         *
         * @param string $position Top or bottom.
         */
        public function display_tablenav($position)
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get column value.
         *
         * @param mixed  $item Item being displayed.
         * @param string $column_name Column name.
         */
        public function column_default($item, $column_name)
        {
        }
        /**
         * Get columns.
         *
         * @return array
         */
        public function get_columns()
        {
        }
        /**
         * Prepare download list items.
         */
        public function prepare_items()
        {
        }
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Get filters from querystring.
         *
         * @return object
         */
        protected function get_filter_vars()
        {
        }
        /**
         * Get downloads matching criteria.
         *
         * @param int $current_page Current viewed page.
         * @param int $per_page How many results to show per page.
         */
        public function get_items($current_page, $per_page)
        {
        }
    }
    /**
     * Admin Report.
     *
     * Extended by reports to show charts and stats in admin.
     *
     * @author      WooThemes
     * @category    Admin
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Admin_Report
    {
        /**
         * @var array List of transients name that have been updated and need persisting.
         */
        protected static $transients_to_update = array();
        /**
         * @var array The list of transients.
         */
        protected static $cached_results = array();
        /**
         * The chart interval.
         *
         * @var int
         */
        public $chart_interval;
        /**
         * Group by SQL query.
         *
         * @var string
         */
        public $group_by_query;
        /**
         * The bar width.
         *
         * @var int
         */
        public $barwidth;
        /**
         * Group chart item by day or month.
         *
         * @var string
         */
        public $chart_groupby;
        /**
         * The start date of the report.
         *
         * @var int timestamp
         */
        public $start_date;
        /**
         * The end date of the report.
         *
         * @var int timestamp
         */
        public $end_date;
        /**
         * Get report totals such as order totals and discount amounts.
         *
         * Data example:
         *
         * '_order_total' => array(
         *     'type'     => 'meta',
         *     'function' => 'SUM',
         *     'name'     => 'total_sales'
         * )
         *
         * @param  array $args
         * @return mixed depending on query_type
         */
        public function get_order_report_data($args = array())
        {
        }
        /**
         * Init the static hooks of the class.
         */
        protected static function add_update_transients_hook()
        {
        }
        /**
         * Enables big mysql selects for reports, just once for this session.
         */
        protected static function enable_big_selects()
        {
        }
        /**
         * Get the cached query result or null if it's not in the cache.
         *
         * @param string $query_hash The query hash.
         *
         * @return mixed
         */
        protected function get_cached_query($query_hash)
        {
        }
        /**
         * Set the cached query result.
         *
         * @param string $query_hash The query hash.
         * @param mixed  $data The data to cache.
         */
        protected function set_cached_query($query_hash, $data)
        {
        }
        /**
         * Function to update the modified transients at the end of the request.
         */
        public static function maybe_update_transients()
        {
        }
        /**
         * Put data with post_date's into an array of times.
         *
         * @param  array  $data array of your data
         * @param  string $date_key key for the 'date' field. e.g. 'post_date'
         * @param  string $data_key key for the data you are charting
         * @param  int    $interval
         * @param  string $start_date
         * @param  string $group_by
         * @return array
         */
        public function prepare_chart_data($data, $date_key, $data_key, $interval, $start_date, $group_by)
        {
        }
        /**
         * Prepares a sparkline to show sales in the last X days.
         *
         * @param  int    $id ID of the product to show. Blank to get all orders.
         * @param  int    $days Days of stats to get.
         * @param  string $type Type of sparkline to get. Ignored if ID is not set.
         * @return string
         */
        public function sales_sparkline($id = '', $days = 7, $type = 'sales')
        {
        }
        /**
         * Get the current range and calculate the start and end dates.
         *
         * @param  string $current_range
         */
        public function calculate_current_range($current_range)
        {
        }
        /**
         * Return currency tooltip JS based on WooCommerce currency position settings.
         *
         * @return string
         */
        public function get_currency_tooltip()
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Get chart widgets.
         *
         * @return array
         */
        public function get_chart_widgets()
        {
        }
        /**
         * Get an export link if needed.
         */
        public function get_export_button()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Check nonce for current range.
         *
         * @since  3.0.4
         * @param  string $current_range Current range.
         */
        public function check_current_range_nonce($current_range)
        {
        }
    }
    /**
     * WC_Report_Sales_By_Product
     *
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Sales_By_Product extends \WC_Admin_Report
    {
        /**
         * Chart colors.
         *
         * @var array
         */
        public $chart_colours = array();
        /**
         * Product ids.
         *
         * @var array
         */
        public $product_ids = array();
        /**
         * Product ids with titles.
         *
         * @var array
         */
        public $product_ids_titles = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get chart widgets.
         *
         * @return array
         */
        public function get_chart_widgets()
        {
        }
        /**
         * Output current filters.
         */
        public function current_filters()
        {
        }
        /**
         * Output products widget.
         */
        public function products_widget()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * WC_Report_Taxes_By_Date
     *
     * @author      WooThemes
     * @category    Admin
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Taxes_By_Date extends \WC_Admin_Report
    {
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * WC_Report_Sales_By_Category
     *
     * @author      WooThemes
     * @category    Admin
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Sales_By_Category extends \WC_Admin_Report
    {
        /**
         * Chart colors.
         *
         * @var array
         */
        public $chart_colours = array();
        /**
         * Categories ids.
         *
         * @var array
         */
        public $show_categories = array();
        /**
         * Item sales.
         *
         * @var array
         */
        private $item_sales = array();
        /**
         * Item sales and times.
         *
         * @var array
         */
        private $item_sales_and_times = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get all product ids in a category (and its children).
         *
         * @param  int $category_id Category ID.
         * @return array
         */
        public function get_products_in_category($category_id)
        {
        }
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get chart widgets.
         *
         * @return array
         */
        public function get_chart_widgets()
        {
        }
        /**
         * Output category widget.
         */
        public function category_widget()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * WC_Report_Customers
     *
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Customers extends \WC_Admin_Report
    {
        /**
         * Chart colors.
         *
         * @var array
         */
        public $chart_colours = array();
        /**
         * Customers.
         *
         * @var array
         */
        public $customers = array();
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Get chart widgets.
         *
         * @return array
         */
        public function get_chart_widgets()
        {
        }
        /**
         * Output customers vs guests chart.
         */
        public function customers_vs_guests()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Output the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * WC_Report_Sales_By_Date
     */
    class WC_Report_Sales_By_Date extends \WC_Admin_Report
    {
        /**
         * Chart colors.
         *
         * @var array
         */
        public $chart_colours = array();
        /**
         * The report data.
         *
         * @var stdClass
         */
        private $report_data;
        /**
         * Get report data.
         *
         * @return stdClass
         */
        public function get_report_data()
        {
        }
        /**
         * Get all data needed for this report and store in the class.
         */
        private function query_report_data()
        {
        }
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Round our totals correctly.
         *
         * @param array|string $amount Chart total.
         *
         * @return array|string
         */
        private function round_chart_totals($amount)
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * WC_Report_Coupon_Usage
     *
     * @author      WooThemes
     * @category    Admin
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Coupon_Usage extends \WC_Admin_Report
    {
        /**
         * Chart colors.
         *
         * @var array
         */
        public $chart_colours = array();
        /**
         * Coupon codes.
         *
         * @var array
         */
        public $coupon_codes = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get chart widgets.
         *
         * @return array
         */
        public function get_chart_widgets()
        {
        }
        /**
         * Output coupons widget.
         */
        public function coupons_widget()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * Low stock report class.
     */
    class WC_Report_Low_In_Stock extends \WC_Report_Stock
    {
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Get Products matching stock criteria.
         *
         * @param int $current_page Current page number.
         * @param int $per_page How many results to show per page.
         */
        public function get_items($current_page, $per_page)
        {
        }
    }
    /**
     * WC_Report_Taxes_By_Code
     *
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Taxes_By_Code extends \WC_Admin_Report
    {
        /**
         * Get the legend for the main chart sidebar.
         *
         * @return array
         */
        public function get_chart_legend()
        {
        }
        /**
         * Output an export link.
         */
        public function get_export_button()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get the main chart.
         */
        public function get_main_chart()
        {
        }
    }
    /**
     * WC_Report_Out_Of_Stock class.
     */
    class WC_Report_Out_Of_Stock extends \WC_Report_Stock
    {
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Get Products matching stock criteria.
         *
         * @param int $current_page Current page number.
         * @param int $per_page How many results to show per page.
         */
        public function get_items($current_page, $per_page)
        {
        }
    }
    /**
     * WC_Report_Customer_List.
     *
     * @package     WooCommerce/Admin/Reports
     * @version     2.1.0
     */
    class WC_Report_Customer_List extends \WP_List_Table
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Output the report.
         */
        public function output_report()
        {
        }
        /**
         * Get column value.
         *
         * @param WP_User $user WP User object.
         * @param string  $column_name Column name.
         * @return string
         */
        public function column_default($user, $column_name)
        {
        }
        /**
         * Get columns.
         *
         * @return array
         */
        public function get_columns()
        {
        }
        /**
         * Order users by name.
         *
         * @param WP_User_Query $query Query that gets passed through.
         * @return WP_User_Query
         */
        public function order_by_last_name($query)
        {
        }
        /**
         * Prepare customer list items.
         */
        public function prepare_items()
        {
        }
    }
    /**
     * WC_Admin_Pointers Class.
     */
    class WC_Admin_Pointers
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Setup pointers for screen.
         */
        public function setup_pointers_for_screen()
        {
        }
        /**
         * Pointers for creating a product.
         */
        public function create_product_tutorial()
        {
        }
        /**
         * Enqueue pointers and add script to page.
         *
         * @param array $pointers
         */
        public function enqueue_pointers($pointers)
        {
        }
    }
    /**
     * API Keys table list class.
     */
    class WC_Admin_API_Keys_Table_List extends \WP_List_Table
    {
        /**
         * Initialize the API key table list.
         */
        public function __construct()
        {
        }
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Get list columns.
         *
         * @return array
         */
        public function get_columns()
        {
        }
        /**
         * Column cb.
         *
         * @param  array $key Key data.
         * @return string
         */
        public function column_cb($key)
        {
        }
        /**
         * Return title column.
         *
         * @param  array $key Key data.
         * @return string
         */
        public function column_title($key)
        {
        }
        /**
         * Return truncated consumer key column.
         *
         * @param  array $key Key data.
         * @return string
         */
        public function column_truncated_key($key)
        {
        }
        /**
         * Return user column.
         *
         * @param  array $key Key data.
         * @return string
         */
        public function column_user($key)
        {
        }
        /**
         * Return permissions column.
         *
         * @param  array $key Key data.
         * @return string
         */
        public function column_permissions($key)
        {
        }
        /**
         * Return last access column.
         *
         * @param  array $key Key data.
         * @return string
         */
        public function column_last_access($key)
        {
        }
        /**
         * Get bulk actions.
         *
         * @return array
         */
        protected function get_bulk_actions()
        {
        }
        /**
         * Search box.
         *
         * @param  string $text     Button text.
         * @param  string $input_id Input ID.
         */
        public function search_box($text, $input_id)
        {
        }
        /**
         * Prepare table list items.
         */
        public function prepare_items()
        {
        }
    }
    /**
     * WC_Admin_Dashboard Class.
     */
    class WC_Admin_Dashboard
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Init dashboard widgets.
         */
        public function init()
        {
        }
        /**
         * Register the network order dashboard widget.
         */
        public function register_network_order_widget()
        {
        }
        /**
         * Get top seller from DB.
         *
         * @return object
         */
        private function get_top_seller()
        {
        }
        /**
         * Get sales report data.
         *
         * @return object
         */
        private function get_sales_report_data()
        {
        }
        /**
         * Show status widget.
         */
        public function status_widget()
        {
        }
        /**
         * Show order data is status widget.
         */
        private function status_widget_order_rows()
        {
        }
        /**
         * Show stock data is status widget.
         */
        private function status_widget_stock_rows()
        {
        }
        /**
         * Recent reviews widget.
         */
        public function recent_reviews()
        {
        }
        /**
         * Network orders widget.
         */
        public function network_orders()
        {
        }
    }
    /**
     * WC_Admin_Notices Class.
     */
    class WC_Admin_Notices
    {
        /**
         * Stores notices.
         *
         * @var array
         */
        private static $notices = array();
        /**
         * Array of notices - name => callback.
         *
         * @var array
         */
        private static $core_notices = array('install' => 'install_notice', 'update' => 'update_notice', 'template_files' => 'template_file_check_notice', 'legacy_shipping' => 'legacy_shipping_notice', 'no_shipping_methods' => 'no_shipping_methods_notice', 'regenerating_thumbnails' => 'regenerating_thumbnails_notice', 'regenerating_lookup_table' => 'regenerating_lookup_table_notice', 'no_secure_connection' => 'secure_connection_notice', 'wc_admin' => 'wc_admin_feature_plugin_notice', 'wp_php_min_requirements' => 'wp_php_min_requirements_notice');
        /**
         * Constructor.
         */
        public static function init()
        {
        }
        /**
         * Store notices to DB
         */
        public static function store_notices()
        {
        }
        /**
         * Get notices
         *
         * @return array
         */
        public static function get_notices()
        {
        }
        /**
         * Remove all notices.
         */
        public static function remove_all_notices()
        {
        }
        /**
         * Reset notices for themes when switched or a new version of WC is installed.
         */
        public static function reset_admin_notices()
        {
        }
        /**
         * Show a notice.
         *
         * @param string $name Notice name.
         */
        public static function add_notice($name)
        {
        }
        /**
         * Remove a notice from being displayed.
         *
         * @param string $name Notice name.
         */
        public static function remove_notice($name)
        {
        }
        /**
         * See if a notice is being shown.
         *
         * @param string $name Notice name.
         *
         * @return boolean
         */
        public static function has_notice($name)
        {
        }
        /**
         * Hide a notice if the GET variable is set.
         */
        public static function hide_notices()
        {
        }
        /**
         * Add notices + styles if needed.
         */
        public static function add_notices()
        {
        }
        /**
         * Add a custom notice.
         *
         * @param string $name        Notice name.
         * @param string $notice_html Notice HTML.
         */
        public static function add_custom_notice($name, $notice_html)
        {
        }
        /**
         * Output any stored custom notices.
         */
        public static function output_custom_notices()
        {
        }
        /**
         * If we need to update, include a message with the update button.
         */
        public static function update_notice()
        {
        }
        /**
         * If we have just installed, show a message with the install pages button.
         */
        public static function install_notice()
        {
        }
        /**
         * Show a notice highlighting bad template files.
         */
        public static function template_file_check_notice()
        {
        }
        /**
         * Show a notice asking users to convert to shipping zones.
         *
         * @todo remove in 4.0.0
         */
        public static function legacy_shipping_notice()
        {
        }
        /**
         * No shipping methods.
         */
        public static function no_shipping_methods_notice()
        {
        }
        /**
         * Notice shown when regenerating thumbnails background process is running.
         */
        public static function regenerating_thumbnails_notice()
        {
        }
        /**
         * Notice about secure connection.
         */
        public static function secure_connection_notice()
        {
        }
        /**
         * Notice shown when regenerating thumbnails background process is running.
         *
         * @since 3.6.0
         */
        public static function regenerating_lookup_table_notice()
        {
        }
        /**
         * If on WordPress 5.0 or greater, inform users of WooCommerce Admin feature plugin.
         *
         * @since 3.6.4
         * @todo  Remove this notice and associated code once the feature plugin has been merged into core.
         */
        public static function add_wc_admin_feature_plugin_notice()
        {
        }
        /**
         * Notice to try WooCommerce Admin
         *
         * @since 3.6.4
         * @todo  Remove this notice and associated code once the feature plugin has been merged into core.
         */
        public static function wc_admin_feature_plugin_notice()
        {
        }
        /**
         * Add notice about minimum PHP and WordPress requirement.
         *
         * @since 3.6.5
         */
        public static function add_min_version_notice()
        {
        }
        /**
         * Notice about WordPress and PHP minimum requirements.
         *
         * @since 3.6.5
         * @return void
         */
        public static function wp_php_min_requirements_notice()
        {
        }
        /**
         * Determine if the store is running SSL.
         *
         * @return bool Flag SSL enabled.
         * @since  3.5.1
         */
        protected static function is_ssl()
        {
        }
        /**
         * Wrapper for is_plugin_active.
         *
         * @param string $plugin Plugin to check.
         * @return boolean
         */
        protected static function is_plugin_active($plugin)
        {
        }
        /**
         * Simplify Commerce is no longer in core.
         *
         * @deprecated 3.6.0 No longer shown.
         */
        public static function simplify_commerce_notice()
        {
        }
        /**
         * Show the Theme Check notice.
         *
         * @deprecated 3.3.0 No longer shown.
         */
        public static function theme_check_notice()
        {
        }
    }
    /**
     * WC_Admin_Plugin_Updates Class.
     */
    class WC_Plugin_Updates
    {
        /**
         * This is the header used by extensions to show requirements.
         *
         * @var string
         */
        const VERSION_REQUIRED_HEADER = 'WC requires at least';
        /**
         * This is the header used by extensions to show testing.
         *
         * @var string
         */
        const VERSION_TESTED_HEADER = 'WC tested up to';
        /**
         * The version for the update to WooCommerce.
         *
         * @var string
         */
        protected $new_version = '';
        /**
         * Array of plugins lacking testing with the major version.
         *
         * @var array
         */
        protected $major_untested_plugins = array();
        /**
         * Array of plugins lacking testing with the minor version.
         *
         * @var array
         */
        protected $minor_untested_plugins = array();
        /**
         * Common JS for initializing and managing thickbox-based modals.
         */
        protected function generic_modal_js()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Message Helpers
        |--------------------------------------------------------------------------
        |
        | Methods for getting messages.
        */
        /**
         * Get the inline warning notice for minor version updates.
         *
         * @return string
         */
        protected function get_extensions_inline_warning_minor()
        {
        }
        /**
         * Get the inline warning notice for major version updates.
         *
         * @return string
         */
        protected function get_extensions_inline_warning_major()
        {
        }
        /**
         * Get the warning notice for the modal window.
         *
         * @return string
         */
        protected function get_extensions_modal_warning()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Data Helpers
        |--------------------------------------------------------------------------
        |
        | Methods for getting & manipulating data.
        */
        /**
         * Get active plugins that have a tested version lower than the input version.
         *
         * @param string $new_version WooCommerce version to test against.
         * @param string $release 'major' or 'minor'.
         * @return array of plugin info arrays
         */
        public function get_untested_plugins($new_version, $release)
        {
        }
        /**
         * Get plugins that have a valid value for a specific header.
         *
         * @param string $header Plugin header to search for.
         * @return array Array of plugins that contain the searched header.
         */
        protected function get_plugins_with_header($header)
        {
        }
        /**
         * Get plugins which "maybe" are for WooCommerce.
         *
         * @return array of plugin info arrays
         */
        protected function get_plugins_for_woocommerce()
        {
        }
    }
    /**
     * Class WC_Updates_Screen_Updates
     */
    class WC_Updates_Screen_Updates extends \WC_Plugin_Updates
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Show a warning message on the upgrades screen if the user tries to upgrade and has untested plugins.
         */
        public function update_screen_modal()
        {
        }
        /**
         * JS for the modal window on the updates screen.
         */
        protected function update_screen_modal_js()
        {
        }
    }
    /**
     * Class WC_Plugins_Screen_Updates
     */
    class WC_Plugins_Screen_Updates extends \WC_Plugin_Updates
    {
        /**
         * The upgrade notice shown inline.
         *
         * @var string
         */
        protected $upgrade_notice = '';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Show plugin changes on the plugins screen. Code adapted from W3 Total Cache.
         *
         * @param array    $args Unused parameter.
         * @param stdClass $response Plugin update response.
         */
        public function in_plugin_update_message($args, $response)
        {
        }
        /**
         * Get the upgrade notice from WordPress.org.
         *
         * @param  string $version WooCommerce new version.
         * @return string
         */
        protected function get_upgrade_notice($version)
        {
        }
        /**
         * Parse update notice from readme file.
         *
         * @param  string $content WooCommerce readme file content.
         * @param  string $new_version WooCommerce new version.
         * @return string
         */
        private function parse_update_notice($content, $new_version)
        {
        }
        /**
         * JS for the modal window on the plugins screen.
         */
        public function plugin_screen_modal_js()
        {
        }
    }
    /**
     * WC_Admin_Reports Class.
     */
    class WC_Admin_Reports
    {
        /**
         * Handles output of the reports page in admin.
         */
        public static function output()
        {
        }
        /**
         * Returns the definitions for the reports to show in admin.
         *
         * @return array
         */
        public static function get_reports()
        {
        }
        /**
         * Get a report from our reports subfolder.
         *
         * @param string $name
         */
        public static function get_report($name)
        {
        }
    }
    /**
     * WC_Admin_Importers Class.
     */
    class WC_Admin_Importers
    {
        /**
         * Array of importer IDs.
         *
         * @var string[]
         */
        protected $importers = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Return true if WooCommerce imports are allowed for current user, false otherwise.
         *
         * @return bool Whether current user can perform imports.
         */
        protected function import_allowed()
        {
        }
        /**
         * Add menu items for our custom importers.
         */
        public function add_to_menus()
        {
        }
        /**
         * Hide menu items from view so the pages exist, but the menu items do not.
         */
        public function hide_from_menus()
        {
        }
        /**
         * Register importer scripts.
         */
        public function admin_scripts()
        {
        }
        /**
         * The product importer.
         *
         * This has a custom screen - the Tools > Import item is a placeholder.
         * If we're on that screen, redirect to the custom one.
         */
        public function product_importer()
        {
        }
        /**
         * Register WordPress based importers.
         */
        public function register_importers()
        {
        }
        /**
         * The tax rate importer which extends WP_Importer.
         */
        public function tax_rates_importer()
        {
        }
        /**
         * When running the WP XML importer, ensure attributes exist.
         *
         * WordPress import should work - however, it fails to import custom product attribute taxonomies.
         * This code grabs the file before it is imported and ensures the taxonomies are created.
         */
        public function post_importer_compatibility()
        {
        }
        /**
         * Ajax callback for importing one batch of products from a CSV.
         */
        public function do_ajax_product_import()
        {
        }
    }
    /**
     * WC_Admin_Addons Class.
     */
    class WC_Admin_Addons
    {
        /**
         * Get featured for the addons screen
         *
         * @return array of objects
         */
        public static function get_featured()
        {
        }
        /**
         * Build url parameter string
         *
         * @param  string $category Addon (sub) category.
         * @param  string $term     Search terms.
         * @param  string $country  Store country.
         *
         * @return string url parameter string
         */
        public static function build_parameter_string($category, $term, $country)
        {
        }
        /**
         * Call API to get extensions
         *
         * @param  string $category Addon (sub) category.
         * @param  string $term     Search terms.
         * @param  string $country  Store country.
         *
         * @return array of extensions
         */
        public static function get_extension_data($category, $term, $country)
        {
        }
        /**
         * Get sections for the addons screen
         *
         * @return array of objects
         */
        public static function get_sections()
        {
        }
        /**
         * Get section for the addons screen.
         *
         * @param  string $section_id Required section ID.
         *
         * @return object|bool
         */
        public static function get_section($section_id)
        {
        }
        /**
         * Get section content for the addons screen.
         *
         * @param  string $section_id Required section ID.
         *
         * @return array
         */
        public static function get_section_data($section_id)
        {
        }
        /**
         * Handles the outputting of a contextually aware Storefront link (points to child themes if Storefront is already active).
         */
        public static function output_storefront_button()
        {
        }
        /**
         * Handles the outputting of a banner block.
         *
         * @param object $block Banner data.
         */
        public static function output_banner_block($block)
        {
        }
        /**
         * Handles the outputting of a column.
         *
         * @param object $block Column data.
         */
        public static function output_column($block)
        {
        }
        /**
         * Handles the outputting of a column block.
         *
         * @param object $block Column block data.
         */
        public static function output_column_block($block)
        {
        }
        /**
         * Handles the outputting of a small light block.
         *
         * @param object $block Block data.
         */
        public static function output_small_light_block($block)
        {
        }
        /**
         * Handles the outputting of a small dark block.
         *
         * @param object $block Block data.
         */
        public static function output_small_dark_block($block)
        {
        }
        /**
         * Handles the outputting of the WooCommerce Services banner block.
         *
         * @param object $block Block data.
         */
        public static function output_wcs_banner_block($block = array())
        {
        }
        /**
         * Handles the outputting of featured sections
         *
         * @param array $sections Section data.
         */
        public static function output_featured_sections($sections)
        {
        }
        /**
         * Returns in-app-purchase URL params.
         */
        public static function get_in_app_purchase_url_params()
        {
        }
        /**
         * Add in-app-purchase URL params to link.
         *
         * Adds various url parameters to a url to support a streamlined
         * flow for obtaining and setting up WooCommerce extensons.
         *
         * @param string $url    Destination URL.
         */
        public static function add_in_app_purchase_url_params($url)
        {
        }
        /**
         * Outputs a button.
         *
         * @param string $url    Destination URL.
         * @param string $text   Button label text.
         * @param string $style  Button style class.
         * @param string $plugin The plugin the button is promoting.
         */
        public static function output_button($url, $text, $style, $plugin = '')
        {
        }
        /**
         * Handles output of the addons page in admin.
         */
        public static function output()
        {
        }
        /**
         * Install WooCommerce Services from Extensions screens.
         */
        public static function install_woocommerce_services_addon()
        {
        }
        /**
         * Should an extension be shown on the featured page.
         *
         * @param object $item Item data.
         * @return boolean
         */
        public static function show_extension($item)
        {
        }
    }
    /**
     * WC_Admin_API_Keys.
     */
    class WC_Admin_API_Keys
    {
        /**
         * Initialize the API Keys admin actions.
         */
        public function __construct()
        {
        }
        /**
         * Check if should allow save settings.
         * This prevents "Your settings have been saved." notices on the table list.
         *
         * @param  bool $allow If allow save settings.
         * @return bool
         */
        public function allow_save_settings($allow)
        {
        }
        /**
         * Check if is API Keys settings page.
         *
         * @return bool
         */
        private function is_api_keys_settings_page()
        {
        }
        /**
         * Page output.
         */
        public static function page_output()
        {
        }
        /**
         * Add screen option.
         */
        public function screen_option()
        {
        }
        /**
         * Table list output.
         */
        private static function table_list_output()
        {
        }
        /**
         * Get key data.
         *
         * @param  int $key_id API Key ID.
         * @return array
         */
        private static function get_key_data($key_id)
        {
        }
        /**
         * API Keys admin actions.
         */
        public function actions()
        {
        }
        /**
         * Notices.
         */
        public static function notices()
        {
        }
        /**
         * Revoke key.
         */
        private function revoke_key()
        {
        }
        /**
         * Bulk actions.
         */
        private function bulk_actions()
        {
        }
        /**
         * Bulk revoke key.
         *
         * @param array $keys API Keys.
         */
        private function bulk_revoke_key($keys)
        {
        }
        /**
         * Remove key.
         *
         * @param  int $key_id API Key ID.
         * @return bool
         */
        private function remove_key($key_id)
        {
        }
    }
    /**
     * WC_Admin_Customize Class.
     */
    class WC_Admin_Customize
    {
        /**
         * Initialize customize actions.
         */
        public function __construct()
        {
        }
        /**
         * Register customize new nav menu item types.
         * This will register WooCommerce account endpoints as a nav menu item type.
         *
         * @since  3.1.0
         * @param  array $item_types Menu item types.
         * @return array
         */
        public function register_customize_nav_menu_item_types($item_types)
        {
        }
        /**
         * Register account endpoints to customize nav menu items.
         *
         * @since  3.1.0
         * @param  array   $items  List of nav menu items.
         * @param  string  $type   Nav menu type.
         * @param  string  $object Nav menu object.
         * @param  integer $page   Page number.
         * @return array
         */
        public function register_customize_nav_menu_items($items = array(), $type = '', $object = '', $page = 0)
        {
        }
    }
    /**
     * Webooks table list class.
     */
    class WC_Admin_Webhooks_Table_List extends \WP_List_Table
    {
        /**
         * Initialize the webhook table list.
         */
        public function __construct()
        {
        }
        /**
         * No items found text.
         */
        public function no_items()
        {
        }
        /**
         * Get list columns.
         *
         * @return array
         */
        public function get_columns()
        {
        }
        /**
         * Column cb.
         *
         * @param  WC_Webhook $webhook Webhook instance.
         * @return string
         */
        public function column_cb($webhook)
        {
        }
        /**
         * Return title column.
         *
         * @param  WC_Webhook $webhook Webhook instance.
         * @return string
         */
        public function column_title($webhook)
        {
        }
        /**
         * Return status column.
         *
         * @param  WC_Webhook $webhook Webhook instance.
         * @return string
         */
        public function column_status($webhook)
        {
        }
        /**
         * Return topic column.
         *
         * @param  WC_Webhook $webhook Webhook instance.
         * @return string
         */
        public function column_topic($webhook)
        {
        }
        /**
         * Return delivery URL column.
         *
         * @param  WC_Webhook $webhook Webhook instance.
         * @return string
         */
        public function column_delivery_url($webhook)
        {
        }
        /**
         * Get the status label for webhooks.
         *
         * @param string $status_name Status name.
         * @param int    $amount      Amount of webhooks.
         * @return array
         */
        private function get_status_label($status_name, $amount)
        {
        }
        /**
         * Table list views.
         *
         * @return array
         */
        protected function get_views()
        {
        }
        /**
         * Get bulk actions.
         *
         * @return array
         */
        protected function get_bulk_actions()
        {
        }
        /**
         * Process bulk actions.
         */
        public function process_bulk_action()
        {
        }
        /**
         * Generate the table navigation above or below the table.
         * Included to remove extra nonce input.
         *
         * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
         */
        protected function display_tablenav($which)
        {
        }
        /**
         * Search box.
         *
         * @param  string $text     Button text.
         * @param  string $input_id Input ID.
         */
        public function search_box($text, $input_id)
        {
        }
        /**
         * Prepare table list items.
         */
        public function prepare_items()
        {
        }
    }
    /**
     * WC_Admin_Taxonomies class.
     */
    class WC_Admin_Taxonomies
    {
        /**
         * Class instance.
         *
         * @var WC_Admin_Taxonomies instance
         */
        protected static $instance = \false;
        /**
         * Default category ID.
         *
         * @var int
         */
        private $default_cat_id = 0;
        /**
         * Get class instance
         */
        public static function get_instance()
        {
        }
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Order term when created (put in position 0).
         *
         * @param mixed  $term_id Term ID.
         * @param mixed  $tt_id Term taxonomy ID.
         * @param string $taxonomy Taxonomy slug.
         */
        public function create_term($term_id, $tt_id = '', $taxonomy = '')
        {
        }
        /**
         * When a term is deleted, delete its meta.
         *
         * @deprecated 3.6.0 No longer needed.
         * @param mixed $term_id Term ID.
         */
        public function delete_term($term_id)
        {
        }
        /**
         * Category thumbnail fields.
         */
        public function add_category_fields()
        {
        }
        /**
         * Edit category thumbnail field.
         *
         * @param mixed $term Term (category) being edited.
         */
        public function edit_category_fields($term)
        {
        }
        /**
         * Save category fields
         *
         * @param mixed  $term_id Term ID being saved.
         * @param mixed  $tt_id Term taxonomy ID.
         * @param string $taxonomy Taxonomy slug.
         */
        public function save_category_fields($term_id, $tt_id = '', $taxonomy = '')
        {
        }
        /**
         * Description for product_cat page to aid users.
         */
        public function product_cat_description()
        {
        }
        /**
         * Add some notes to describe the behavior of the default category.
         */
        public function product_cat_notes()
        {
        }
        /**
         * Description for shipping class page to aid users.
         */
        public function product_attribute_description()
        {
        }
        /**
         * Thumbnail column added to category admin.
         *
         * @param mixed $columns Columns array.
         * @return array
         */
        public function product_cat_columns($columns)
        {
        }
        /**
         * Adjust row actions.
         *
         * @param array  $actions Array of actions.
         * @param object $term Term object.
         * @return array
         */
        public function product_cat_row_actions($actions = array(), $term)
        {
        }
        /**
         * Handle custom row actions.
         */
        public function handle_product_cat_row_actions()
        {
        }
        /**
         * Thumbnail column value added to category admin.
         *
         * @param string $columns Column HTML output.
         * @param string $column Column name.
         * @param int    $id Product ID.
         *
         * @return string
         */
        public function product_cat_column($columns, $column, $id)
        {
        }
        /**
         * Maintain term hierarchy when editing a product.
         *
         * @param  array $args Term checklist args.
         * @return array
         */
        public function disable_checked_ontop($args)
        {
        }
        /**
         * Admin footer scripts for the product categories admin screen
         *
         * @return void
         */
        public function scripts_at_product_cat_screen_footer()
        {
        }
    }
    /**
     * WC_Admin_Webhooks.
     */
    class WC_Admin_Webhooks
    {
        /**
         * Initialize the webhooks admin actions.
         */
        public function __construct()
        {
        }
        /**
         * Check if should allow save settings.
         * This prevents "Your settings have been saved." notices on the table list.
         *
         * @param  bool $allow If allow save settings.
         * @return bool
         */
        public function allow_save_settings($allow)
        {
        }
        /**
         * Check if is webhook settings page.
         *
         * @return bool
         */
        private function is_webhook_settings_page()
        {
        }
        /**
         * Save method.
         */
        private function save()
        {
        }
        /**
         * Bulk delete.
         *
         * @param array $webhooks List of webhooks IDs.
         */
        public static function bulk_delete($webhooks)
        {
        }
        /**
         * Delete webhook.
         */
        private function delete()
        {
        }
        /**
         * Webhooks admin actions.
         */
        public function actions()
        {
        }
        /**
         * Page output.
         */
        public static function page_output()
        {
        }
        /**
         * Notices.
         */
        public static function notices()
        {
        }
        /**
         * Add screen option.
         */
        public function screen_option()
        {
        }
        /**
         * Table list output.
         */
        private static function table_list_output()
        {
        }
        /**
         * Logs output.
         *
         * @deprecated 3.3.0
         * @param WC_Webhook $webhook Deprecated.
         */
        public static function logs_output($webhook = 'deprecated')
        {
        }
        /**
         * Get the webhook topic data.
         *
         * @param WC_Webhook $webhook Webhook instance.
         *
         * @return array
         */
        public static function get_topic_data($webhook)
        {
        }
        /**
         * Get the logs navigation.
         *
         * @deprecated 3.3.0
         * @param int        $total Deprecated.
         * @param WC_Webhook $webhook Deprecated.
         */
        public static function get_logs_navigation($total, $webhook)
        {
        }
    }
    /**
     * Marketplace Suggestions Updater
     */
    class WC_Marketplace_Updater
    {
        /**
         * Setup.
         */
        public static function load()
        {
        }
        /**
         * Schedule events and hook appropriate actions.
         */
        public static function init()
        {
        }
        /**
         * Fetches new marketplace data, updates wc_marketplace_suggestions.
         */
        public static function update_marketplace_suggestions()
        {
        }
        /**
         * Used when an error has occured when fetching suggestions.
         * Re-schedules the job earlier than the main weekly one.
         */
        public static function retry()
        {
        }
    }
    /**
     * Marketplace suggestions core behaviour.
     */
    class WC_Marketplace_Suggestions
    {
        /**
         * Initialise.
         */
        public static function init()
        {
        }
        /**
         * Product data tabs filter
         *
         * Adds a new Extensions tab to the product data meta box.
         *
         * @param array $tabs Existing tabs.
         *
         * @return array
         */
        public static function product_data_tabs($tabs)
        {
        }
        /**
         * Render additional panels in the proudct data metabox.
         */
        public static function product_data_panels()
        {
        }
        /**
         * Return an array of suggestions the user has dismissed.
         */
        public static function get_dismissed_suggestions()
        {
        }
        /**
         * POST handler for adding a dismissed suggestion.
         */
        public static function post_add_dismissed_suggestion_handler()
        {
        }
        /**
         * Render suggestions containers in products list empty state.
         */
        public static function render_products_list_empty_state()
        {
        }
        /**
         * Render suggestions containers in orders list empty state.
         */
        public static function render_orders_list_empty_state()
        {
        }
        /**
         * Render a suggestions container element, with the specified context.
         *
         * @param string $context Suggestion context name (rendered as a css class).
         */
        public static function render_suggestions_container($context)
        {
        }
        /**
         * Should suggestions be displayed?
         *
         * @param string $screen_id The current admin screen.
         *
         * @return bool
         */
        public static function show_suggestions_for_screen($screen_id)
        {
        }
        /**
         * Should suggestions be displayed?
         *
         * @return bool
         */
        public static function allow_suggestions()
        {
        }
        /**
         * Pull suggestion data from options. This is retrieved from a remote endpoint.
         *
         * @return array of json API data
         */
        public static function get_suggestions_api_data()
        {
        }
    }
    /**
     * WC_Admin_Exporters Class.
     */
    class WC_Admin_Exporters
    {
        /**
         * Array of exporter IDs.
         *
         * @var string[]
         */
        protected $exporters = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Return true if WooCommerce export is allowed for current user, false otherwise.
         *
         * @return bool Whether current user can perform export.
         */
        protected function export_allowed()
        {
        }
        /**
         * Add menu items for our custom exporters.
         */
        public function add_to_menus()
        {
        }
        /**
         * Hide menu items from view so the pages exist, but the menu items do not.
         */
        public function hide_from_menus()
        {
        }
        /**
         * Enqueue scripts.
         */
        public function admin_scripts()
        {
        }
        /**
         * Export page UI.
         */
        public function product_exporter()
        {
        }
        /**
         * Serve the generated file.
         */
        public function download_export_file()
        {
        }
        /**
         * AJAX callback for doing the actual export to the CSV file.
         */
        public function do_ajax_product_export()
        {
        }
    }
    /**
     * Product importer controller - handles file upload and forms in admin.
     *
     * @package     WooCommerce/Admin/Importers
     * @version     3.1.0
     */
    class WC_Product_CSV_Importer_Controller
    {
        /**
         * The path to the current file.
         *
         * @var string
         */
        protected $file = '';
        /**
         * The current import step.
         *
         * @var string
         */
        protected $step = '';
        /**
         * Progress steps.
         *
         * @var array
         */
        protected $steps = array();
        /**
         * Errors.
         *
         * @var array
         */
        protected $errors = array();
        /**
         * The current delimiter for the file being read.
         *
         * @var string
         */
        protected $delimiter = ',';
        /**
         * Whether to use previous mapping selections.
         *
         * @var bool
         */
        protected $map_preferences = \false;
        /**
         * Whether to skip existing products.
         *
         * @var bool
         */
        protected $update_existing = \false;
        /**
         * Get importer instance.
         *
         * @param  string $file File to import.
         * @param  array  $args Importer arguments.
         * @return WC_Product_CSV_Importer
         */
        public static function get_importer($file, $args = array())
        {
        }
        /**
         * Check whether a file is a valid CSV file.
         *
         * @todo Replace this method with wc_is_file_valid_csv() function.
         * @param string $file File path.
         * @param bool   $check_path Whether to also check the file is located in a valid location (Default: true).
         * @return bool
         */
        public static function is_file_valid_csv($file, $check_path = \true)
        {
        }
        /**
         * Get all the valid filetypes for a CSV file.
         *
         * @return array
         */
        protected static function get_valid_csv_filetypes()
        {
        }
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get the URL for the next step's screen.
         *
         * @param string $step  slug (default: current step).
         * @return string       URL for next step if a next step exists.
         *                      Admin URL if it's the last step.
         *                      Empty string on failure.
         */
        public function get_next_step_link($step = '')
        {
        }
        /**
         * Output header view.
         */
        protected function output_header()
        {
        }
        /**
         * Output steps view.
         */
        protected function output_steps()
        {
        }
        /**
         * Output footer view.
         */
        protected function output_footer()
        {
        }
        /**
         * Add error message.
         *
         * @param string $message Error message.
         * @param array  $actions List of actions with 'url' and 'label'.
         */
        protected function add_error($message, $actions = array())
        {
        }
        /**
         * Add error message.
         */
        protected function output_errors()
        {
        }
        /**
         * Dispatch current step and show correct view.
         */
        public function dispatch()
        {
        }
        /**
         * Output information about the uploading process.
         */
        protected function upload_form()
        {
        }
        /**
         * Handle the upload form and store options.
         */
        public function upload_form_handler()
        {
        }
        /**
         * Handles the CSV upload and initial parsing of the file to prepare for
         * displaying author import options.
         *
         * @return string|WP_Error
         */
        public function handle_upload()
        {
        }
        /**
         * Mapping step.
         */
        protected function mapping_form()
        {
        }
        /**
         * Import the file if it exists and is valid.
         */
        public function import()
        {
        }
        /**
         * Done step.
         */
        protected function done()
        {
        }
        /**
         * Columns to normalize.
         *
         * @param  array $columns List of columns names and keys.
         * @return array
         */
        protected function normalize_columns_names($columns)
        {
        }
        /**
         * Auto map column names.
         *
         * @param  array $raw_headers Raw header columns.
         * @param  bool  $num_indexes If should use numbers or raw header columns as indexes.
         * @return array
         */
        protected function auto_map_columns($raw_headers, $num_indexes = \true)
        {
        }
        /**
         * Map columns using the user's lastest import mappings.
         *
         * @param  array $headers Header columns.
         * @return array
         */
        public function auto_map_user_preferences($headers)
        {
        }
        /**
         * Sanitize special column name regex.
         *
         * @param  string $value Raw special column name.
         * @return string
         */
        protected function sanitize_special_column_name_regex($value)
        {
        }
        /**
         * Get special columns.
         *
         * @param  array $columns Raw special columns.
         * @return array
         */
        protected function get_special_columns($columns)
        {
        }
        /**
         * Get mapping options.
         *
         * @param  string $item Item name.
         * @return array
         */
        protected function get_mapping_options($item = '')
        {
        }
    }
    /**
     * Tax Rates importer - import tax rates and local tax rates into WooCommerce.
     *
     * @package     WooCommerce/Admin/Importers
     * @version     2.3.0
     */
    class WC_Tax_Rate_Importer extends \WP_Importer
    {
        /**
         * The current file id.
         *
         * @var int
         */
        public $id;
        /**
         * The current file url.
         *
         * @var string
         */
        public $file_url;
        /**
         * The current import page.
         *
         * @var string
         */
        public $import_page;
        /**
         * The current delimiter.
         *
         * @var string
         */
        public $delimiter;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Registered callback function for the WordPress Importer.
         *
         * Manages the three separate stages of the CSV import process.
         */
        public function dispatch()
        {
        }
        /**
         * Import is starting.
         */
        private function import_start()
        {
        }
        /**
         * UTF-8 encode the data if `$enc` value isn't UTF-8.
         *
         * @param mixed  $data Data.
         * @param string $enc Encoding.
         * @return string
         */
        public function format_data_from_csv($data, $enc)
        {
        }
        /**
         * Import the file if it exists and is valid.
         *
         * @param mixed $file File.
         */
        public function import($file)
        {
        }
        /**
         * Performs post-import cleanup of files and the cache.
         */
        public function import_end()
        {
        }
        /**
         * Handles the CSV upload and initial parsing of the file to prepare for.
         * displaying author import options.
         *
         * @return bool False if error uploading or invalid file, true otherwise
         */
        public function handle_upload()
        {
        }
        /**
         * Output header html.
         */
        public function header()
        {
        }
        /**
         * Output footer html.
         */
        public function footer()
        {
        }
        /**
         * Output information about the uploading process.
         */
        public function greet()
        {
        }
        /**
         * Show import error and quit.
         *
         * @param  string $message Error message.
         */
        private function import_error($message = '')
        {
        }
        /**
         * Added to http_request_timeout filter to force timeout at 60 seconds during import.
         *
         * @param  int $val Value.
         * @return int 60
         */
        public function bump_request_timeout($val)
        {
        }
    }
    /**
     * WC_Admin_Attributes Class.
     */
    class WC_Admin_Attributes
    {
        /**
         * Handles output of the attributes page in admin.
         *
         * Shows the created attributes and lets you add new ones or edit existing ones.
         * The added attributes are stored in the database and can be used for layered navigation.
         */
        public static function output()
        {
        }
        /**
         * Get and sanitize posted attribute data.
         *
         * @return array
         */
        private static function get_posted_attribute()
        {
        }
        /**
         * Add an attribute.
         *
         * @return bool|WP_Error
         */
        private static function process_add_attribute()
        {
        }
        /**
         * Edit an attribute.
         *
         * @return bool|WP_Error
         */
        private static function process_edit_attribute()
        {
        }
        /**
         * Delete an attribute.
         *
         * @return bool
         */
        private static function process_delete_attribute()
        {
        }
        /**
         * Edit Attribute admin panel.
         *
         * Shows the interface for changing an attributes type between select and text.
         */
        public static function edit_attribute()
        {
        }
        /**
         * Add Attribute admin panel.
         *
         * Shows the interface for adding new attributes.
         */
        public static function add_attribute()
        {
        }
    }
    /**
     * WC_Helper_Plugin_Info Class
     *
     * Provides the "View Information" core modals with data for WooCommerce.com
     * hosted extensions.
     */
    class WC_Helper_Plugin_Info
    {
        /**
         * Loads the class, runs on init.
         */
        public static function load()
        {
        }
        /**
         * Plugin information callback for Woo extensions.
         *
         * @param object $response The response core needs to display the modal.
         * @param string $action The requested plugins_api() action.
         * @param object $args Arguments passed to plugins_api().
         *
         * @return object An updated $response.
         */
        public static function plugins_api($response, $action, $args)
        {
        }
    }
    /**
     * WC_Helper Class
     *
     * The main entry-point for all things related to the Helper.
     */
    class WC_Helper
    {
        /**
         * A log object returned by wc_get_logger().
         *
         * @var $log
         */
        public static $log;
        /**
         * Get an absolute path to the requested helper view.
         *
         * @param string $view The requested view file.
         *
         * @return string The absolute path to the view file.
         */
        public static function get_view_filename($view)
        {
        }
        /**
         * Loads the helper class, runs on init.
         */
        public static function load()
        {
        }
        /**
         * Include supporting helper classes.
         */
        protected static function includes()
        {
        }
        /**
         * Render the helper section content based on context.
         */
        public static function render_helper_output()
        {
        }
        /**
         * Get available subscriptions filters.
         *
         * @return array An array of filter keys and labels.
         */
        public static function get_filters()
        {
        }
        /**
         * Get counts data for the filters array.
         *
         * @param array $subscriptions The array of all available subscriptions.
         *
         * @return array Filter counts (filter => count).
         */
        public static function get_filters_counts($subscriptions = \null)
        {
        }
        /**
         * Get current filter.
         *
         * @return string The current filter.
         */
        public static function get_current_filter()
        {
        }
        /**
         * Filter an array of subscriptions by $filter.
         *
         * @param array  $subscriptions The subscriptions array, passed by ref.
         * @param string $filter The filter.
         */
        private static function _filter(&$subscriptions, $filter)
        {
        }
        /**
         * Enqueue admin scripts and styles.
         */
        public static function admin_enqueue_scripts()
        {
        }
        /**
         * Various success/error notices.
         *
         * Runs during admin page render, so no headers/redirects here.
         *
         * @return array Array pairs of message/type strings with notices.
         */
        private static function _get_return_notices()
        {
        }
        /**
         * Various early-phase actions with possible redirects.
         *
         * @param object $screen WP screen object.
         */
        public static function current_screen($screen)
        {
        }
        /**
         * Initiate a new OAuth connection.
         */
        private static function _helper_auth_connect()
        {
        }
        /**
         * Return from WooCommerce.com OAuth flow.
         */
        private static function _helper_auth_return()
        {
        }
        /**
         * Disconnect from WooCommerce.com, clear OAuth tokens.
         */
        private static function _helper_auth_disconnect()
        {
        }
        /**
         * User hit the Refresh button, clear all caches.
         */
        private static function _helper_auth_refresh()
        {
        }
        /**
         * Active a product subscription.
         */
        private static function _helper_subscription_activate()
        {
        }
        /**
         * Deactivate a product subscription.
         */
        private static function _helper_subscription_deactivate()
        {
        }
        /**
         * Deactivate a plugin.
         */
        private static function _helper_plugin_deactivate()
        {
        }
        /**
         * Get a local plugin/theme entry from product_id.
         *
         * @param int $product_id The product id.
         *
         * @return array|bool The array containing the local plugin/theme data or false.
         */
        private static function _get_local_from_product_id($product_id)
        {
        }
        /**
         * Checks whether current site has product subscription of a given ID.
         *
         * @since 3.7.0
         *
         * @param int $product_id The product id.
         *
         * @return bool Returns true if product subscription exists, false otherwise.
         */
        public static function has_product_subscription($product_id)
        {
        }
        /**
         * Get a subscription entry from product_id. If multiple subscriptions are
         * found with the same product id and $single is set to true, will return the
         * first one in the list, so you can use this method to get things like extension
         * name, version, etc.
         *
         * @param int  $product_id The product id.
         * @param bool $single Whether to return a single subscription or all matching a product id.
         *
         * @return array|bool The array containing sub data or false.
         */
        private static function _get_subscriptions_from_product_id($product_id, $single = \true)
        {
        }
        /**
         * Obtain a list of data about locally installed Woo extensions.
         */
        public static function get_local_woo_plugins()
        {
        }
        /**
         * Get locally installed Woo themes.
         */
        public static function get_local_woo_themes()
        {
        }
        /**
         * Get the connected user's subscriptions.
         *
         * @return array
         */
        public static function get_subscriptions()
        {
        }
        /**
         * Runs when any plugin is activated.
         *
         * Depending on the activated plugin attempts to look through available
         * subscriptions and auto-activate one if possible, so the user does not
         * need to visit the Helper UI at all after installing a new extension.
         *
         * @param string $filename The filename of the activated plugin.
         */
        public static function activated_plugin($filename)
        {
        }
        /**
         * Runs when any plugin is deactivated.
         *
         * When a user deactivates a plugin, attempt to deactivate any subscriptions
         * associated with the extension.
         *
         * @param string $filename The filename of the deactivated plugin.
         */
        public static function deactivated_plugin($filename)
        {
        }
        /**
         * Various Helper-related admin notices.
         */
        public static function admin_notices()
        {
        }
        /**
         * Prompt a Helper connection if the user has WooCommerce.com extensions.
         *
         * @param string $screen_id Current screen ID.
         */
        private static function _prompt_helper_connect($screen_id)
        {
        }
        /**
         * Get an update notice if one or more Woo extensions has an update available.
         *
         * @return string|null The update notice or null if everything is up to date.
         */
        private static function _get_extensions_update_notice()
        {
        }
        /**
         * Whether WooCommerce has an update available.
         *
         * @return bool True if a Woo core update is available.
         */
        private static function _woo_core_update_available()
        {
        }
        /**
         * Flush subscriptions cache.
         */
        private static function _flush_subscriptions_cache()
        {
        }
        /**
         * Flush auth cache.
         */
        public static function _flush_authentication_cache()
        {
        }
        /**
         * Flush updates cache.
         */
        private static function _flush_updates_cache()
        {
        }
        /**
         * Sort subscriptions by the product_name.
         *
         * @param array $a Subscription array.
         * @param array $b Subscription array.
         *
         * @return int
         */
        public static function _sort_by_product_name($a, $b)
        {
        }
        /**
         * Sort subscriptions by the Name.
         *
         * @param array $a Product array.
         * @param array $b Product array.
         *
         * @return int
         */
        public static function _sort_by_name($a, $b)
        {
        }
        /**
         * Log a helper event.
         *
         * @param string $message Log message.
         * @param string $level Optional, defaults to info, valid levels: emergency|alert|critical|error|warning|notice|info|debug.
         */
        public static function log($message, $level = 'info')
        {
        }
    }
    /**
     * WC_Helper_Options Class
     *
     * An interface to the woocommerce_helper_data entry in the wp_options table.
     */
    class WC_Helper_Options
    {
        /**
         * The option name used to store the helper data.
         *
         * @var string
         */
        private static $option_name = 'woocommerce_helper_data';
        /**
         * Update an option by key
         *
         * All helper options are grouped in a single options entry. This method
         * is not thread-safe, use with caution.
         *
         * @param string $key The key to update.
         * @param mixed  $value The new option value.
         *
         * @return bool True if the option has been updated.
         */
        public static function update($key, $value)
        {
        }
        /**
         * Get an option by key
         *
         * @see self::update
         *
         * @param string $key The key to fetch.
         * @param mixed  $default The default option to return if the key does not exist.
         *
         * @return mixed An option or the default.
         */
        public static function get($key, $default = \false)
        {
        }
    }
    /**
     * WC_Helper_Updater Class
     *
     * Contains the logic to fetch available updates and hook into Core's update
     * routines to serve WooCommerce.com-provided packages.
     */
    class WC_Helper_Updater
    {
        /**
         * Loads the class, runs on init.
         */
        public static function load()
        {
        }
        /**
         * Runs in a cron thread, or in a visitor thread if triggered
         * by _maybe_update_plugins(), or in an auto-update thread.
         *
         * @param object $transient The update_plugins transient object.
         *
         * @return object The same or a modified version of the transient.
         */
        public static function transient_update_plugins($transient)
        {
        }
        /**
         * Runs on pre_set_site_transient_update_themes, provides custom
         * packages for WooCommerce.com-hosted extensions.
         *
         * @param object $transient The update_themes transient object.
         *
         * @return object The same or a modified version of the transient.
         */
        public static function transient_update_themes($transient)
        {
        }
        /**
         * Get update data for all extensions.
         *
         * Scans through all subscriptions for the connected user, as well
         * as all Woo extensions without a subscription, and obtains update
         * data for each product.
         *
         * @return array Update data {product_id => data}
         */
        public static function get_update_data()
        {
        }
        /**
         * Run an update check API call.
         *
         * The call is cached based on the payload (product ids, file ids). If
         * the payload changes, the cache is going to miss.
         *
         * @return array Update data for each requested product.
         */
        private static function _update_check($payload)
        {
        }
        /**
         * Check for an active subscription.
         *
         * Checks a given product id against all subscriptions on
         * the current site. Returns true if at least one active
         * subscription is found.
         *
         * @param int $product_id The product id to look for.
         *
         * @return bool True if active subscription found.
         */
        private static function _has_active_subscription($product_id)
        {
        }
        /**
         * Get the number of products that have updates.
         *
         * @return int The number of products with updates.
         */
        public static function get_updates_count()
        {
        }
        /**
         * Return the updates count markup.
         *
         * @return string Updates count markup, empty string if no updates avairable.
         */
        public static function get_updates_count_html()
        {
        }
        /**
         * Flushes cached update data.
         */
        public static function flush_updates_cache()
        {
        }
        /**
         * Fires when a user successfully updated a theme or a plugin.
         */
        public static function upgrader_process_complete()
        {
        }
    }
    /**
     * WC_Helper_Compat Class
     *
     * Some level of compatibility with the legacy WooCommerce Helper plugin.
     */
    class WC_Helper_Compat
    {
        /**
         * Loads the class, runs on init.
         */
        public static function load()
        {
        }
        /**
         * Runs during woocommerce_helper_loaded
         */
        public static function helper_loaded()
        {
        }
        /**
         * Remove legacy helper actions (notices, menus, etc.)
         */
        public static function remove_actions()
        {
        }
        /**
         * Attempt to migrate a legacy connection to a new one.
         */
        public static function migrate_connection()
        {
        }
        /**
         * Attempt to deactivate the legacy helper plugin.
         */
        public static function deactivate_plugin()
        {
        }
        /**
         * Display admin notice directing the user where to go.
         */
        public static function plugin_deactivation_notice()
        {
        }
        /**
         * Register menu item.
         */
        public static function admin_menu()
        {
        }
        /**
         * Render the legacy helper compat view.
         */
        public static function render_compat_menu()
        {
        }
    }
    /**
     * WC_Helper_API Class
     *
     * Provides a communication interface with the WooCommerce.com Helper API.
     */
    class WC_Helper_API
    {
        public static $api_base;
        /**
         * Load
         *
         * Allow devs to point the API base to a local API development or staging server.
         * Note that sslverify will be turned off for the woocommerce.dev + WP_DEBUG combination.
         * The URL can be changed on plugins_loaded before priority 10.
         */
        public static function load()
        {
        }
        /**
         * Perform an HTTP request to the Helper API.
         *
         * @param string $endpoint The endpoint to request.
         * @param array  $args Additional data for the request. Set authenticated to a truthy value to enable auth.
         *
         * @return array|WP_Error The response from wp_safe_remote_request()
         */
        public static function request($endpoint, $args = array())
        {
        }
        /**
         * Adds authentication headers to an HTTP request.
         *
         * @param string $url The request URI.
         * @param array  $args By-ref, the args that will be passed to wp_remote_request().
         * @return bool Were the headers added?
         */
        private static function _authenticate($url, &$args)
        {
        }
        /**
         * Wrapper for self::request().
         *
         * @param string $endpoint The helper API endpoint to request.
         * @param array  $args Arguments passed to wp_remote_request().
         *
         * @return array The response object from wp_safe_remote_request().
         */
        public static function get($endpoint, $args = array())
        {
        }
        /**
         * Wrapper for self::request().
         *
         * @param string $endpoint The helper API endpoint to request.
         * @param array  $args Arguments passed to wp_remote_request().
         *
         * @return array The response object from wp_safe_remote_request().
         */
        public static function post($endpoint, $args = array())
        {
        }
        /**
         * Using the API base, form a request URL from a given endpoint.
         *
         * @param string $endpoint The endpoint to request.
         *
         * @return string The absolute endpoint URL.
         */
        public static function url($endpoint)
        {
        }
    }
    /**
     * WC_Admin_Post_Types Class.
     *
     * Handles the edit posts views and some functionality on the edit post screen for WC post types.
     */
    class WC_Admin_Post_Types
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Looks at the current screen and loads the correct list table handler.
         *
         * @since 3.3.0
         */
        public function setup_screen()
        {
        }
        /**
         * Change messages when a post type is updated.
         *
         * @param  array $messages Array of messages.
         * @return array
         */
        public function post_updated_messages($messages)
        {
        }
        /**
         * Specify custom bulk actions messages for different post types.
         *
         * @param  array $bulk_messages Array of messages.
         * @param  array $bulk_counts Array of how many objects were updated.
         * @return array
         */
        public function bulk_post_updated_messages($bulk_messages, $bulk_counts)
        {
        }
        /**
         * Custom bulk edit - form.
         *
         * @param string $column_name Column being shown.
         * @param string $post_type Post type being shown.
         */
        public function bulk_edit($column_name, $post_type)
        {
        }
        /**
         * Custom quick edit - form.
         *
         * @param string $column_name Column being shown.
         * @param string $post_type Post type being shown.
         */
        public function quick_edit($column_name, $post_type)
        {
        }
        /**
         * Offers a way to hook into save post without causing an infinite loop
         * when quick/bulk saving product info.
         *
         * @since 3.0.0
         * @param int    $post_id Post ID being saved.
         * @param object $post Post object being saved.
         */
        public function bulk_and_quick_edit_hook($post_id, $post)
        {
        }
        /**
         * Quick and bulk edit saving.
         *
         * @param int    $post_id Post ID being saved.
         * @param object $post Post object being saved.
         * @return int
         */
        public function bulk_and_quick_edit_save_post($post_id, $post)
        {
        }
        /**
         * Quick edit.
         *
         * @param int        $post_id Post ID being saved.
         * @param WC_Product $product Product object.
         */
        private function quick_edit_save($post_id, $product)
        {
        }
        /**
         * Bulk edit.
         *
         * @param int        $post_id Post ID being saved.
         * @param WC_Product $product Product object.
         */
        public function bulk_edit_save($post_id, $product)
        {
        }
        /**
         * Disable the auto-save functionality for Orders.
         */
        public function disable_autosave()
        {
        }
        /**
         * Output extra data on post forms.
         *
         * @param WP_Post $post Current post object.
         */
        public function edit_form_top($post)
        {
        }
        /**
         * Change title boxes in admin.
         *
         * @param string  $text Text to shown.
         * @param WP_Post $post Current post object.
         * @return string
         */
        public function enter_title_here($text, $post)
        {
        }
        /**
         * Print coupon description textarea field.
         *
         * @param WP_Post $post Current post object.
         */
        public function edit_form_after_title($post)
        {
        }
        /**
         * Hidden default Meta-Boxes.
         *
         * @param  array  $hidden Hidden boxes.
         * @param  object $screen Current screen.
         * @return array
         */
        public function hidden_meta_boxes($hidden, $screen)
        {
        }
        /**
         * Output product visibility options.
         */
        public function product_data_visibility()
        {
        }
        /**
         * Change upload dir for downloadable files.
         *
         * @param array $pathdata Array of paths.
         * @return array
         */
        public function upload_dir($pathdata)
        {
        }
        /**
         * Run a filter when uploading a downloadable product.
         */
        public function woocommerce_media_upload_downloadable_product()
        {
        }
        /**
         * Grant downloadable file access to any newly added files on any existing.
         * orders for this product that have previously been granted downloadable file access.
         *
         * @param int   $product_id product identifier.
         * @param int   $variation_id optional product variation identifier.
         * @param array $downloadable_files newly set files.
         * @deprecated and moved to post-data class.
         */
        public function process_product_file_download_paths($product_id, $variation_id, $downloadable_files)
        {
        }
        /**
         * When editing the shop page, we should hide templates.
         *
         * @param array   $page_templates Templates array.
         * @param string  $theme Classname.
         * @param WP_Post $post The current post object.
         * @return array
         */
        public function hide_cpt_archive_templates($page_templates, $theme, $post)
        {
        }
        /**
         * Show a notice above the CPT archive.
         *
         * @param WP_Post $post The current post object.
         */
        public function show_cpt_archive_notice($post)
        {
        }
        /**
         * Add a post display state for special WC pages in the page list table.
         *
         * @param array   $post_states An array of post display states.
         * @param WP_Post $post        The current post object.
         */
        public function add_display_post_states($post_states, $post)
        {
        }
    }
    class WC_Admin_Log_Table_List extends \WP_List_Table
    {
        /**
         * Initialize the log table list.
         */
        public function __construct()
        {
        }
        /**
         * Display level dropdown
         *
         * @global wpdb $wpdb
         */
        public function level_dropdown()
        {
        }
        /**
         * Get list columns.
         *
         * @return array
         */
        public function get_columns()
        {
        }
        /**
         * Column cb.
         *
         * @param  array $log
         * @return string
         */
        public function column_cb($log)
        {
        }
        /**
         * Timestamp column.
         *
         * @param  array $log
         * @return string
         */
        public function column_timestamp($log)
        {
        }
        /**
         * Level column.
         *
         * @param  array $log
         * @return string
         */
        public function column_level($log)
        {
        }
        /**
         * Message column.
         *
         * @param  array $log
         * @return string
         */
        public function column_message($log)
        {
        }
        /**
         * Source column.
         *
         * @param  array $log
         * @return string
         */
        public function column_source($log)
        {
        }
        /**
         * Get bulk actions.
         *
         * @return array
         */
        protected function get_bulk_actions()
        {
        }
        /**
         * Extra controls to be displayed between bulk actions and pagination.
         *
         * @param string $which
         */
        protected function extra_tablenav($which)
        {
        }
        /**
         * Get a list of sortable columns.
         *
         * @return array
         */
        protected function get_sortable_columns()
        {
        }
        /**
         * Display source dropdown
         *
         * @global wpdb $wpdb
         */
        protected function source_dropdown()
        {
        }
        /**
         * Prepare table list items.
         *
         * @global wpdb $wpdb
         */
        public function prepare_items()
        {
        }
        /**
         * Get prepared LIMIT clause for items query
         *
         * @global wpdb $wpdb
         *
         * @return string Prepared LIMIT clause for items query.
         */
        protected function get_items_query_limit()
        {
        }
        /**
         * Get prepared OFFSET clause for items query
         *
         * @global wpdb $wpdb
         *
         * @return string Prepared OFFSET clause for items query.
         */
        protected function get_items_query_offset()
        {
        }
        /**
         * Get prepared ORDER BY clause for items query
         *
         * @return string Prepared ORDER BY clause for items query.
         */
        protected function get_items_query_order()
        {
        }
        /**
         * Get prepared WHERE clause for items query
         *
         * @global wpdb $wpdb
         *
         * @return string Prepared WHERE clause for items query.
         */
        protected function get_items_query_where()
        {
        }
        /**
         * Set _column_headers property for table list
         */
        protected function prepare_column_headers()
        {
        }
    }
    /**
     * WC_Admin_Menus Class.
     */
    class WC_Admin_Menus
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Add menu items.
         */
        public function admin_menu()
        {
        }
        /**
         * Add menu item.
         */
        public function reports_menu()
        {
        }
        /**
         * Add menu item.
         */
        public function settings_menu()
        {
        }
        /**
         * Loads gateways and shipping methods into memory for use within settings.
         */
        public function settings_page_init()
        {
        }
        /**
         * Handle saving of settings.
         *
         * @return void
         */
        public function save_settings()
        {
        }
        /**
         * Add menu item.
         */
        public function status_menu()
        {
        }
        /**
         * Addons menu item.
         */
        public function addons_menu()
        {
        }
        /**
         * Highlights the correct top level admin menu item for post type add screens.
         */
        public function menu_highlight()
        {
        }
        /**
         * Adds the order processing count to the menu.
         */
        public function menu_order_count()
        {
        }
        /**
         * Reorder the WC menu items in admin.
         *
         * @param int $menu_order Menu order.
         * @return array
         */
        public function menu_order($menu_order)
        {
        }
        /**
         * Custom menu order.
         *
         * @param bool $enabled Whether custom menu ordering is already enabled.
         * @return bool
         */
        public function custom_menu_order($enabled)
        {
        }
        /**
         * Validate screen options on update.
         *
         * @param bool|int $status Screen option value. Default false to skip.
         * @param string   $option The option name.
         * @param int      $value  The number of rows to use.
         */
        public function set_screen_option($status, $option, $value)
        {
        }
        /**
         * Init the reports page.
         */
        public function reports_page()
        {
        }
        /**
         * Init the settings page.
         */
        public function settings_page()
        {
        }
        /**
         * Init the attributes page.
         */
        public function attributes_page()
        {
        }
        /**
         * Init the status page.
         */
        public function status_page()
        {
        }
        /**
         * Init the addons page.
         */
        public function addons_page()
        {
        }
        /**
         * Add custom nav meta box.
         *
         * Adapted from http://www.johnmorrisonline.com/how-to-add-a-fully-functional-custom-meta-box-to-wordpress-navigation-menus/.
         */
        public function add_nav_menu_meta_boxes()
        {
        }
        /**
         * Output menu links.
         */
        public function nav_menu_links()
        {
        }
        /**
         * Add the "Visit Store" link in admin bar main menu.
         *
         * @since 2.4.0
         * @param WP_Admin_Bar $wp_admin_bar Admin bar instance.
         */
        public function admin_bar_menus($wp_admin_bar)
        {
        }
    }
    /**
     * WC_Admin_Assets Class.
     */
    class WC_Admin_Assets
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Enqueue styles.
         */
        public function admin_styles()
        {
        }
        /**
         * Enqueue scripts.
         */
        public function admin_scripts()
        {
        }
    }
    /**
     * WC_Admin_Settings Class.
     */
    class WC_Admin_Settings
    {
        /**
         * Setting pages.
         *
         * @var array
         */
        private static $settings = array();
        /**
         * Error messages.
         *
         * @var array
         */
        private static $errors = array();
        /**
         * Update messages.
         *
         * @var array
         */
        private static $messages = array();
        /**
         * Include the settings page classes.
         */
        public static function get_settings_pages()
        {
        }
        /**
         * Save the settings.
         */
        public static function save()
        {
        }
        /**
         * Add a message.
         *
         * @param string $text Message.
         */
        public static function add_message($text)
        {
        }
        /**
         * Add an error.
         *
         * @param string $text Message.
         */
        public static function add_error($text)
        {
        }
        /**
         * Output messages + errors.
         */
        public static function show_messages()
        {
        }
        /**
         * Settings page.
         *
         * Handles the display of the main woocommerce settings page in admin.
         */
        public static function output()
        {
        }
        /**
         * Get a setting from the settings API.
         *
         * @param string $option_name Option name.
         * @param mixed  $default     Default value.
         * @return mixed
         */
        public static function get_option($option_name, $default = '')
        {
        }
        /**
         * Output admin fields.
         *
         * Loops though the woocommerce options array and outputs each field.
         *
         * @param array[] $options Opens array to output.
         */
        public static function output_fields($options)
        {
        }
        /**
         * Helper function to get the formatted description and tip HTML for a
         * given form field. Plugins can call this when implementing their own custom
         * settings types.
         *
         * @param  array $value The form field value array.
         * @return array The description and tip as a 2 element array.
         */
        public static function get_field_description($value)
        {
        }
        /**
         * Save admin fields.
         *
         * Loops though the woocommerce options array and outputs each field.
         *
         * @param array $options Options array to output.
         * @param array $data    Optional. Data to use for saving. Defaults to $_POST.
         * @return bool
         */
        public static function save_fields($options, $data = \null)
        {
        }
        /**
         * Checks which method we're using to serve downloads.
         *
         * If using force or x-sendfile, this ensures the .htaccess is in place.
         */
        public static function check_download_folder_protection()
        {
        }
    }
    /**
     * WC_Admin_Status Class.
     */
    class WC_Admin_Status
    {
        /**
         * Handles output of the reports page in admin.
         */
        public static function output()
        {
        }
        /**
         * Handles output of report.
         */
        public static function status_report()
        {
        }
        /**
         * Handles output of tools.
         */
        public static function status_tools()
        {
        }
        /**
         * Get tools.
         *
         * @return array of tools
         */
        public static function get_tools()
        {
        }
        /**
         * Show the logs page.
         */
        public static function status_logs()
        {
        }
        /**
         * Show the log page contents for file log handler.
         */
        public static function status_logs_file()
        {
        }
        /**
         * Show the log page contents for db log handler.
         */
        public static function status_logs_db()
        {
        }
        /**
         * Retrieve metadata from a file. Based on WP Core's get_file_data function.
         *
         * @since  2.1.1
         * @param  string $file Path to the file.
         * @return string
         */
        public static function get_file_version($file)
        {
        }
        /**
         * Return the log file handle.
         *
         * @param string $filename Filename to get the handle for.
         * @return string
         */
        public static function get_log_file_handle($filename)
        {
        }
        /**
         * Scan the template files.
         *
         * @param  string $template_path Path to the template directory.
         * @return array
         */
        public static function scan_template_files($template_path)
        {
        }
        /**
         * Scan the log files.
         *
         * @return array
         */
        public static function scan_log_files()
        {
        }
        /**
         * Get latest version of a theme by slug.
         *
         * @param  object $theme WP_Theme object.
         * @return string Version number if found.
         */
        public static function get_latest_theme_version($theme)
        {
        }
        /**
         * Remove/delete the chosen file.
         */
        public static function remove_log()
        {
        }
        /**
         * Clear DB log table.
         *
         * @since 3.0.0
         */
        private static function flush_db_logs()
        {
        }
        /**
         * Bulk DB log table actions.
         *
         * @since 3.0.0
         */
        private static function log_table_bulk_actions()
        {
        }
    }
    /**
     * WC_Admin_Help Class.
     */
    class WC_Admin_Help
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Add help tabs.
         */
        public function add_tabs()
        {
        }
    }
    /**
     * WC_Admin_Meta_Boxes.
     */
    class WC_Admin_Meta_Boxes
    {
        /**
         * Is meta boxes saved once?
         *
         * @var boolean
         */
        private static $saved_meta_boxes = \false;
        /**
         * Meta box error messages.
         *
         * @var array
         */
        public static $meta_box_errors = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Add an error message.
         *
         * @param string $text Error to add.
         */
        public static function add_error($text)
        {
        }
        /**
         * Save errors to an option.
         */
        public function save_errors()
        {
        }
        /**
         * Show any stored error messages.
         */
        public function output_errors()
        {
        }
        /**
         * Add WC Meta boxes.
         */
        public function add_meta_boxes()
        {
        }
        /**
         * Remove bloat.
         */
        public function remove_meta_boxes()
        {
        }
        /**
         * Rename core meta boxes.
         */
        public function rename_meta_boxes()
        {
        }
        /**
         * Check if we're saving, the trigger an action based on the post type.
         *
         * @param  int    $post_id Post ID.
         * @param  object $post Post object.
         */
        public function save_meta_boxes($post_id, $post)
        {
        }
    }
    /**
     * WC_Admin class.
     */
    class WC_Admin
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output buffering allows admin screens to make redirects later on.
         */
        public function buffer()
        {
        }
        /**
         * Include any classes we need within admin.
         */
        public function includes()
        {
        }
        /**
         * Include admin files conditionally.
         */
        public function conditional_includes()
        {
        }
        /**
         * Handle redirects to setup/welcome page after install and updates.
         *
         * For setup wizard, transient must be present, the user must have access rights, and we must ignore the network/bulk plugin updaters.
         */
        public function admin_redirects()
        {
        }
        /**
         * Prevent any user who cannot 'edit_posts' (subscribers, customers etc) from accessing admin.
         */
        public function prevent_admin_access()
        {
        }
        /**
         * Preview email template.
         */
        public function preview_emails()
        {
        }
        /**
         * Change the admin footer text on WooCommerce admin pages.
         *
         * @since  2.3
         * @param  string $footer_text text to be rendered in the footer.
         * @return string
         */
        public function admin_footer_text($footer_text)
        {
        }
        /**
         * Check on a Jetpack install queued by the Setup Wizard.
         *
         * See: WC_Admin_Setup_Wizard::install_jetpack()
         */
        public function setup_wizard_check_jetpack()
        {
        }
        /**
         * Disable WXR export of scheduled action posts.
         *
         * @since 3.6.2
         *
         * @param array $args Scehduled action post type registration args.
         *
         * @return array
         */
        public function disable_webhook_post_export($args)
        {
        }
    }
    /**
     * Log levels class.
     */
    abstract class WC_Log_Levels
    {
        /**
         * Log Levels
         *
         * Description of levels:
         *     'emergency': System is unusable.
         *     'alert': Action must be taken immediately.
         *     'critical': Critical conditions.
         *     'error': Error conditions.
         *     'warning': Warning conditions.
         *     'notice': Normal but significant condition.
         *     'info': Informational messages.
         *     'debug': Debug-level messages.
         *
         * @see @link {https://tools.ietf.org/html/rfc5424}
         */
        const EMERGENCY = 'emergency';
        const ALERT = 'alert';
        const CRITICAL = 'critical';
        const ERROR = 'error';
        const WARNING = 'warning';
        const NOTICE = 'notice';
        const INFO = 'info';
        const DEBUG = 'debug';
        /**
         * Level strings mapped to integer severity.
         *
         * @var array
         */
        protected static $level_to_severity = array(self::EMERGENCY => 800, self::ALERT => 700, self::CRITICAL => 600, self::ERROR => 500, self::WARNING => 400, self::NOTICE => 300, self::INFO => 200, self::DEBUG => 100);
        /**
         * Severity integers mapped to level strings.
         *
         * This is the inverse of $level_severity.
         *
         * @var array
         */
        protected static $severity_to_level = array(800 => self::EMERGENCY, 700 => self::ALERT, 600 => self::CRITICAL, 500 => self::ERROR, 400 => self::WARNING, 300 => self::NOTICE, 200 => self::INFO, 100 => self::DEBUG);
        /**
         * Validate a level string.
         *
         * @param string $level Log level.
         * @return bool True if $level is a valid level.
         */
        public static function is_valid_level($level)
        {
        }
        /**
         * Translate level string to integer.
         *
         * @param string $level Log level, options: emergency|alert|critical|error|warning|notice|info|debug.
         * @return int 100 (debug) - 800 (emergency) or 0 if not recognized
         */
        public static function get_level_severity($level)
        {
        }
        /**
         * Translate severity integer to level string.
         *
         * @param int $severity Severity level.
         * @return bool|string False if not recognized. Otherwise string representation of level.
         */
        public static function get_severity_level($severity)
        {
        }
    }
    /**
     * WC_Privacy_Background_Process class.
     */
    class WC_Privacy_Background_Process extends \WC_Background_Process
    {
        /**
         * Initiate new background process.
         */
        public function __construct()
        {
        }
        /**
         * Code to execute for each item in the queue
         *
         * @param string $item Queue item to iterate over.
         * @return bool
         */
        protected function task($item)
        {
        }
    }
    /**
     * WC_REST_Exception class.
     */
    class WC_REST_Exception extends \WC_Data_Exception
    {
    }
    /**
     * Product download class.
     */
    class WC_Product_Download implements \ArrayAccess
    {
        /**
         * Data array.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('id' => '', 'name' => '', 'file' => '');
        /**
         * Returns all data for this object.
         *
         * @return array
         */
        public function get_data()
        {
        }
        /**
         * Get allowed mime types.
         *
         * @return array
         */
        public function get_allowed_mime_types()
        {
        }
        /**
         * Get type of file path set.
         *
         * @param  string $file_path optional.
         * @return string absolute, relative, or shortcode.
         */
        public function get_type_of_file_path($file_path = '')
        {
        }
        /**
         * Get file type.
         *
         * @return string
         */
        public function get_file_type()
        {
        }
        /**
         * Get file extension.
         *
         * @return string
         */
        public function get_file_extension()
        {
        }
        /**
         * Check if file is allowed.
         *
         * @return boolean
         */
        public function is_allowed_filetype()
        {
        }
        /**
         * Validate file exists.
         *
         * @return boolean
         */
        public function file_exists()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set ID.
         *
         * @param string $value Download ID.
         */
        public function set_id($value)
        {
        }
        /**
         * Set name.
         *
         * @param string $value Download name.
         */
        public function set_name($value)
        {
        }
        /**
         * Set previous_hash.
         *
         * @deprecated 3.3.0 No longer using filename based hashing to keep track of files.
         * @param string $value Previous hash.
         */
        public function set_previous_hash($value)
        {
        }
        /**
         * Set file.
         *
         * @param string $value File URL/Path.
         */
        public function set_file($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get id.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Get name.
         *
         * @return string
         */
        public function get_name()
        {
        }
        /**
         * Get previous_hash.
         *
         * @deprecated 3.3.0 No longer using filename based hashing to keep track of files.
         * @return string
         */
        public function get_previous_hash()
        {
        }
        /**
         * Get file.
         *
         * @return string
         */
        public function get_file()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | ArrayAccess/Backwards compatibility.
        |--------------------------------------------------------------------------
        */
        /**
         * OffsetGet.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet.
         *
         * @param string $offset Offset.
         * @param mixed  $value Offset value.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset.
         *
         * @param string $offset Offset.
         */
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists.
         *
         * @param string $offset Offset.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Email Class
     *
     * WooCommerce Email Class which is extended by specific email template classes to add emails to WooCommerce
     *
     * @class       WC_Email
     * @version     2.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Settings_API
     */
    class WC_Email extends \WC_Settings_API
    {
        /**
         * Email method ID.
         *
         * @var String
         */
        public $id;
        /**
         * Email method title.
         *
         * @var string
         */
        public $title;
        /**
         * 'yes' if the method is enabled.
         *
         * @var string yes, no
         */
        public $enabled;
        /**
         * Description for the email.
         *
         * @var string
         */
        public $description;
        /**
         * Default heading.
         *
         * Supported for backwards compatibility but we recommend overloading the
         * get_default_x methods instead so localization can be done when needed.
         *
         * @var string
         */
        public $heading = '';
        /**
         * Default subject.
         *
         * Supported for backwards compatibility but we recommend overloading the
         * get_default_x methods instead so localization can be done when needed.
         *
         * @var string
         */
        public $subject = '';
        /**
         * Plain text template path.
         *
         * @var string
         */
        public $template_plain;
        /**
         * HTML template path.
         *
         * @var string
         */
        public $template_html;
        /**
         * Template path.
         *
         * @var string
         */
        public $template_base;
        /**
         * Recipients for the email.
         *
         * @var string
         */
        public $recipient;
        /**
         * Object this email is for, for example a customer, product, or email.
         *
         * @var object|bool
         */
        public $object;
        /**
         * Mime boundary (for multipart emails).
         *
         * @var string
         */
        public $mime_boundary;
        /**
         * Mime boundary header (for multipart emails).
         *
         * @var string
         */
        public $mime_boundary_header;
        /**
         * True when email is being sent.
         *
         * @var bool
         */
        public $sending;
        /**
         * True when the email notification is sent manually only.
         *
         * @var bool
         */
        protected $manual = \false;
        /**
         * True when the email notification is sent to customers.
         *
         * @var bool
         */
        protected $customer_email = \false;
        /**
         *  List of preg* regular expression patterns to search for,
         *  used in conjunction with $plain_replace.
         *  https://raw.github.com/ushahidi/wp-silcc/master/class.html2text.inc
         *
         *  @var array $plain_search
         *  @see $plain_replace
         */
        public $plain_search = array(
            "/\r/",
            // Non-legal carriage return.
            '/&(nbsp|#0*160);/i',
            // Non-breaking space.
            '/&(quot|rdquo|ldquo|#0*8220|#0*8221|#0*147|#0*148);/i',
            // Double quotes.
            '/&(apos|rsquo|lsquo|#0*8216|#0*8217);/i',
            // Single quotes.
            '/&gt;/i',
            // Greater-than.
            '/&lt;/i',
            // Less-than.
            '/&#0*38;/i',
            // Ampersand.
            '/&amp;/i',
            // Ampersand.
            '/&(copy|#0*169);/i',
            // Copyright.
            '/&(trade|#0*8482|#0*153);/i',
            // Trademark.
            '/&(reg|#0*174);/i',
            // Registered.
            '/&(mdash|#0*151|#0*8212);/i',
            // mdash.
            '/&(ndash|minus|#0*8211|#0*8722);/i',
            // ndash.
            '/&(bull|#0*149|#0*8226);/i',
            // Bullet.
            '/&(pound|#0*163);/i',
            // Pound sign.
            '/&(euro|#0*8364);/i',
            // Euro sign.
            '/&(dollar|#0*36);/i',
            // Dollar sign.
            '/&[^&\\s;]+;/i',
            // Unknown/unhandled entities.
            '/[ ]{2,}/',
        );
        /**
         *  List of pattern replacements corresponding to patterns searched.
         *
         *  @var array $plain_replace
         *  @see $plain_search
         */
        public $plain_replace = array(
            '',
            // Non-legal carriage return.
            ' ',
            // Non-breaking space.
            '"',
            // Double quotes.
            "'",
            // Single quotes.
            '>',
            // Greater-than.
            '<',
            // Less-than.
            '&',
            // Ampersand.
            '&',
            // Ampersand.
            '(c)',
            // Copyright.
            '(tm)',
            // Trademark.
            '(R)',
            // Registered.
            '--',
            // mdash.
            '-',
            // ndash.
            '*',
            // Bullet.
            '£',
            // Pound sign.
            'EUR',
            // Euro sign. € ?.
            '$',
            // Dollar sign.
            '',
            // Unknown/unhandled entities.
            ' ',
        );
        /**
         * Strings to find/replace in subjects/headings.
         *
         * @var array
         */
        protected $placeholders = array();
        /**
         * Strings to find in subjects/headings.
         *
         * @deprecated 3.2.0 in favour of placeholders
         * @var array
         */
        public $find = array();
        /**
         * Strings to replace in subjects/headings.
         *
         * @deprecated 3.2.0 in favour of placeholders
         * @var array
         */
        public $replace = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Handle multipart mail.
         *
         * @param  PHPMailer $mailer PHPMailer object.
         * @return PHPMailer
         */
        public function handle_multipart($mailer)
        {
        }
        /**
         * Format email string.
         *
         * @param mixed $string Text to replace placeholders in.
         * @return string
         */
        public function format_string($string)
        {
        }
        /**
         * Set the locale to the store locale for customer emails to make sure emails are in the store language.
         */
        public function setup_locale()
        {
        }
        /**
         * Restore the locale to the default locale. Use after finished with setup_locale.
         */
        public function restore_locale()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
        /**
         * Return content from the additional_content field.
         *
         * Displayed above the footer.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_additional_content()
        {
        }
        /**
         * Get email subject.
         *
         * @return string
         */
        public function get_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @return string
         */
        public function get_heading()
        {
        }
        /**
         * Get valid recipients.
         *
         * @return string
         */
        public function get_recipient()
        {
        }
        /**
         * Get email headers.
         *
         * @return string
         */
        public function get_headers()
        {
        }
        /**
         * Get email attachments.
         *
         * @return array
         */
        public function get_attachments()
        {
        }
        /**
         * Return email type.
         *
         * @return string
         */
        public function get_email_type()
        {
        }
        /**
         * Get email content type.
         *
         * @return string
         */
        public function get_content_type()
        {
        }
        /**
         * Return the email's title
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Return the email's description
         *
         * @return string
         */
        public function get_description()
        {
        }
        /**
         * Proxy to parent's get_option and attempt to localize the result using gettext.
         *
         * @param string $key Option key.
         * @param mixed  $empty_value Value to use when option is empty.
         * @return string
         */
        public function get_option($key, $empty_value = \null)
        {
        }
        /**
         * Checks if this email is enabled and will be sent.
         *
         * @return bool
         */
        public function is_enabled()
        {
        }
        /**
         * Checks if this email is manually sent
         *
         * @return bool
         */
        public function is_manual()
        {
        }
        /**
         * Checks if this email is customer focussed.
         *
         * @return bool
         */
        public function is_customer_email()
        {
        }
        /**
         * Get WordPress blog name.
         *
         * @return string
         */
        public function get_blogname()
        {
        }
        /**
         * Get email content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Apply inline styles to dynamic content.
         *
         * We only inline CSS for html emails, and to do so we use Emogrifier library (if supported).
         *
         * @param string|null $content Content that will receive inline styles.
         * @return string
         */
        public function style_inline($content)
        {
        }
        /**
         * Return if emogrifier library is supported.
         *
         * @since 3.5.0
         * @return bool
         */
        protected function supports_emogrifier()
        {
        }
        /**
         * Get the email content in plain text format.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Get the email content in HTML format.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get the from name for outgoing emails.
         *
         * @return string
         */
        public function get_from_name()
        {
        }
        /**
         * Get the from address for outgoing emails.
         *
         * @return string
         */
        public function get_from_address()
        {
        }
        /**
         * Send an email.
         *
         * @param string $to Email to.
         * @param string $subject Email subject.
         * @param string $message Email message.
         * @param string $headers Email headers.
         * @param array  $attachments Email attachments.
         * @return bool success
         */
        public function send($to, $subject, $message, $headers, $attachments)
        {
        }
        /**
         * Initialise Settings Form Fields - these are generic email options most will use.
         */
        public function init_form_fields()
        {
        }
        /**
         * Email type options.
         *
         * @return array
         */
        public function get_email_type_options()
        {
        }
        /**
         * Admin Panel Options Processing.
         */
        public function process_admin_options()
        {
        }
        /**
         * Get template.
         *
         * @param  string $type Template type. Can be either 'template_html' or 'template_plain'.
         * @return string
         */
        public function get_template($type)
        {
        }
        /**
         * Save the email templates.
         *
         * @since 2.4.0
         * @param string $template_code Template code.
         * @param string $template_path Template path.
         */
        protected function save_template($template_code, $template_path)
        {
        }
        /**
         * Get the template file in the current theme.
         *
         * @param  string $template Template name.
         *
         * @return string
         */
        public function get_theme_template_file($template)
        {
        }
        /**
         * Move template action.
         *
         * @param string $template_type Template type.
         */
        protected function move_template_action($template_type)
        {
        }
        /**
         * Delete template action.
         *
         * @param string $template_type Template type.
         */
        protected function delete_template_action($template_type)
        {
        }
        /**
         * Admin actions.
         */
        protected function admin_actions()
        {
        }
        /**
         * Admin Options.
         *
         * Setup the email settings screen.
         * Override this in your email.
         *
         * @since 1.0.0
         */
        public function admin_options()
        {
        }
    }
    /**
     * Failed Order Email.
     *
     * An email sent to the admin when payment fails to go through.
     *
     * @class       WC_Email_Failed_Order
     * @version     2.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Failed_Order extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int            $order_id The order ID.
         * @param WC_Order|false $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
        /**
         * Initialise settings form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * Cancelled Order Email.
     *
     * An email sent to the admin when an order is cancelled.
     *
     * @class       WC_Email_Cancelled_Order
     * @version     2.2.7
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Cancelled_Order extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int            $order_id The order ID.
         * @param WC_Order|false $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
        /**
         * Initialise settings form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * Customer New Account.
     *
     * An email sent to the customer when they create an account.
     *
     * @class       WC_Email_Customer_New_Account
     * @version     3.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_New_Account extends \WC_Email
    {
        /**
         * User login name.
         *
         * @var string
         */
        public $user_login;
        /**
         * User email.
         *
         * @var string
         */
        public $user_email;
        /**
         * User password.
         *
         * @var string
         */
        public $user_pass;
        /**
         * Is the password generated?
         *
         * @var bool
         */
        public $password_generated;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger.
         *
         * @param int    $user_id User ID.
         * @param string $user_pass User password.
         * @param bool   $password_generated Whether the password was generated automatically or not.
         */
        public function trigger($user_id, $user_pass = '', $password_generated = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
    }
    /**
     * Customer Refunded Order Email.
     *
     * Order refunded emails are sent to the customer when the order is marked refunded.
     *
     * @class    WC_Email_Customer_Refunded_Order
     * @version  3.5.0
     * @package  WooCommerce/Classes/Emails
     * @extends  WC_Email
     */
    class WC_Email_Customer_Refunded_Order extends \WC_Email
    {
        /**
         * Refund order.
         *
         * @var WC_Order|bool
         */
        public $refund;
        /**
         * Is the order partial refunded?
         *
         * @var bool
         */
        public $partial_refund;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @param bool $partial Whether it is a partial refund or a full refund.
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject($partial = \false)
        {
        }
        /**
         * Get email heading.
         *
         * @param bool $partial Whether it is a partial refund or a full refund.
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading($partial = \false)
        {
        }
        /**
         * Get email subject.
         *
         * @return string
         */
        public function get_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @return string
         */
        public function get_heading()
        {
        }
        /**
         * Set email strings.
         *
         * @param bool $partial_refund Whether it is a partial refund or a full refund.
         * @deprecated 3.1.0 Unused.
         */
        public function set_email_strings($partial_refund = \false)
        {
        }
        /**
         * Full refund notification.
         *
         * @param int $order_id Order ID.
         * @param int $refund_id Refund ID.
         */
        public function trigger_full($order_id, $refund_id = \null)
        {
        }
        /**
         * Partial refund notification.
         *
         * @param int $order_id Order ID.
         * @param int $refund_id Refund ID.
         */
        public function trigger_partial($order_id, $refund_id = \null)
        {
        }
        /**
         * Trigger.
         *
         * @param int  $order_id Order ID.
         * @param bool $partial_refund Whether it is a partial refund or a full refund.
         * @param int  $refund_id Refund ID.
         */
        public function trigger($order_id, $partial_refund = \false, $refund_id = \null)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
        /**
         * Initialise settings form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * Customer On-hold Order Email.
     *
     * An email sent to the customer when a new order is on-hold for.
     *
     * @class       WC_Email_Customer_On_Hold_Order
     * @version     2.6.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_On_Hold_Order extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int            $order_id The order ID.
         * @param WC_Order|false $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
    }
    /**
     * Customer Processing Order Email.
     *
     * An email sent to the customer when a new order is paid for.
     *
     * @class       WC_Email_Customer_Processing_Order
     * @version     3.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_Processing_Order extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int            $order_id The order ID.
         * @param WC_Order|false $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
    }
    /**
     * Customer Completed Order Email.
     *
     * Order complete emails are sent to the customer when the order is marked complete and usual indicates that the order has been shipped.
     *
     * @class       WC_Email_Customer_Completed_Order
     * @version     2.0.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_Completed_Order extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int            $order_id The order ID.
         * @param WC_Order|false $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
    }
    /**
     * Customer Note Order Email.
     *
     * Customer note emails are sent when you add a note to an order.
     *
     * @class       WC_Email_Customer_Note
     * @version     3.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_Note extends \WC_Email
    {
        /**
         * Customer note.
         *
         * @var string
         */
        public $customer_note;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger.
         *
         * @param array $args Email arguments.
         */
        public function trigger($args)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
    }
    /**
     * Customer Invoice.
     *
     * An email sent to the customer via admin.
     *
     * @class       WC_Email_Customer_Invoice
     * @version     3.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_Invoice extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @param bool $paid Whether the order has been paid or not.
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject($paid = \false)
        {
        }
        /**
         * Get email heading.
         *
         * @param bool $paid Whether the order has been paid or not.
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading($paid = \false)
        {
        }
        /**
         * Get email subject.
         *
         * @return string
         */
        public function get_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @return string
         */
        public function get_heading()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int      $order_id The order ID.
         * @param WC_Order $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Initialise settings form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * New Order Email.
     *
     * An email sent to the admin when a new order is received/paid for.
     *
     * @class       WC_Email_New_Order
     * @version     2.0.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_New_Order extends \WC_Email
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int            $order_id The order ID.
         * @param WC_Order|false $order Order object.
         */
        public function trigger($order_id, $order = \false)
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
        /**
         * Initialise settings form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * Customer Reset Password.
     *
     * An email sent to the customer when they reset their password.
     *
     * @class       WC_Email_Customer_Reset_Password
     * @version     3.5.0
     * @package     WooCommerce/Classes/Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_Reset_Password extends \WC_Email
    {
        /**
         * User ID.
         *
         * @var integer
         */
        public $user_id;
        /**
         * User login name.
         *
         * @var string
         */
        public $user_login;
        /**
         * User email.
         *
         * @var string
         */
        public $user_email;
        /**
         * Reset key.
         *
         * @var string
         */
        public $reset_key;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get email subject.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get email heading.
         *
         * @since  3.1.0
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Trigger.
         *
         * @param string $user_login User login.
         * @param string $reset_key Password reset key.
         */
        public function trigger($user_login = '', $reset_key = '')
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Default content to show below main email content.
         *
         * @since 3.7.0
         * @return string
         */
        public function get_default_additional_content()
        {
        }
    }
    /**
     * Performs tax calculations and loads tax rates
     *
     * @class WC_Tax
     */
    class WC_Tax
    {
        /**
         * Precision.
         *
         * @var int
         */
        public static $precision;
        /**
         * Round at subtotal.
         *
         * @var bool
         */
        public static $round_at_subtotal = \false;
        /**
         * Load options.
         */
        public static function init()
        {
        }
        /**
         * When the woocommerce_tax_classes option is changed, remove any orphan rates.
         *
         * @deprecated 3.7.0
         * @param  string $old_value Old rates value.
         * @param  string $value New rates value.
         */
        public static function maybe_remove_tax_class_rates($old_value, $value)
        {
        }
        /**
         * Calculate tax for a line.
         *
         * @param  float   $price              Price to calc tax on.
         * @param  array   $rates              Rates to apply.
         * @param  boolean $price_includes_tax Whether the passed price has taxes included.
         * @param  boolean $deprecated         Whether to suppress any rounding from taking place. No longer used here.
         * @return array                       Array of rates + prices after tax.
         */
        public static function calc_tax($price, $rates, $price_includes_tax = \false, $deprecated = \false)
        {
        }
        /**
         * Calculate the shipping tax using a passed array of rates.
         *
         * @param float $price Shipping cost.
         * @param array $rates Taxation Rate.
         * @return array
         */
        public static function calc_shipping_tax($price, $rates)
        {
        }
        /**
         * Round to precision.
         *
         * Filter example: to return rounding to .5 cents you'd use:
         *
         * function euro_5cent_rounding( $in ) {
         *      return round( $in / 5, 2 ) * 5;
         * }
         * add_filter( 'woocommerce_tax_round', 'euro_5cent_rounding' );
         *
         * @param float|int $in Value to round.
         * @return float
         */
        public static function round($in)
        {
        }
        /**
         * Calc tax from inclusive price.
         *
         * @param  float $price Price to calculate tax for.
         * @param  array $rates Array of tax rates.
         * @return array
         */
        public static function calc_inclusive_tax($price, $rates)
        {
        }
        /**
         * Calc tax from exclusive price.
         *
         * @param  float $price Price to calculate tax for.
         * @param  array $rates Array of tax rates.
         * @return array
         */
        public static function calc_exclusive_tax($price, $rates)
        {
        }
        /**
         * Searches for all matching country/state/postcode tax rates.
         *
         * @param array $args Args that determine the rate to find.
         * @return array
         */
        public static function find_rates($args = array())
        {
        }
        /**
         * Searches for all matching country/state/postcode tax rates.
         *
         * @param array $args Args that determine the rate to find.
         * @return array
         */
        public static function find_shipping_rates($args = array())
        {
        }
        /**
         * Does the sort comparison. Compares (in this order):
         * - Priority
         * - Country
         * - State
         * - Number of postcodes
         * - Number of cities
         * - ID
         *
         * @param object $rate1 First rate to compare.
         * @param object $rate2 Second rate to compare.
         * @return int
         */
        private static function sort_rates_callback($rate1, $rate2)
        {
        }
        /**
         * Logical sort order for tax rates based on the following in order of priority.
         *
         * @param  array $rates Rates to be sorted.
         * @return array
         */
        private static function sort_rates($rates)
        {
        }
        /**
         * Loop through a set of tax rates and get the matching rates (1 per priority).
         *
         * @param  string $country Country code to match against.
         * @param  string $state State code to match against.
         * @param  string $postcode Postcode to match against.
         * @param  string $city City to match against.
         * @param  string $tax_class Tax class to match against.
         * @return array
         */
        private static function get_matched_tax_rates($country, $state, $postcode, $city, $tax_class)
        {
        }
        /**
         * Get the customer tax location based on their status and the current page.
         *
         * Used by get_rates(), get_shipping_rates().
         *
         * @param  string $tax_class string Optional, passed to the filter for advanced tax setups.
         * @param  object $customer Override the customer object to get their location.
         * @return array
         */
        public static function get_tax_location($tax_class = '', $customer = \null)
        {
        }
        /**
         * Get's an array of matching rates for a tax class.
         *
         * @param string $tax_class Tax class to get rates for.
         * @param object $customer Override the customer object to get their location.
         * @return  array
         */
        public static function get_rates($tax_class = '', $customer = \null)
        {
        }
        /**
         * Get's an array of matching rates for the shop's base country.
         *
         * @param string $tax_class Tax Class.
         * @return array
         */
        public static function get_base_tax_rates($tax_class = '')
        {
        }
        /**
         * Alias for get_base_tax_rates().
         *
         * @deprecated 2.3
         * @param string $tax_class Tax Class.
         * @return array
         */
        public static function get_shop_base_rate($tax_class = '')
        {
        }
        /**
         * Gets an array of matching shipping tax rates for a given class.
         *
         * @param string $tax_class Tax class to get rates for.
         * @param object $customer Override the customer object to get their location.
         * @return mixed
         */
        public static function get_shipping_tax_rates($tax_class = \null, $customer = \null)
        {
        }
        /**
         * Return true/false depending on if a rate is a compound rate.
         *
         * @param mixed $key_or_rate Tax rate ID, or the db row itself in object format.
         * @return  bool
         */
        public static function is_compound($key_or_rate)
        {
        }
        /**
         * Return a given rates label.
         *
         * @param mixed $key_or_rate Tax rate ID, or the db row itself in object format.
         * @return  string
         */
        public static function get_rate_label($key_or_rate)
        {
        }
        /**
         * Return a given rates percent.
         *
         * @param mixed $key_or_rate Tax rate ID, or the db row itself in object format.
         * @return  string
         */
        public static function get_rate_percent($key_or_rate)
        {
        }
        /**
         * Return a given rates percent.
         *
         * @param mixed $key_or_rate Tax rate ID, or the db row itself in object format.
         * @return  float
         */
        public static function get_rate_percent_value($key_or_rate)
        {
        }
        /**
         * Get a rates code. Code is made up of COUNTRY-STATE-NAME-Priority. E.g GB-VAT-1, US-AL-TAX-1.
         *
         * @param mixed $key_or_rate Tax rate ID, or the db row itself in object format.
         * @return string
         */
        public static function get_rate_code($key_or_rate)
        {
        }
        /**
         * Sums a set of taxes to form a single total. Values are pre-rounded to precision from 3.6.0.
         *
         * @param  array $taxes Array of taxes.
         * @return float
         */
        public static function get_tax_total($taxes)
        {
        }
        /**
         * Gets all tax rate classes from the database.
         *
         * @since 3.7.0
         * @return array Array of tax class objects consisting of tax_rate_class_id, name, and slug.
         */
        protected static function get_tax_rate_classes()
        {
        }
        /**
         * Get store tax class names.
         *
         * @return array Array of class names ("Reduced rate", "Zero rate", etc).
         */
        public static function get_tax_classes()
        {
        }
        /**
         * Get store tax classes as slugs.
         *
         * @since  3.0.0
         * @return array Array of class slugs ("reduced-rate", "zero-rate", etc).
         */
        public static function get_tax_class_slugs()
        {
        }
        /**
         * Create a new tax class.
         *
         * @since 3.7.0
         * @param string $name Name of the tax class to add.
         * @param string $slug (optional) Slug of the tax class to add. Defaults to sanitized name.
         * @return WP_Error|array Returns name and slug (array) if the tax class is created, or WP_Error if something went wrong.
         */
        public static function create_tax_class($name, $slug = '')
        {
        }
        /**
         * Get an existing tax class.
         *
         * @since 3.7.0
         * @param string     $field Field to get by. Valid values are id, name, or slug.
         * @param string|int $item Item to get.
         * @return array|bool Returns the tax class as an array. False if not found.
         */
        public static function get_tax_class_by($field, $item)
        {
        }
        /**
         * Delete an existing tax class.
         *
         * @since 3.7.0
         * @param string     $field Field to delete by. Valid values are id, name, or slug.
         * @param string|int $item Item to delete.
         * @return WP_Error|bool Returns true if deleted successfully, false if nothing was deleted, or WP_Error if there is an invalid request.
         */
        public static function delete_tax_class_by($field, $item)
        {
        }
        /**
         * Format the city.
         *
         * @param  string $city Value to format.
         * @return string
         */
        private static function format_tax_rate_city($city)
        {
        }
        /**
         * Format the state.
         *
         * @param  string $state Value to format.
         * @return string
         */
        private static function format_tax_rate_state($state)
        {
        }
        /**
         * Format the country.
         *
         * @param  string $country Value to format.
         * @return string
         */
        private static function format_tax_rate_country($country)
        {
        }
        /**
         * Format the tax rate name.
         *
         * @param  string $name Value to format.
         * @return string
         */
        private static function format_tax_rate_name($name)
        {
        }
        /**
         * Format the rate.
         *
         * @param  float $rate Value to format.
         * @return string
         */
        private static function format_tax_rate($rate)
        {
        }
        /**
         * Format the priority.
         *
         * @param  string $priority Value to format.
         * @return int
         */
        private static function format_tax_rate_priority($priority)
        {
        }
        /**
         * Format the class.
         *
         * @param  string $class Value to format.
         * @return string
         */
        public static function format_tax_rate_class($class)
        {
        }
        /**
         * Prepare and format tax rate for DB insertion.
         *
         * @param  array $tax_rate Tax rate to format.
         * @return array
         */
        private static function prepare_tax_rate($tax_rate)
        {
        }
        /**
         * Insert a new tax rate.
         *
         * Internal use only.
         *
         * @since 2.3.0
         *
         * @param  array $tax_rate Tax rate to insert.
         * @return int tax rate id
         */
        public static function _insert_tax_rate($tax_rate)
        {
        }
        /**
         * Get tax rate.
         *
         * Internal use only.
         *
         * @since 2.5.0
         *
         * @param int    $tax_rate_id Tax rate ID.
         * @param string $output_type Type of output.
         * @return array|object
         */
        public static function _get_tax_rate($tax_rate_id, $output_type = \ARRAY_A)
        {
        }
        /**
         * Update a tax rate.
         *
         * Internal use only.
         *
         * @since 2.3.0
         *
         * @param int   $tax_rate_id Tax rate to update.
         * @param array $tax_rate Tax rate values.
         */
        public static function _update_tax_rate($tax_rate_id, $tax_rate)
        {
        }
        /**
         * Delete a tax rate from the database.
         *
         * Internal use only.
         *
         * @since 2.3.0
         * @param  int $tax_rate_id Tax rate to delete.
         */
        public static function _delete_tax_rate($tax_rate_id)
        {
        }
        /**
         * Update postcodes for a tax rate in the DB.
         *
         * Internal use only.
         *
         * @since 2.3.0
         *
         * @param int    $tax_rate_id Tax rate to update.
         * @param string $postcodes String of postcodes separated by ; characters.
         */
        public static function _update_tax_rate_postcodes($tax_rate_id, $postcodes)
        {
        }
        /**
         * Update cities for a tax rate in the DB.
         *
         * Internal use only.
         *
         * @since 2.3.0
         *
         * @param int    $tax_rate_id Tax rate to update.
         * @param string $cities Cities to set.
         */
        public static function _update_tax_rate_cities($tax_rate_id, $cities)
        {
        }
        /**
         * Updates locations (postcode and city).
         *
         * Internal use only.
         *
         * @since 2.3.0
         *
         * @param int    $tax_rate_id Tax rate ID to update.
         * @param array  $values Values to set.
         * @param string $type Location type.
         */
        private static function update_tax_rate_locations($tax_rate_id, $values, $type)
        {
        }
        /**
         * Used by admin settings page.
         *
         * @param string $tax_class Tax class slug.
         *
         * @return array|null|object
         */
        public static function get_rates_for_tax_class($tax_class)
        {
        }
    }
    /**
     * WC_Query Class.
     */
    class WC_Query
    {
        /**
         * Query vars to add to wp.
         *
         * @var array
         */
        public $query_vars = array();
        /**
         * Reference to the main product query on the page.
         *
         * @var array
         */
        private static $product_query;
        /**
         * Stores chosen attributes.
         *
         * @var array
         */
        private static $_chosen_attributes;
        /**
         * Constructor for the query class. Hooks in methods.
         */
        public function __construct()
        {
        }
        /**
         * Get any errors from querystring.
         */
        public function get_errors()
        {
        }
        /**
         * Init query vars by loading options.
         */
        public function init_query_vars()
        {
        }
        /**
         * Get page title for an endpoint.
         *
         * @param  string $endpoint Endpoint key.
         * @return string
         */
        public function get_endpoint_title($endpoint)
        {
        }
        /**
         * Endpoint mask describing the places the endpoint should be added.
         *
         * @since 2.6.2
         * @return int
         */
        public function get_endpoints_mask()
        {
        }
        /**
         * Add endpoints for query vars.
         */
        public function add_endpoints()
        {
        }
        /**
         * Add query vars.
         *
         * @param array $vars Query vars.
         * @return array
         */
        public function add_query_vars($vars)
        {
        }
        /**
         * Get query vars.
         *
         * @return array
         */
        public function get_query_vars()
        {
        }
        /**
         * Get query current active query var.
         *
         * @return string
         */
        public function get_current_endpoint()
        {
        }
        /**
         * Parse the request and look for query vars - endpoints may not be supported.
         */
        public function parse_request()
        {
        }
        /**
         * Are we currently on the front page?
         *
         * @param WP_Query $q Query instance.
         * @return bool
         */
        private function is_showing_page_on_front($q)
        {
        }
        /**
         * Is the front page a page we define?
         *
         * @param int $page_id Page ID.
         * @return bool
         */
        private function page_on_front_is($page_id)
        {
        }
        /**
         * Hook into pre_get_posts to do the main product query.
         *
         * @param WP_Query $q Query instance.
         */
        public function pre_get_posts($q)
        {
        }
        /**
         * Pre_get_posts above may adjust the main query to add WooCommerce logic. When this query is done, we need to ensure
         * all custom filters are removed.
         *
         * This is done here during the_posts filter. The input is not changed.
         *
         * @param array $posts Posts from WP Query.
         * @return array
         */
        public function remove_product_query_filters($posts)
        {
        }
        /**
         * WP SEO meta description.
         *
         * Hooked into wpseo_ hook already, so no need for function_exist.
         *
         * @return string
         */
        public function wpseo_metadesc()
        {
        }
        /**
         * WP SEO meta key.
         *
         * Hooked into wpseo_ hook already, so no need for function_exist.
         *
         * @return string
         */
        public function wpseo_metakey()
        {
        }
        /**
         * Query the products, applying sorting/ordering etc.
         * This applies to the main WordPress loop.
         *
         * @param WP_Query $q Query instance.
         */
        public function product_query($q)
        {
        }
        /**
         * Remove the query.
         */
        public function remove_product_query()
        {
        }
        /**
         * Remove ordering queries.
         */
        public function remove_ordering_args()
        {
        }
        /**
         * Returns an array of arguments for ordering products based on the selected values.
         *
         * @param string $orderby Order by param.
         * @param string $order Order param.
         * @return array
         */
        public function get_catalog_ordering_args($orderby = '', $order = '')
        {
        }
        /**
         * Custom query used to filter products by price.
         *
         * @since 3.6.0
         *
         * @param array    $args Query args.
         * @param WC_Query $wp_query WC_Query object.
         *
         * @return array
         */
        public function price_filter_post_clauses($args, $wp_query)
        {
        }
        /**
         * Handle numeric price sorting.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_price_asc_post_clauses($args)
        {
        }
        /**
         * Handle numeric price sorting.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_price_desc_post_clauses($args)
        {
        }
        /**
         * WP Core does not let us change the sort direction for individual orderby params - https://core.trac.wordpress.org/ticket/17065.
         *
         * This lets us sort by meta value desc, and have a second orderby param.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_popularity_post_clauses($args)
        {
        }
        /**
         * Order by rating post clauses.
         *
         * @param array $args Query args.
         * @return array
         */
        public function order_by_rating_post_clauses($args)
        {
        }
        /**
         * Join wc_product_meta_lookup to posts if not already joined.
         *
         * @param string $sql SQL join.
         * @return string
         */
        private function append_product_sorting_table_join($sql)
        {
        }
        /**
         * Appends meta queries to an array.
         *
         * @param  array $meta_query Meta query.
         * @param  bool  $main_query If is main query.
         * @return array
         */
        public function get_meta_query($meta_query = array(), $main_query = \false)
        {
        }
        /**
         * Appends tax queries to an array.
         *
         * @param  array $tax_query  Tax query.
         * @param  bool  $main_query If is main query.
         * @return array
         */
        public function get_tax_query($tax_query = array(), $main_query = \false)
        {
        }
        /**
         * Get the main query which product queries ran against.
         *
         * @return array
         */
        public static function get_main_query()
        {
        }
        /**
         * Get the tax query which was used by the main query.
         *
         * @return array
         */
        public static function get_main_tax_query()
        {
        }
        /**
         * Get the meta query which was used by the main query.
         *
         * @return array
         */
        public static function get_main_meta_query()
        {
        }
        /**
         * Based on WP_Query::parse_search
         */
        public static function get_main_search_query_sql()
        {
        }
        /**
         * Get an array of attributes and terms selected with the layered nav widget.
         *
         * @return array
         */
        public static function get_layered_nav_chosen_attributes()
        {
        }
        /**
         * Remove the add-to-cart param from pagination urls.
         *
         * @param string $url URL.
         * @return string
         */
        public function remove_add_to_cart_pagination($url)
        {
        }
        // @codingStandardsIgnoreStart
        /**
         * Return a meta query for filtering by rating.
         *
         * @deprecated 3.0.0 Replaced with taxonomy.
         * @return array
         */
        public function rating_filter_meta_query()
        {
        }
        /**
         * Returns a meta query to handle product visibility.
         *
         * @deprecated 3.0.0 Replaced with taxonomy.
         * @param string $compare (default: 'IN')
         * @return array
         */
        public function visibility_meta_query($compare = 'IN')
        {
        }
        /**
         * Returns a meta query to handle product stock status.
         *
         * @deprecated 3.0.0 Replaced with taxonomy.
         * @param string $status (default: 'instock')
         * @return array
         */
        public function stock_status_meta_query($status = 'instock')
        {
        }
        /**
         * Layered nav init.
         *
         * @deprecated 2.6.0
         */
        public function layered_nav_init()
        {
        }
        /**
         * Get an unpaginated list all product IDs (both filtered and unfiltered). Makes use of transients.
         *
         * @deprecated 2.6.0 due to performance concerns
         */
        public function get_products_in_view()
        {
        }
        /**
         * Layered Nav post filter.
         *
         * @deprecated 2.6.0 due to performance concerns
         *
         * @param mixed $deprecated Deprecated.
         */
        public function layered_nav_query($deprecated)
        {
        }
        /**
         * Search post excerpt.
         *
         * @deprecated 3.2.0 - Not needed anymore since WordPress 4.5.
         */
        public function search_post_excerpt($where = '')
        {
        }
        /**
         * Remove the posts_where filter.
         * @deprecated 3.2.0 - Nothing to remove anymore because search_post_excerpt() is deprecated.
         */
        public function remove_posts_where()
        {
        }
    }
    /**
     * Meta data class.
     */
    class WC_Meta_Data implements \JsonSerializable
    {
        /**
         * Current data for metadata
         *
         * @since 3.2.0
         * @var array
         */
        protected $current_data;
        /**
         * Metadata data
         *
         * @since 3.2.0
         * @var array
         */
        protected $data;
        /**
         * Constructor.
         *
         * @param array $meta Data to wrap behind this function.
         */
        public function __construct($meta = array())
        {
        }
        /**
         * When converted to JSON.
         *
         * @return object|array
         */
        public function jsonSerialize()
        {
        }
        /**
         * Merge changes with data and clear.
         */
        public function apply_changes()
        {
        }
        /**
         * Creates or updates a property in the metadata object.
         *
         * @param string $key Key to set.
         * @param mixed  $value Value to set.
         */
        public function __set($key, $value)
        {
        }
        /**
         * Checks if a given key exists in our data. This is called internally
         * by `empty` and `isset`.
         *
         * @param string $key Key to check if set.
         *
         * @return bool
         */
        public function __isset($key)
        {
        }
        /**
         * Returns the value of any property.
         *
         * @param string $key Key to get.
         * @return mixed Property value or NULL if it does not exists
         */
        public function __get($key)
        {
        }
        /**
         * Return data changes only.
         *
         * @return array
         */
        public function get_changes()
        {
        }
        /**
         * Return all data as an array.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
    /**
     * WC_WCCOM_Site Class
     *
     * Main class for WooCommerce.com connected site.
     */
    class WC_WCCOM_Site
    {
        /**
         * Load the WCCOM site class.
         *
         * @since 3.7.0
         */
        public static function load()
        {
        }
        /**
         * Include support files.
         *
         * @since 3.7.0
         */
        protected static function includes()
        {
        }
        /**
         * Authenticate WooCommerce.com request.
         *
         * @since 3.7.0
         * @param int|false $user_id User ID.
         * @return int|false
         */
        public static function authenticate_wccom($user_id)
        {
        }
        /**
         * Get the authorization header.
         *
         * On certain systems and configurations, the Authorization header will be
         * stripped out by the server or PHP. Typically this is then used to
         * generate `PHP_AUTH_USER`/`PHP_AUTH_PASS` but not passed on. We use
         * `getallheaders` here to try and grab it out instead.
         *
         * @since 3.7.0
         * @return string Authorization header if set.
         */
        protected static function get_authorization_header()
        {
        }
        /**
         * Check if this is a request to WCCOM Site REST API.
         *
         * @since 3.7.0
         * @return bool
         */
        protected static function is_request_to_wccom_site_rest_api()
        {
        }
        /**
         * Verify WooCommerce.com request from a given body and signature request.
         *
         * @since 3.7.0
         * @param string $body                Request body.
         * @param string $signature           Request signature found in X-Woo-Signature header.
         * @param string $access_token_secret Access token secret for this site.
         * @return bool
         */
        protected static function verify_wccom_request($body, $signature, $access_token_secret)
        {
        }
        /**
         * Register wccom-site REST namespace.
         *
         * @since 3.7.0
         * @param array $namespaces List of registered namespaces.
         * @return array Registered namespaces.
         */
        public static function register_rest_namespace($namespaces)
        {
        }
    }
    /**
     * REST API WCCOM Site Installer Controller Class.
     *
     * @package WooCommerce/WCCOM_Site/REST_API
     * @extends WC_REST_Controller
     */
    class WC_REST_WCCOM_Site_Installer_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wccom-site/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'installer';
        /**
         * Register the routes for product reviews.
         *
         * @since 3.7.0
         */
        public function register_routes()
        {
        }
        /**
         * Check permissions.
         *
         * @since 3.7.0
         * @param WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        public function check_permission($request)
        {
        }
        /**
         * Get installation state.
         *
         * @since 3.7.0
         * @param WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        public function get_install_state($request)
        {
        }
        /**
         * Install WooCommerce.com products.
         *
         * @since 3.7.0
         * @param WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        public function install($request)
        {
        }
        /**
         * Reset installation state.
         *
         * @since 3.7.0
         * @param WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        public function reset_install($request)
        {
        }
        /**
         * Validate products from request body.
         *
         * @since 3.7.0
         * @param array $products Array of products where key is product ID and
         *                        element is install args.
         * @return bool|WP_Error
         */
        protected function validate_products($products)
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installer Class
     *
     * Contains functionalities to install products via WooCommerce.com helper connection.
     */
    class WC_WCCOM_Site_Installer
    {
        /**
         * Default state.
         *
         * @var array
         */
        private static $default_state = array('status' => 'idle', 'steps' => array(), 'current_step' => \null);
        /**
         * Represents product step state.
         *
         * @var array
         */
        private static $default_step_state = array('download_url' => '', 'product_type' => '', 'last_step' => '', 'last_error' => '', 'download_path' => '', 'unpacked_path' => '', 'installed_path' => '', 'activate' => \false);
        /**
         * Product install steps. Each step is a method name in this class that
         * will be passed with product ID arg \WP_Upgrader instance.
         *
         * @var array
         */
        private static $install_steps = array('get_product_info', 'download_product', 'unpack_product', 'move_product', 'activate_product');
        /**
         * Get the product install state.
         *
         * @since 3.7.0
         * @param string $key Key in state data. If empty key is passed array of
         *                    state will be returned.
         * @return array Product install state.
         */
        public static function get_state($key = '')
        {
        }
        /**
         * Update the product install state.
         *
         * @since 3.7.0
         * @param string $key   Key in state data.
         * @param mixed  $value Value.
         */
        public static function update_state($key, $value)
        {
        }
        /**
         * Reset product install state.
         *
         * @since 3.7.0
         * @param array $products List of product IDs.
         */
        public static function reset_state($products = array())
        {
        }
        /**
         * Schedule installing given list of products.
         *
         * @since 3.7.0
         * @param array $products Array of products where key is product ID and
         *                        element is install args.
         * @return array State.
         */
        public static function schedule_install($products)
        {
        }
        /**
         * Install a given product IDs.
         *
         * Run via `woocommerce_wccom_install_products` hook.
         *
         * @since 3.7.0
         * @param array $products Array of products where key is product ID and
         *                        element is install args.
         */
        public static function install($products)
        {
        }
        /**
         * Finish installation by updating the state.
         *
         * @since 3.7.0
         */
        private static function finish_installation()
        {
        }
        /**
         * Install a single product given its ID.
         *
         * @since 3.7.0
         * @param int          $product_id   Product ID.
         * @param array        $install_args Install args.
         * @param \WP_Upgrader $upgrader     Core class to handle installation.
         */
        private static function install_product($product_id, $install_args, $upgrader)
        {
        }
        /**
         * Perform product installation step.
         *
         * @since 3.7.0
         * @param int          $product_id   Product ID.
         * @param array        $install_args Install args.
         * @param string       $step         Installation step.
         * @param \WP_Upgrader $upgrader     Core class to handle installation.
         */
        private static function do_install_step($product_id, $install_args, $step, $upgrader)
        {
        }
        /**
         * Get product info from its ID.
         *
         * @since 3.7.0
         * @param int $product_id Product ID.
         * @return bool|\WP_Error
         */
        private static function get_product_info($product_id)
        {
        }
        /**
         * Download product by its ID and returns the path of the zip package.
         *
         * @since 3.7.0
         * @param int          $product_id Product ID.
         * @param \WP_Upgrader $upgrader   Core class to handle installation.
         * @return \WP_Error|string
         */
        private static function download_product($product_id, $upgrader)
        {
        }
        /**
         * Unpack downloaded product.
         *
         * @since 3.7.0
         * @param int          $product_id Product ID.
         * @param \WP_Upgrader $upgrader   Core class to handle installation.
         * @return \WP_Error|string
         */
        private static function unpack_product($product_id, $upgrader)
        {
        }
        /**
         * Move product to plugins directory.
         *
         * @since 3.7.0
         * @param int          $product_id Product ID.
         * @param \WP_Upgrader $upgrader   Core class to handle installation.
         * @return array|\WP_Error
         */
        private static function move_product($product_id, $upgrader)
        {
        }
        /**
         * Activate product given its product ID.
         *
         * @since 3.7.0
         * @param int $product_id Product ID.
         * @return \WP_Error|null
         */
        private static function activate_product($product_id)
        {
        }
        /**
         * Activate plugin given its product ID.
         *
         * @since 3.7.0
         * @param int $product_id Product ID.
         * @return \WP_Error|null
         */
        private static function activate_plugin($product_id)
        {
        }
        /**
         * Activate theme given its product ID.
         *
         * @since 3.7.0
         * @param int $product_id Product ID.
         * @return \WP_Error|null
         */
        private static function activate_theme($product_id)
        {
        }
        /**
         * Get installed directory of WP.org product.
         *
         * @since 3.7.0
         * @param int $product_id Product ID.
         * @return bool|string
         */
        private static function get_wporg_product_dir_name($product_id)
        {
        }
        /**
         * Get WP.org plugin's main file.
         *
         * @since 3.7.0
         * @param string $dir Directory name of the plugin.
         * @return bool|string
         */
        private static function get_wporg_plugin_main_file($dir)
        {
        }
    }
    /**
     * Breadcrumb class.
     */
    class WC_Breadcrumb
    {
        /**
         * Breadcrumb trail.
         *
         * @var array
         */
        protected $crumbs = array();
        /**
         * Add a crumb so we don't get lost.
         *
         * @param string $name Name.
         * @param string $link Link.
         */
        public function add_crumb($name, $link = '')
        {
        }
        /**
         * Reset crumbs.
         */
        public function reset()
        {
        }
        /**
         * Get the breadcrumb.
         *
         * @return array
         */
        public function get_breadcrumb()
        {
        }
        /**
         * Generate breadcrumb trail.
         *
         * @return array of breadcrumbs
         */
        public function generate()
        {
        }
        /**
         * Prepend the shop page to shop breadcrumbs.
         */
        protected function prepend_shop_page()
        {
        }
        /**
         * Is home trail..
         */
        protected function add_crumbs_home()
        {
        }
        /**
         * 404 trail.
         */
        protected function add_crumbs_404()
        {
        }
        /**
         * Attachment trail.
         */
        protected function add_crumbs_attachment()
        {
        }
        /**
         * Single post trail.
         *
         * @param int    $post_id   Post ID.
         * @param string $permalink Post permalink.
         */
        protected function add_crumbs_single($post_id = 0, $permalink = '')
        {
        }
        /**
         * Page trail.
         */
        protected function add_crumbs_page()
        {
        }
        /**
         * Product category trail.
         */
        protected function add_crumbs_product_category()
        {
        }
        /**
         * Product tag trail.
         */
        protected function add_crumbs_product_tag()
        {
        }
        /**
         * Shop breadcrumb.
         */
        protected function add_crumbs_shop()
        {
        }
        /**
         * Post type archive trail.
         */
        protected function add_crumbs_post_type_archive()
        {
        }
        /**
         * Category trail.
         */
        protected function add_crumbs_category()
        {
        }
        /**
         * Tag trail.
         */
        protected function add_crumbs_tag()
        {
        }
        /**
         * Add crumbs for date based archives.
         */
        protected function add_crumbs_date()
        {
        }
        /**
         * Add crumbs for taxonomies
         */
        protected function add_crumbs_tax()
        {
        }
        /**
         * Add a breadcrumb for author archives.
         */
        protected function add_crumbs_author()
        {
        }
        /**
         * Add crumbs for a term.
         *
         * @param int    $term_id  Term ID.
         * @param string $taxonomy Taxonomy.
         */
        protected function term_ancestors($term_id, $taxonomy)
        {
        }
        /**
         * Endpoints.
         */
        protected function endpoint_trail()
        {
        }
        /**
         * Add a breadcrumb for search results.
         */
        protected function search_trail()
        {
        }
        /**
         * Add a breadcrumb for pagination.
         */
        protected function paged_trail()
        {
        }
    }
    /**
     * Download handler class.
     */
    class WC_Download_Handler
    {
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Check if we need to download a file and check validity.
         */
        public static function download_product()
        {
        }
        /**
         * Check if an order is valid for downloading from.
         *
         * @param WC_Customer_Download $download Download instance.
         */
        private static function check_order_is_valid($download)
        {
        }
        /**
         * Check if there are downloads remaining.
         *
         * @param WC_Customer_Download $download Download instance.
         */
        private static function check_downloads_remaining($download)
        {
        }
        /**
         * Check if the download has expired.
         *
         * @param WC_Customer_Download $download Download instance.
         */
        private static function check_download_expiry($download)
        {
        }
        /**
         * Check if a download requires the user to login first.
         *
         * @param WC_Customer_Download $download Download instance.
         */
        private static function check_download_login_required($download)
        {
        }
        /**
         * Count download.
         *
         * @deprecated unknown
         * @param array $download_data Download data.
         */
        public static function count_download($download_data)
        {
        }
        /**
         * Download a file - hook into init function.
         *
         * @param string  $file_path  URL to file.
         * @param integer $product_id Product ID of the product being downloaded.
         */
        public static function download($file_path, $product_id)
        {
        }
        /**
         * Redirect to a file to start the download.
         *
         * @param string $file_path File path.
         * @param string $filename  File name.
         */
        public static function download_file_redirect($file_path, $filename = '')
        {
        }
        /**
         * Parse file path and see if its remote or local.
         *
         * @param  string $file_path File path.
         * @return array
         */
        public static function parse_file_path($file_path)
        {
        }
        /**
         * Download a file using X-Sendfile, X-Lighttpd-Sendfile, or X-Accel-Redirect if available.
         *
         * @param string $file_path File path.
         * @param string $filename  File name.
         */
        public static function download_file_xsendfile($file_path, $filename)
        {
        }
        /**
         * Parse the HTTP_RANGE request from iOS devices.
         * Does not support multi-range requests.
         *
         * @param int $file_size Size of file in bytes.
         * @return array {
         *     Information about range download request: beginning and length of
         *     file chunk, whether the range is valid/supported and whether the request is a range request.
         *
         *     @type int  $start            Byte offset of the beginning of the range. Default 0.
         *     @type int  $length           Length of the requested file chunk in bytes. Optional.
         *     @type bool $is_range_valid   Whether the requested range is a valid and supported range.
         *     @type bool $is_range_request Whether the request is a range request.
         * }
         */
        protected static function get_download_range($file_size)
        {
        }
        /**
         * Force download - this is the default method.
         *
         * @param string $file_path File path.
         * @param string $filename  File name.
         */
        public static function download_file_force($file_path, $filename)
        {
        }
        /**
         * Get content type of a download.
         *
         * @param  string $file_path File path.
         * @return string
         */
        private static function get_download_content_type($file_path)
        {
        }
        /**
         * Set headers for the download.
         *
         * @param string $file_path      File path.
         * @param string $filename       File name.
         * @param array  $download_range Array containing info about range download request (see {@see get_download_range} for structure).
         */
        private static function download_headers($file_path, $filename, $download_range = array())
        {
        }
        /**
         * Check and set certain server config variables to ensure downloads work as intended.
         */
        private static function check_server_config()
        {
        }
        /**
         * Clean all output buffers.
         *
         * Can prevent errors, for example: transfer closed with 3 bytes remaining to read.
         */
        private static function clean_buffers()
        {
        }
        /**
         * Read file chunked.
         *
         * Reads file in chunks so big downloads are possible without changing PHP.INI - http://codeigniter.com/wiki/Download_helper_for_large_files/.
         *
         * @param  string $file   File.
         * @param  int    $start  Byte offset/position of the beginning from which to read from the file.
         * @param  int    $length Length of the chunk to be read from the file in bytes, 0 means full file.
         * @return bool Success or fail
         */
        public static function readfile_chunked($file, $start = 0, $length = 0)
        {
        }
        /**
         * Filter headers for IE to fix issues over SSL.
         *
         * IE bug prevents download via SSL when Cache Control and Pragma no-cache headers set.
         *
         * @param array $headers HTTP headers.
         * @return array
         */
        public static function ie_nocache_headers_fix($headers)
        {
        }
        /**
         * Die with an error message if the download fails.
         *
         * @param string  $message Error message.
         * @param string  $title   Error title.
         * @param integer $status  Error status.
         */
        private static function download_error($message, $title = '', $status = 404)
        {
        }
    }
    /**
     * Frontend scripts class.
     */
    class WC_Frontend_Scripts
    {
        /**
         * Contains an array of script handles registered by WC.
         *
         * @var array
         */
        private static $scripts = array();
        /**
         * Contains an array of script handles registered by WC.
         *
         * @var array
         */
        private static $styles = array();
        /**
         * Contains an array of script handles localized by WC.
         *
         * @var array
         */
        private static $wp_localize_scripts = array();
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Get styles for the frontend.
         *
         * @return array
         */
        public static function get_styles()
        {
        }
        /**
         * Return asset URL.
         *
         * @param string $path Assets path.
         * @return string
         */
        private static function get_asset_url($path)
        {
        }
        /**
         * Register a script for use.
         *
         * @uses   wp_register_script()
         * @param  string   $handle    Name of the script. Should be unique.
         * @param  string   $path      Full URL of the script, or path of the script relative to the WordPress root directory.
         * @param  string[] $deps      An array of registered script handles this script depends on.
         * @param  string   $version   String specifying script version number, if it has one, which is added to the URL as a query string for cache busting purposes. If version is set to false, a version number is automatically added equal to current installed WordPress version. If set to null, no version is added.
         * @param  boolean  $in_footer Whether to enqueue the script before </body> instead of in the <head>. Default 'false'.
         */
        private static function register_script($handle, $path, $deps = array('jquery'), $version = \WC_VERSION, $in_footer = \true)
        {
        }
        /**
         * Register and enqueue a script for use.
         *
         * @uses   wp_enqueue_script()
         * @param  string   $handle    Name of the script. Should be unique.
         * @param  string   $path      Full URL of the script, or path of the script relative to the WordPress root directory.
         * @param  string[] $deps      An array of registered script handles this script depends on.
         * @param  string   $version   String specifying script version number, if it has one, which is added to the URL as a query string for cache busting purposes. If version is set to false, a version number is automatically added equal to current installed WordPress version. If set to null, no version is added.
         * @param  boolean  $in_footer Whether to enqueue the script before </body> instead of in the <head>. Default 'false'.
         */
        private static function enqueue_script($handle, $path = '', $deps = array('jquery'), $version = \WC_VERSION, $in_footer = \true)
        {
        }
        /**
         * Register a style for use.
         *
         * @uses   wp_register_style()
         * @param  string   $handle  Name of the stylesheet. Should be unique.
         * @param  string   $path    Full URL of the stylesheet, or path of the stylesheet relative to the WordPress root directory.
         * @param  string[] $deps    An array of registered stylesheet handles this stylesheet depends on.
         * @param  string   $version String specifying stylesheet version number, if it has one, which is added to the URL as a query string for cache busting purposes. If version is set to false, a version number is automatically added equal to current installed WordPress version. If set to null, no version is added.
         * @param  string   $media   The media for which this stylesheet has been defined. Accepts media types like 'all', 'print' and 'screen', or media queries like '(orientation: portrait)' and '(max-width: 640px)'.
         * @param  boolean  $has_rtl If has RTL version to load too.
         */
        private static function register_style($handle, $path, $deps = array(), $version = \WC_VERSION, $media = 'all', $has_rtl = \false)
        {
        }
        /**
         * Register and enqueue a styles for use.
         *
         * @uses   wp_enqueue_style()
         * @param  string   $handle  Name of the stylesheet. Should be unique.
         * @param  string   $path    Full URL of the stylesheet, or path of the stylesheet relative to the WordPress root directory.
         * @param  string[] $deps    An array of registered stylesheet handles this stylesheet depends on.
         * @param  string   $version String specifying stylesheet version number, if it has one, which is added to the URL as a query string for cache busting purposes. If version is set to false, a version number is automatically added equal to current installed WordPress version. If set to null, no version is added.
         * @param  string   $media   The media for which this stylesheet has been defined. Accepts media types like 'all', 'print' and 'screen', or media queries like '(orientation: portrait)' and '(max-width: 640px)'.
         * @param  boolean  $has_rtl If has RTL version to load too.
         */
        private static function enqueue_style($handle, $path = '', $deps = array(), $version = \WC_VERSION, $media = 'all', $has_rtl = \false)
        {
        }
        /**
         * Register all WC scripts.
         */
        private static function register_scripts()
        {
        }
        /**
         * Register all WC sty;es.
         */
        private static function register_styles()
        {
        }
        /**
         * Register/queue frontend scripts.
         */
        public static function load_scripts()
        {
        }
        /**
         * Localize a WC script once.
         *
         * @since 2.3.0 this needs less wp_script_is() calls due to https://core.trac.wordpress.org/ticket/28404 being added in WP 4.0.
         * @param string $handle Script handle the data will be attached to.
         */
        private static function localize_script($handle)
        {
        }
        /**
         * Return data for script handles.
         *
         * @param  string $handle Script handle the data will be attached to.
         * @return array|bool
         */
        private static function get_script_data($handle)
        {
        }
        /**
         * Localize scripts only when enqueued.
         */
        public static function localize_printed_scripts()
        {
        }
    }
    /**
     * Handles log entries by writing to database.
     *
     * @class          WC_Log_Handler_DB
     * @version        1.0.0
     * @package        WooCommerce/Classes/Log_Handlers
     */
    class WC_Log_Handler_DB extends \WC_Log_Handler
    {
        /**
         * Handle a log entry.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context {
         *      Additional information for log handlers.
         *
         *     @type string $source Optional. Source will be available in log table.
         *                  If no source is provided, attempt to provide sensible default.
         * }
         *
         * @see WC_Log_Handler_DB::get_log_source() for default source.
         *
         * @return bool False if value was not handled and true if value was handled.
         */
        public function handle($timestamp, $level, $message, $context)
        {
        }
        /**
         * Add a log entry to chosen file.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param string $source Log source. Useful for filtering and sorting.
         * @param array  $context Context will be serialized and stored in database.
         *
         * @return bool True if write was successful.
         */
        protected static function add($timestamp, $level, $message, $source, $context)
        {
        }
        /**
         * Clear all logs from the DB.
         *
         * @return bool True if flush was successful.
         */
        public static function flush()
        {
        }
        /**
         * Clear entries for a chosen handle/source.
         *
         * @param string $source Log source.
         * @return bool
         */
        public function clear($source)
        {
        }
        /**
         * Delete selected logs from DB.
         *
         * @param int|string|array $log_ids Log ID or array of Log IDs to be deleted.
         *
         * @return bool
         */
        public static function delete($log_ids)
        {
        }
        /**
         * Delete all logs older than a defined timestamp.
         *
         * @since 3.4.0
         * @param integer $timestamp Timestamp to delete logs before.
         */
        public static function delete_logs_before_timestamp($timestamp = 0)
        {
        }
        /**
         * Get appropriate source based on file name.
         *
         * Try to provide an appropriate source in case none is provided.
         *
         * @return string Text to use as log source. "" (empty string) if none is found.
         */
        protected static function get_log_source()
        {
        }
    }
    /**
     * Handles log entries by writing to a file.
     *
     * @class          WC_Log_Handler_File
     * @version        1.0.0
     * @package        WooCommerce/Classes/Log_Handlers
     */
    class WC_Log_Handler_File extends \WC_Log_Handler
    {
        /**
         * Stores open file handles.
         *
         * @var array
         */
        protected $handles = array();
        /**
         * File size limit for log files in bytes.
         *
         * @var int
         */
        protected $log_size_limit;
        /**
         * Cache logs that could not be written.
         *
         * If a log is written too early in the request, pluggable functions may be unavailable. These
         * logs will be cached and written on 'plugins_loaded' action.
         *
         * @var array
         */
        protected $cached_logs = array();
        /**
         * Constructor for the logger.
         *
         * @param int $log_size_limit Optional. Size limit for log files. Default 5mb.
         */
        public function __construct($log_size_limit = \null)
        {
        }
        /**
         * Destructor.
         *
         * Cleans up open file handles.
         */
        public function __destruct()
        {
        }
        /**
         * Handle a log entry.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context {
         *      Additional information for log handlers.
         *
         *     @type string $source Optional. Determines log file to write to. Default 'log'.
         *     @type bool $_legacy Optional. Default false. True to use outdated log format
         *         originally used in deprecated WC_Logger::add calls.
         * }
         *
         * @return bool False if value was not handled and true if value was handled.
         */
        public function handle($timestamp, $level, $message, $context)
        {
        }
        /**
         * Builds a log entry text from timestamp, level and message.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context Additional information for log handlers.
         *
         * @return string Formatted log entry.
         */
        protected static function format_entry($timestamp, $level, $message, $context)
        {
        }
        /**
         * Open log file for writing.
         *
         * @param string $handle Log handle.
         * @param string $mode Optional. File mode. Default 'a'.
         * @return bool Success.
         */
        protected function open($handle, $mode = 'a')
        {
        }
        /**
         * Check if a handle is open.
         *
         * @param string $handle Log handle.
         * @return bool True if $handle is open.
         */
        protected function is_open($handle)
        {
        }
        /**
         * Close a handle.
         *
         * @param string $handle Log handle.
         * @return bool success
         */
        protected function close($handle)
        {
        }
        /**
         * Add a log entry to chosen file.
         *
         * @param string $entry Log entry text.
         * @param string $handle Log entry handle.
         *
         * @return bool True if write was successful.
         */
        protected function add($entry, $handle)
        {
        }
        /**
         * Clear entries from chosen file.
         *
         * @param string $handle Log handle.
         *
         * @return bool
         */
        public function clear($handle)
        {
        }
        /**
         * Remove/delete the chosen file.
         *
         * @param string $handle Log handle.
         *
         * @return bool
         */
        public function remove($handle)
        {
        }
        /**
         * Check if log file should be rotated.
         *
         * Compares the size of the log file to determine whether it is over the size limit.
         *
         * @param string $handle Log handle.
         * @return bool True if if should be rotated.
         */
        protected function should_rotate($handle)
        {
        }
        /**
         * Rotate log files.
         *
         * Logs are rotated by prepending '.x' to the '.log' suffix.
         * The current log plus 10 historical logs are maintained.
         * For example:
         *     base.9.log -> [ REMOVED ]
         *     base.8.log -> base.9.log
         *     ...
         *     base.0.log -> base.1.log
         *     base.log   -> base.0.log
         *
         * @param string $handle Log handle.
         */
        protected function log_rotate($handle)
        {
        }
        /**
         * Increment a log file suffix.
         *
         * @param string   $handle Log handle.
         * @param null|int $number Optional. Default null. Log suffix number to be incremented.
         * @return bool True if increment was successful, otherwise false.
         */
        protected function increment_log_infix($handle, $number = \null)
        {
        }
        /**
         * Get a log file path.
         *
         * @param string $handle Log name.
         * @return bool|string The log file path or false if path cannot be determined.
         */
        public static function get_log_file_path($handle)
        {
        }
        /**
         * Get a log file name.
         *
         * File names consist of the handle, followed by the date, followed by a hash, .log.
         *
         * @since 3.3
         * @param string $handle Log name.
         * @return bool|string The log file name or false if cannot be determined.
         */
        public static function get_log_file_name($handle)
        {
        }
        /**
         * Cache log to write later.
         *
         * @param string $entry Log entry text.
         * @param string $handle Log entry handle.
         */
        protected function cache_log($entry, $handle)
        {
        }
        /**
         * Write cached logs.
         */
        public function write_cached_logs()
        {
        }
        /**
         * Delete all logs older than a defined timestamp.
         *
         * @since 3.4.0
         * @param integer $timestamp Timestamp to delete logs before.
         */
        public static function delete_logs_before_timestamp($timestamp = 0)
        {
        }
        /**
         * Get all log files in the log directory.
         *
         * @since 3.4.0
         * @return array
         */
        public static function get_log_files()
        {
        }
    }
    /**
     * Handles log entries by sending an email.
     *
     * WARNING!
     * This log handler has known limitations.
     *
     * Log messages are aggregated and sent once per request (if necessary). If the site experiences a
     * problem, the log email may never be sent. This handler should be used with another handler which
     * stores logs in order to prevent loss.
     *
     * It is not recommended to use this handler on a high traffic site. There will be a maximum of 1
     * email sent per request per handler, but that could still be a dangerous amount of emails under
     * heavy traffic. Do not confuse this handler with an appropriate monitoring solution!
     *
     * If you understand these limitations, feel free to use this handler or borrow parts of the design
     * to implement your own!
     *
     * @class          WC_Log_Handler_Email
     * @version        1.0.0
     * @package        WooCommerce/Classes/Log_Handlers
     */
    class WC_Log_Handler_Email extends \WC_Log_Handler
    {
        /**
         * Minimum log level this handler will process.
         *
         * @var int Integer representation of minimum log level to handle.
         */
        protected $threshold;
        /**
         * Stores email recipients.
         *
         * @var array
         */
        protected $recipients = array();
        /**
         * Stores log messages.
         *
         * @var array
         */
        protected $logs = array();
        /**
         * Stores integer representation of maximum logged level.
         *
         * @var int
         */
        protected $max_severity = \null;
        /**
         * Constructor for log handler.
         *
         * @param string|array $recipients Optional. Email(s) to receive log messages. Defaults to site admin email.
         * @param string       $threshold Optional. Minimum level that should receive log messages.
         *           Default 'alert'. One of: emergency|alert|critical|error|warning|notice|info|debug.
         */
        public function __construct($recipients = \null, $threshold = 'alert')
        {
        }
        /**
         * Set handler severity threshold.
         *
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         */
        public function set_threshold($level)
        {
        }
        /**
         * Determine whether handler should handle log.
         *
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @return bool True if the log should be handled.
         */
        protected function should_handle($level)
        {
        }
        /**
         * Handle a log entry.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context Optional. Additional information for log handlers.
         *
         * @return bool False if value was not handled and true if value was handled.
         */
        public function handle($timestamp, $level, $message, $context)
        {
        }
        /**
         * Send log email.
         *
         * @return bool True if email is successfully sent otherwise false.
         */
        public function send_log_email()
        {
        }
        /**
         * Build subject for log email.
         *
         * @return string subject
         */
        protected function get_subject()
        {
        }
        /**
         * Build body for log email.
         *
         * @return string body
         */
        protected function get_body()
        {
        }
        /**
         * Adds an email to the list of recipients.
         *
         * @param string $email Email address to add.
         */
        public function add_email($email)
        {
        }
        /**
         * Add log message.
         *
         * @param int    $timestamp Log timestamp.
         * @param string $level emergency|alert|critical|error|warning|notice|info|debug.
         * @param string $message Log message.
         * @param array  $context Additional information for log handlers.
         */
        protected function add_log($timestamp, $level, $message, $context)
        {
        }
        /**
         * Clear log messages.
         */
        protected function clear_logs()
        {
        }
    }
    /**
     * WC_CSV_Exporter Class.
     */
    abstract class WC_CSV_Exporter
    {
        /**
         * Type of export used in filter names.
         *
         * @var string
         */
        protected $export_type = '';
        /**
         * Filename to export to.
         *
         * @var string
         */
        protected $filename = 'wc-export.csv';
        /**
         * Batch limit.
         *
         * @var integer
         */
        protected $limit = 50;
        /**
         * Number exported.
         *
         * @var integer
         */
        protected $exported_row_count = 0;
        /**
         * Raw data to export.
         *
         * @var array
         */
        protected $row_data = array();
        /**
         * Total rows to export.
         *
         * @var integer
         */
        protected $total_rows = 0;
        /**
         * Columns ids and names.
         *
         * @var array
         */
        protected $column_names = array();
        /**
         * List of columns to export, or empty for all.
         *
         * @var array
         */
        protected $columns_to_export = array();
        /**
         * Prepare data that will be exported.
         */
        public abstract function prepare_data_to_export();
        /**
         * Return an array of supported column names and ids.
         *
         * @since 3.1.0
         * @return array
         */
        public function get_column_names()
        {
        }
        /**
         * Set column names.
         *
         * @since 3.1.0
         * @param array $column_names Column names array.
         */
        public function set_column_names($column_names)
        {
        }
        /**
         * Return an array of columns to export.
         *
         * @since 3.1.0
         * @return array
         */
        public function get_columns_to_export()
        {
        }
        /**
         * Set columns to export.
         *
         * @since 3.1.0
         * @param array $columns Columns array.
         */
        public function set_columns_to_export($columns)
        {
        }
        /**
         * See if a column is to be exported or not.
         *
         * @since 3.1.0
         * @param  string $column_id ID of the column being exported.
         * @return boolean
         */
        public function is_column_exporting($column_id)
        {
        }
        /**
         * Return default columns.
         *
         * @since 3.1.0
         * @return array
         */
        public function get_default_column_names()
        {
        }
        /**
         * Do the export.
         *
         * @since 3.1.0
         */
        public function export()
        {
        }
        /**
         * Set the export headers.
         *
         * @since 3.1.0
         */
        public function send_headers()
        {
        }
        /**
         * Set filename to export to.
         *
         * @param  string $filename Filename to export to.
         */
        public function set_filename($filename)
        {
        }
        /**
         * Generate and return a filename.
         *
         * @return string
         */
        public function get_filename()
        {
        }
        /**
         * Set the export content.
         *
         * @since 3.1.0
         * @param string $csv_data All CSV content.
         */
        public function send_content($csv_data)
        {
        }
        /**
         * Get CSV data for this export.
         *
         * @since 3.1.0
         * @return string
         */
        protected function get_csv_data()
        {
        }
        /**
         * Export column headers in CSV format.
         *
         * @since 3.1.0
         * @return string
         */
        protected function export_column_headers()
        {
        }
        /**
         * Get data that will be exported.
         *
         * @since 3.1.0
         * @return array
         */
        protected function get_data_to_export()
        {
        }
        /**
         * Export rows in CSV format.
         *
         * @since 3.1.0
         * @return string
         */
        protected function export_rows()
        {
        }
        /**
         * Export rows to an array ready for the CSV.
         *
         * @since 3.1.0
         * @param array    $row_data Data to export.
         * @param string   $key Column being exported.
         * @param resource $buffer Output buffer.
         */
        protected function export_row($row_data, $key, $buffer)
        {
        }
        /**
         * Get batch limit.
         *
         * @since 3.1.0
         * @return int
         */
        public function get_limit()
        {
        }
        /**
         * Set batch limit.
         *
         * @since 3.1.0
         * @param int $limit Limit to export.
         */
        public function set_limit($limit)
        {
        }
        /**
         * Get count of records exported.
         *
         * @since 3.1.0
         * @return int
         */
        public function get_total_exported()
        {
        }
        /**
         * Escape a string to be used in a CSV context
         *
         * Malicious input can inject formulas into CSV files, opening up the possibility
         * for phishing attacks and disclosure of sensitive information.
         *
         * Additionally, Excel exposes the ability to launch arbitrary commands through
         * the DDE protocol.
         *
         * @see http://www.contextis.com/resources/blog/comma-separated-vulnerabilities/
         * @see https://hackerone.com/reports/72785
         *
         * @since 3.1.0
         * @param string $data CSV field to escape.
         * @return string
         */
        public function escape_data($data)
        {
        }
        /**
         * Format and escape data ready for the CSV file.
         *
         * @since 3.1.0
         * @param  string $data Data to format.
         * @return string
         */
        public function format_data($data)
        {
        }
        /**
         * Format term ids to names.
         *
         * @since 3.1.0
         * @param  array  $term_ids Term IDs to format.
         * @param  string $taxonomy Taxonomy name.
         * @return string
         */
        public function format_term_ids($term_ids, $taxonomy)
        {
        }
        /**
         * Implode CSV cell values using commas by default, and wrapping values
         * which contain the separator.
         *
         * @since  3.2.0
         * @param  array $values Values to implode.
         * @return string
         */
        protected function implode_values($values)
        {
        }
        /**
         * Write to the CSV file, ensuring escaping works across versions of
         * PHP.
         *
         * PHP 5.5.4 uses '\' as the default escape character. This is not RFC-4180 compliant.
         * \0 disables the escape character.
         *
         * @see https://bugs.php.net/bug.php?id=43225
         * @see https://bugs.php.net/bug.php?id=50686
         * @see https://github.com/woocommerce/woocommerce/issues/19514
         * @since 3.4.0
         * @param resource $buffer Resource we are writing to.
         * @param array    $export_row Row to export.
         */
        protected function fputcsv($buffer, $export_row)
        {
        }
    }
    /**
     * WC_CSV_Exporter Class.
     */
    abstract class WC_CSV_Batch_Exporter extends \WC_CSV_Exporter
    {
        /**
         * Page being exported
         *
         * @var integer
         */
        protected $page = 1;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get file path to export to.
         *
         * @return string
         */
        protected function get_file_path()
        {
        }
        /**
         * Get the file contents.
         *
         * @since 3.1.0
         * @return string
         */
        public function get_file()
        {
        }
        /**
         * Serve the file and remove once sent to the client.
         *
         * @since 3.1.0
         */
        public function export()
        {
        }
        /**
         * Generate the CSV file.
         *
         * @since 3.1.0
         */
        public function generate_file()
        {
        }
        /**
         * Write data to the file.
         *
         * @since 3.1.0
         * @param string $data Data.
         */
        protected function write_csv_data($data)
        {
        }
        /**
         * Get page.
         *
         * @since 3.1.0
         * @return int
         */
        public function get_page()
        {
        }
        /**
         * Set page.
         *
         * @since 3.1.0
         * @param int $page Page Nr.
         */
        public function set_page($page)
        {
        }
        /**
         * Get count of records exported.
         *
         * @since 3.1.0
         * @return int
         */
        public function get_total_exported()
        {
        }
        /**
         * Get total % complete.
         *
         * @since 3.1.0
         * @return int
         */
        public function get_percent_complete()
        {
        }
    }
    /**
     * WC_Product_CSV_Exporter Class.
     */
    class WC_Product_CSV_Exporter extends \WC_CSV_Batch_Exporter
    {
        /**
         * Type of export used in filter names.
         *
         * @var string
         */
        protected $export_type = 'product';
        /**
         * Should meta be exported?
         *
         * @var boolean
         */
        protected $enable_meta_export = \false;
        /**
         * Which product types are being exported.
         *
         * @var array
         */
        protected $product_types_to_export = array();
        /**
         * Products belonging to what category should be exported.
         *
         * @var string
         */
        protected $product_category_to_export = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Should meta be exported?
         *
         * @param bool $enable_meta_export Should meta be exported.
         *
         * @since 3.1.0
         */
        public function enable_meta_export($enable_meta_export)
        {
        }
        /**
         * Product types to export.
         *
         * @param array $product_types_to_export List of types to export.
         *
         * @since 3.1.0
         */
        public function set_product_types_to_export($product_types_to_export)
        {
        }
        /**
         * Product category to export
         *
         * @param string $product_category_to_export Product category slug to export, empty string exports all.
         *
         * @since  3.5.0
         * @return void
         */
        public function set_product_category_to_export($product_category_to_export)
        {
        }
        /**
         * Return an array of columns to export.
         *
         * @since  3.1.0
         * @return array
         */
        public function get_default_column_names()
        {
        }
        /**
         * Prepare data for export.
         *
         * @since 3.1.0
         */
        public function prepare_data_to_export()
        {
        }
        /**
         * Take a product and generate row data from it for export.
         *
         * @param WC_Product $product WC_Product object.
         *
         * @return array
         */
        protected function generate_row_data($product)
        {
        }
        /**
         * Get published value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return int
         */
        protected function get_column_value_published($product)
        {
        }
        /**
         * Get formatted sale price.
         *
         * @param WC_Product $product Product being exported.
         *
         * @return string
         */
        protected function get_column_value_sale_price($product)
        {
        }
        /**
         * Get formatted regular price.
         *
         * @param WC_Product $product Product being exported.
         *
         * @return string
         */
        protected function get_column_value_regular_price($product)
        {
        }
        /**
         * Get product_cat value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_category_ids($product)
        {
        }
        /**
         * Get product_tag value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_tag_ids($product)
        {
        }
        /**
         * Get product_shipping_class value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_shipping_class_id($product)
        {
        }
        /**
         * Get images value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_images($product)
        {
        }
        /**
         * Prepare linked products for export.
         *
         * @param int[] $linked_products Array of linked product ids.
         *
         * @since  3.1.0
         * @return string
         */
        protected function prepare_linked_products_for_export($linked_products)
        {
        }
        /**
         * Get cross_sell_ids value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_cross_sell_ids($product)
        {
        }
        /**
         * Get upsell_ids value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_upsell_ids($product)
        {
        }
        /**
         * Get parent_id value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_parent_id($product)
        {
        }
        /**
         * Get grouped_products value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_grouped_products($product)
        {
        }
        /**
         * Get download_limit value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_download_limit($product)
        {
        }
        /**
         * Get download_expiry value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_download_expiry($product)
        {
        }
        /**
         * Get stock value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_stock($product)
        {
        }
        /**
         * Get stock status value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_stock_status($product)
        {
        }
        /**
         * Get backorders.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_backorders($product)
        {
        }
        /**
         * Get low stock amount value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.5.0
         * @return int|string Empty string if value not set
         */
        protected function get_column_value_low_stock_amount($product)
        {
        }
        /**
         * Get type value.
         *
         * @param WC_Product $product Product being exported.
         *
         * @since  3.1.0
         * @return string
         */
        protected function get_column_value_type($product)
        {
        }
        /**
         * Filter description field for export.
         * Convert newlines to '\n'.
         *
         * @param string $description Product description text to filter.
         *
         * @since  3.5.4
         * @return string
         */
        protected function filter_description_field($description)
        {
        }
        /**
         * Export downloads.
         *
         * @param WC_Product $product Product being exported.
         * @param array      $row     Row being exported.
         *
         * @since 3.1.0
         */
        protected function prepare_downloads_for_export($product, &$row)
        {
        }
        /**
         * Export attributes data.
         *
         * @param WC_Product $product Product being exported.
         * @param array      $row     Row being exported.
         *
         * @since 3.1.0
         */
        protected function prepare_attributes_for_export($product, &$row)
        {
        }
        /**
         * Export meta data.
         *
         * @param WC_Product $product Product being exported.
         * @param array      $row Row data.
         *
         * @since 3.1.0
         */
        protected function prepare_meta_for_export($product, &$row)
        {
        }
    }
    /**
     * Product grouped class.
     */
    class WC_Product_Grouped extends \WC_Product
    {
        /**
         * Stores product data.
         *
         * @var array
         */
        protected $extra_data = array('children' => array());
        /**
         * Get internal type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get the add to cart button text.
         *
         * @return string
         */
        public function add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text description - used in aria tags.
         *
         * @since 3.3.0
         * @return string
         */
        public function add_to_cart_description()
        {
        }
        /**
         * Returns whether or not the product is on sale.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function is_on_sale($context = 'view')
        {
        }
        /**
         * Returns false if the product cannot be bought.
         *
         * @return bool
         */
        public function is_purchasable()
        {
        }
        /**
         * Returns the price in html format.
         *
         * @param string $price (default: '').
         * @return string
         */
        public function get_price_html($price = '')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        |
        | Methods for getting data from the product object.
        */
        /**
         * Return the children of this product.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return array
         */
        public function get_children($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Methods for getting data from the product object.
        */
        /**
         * Return the children of this product.
         *
         * @param array $children List of product children.
         */
        public function set_children($children)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Sync with children.
        |--------------------------------------------------------------------------
        */
        /**
         * Sync a grouped product with it's children. These sync functions sync
         * upwards (from child to parent) when the variation is saved.
         *
         * @param WC_Product|int $product Product object or ID for which you wish to sync.
         * @param bool           $save If true, the product object will be saved to the DB before returning it.
         * @return WC_Product Synced product object.
         */
        public static function sync($product, $save = \true)
        {
        }
    }
    /**
     * Order item shipping class.
     */
    class WC_Order_Item_Shipping extends \WC_Order_Item
    {
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $extra_data = array('method_title' => '', 'method_id' => '', 'instance_id' => '', 'total' => 0, 'total_tax' => 0, 'taxes' => array('total' => array()));
        /**
         * Calculate item taxes.
         *
         * @since  3.2.0
         * @param  array $calculate_tax_for Location data to get taxes for. Required.
         * @return bool  True if taxes were calculated.
         */
        public function calculate_taxes($calculate_tax_for = array())
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        */
        /**
         * Set order item name.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        public function set_name($value)
        {
        }
        /**
         * Set method title.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        public function set_method_title($value)
        {
        }
        /**
         * Set shipping method id.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        public function set_method_id($value)
        {
        }
        /**
         * Set shipping instance id.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        public function set_instance_id($value)
        {
        }
        /**
         * Set total.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        public function set_total($value)
        {
        }
        /**
         * Set total tax.
         *
         * @param string $value Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        protected function set_total_tax($value)
        {
        }
        /**
         * Set taxes.
         *
         * This is an array of tax ID keys with total amount values.
         *
         * @param array $raw_tax_data Value to set.
         * @throws WC_Data_Exception May throw exception if data is invalid.
         */
        public function set_taxes($raw_tax_data)
        {
        }
        /**
         * Set properties based on passed in shipping rate object.
         *
         * @param WC_Shipping_Rate $shipping_rate Shipping rate to set.
         */
        public function set_shipping_rate($shipping_rate)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        */
        /**
         * Get order item type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /**
         * Get order item name.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get title.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_method_title($context = 'view')
        {
        }
        /**
         * Get method ID.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_method_id($context = 'view')
        {
        }
        /**
         * Get instance ID.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_instance_id($context = 'view')
        {
        }
        /**
         * Get total cost.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_total($context = 'view')
        {
        }
        /**
         * Get total tax.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_total_tax($context = 'view')
        {
        }
        /**
         * Get taxes.
         *
         * @param  string $context View or edit context.
         * @return array
         */
        public function get_taxes($context = 'view')
        {
        }
        /**
         * Get tax class.
         *
         * @param  string $context View or edit context.
         * @return string
         */
        public function get_tax_class($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Array Access Methods
        |--------------------------------------------------------------------------
        |
        | For backwards compatibility with legacy arrays.
        |
        */
        /**
         * Offset get: for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Key.
         * @return mixed
         */
        public function offsetGet($offset)
        {
        }
        /**
         * Offset set: for ArrayAccess/Backwards compatibility.
         *
         * @deprecated Add deprecation notices in future release.
         * @param string $offset Key.
         * @param mixed  $value Value to set.
         */
        public function offsetSet($offset, $value)
        {
        }
        /**
         * Offset exists: for ArrayAccess.
         *
         * @param string $offset Key.
         * @return bool
         */
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Main WooCommerce Class.
     *
     * @class WooCommerce
     */
    final class WooCommerce
    {
        /**
         * WooCommerce version.
         *
         * @var string
         */
        public $version = '3.7.0';
        /**
         * The single instance of the class.
         *
         * @var WooCommerce
         * @since 2.1
         */
        protected static $_instance = \null;
        /**
         * Session instance.
         *
         * @var WC_Session|WC_Session_Handler
         */
        public $session = \null;
        /**
         * Query instance.
         *
         * @var WC_Query
         */
        public $query = \null;
        /**
         * Product factory instance.
         *
         * @var WC_Product_Factory
         */
        public $product_factory = \null;
        /**
         * Countries instance.
         *
         * @var WC_Countries
         */
        public $countries = \null;
        /**
         * Integrations instance.
         *
         * @var WC_Integrations
         */
        public $integrations = \null;
        /**
         * Cart instance.
         *
         * @var WC_Cart
         */
        public $cart = \null;
        /**
         * Customer instance.
         *
         * @var WC_Customer
         */
        public $customer = \null;
        /**
         * Order factory instance.
         *
         * @var WC_Order_Factory
         */
        public $order_factory = \null;
        /**
         * Structured data instance.
         *
         * @var WC_Structured_Data
         */
        public $structured_data = \null;
        /**
         * Array of deprecated hook handlers.
         *
         * @var array of WC_Deprecated_Hooks
         */
        public $deprecated_hook_handlers = array();
        /**
         * Main WooCommerce Instance.
         *
         * Ensures only one instance of WooCommerce is loaded or can be loaded.
         *
         * @since 2.1
         * @static
         * @see WC()
         * @return WooCommerce - Main instance.
         */
        public static function instance()
        {
        }
        /**
         * Cloning is forbidden.
         *
         * @since 2.1
         */
        public function __clone()
        {
        }
        /**
         * Unserializing instances of this class is forbidden.
         *
         * @since 2.1
         */
        public function __wakeup()
        {
        }
        /**
         * Auto-load in-accessible properties on demand.
         *
         * @param mixed $key Key name.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * WooCommerce Constructor.
         */
        public function __construct()
        {
        }
        /**
         * When WP has loaded all plugins, trigger the `woocommerce_loaded` hook.
         *
         * This ensures `woocommerce_loaded` is called only after all other plugins
         * are loaded, to avoid issues caused by plugin directory naming changing
         * the load order. See #21524 for details.
         *
         * @since 3.6.0
         */
        public function on_plugins_loaded()
        {
        }
        /**
         * Hook into actions and filters.
         *
         * @since 2.3
         */
        private function init_hooks()
        {
        }
        /**
         * Ensures fatal errors are logged so they can be picked up in the status report.
         *
         * @since 3.2.0
         */
        public function log_errors()
        {
        }
        /**
         * Define WC Constants.
         */
        private function define_constants()
        {
        }
        /**
         * Register custom tables within $wpdb object.
         */
        private function define_tables()
        {
        }
        /**
         * Define constant if not already set.
         *
         * @param string      $name  Constant name.
         * @param string|bool $value Constant value.
         */
        private function define($name, $value)
        {
        }
        /**
         * Returns true if the request is a non-legacy REST API request.
         *
         * Legacy REST requests should still run some extra code for backwards compatibility.
         *
         * @todo: replace this function once core WP function is available: https://core.trac.wordpress.org/ticket/42061.
         *
         * @return bool
         */
        public function is_rest_api_request()
        {
        }
        /**
         * What type of request is this?
         *
         * @param  string $type admin, ajax, cron or frontend.
         * @return bool
         */
        private function is_request($type)
        {
        }
        /**
         * Include required core files used in admin and on the frontend.
         */
        public function includes()
        {
        }
        /**
         * Include classes for theme support.
         *
         * @since 3.3.0
         */
        private function theme_support_includes()
        {
        }
        /**
         * Include required frontend files.
         */
        public function frontend_includes()
        {
        }
        /**
         * Function used to Init WooCommerce Template Functions - This makes them pluggable by plugins and themes.
         */
        public function include_template_functions()
        {
        }
        /**
         * Init WooCommerce when WordPress Initialises.
         */
        public function init()
        {
        }
        /**
         * Load Localisation files.
         *
         * Note: the first-loaded translation file overrides any following ones if the same translation is present.
         *
         * Locales found in:
         *      - WP_LANG_DIR/woocommerce/woocommerce-LOCALE.mo
         *      - WP_LANG_DIR/plugins/woocommerce-LOCALE.mo
         */
        public function load_plugin_textdomain()
        {
        }
        /**
         * Ensure theme and server variable compatibility and setup image sizes.
         */
        public function setup_environment()
        {
        }
        /**
         * Ensure post thumbnail support is turned on.
         */
        private function add_thumbnail_support()
        {
        }
        /**
         * Add WC Image sizes to WP.
         *
         * As of 3.3, image sizes can be registered via themes using add_theme_support for woocommerce
         * and defining an array of args. If these are not defined, we will use defaults. This is
         * handled in wc_get_image_size function.
         *
         * 3.3 sizes:
         *
         * woocommerce_thumbnail - Used in product listings. We assume these work for a 3 column grid layout.
         * woocommerce_single - Used on single product pages for the main image.
         *
         * @since 2.3
         */
        public function add_image_sizes()
        {
        }
        /**
         * Get the plugin url.
         *
         * @return string
         */
        public function plugin_url()
        {
        }
        /**
         * Get the plugin path.
         *
         * @return string
         */
        public function plugin_path()
        {
        }
        /**
         * Get the template path.
         *
         * @return string
         */
        public function template_path()
        {
        }
        /**
         * Get Ajax URL.
         *
         * @return string
         */
        public function ajax_url()
        {
        }
        /**
         * Return the WC API URL for a given request.
         *
         * @param string    $request Requested endpoint.
         * @param bool|null $ssl     If should use SSL, null if should auto detect. Default: null.
         * @return string
         */
        public function api_request_url($request, $ssl = \null)
        {
        }
        /**
         * Load & enqueue active webhooks.
         *
         * @since 2.2
         */
        private function load_webhooks()
        {
        }
        /**
         * Initialize the customer and cart objects and setup customer saving on shutdown.
         *
         * @since 3.6.4
         * @return void
         */
        public function initialize_cart()
        {
        }
        /**
         * Initialize the session class.
         *
         * @since 3.6.4
         * @return void
         */
        public function initialize_session()
        {
        }
        /**
         * Set tablenames inside WPDB object.
         */
        public function wpdb_table_fix()
        {
        }
        /**
         * Ran when any plugin is activated.
         *
         * @since 3.6.0
         * @param string $filename The filename of the activated plugin.
         */
        public function activated_plugin($filename)
        {
        }
        /**
         * Ran when any plugin is deactivated.
         *
         * @since 3.6.0
         * @param string $filename The filename of the deactivated plugin.
         */
        public function deactivated_plugin($filename)
        {
        }
        /**
         * Get queue instance.
         *
         * @return WC_Queue_Interface
         */
        public function queue()
        {
        }
        /**
         * Get Checkout Class.
         *
         * @return WC_Checkout
         */
        public function checkout()
        {
        }
        /**
         * Get gateways class.
         *
         * @return WC_Payment_Gateways
         */
        public function payment_gateways()
        {
        }
        /**
         * Get shipping class.
         *
         * @return WC_Shipping
         */
        public function shipping()
        {
        }
        /**
         * Email Class.
         *
         * @return WC_Emails
         */
        public function mailer()
        {
        }
        /**
         * Check if plugin assets are built and minified
         *
         * @return bool
         */
        public function build_dependencies_satisfied()
        {
        }
        /**
         * Output a admin notice when build dependencies not met.
         *
         * @return void
         */
        public function build_dependencies_notice()
        {
        }
    }
    /**
     * Main Command for WooCommere CLI.
     *
     * Since a lot of WC operations can be handled via the REST API, we base our CLI
     * off of Restful to generate commands for each WooCommerce REST API endpoint
     * so most of the logic is shared.
     *
     * Forked from wp-cli/restful (by Daniel Bachhuber, released under the MIT license https://opensource.org/licenses/MIT).
     * https://github.com/wp-cli/restful
     *
     * @version 3.0.0
     * @package WooCommerce
     */
    class WC_CLI_REST_Command
    {
        /**
         * Endpoints that have a parent ID.
         * Ex: Product reviews, which has a product ID and a review ID.
         *
         * @var array
         */
        protected $routes_with_parent_id = array('customer_download', 'product_review', 'order_note', 'shop_order_refund');
        /**
         * Name of command/endpoint object.
         *
         * @var string
         */
        private $name;
        /**
         * Endpoint route.
         *
         * @var string
         */
        private $route;
        /**
         * Main resource ID.
         *
         * @var int
         */
        private $resource_identifier;
        /**
         * Schema for command.
         *
         * @var array
         */
        private $schema;
        /**
         * List of supported IDs and their description (name => desc).
         *
         * @var array
         */
        private $supported_ids = array();
        /**
         * Sets up REST Command.
         *
         * @param string $name   Name of endpoint object (comes from schema).
         * @param string $route  Path to route of this endpoint.
         * @param array  $schema Schema object.
         */
        public function __construct($name, $route, $schema)
        {
        }
        /**
         * Passes supported ID arguments (things like product_id, order_id, etc) that we should look for in addition to id.
         *
         * @param array $supported_ids List of supported IDs.
         */
        public function set_supported_ids($supported_ids = array())
        {
        }
        /**
         * Returns an ID of supported ID arguments (things like product_id, order_id, etc) that we should look for in addition to id.
         *
         * @return array
         */
        public function get_supported_ids()
        {
        }
        /**
         * Create a new item.
         *
         * @subcommand create
         *
         * @param array $args WP-CLI positional arguments.
         * @param array $assoc_args WP-CLI associative arguments.
         */
        public function create_item($args, $assoc_args)
        {
        }
        /**
         * Delete an existing item.
         *
         * @subcommand delete
         *
         * @param array $args WP-CLI positional arguments.
         * @param array $assoc_args WP-CLI associative arguments.
         */
        public function delete_item($args, $assoc_args)
        {
        }
        /**
         * Get a single item.
         *
         * @subcommand get
         *
         * @param array $args WP-CLI positional arguments.
         * @param array $assoc_args WP-CLI associative arguments.
         */
        public function get_item($args, $assoc_args)
        {
        }
        /**
         * List all items.
         *
         * @subcommand list
         *
         * @param array $args WP-CLI positional arguments.
         * @param array $assoc_args WP-CLI associative arguments.
         */
        public function list_items($args, $assoc_args)
        {
        }
        /**
         * Update an existing item.
         *
         * @subcommand update
         *
         * @param array $args WP-CLI positional arguments.
         * @param array $assoc_args WP-CLI associative arguments.
         */
        public function update_item($args, $assoc_args)
        {
        }
        /**
         * Do a REST Request
         *
         * @param string $method Request method. Examples: 'POST', 'PUT', 'DELETE' or 'GET'.
         * @param string $route Resource route.
         * @param array  $assoc_args Associative arguments passed to the originating WP-CLI command.
         *
         * @return array
         */
        private function do_request($method, $route, $assoc_args)
        {
        }
        /**
         * Get Formatter object based on supplied parameters.
         *
         * @param array $assoc_args Parameters passed to command. Determines formatting.
         * @return \WP_CLI\Formatter
         */
        protected function get_formatter(&$assoc_args)
        {
        }
        /**
         * Get a list of fields present in a given context
         *
         * @param string $context Scope under which the request is made. Determines fields present in response.
         * @return array
         */
        private function get_context_fields($context)
        {
        }
        /**
         * Get the route for this resource
         *
         * @param  array $args Positional arguments passed to the originating WP-CLI command.
         * @return string
         */
        private function get_filled_route($args = array())
        {
        }
        /**
         * Reduce an item to specific fields.
         *
         * @param  array $item Item to reduce.
         * @param  array $fields Fields to keep.
         * @return array
         */
        private static function limit_item_to_fields($item, $fields)
        {
        }
        /**
         * JSON can be passed in some more complicated objects, like the payment gateway settings array.
         * This function decodes the json (if present) and tries to get it's value.
         *
         * @param array $arr Array that will be scanned for JSON encoded values.
         *
         * @return array
         */
        protected function decode_json($arr)
        {
        }
    }
    /**
     * Hooks up our system status tools to the CLI.
     *
     * Forked from wp-cli/restful (by Daniel Bachhuber, released under the MIT license https://opensource.org/licenses/MIT).
     * https://github.com/wp-cli/restful
     *
     * @version 3.0.0
     * @package WooCommerce
     */
    class WC_CLI_Tool_Command
    {
        /**
         * Registers just a 'list' and 'run' command to the WC CLI
         * since we only want to enable certain actions on the system status
         * tools endpoints.
         */
        public static function register_commands()
        {
        }
    }
    /**
     * Allows updates via CLI.
     *
     * @version 3.0.0
     * @package WooCommerce
     */
    class WC_CLI_Update_Command
    {
        /**
         * Registers the update command.
         */
        public static function register_commands()
        {
        }
        /**
         * Runs all pending WooCommerce database updates.
         */
        public static function update()
        {
        }
    }
    /**
     * WC API to WC CLI Bridge.
     *
     * Hooks into the REST API, figures out which endpoints come from WC,
     * and registers them as CLI commands.
     *
     * Forked from wp-cli/restful (by Daniel Bachhuber, released under the MIT license https://opensource.org/licenses/MIT).
     * https://github.com/wp-cli/restful
     *
     * @version 3.0.0
     * @package WooCommerce
     */
    class WC_CLI_Runner
    {
        /**
         * Endpoints to disable (meaning they will not be available as CLI commands).
         * Some of these can either be done via WP already, or are offered with
         * some other changes (like tools).
         *
         * @var array
         */
        private static $disabled_endpoints = array('settings', 'settings/(?P<group_id>[\\w-]+)', 'settings/(?P<group_id>[\\w-]+)/batch', 'settings/(?P<group_id>[\\w-]+)/(?P<id>[\\w-]+)', 'system_status', 'system_status/tools', 'system_status/tools/(?P<id>[\\w-]+)', 'reports', 'reports/sales', 'reports/top_sellers');
        /**
         * The version of the REST API we should target to
         * generate commands.
         *
         * @var string
         */
        private static $target_rest_version = 'v2';
        /**
         * Register's all endpoints as commands once WP and WC have all loaded.
         */
        public static function after_wp_load()
        {
        }
        /**
         * Generates command information and tells WP CLI about all
         * commands available from a route.
         *
         * @param string $rest_command WC-API command.
         * @param string $route Path to route endpoint.
         * @param array  $route_data Command data.
         * @param array  $command_args WP-CLI command arguments.
         */
        private static function register_route_commands($rest_command, $route, $route_data, $command_args = array())
        {
        }
    }
    /**
     * WooCommerce Shortcodes class.
     */
    class WC_Shortcodes
    {
        /**
         * Init shortcodes.
         */
        public static function init()
        {
        }
        /**
         * Shortcode Wrapper.
         *
         * @param string[] $function Callback function.
         * @param array    $atts     Attributes. Default to empty array.
         * @param array    $wrapper  Customer wrapper data.
         *
         * @return string
         */
        public static function shortcode_wrapper($function, $atts = array(), $wrapper = array('class' => 'woocommerce', 'before' => \null, 'after' => \null))
        {
        }
        /**
         * Cart page shortcode.
         *
         * @return string
         */
        public static function cart()
        {
        }
        /**
         * Checkout page shortcode.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function checkout($atts)
        {
        }
        /**
         * Order tracking page shortcode.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function order_tracking($atts)
        {
        }
        /**
         * My account page shortcode.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function my_account($atts)
        {
        }
        /**
         * List products in a category shortcode.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product_category($atts)
        {
        }
        /**
         * List all (or limited) product categories.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product_categories($atts)
        {
        }
        /**
         * Recent Products shortcode.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function recent_products($atts)
        {
        }
        /**
         * List multiple products shortcode.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function products($atts)
        {
        }
        /**
         * Display a single product.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product($atts)
        {
        }
        /**
         * Display a single product price + cart button.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product_add_to_cart($atts)
        {
        }
        /**
         * Get the add to cart URL for a product.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product_add_to_cart_url($atts)
        {
        }
        /**
         * List all products on sale.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function sale_products($atts)
        {
        }
        /**
         * List best selling products on sale.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function best_selling_products($atts)
        {
        }
        /**
         * List top rated products on sale.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function top_rated_products($atts)
        {
        }
        /**
         * Output featured products.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function featured_products($atts)
        {
        }
        /**
         * Show a single product page.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product_page($atts)
        {
        }
        /**
         * Show messages.
         *
         * @return string
         */
        public static function shop_messages()
        {
        }
        /**
         * Order by rating.
         *
         * @deprecated 3.2.0 Use WC_Shortcode_Products::order_by_rating_post_clauses().
         * @param      array $args Query args.
         * @return     array
         */
        public static function order_by_rating_post_clauses($args)
        {
        }
        /**
         * List products with an attribute shortcode.
         * Example [product_attribute attribute="color" filter="black"].
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function product_attribute($atts)
        {
        }
        /**
         * List related products.
         *
         * @param array $atts Attributes.
         * @return string
         */
        public static function related_products($atts)
        {
        }
    }
    /**
     * Product query class.
     */
    class WC_Product_Query extends \WC_Object_Query
    {
        /**
         * Valid query vars for products.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get products matching the current query vars.
         *
         * @return array|object of WC_Product objects
         */
        public function get_products()
        {
        }
    }
}
namespace MaxMind\Db\Reader {
    class Decoder
    {
        private $fileStream;
        private $pointerBase;
        // This is only used for unit testing
        private $pointerTestHack;
        private $switchByteOrder;
        private $types = [0 => 'extended', 1 => 'pointer', 2 => 'utf8_string', 3 => 'double', 4 => 'bytes', 5 => 'uint16', 6 => 'uint32', 7 => 'map', 8 => 'int32', 9 => 'uint64', 10 => 'uint128', 11 => 'array', 12 => 'container', 13 => 'end_marker', 14 => 'boolean', 15 => 'float'];
        public function __construct($fileStream, $pointerBase = 0, $pointerTestHack = false)
        {
        }
        public function decode($offset)
        {
        }
        private function decodeByType($type, $offset, $size)
        {
        }
        private function verifySize($expected, $actual)
        {
        }
        private function decodeArray($size, $offset)
        {
        }
        private function decodeBoolean($size)
        {
        }
        private function decodeDouble($bits)
        {
        }
        private function decodeFloat($bits)
        {
        }
        private function decodeInt32($bytes)
        {
        }
        private function decodeMap($size, $offset)
        {
        }
        private $pointerValueOffset = [1 => 0, 2 => 2048, 3 => 526336, 4 => 0];
        private function decodePointer($ctrlByte, $offset)
        {
        }
        private function decodeUint($bytes)
        {
        }
        private function decodeBigUint($bytes, $byteLength)
        {
        }
        private function decodeString($bytes)
        {
        }
        private function sizeFromCtrlByte($ctrlByte, $offset)
        {
        }
        private function zeroPadLeft($content, $desiredLength)
        {
        }
        private function maybeSwitchByteOrder($bytes)
        {
        }
        private function isPlatformLittleEndian()
        {
        }
    }
    /**
     * This class should be thrown when unexpected data is found in the database.
     */
    class InvalidDatabaseException extends \Exception
    {
    }
    /**
     * This class provides the metadata for the MaxMind DB file.
     *
     * @property int nodeCount This is an unsigned 32-bit integer indicating
     * the number of nodes in the search tree.
     * @property int recordSize This is an unsigned 16-bit integer. It
     * indicates the number of bits in a record in the search tree. Note that each
     * node consists of two records.
     * @property int ipVersion This is an unsigned 16-bit integer which is
     * always 4 or 6. It indicates whether the database contains IPv4 or IPv6
     * address data.
     * @property string databaseType This is a string that indicates the structure
     * of each data record associated with an IP address. The actual definition of
     * these structures is left up to the database creator.
     * @property array languages An array of strings, each of which is a language
     * code. A given record may contain data items that have been localized to
     * some or all of these languages. This may be undefined.
     * @property int binaryFormatMajorVersion This is an unsigned 16-bit
     * integer indicating the major version number for the database's binary
     * format.
     * @property int binaryFormatMinorVersion This is an unsigned 16-bit
     * integer indicating the minor version number for the database's binary format.
     * @property int buildEpoch This is an unsigned 64-bit integer that
     * contains the database build timestamp as a Unix epoch value.
     * @property array description This key will always point to a map
     * (associative array). The keys of that map will be language codes, and the
     * values will be a description in that language as a UTF-8 string. May be
     * undefined for some databases.
     */
    class Metadata
    {
        private $binaryFormatMajorVersion;
        private $binaryFormatMinorVersion;
        private $buildEpoch;
        private $databaseType;
        private $description;
        private $ipVersion;
        private $languages;
        private $nodeByteSize;
        private $nodeCount;
        private $recordSize;
        private $searchTreeSize;
        public function __construct($metadata)
        {
        }
        public function __get($var)
        {
        }
    }
    class Util
    {
        public static function read($stream, $offset, $numberOfBytes)
        {
        }
    }
}
namespace MaxMind\Db {
    /**
     * Instances of this class provide a reader for the MaxMind DB format. IP
     * addresses can be looked up using the <code>get</code> method.
     */
    class Reader
    {
        private static $DATA_SECTION_SEPARATOR_SIZE = 16;
        private static $METADATA_START_MARKER = "MaxMind.com";
        private static $METADATA_START_MARKER_LENGTH = 14;
        private static $METADATA_MAX_SIZE = 131072;
        // 128 * 1024 = 128KB
        private $decoder;
        private $fileHandle;
        private $fileSize;
        private $ipV4Start;
        private $metadata;
        /**
         * Constructs a Reader for the MaxMind DB format. The file passed to it must
         * be a valid MaxMind DB file such as a GeoIp2 database file.
         *
         * @param string $database
         *                         the MaxMind DB file to use
         *
         * @throws \InvalidArgumentException                   for invalid database path or unknown arguments
         * @throws \MaxMind\Db\Reader\InvalidDatabaseException
         *                                                     if the database is invalid or there is an error reading
         *                                                     from it
         */
        public function __construct($database)
        {
        }
        /**
         * Looks up the <code>address</code> in the MaxMind DB.
         *
         * @param string $ipAddress
         *                          the IP address to look up
         *
         * @throws \BadMethodCallException   if this method is called on a closed database
         * @throws \InvalidArgumentException if something other than a single IP address is passed to the method
         * @throws InvalidDatabaseException
         *                                   if the database is invalid or there is an error reading
         *                                   from it
         *
         * @return array the record for the IP address
         */
        public function get($ipAddress)
        {
        }
        private function findAddressInTree($ipAddress)
        {
        }
        private function startNode($length)
        {
        }
        private function ipV4StartNode()
        {
        }
        private function readNode($nodeNumber, $index)
        {
        }
        private function resolveDataPointer($pointer)
        {
        }
        /*
         * This is an extremely naive but reasonably readable implementation. There
         * are much faster algorithms (e.g., Boyer-Moore) for this if speed is ever
         * an issue, but I suspect it won't be.
         */
        private function findMetadataStart($filename)
        {
        }
        /**
         * @throws \InvalidArgumentException if arguments are passed to the method
         * @throws \BadMethodCallException   if the database has been closed
         *
         * @return Metadata object for the database
         */
        public function metadata()
        {
        }
        /**
         * Closes the MaxMind DB and returns resources to the system.
         *
         * @throws \Exception
         *                    if an I/O error occurs
         */
        public function close()
        {
        }
    }
}
namespace {
    /**
     * Class WC_Eval_Math. Supports basic math only (removed eval function).
     *
     * Based on EvalMath by Miles Kaufman Copyright (C) 2005 Miles Kaufmann http://www.twmagic.com/.
     */
    class WC_Eval_Math
    {
        /**
         * Last error.
         *
         * @var string
         */
        public static $last_error = \null;
        /**
         * Variables (and constants).
         *
         * @var array
         */
        public static $v = array('e' => 2.71, 'pi' => 3.14);
        /**
         * User-defined functions.
         *
         * @var array
         */
        public static $f = array();
        /**
         * Constants.
         *
         * @var array
         */
        public static $vb = array('e', 'pi');
        /**
         * Built-in functions.
         *
         * @var array
         */
        public static $fb = array();
        /**
         * Evaluate maths string.
         *
         * @param string  $expr
         * @return mixed
         */
        public static function evaluate($expr)
        {
        }
        /**
         * Convert infix to postfix notation.
         *
         * @param  string $expr
         *
         * @return array|string
         */
        private static function nfx($expr)
        {
        }
        /**
         * Evaluate postfix notation.
         *
         * @param  mixed $tokens
         * @param  array $vars
         *
         * @return mixed
         */
        private static function pfx($tokens, $vars = array())
        {
        }
        /**
         * Trigger an error, but nicely, if need be.
         *
         * @param  string $msg
         *
         * @return bool
         */
        private static function trigger($msg)
        {
        }
        /**
         * Prints the file name, function name, and
         * line number which called your function
         * (not this function, then one that  called
         * it to begin with)
         */
        private static function debugPrintCallingFunction()
        {
        }
    }
    /**
     * Class WC_Eval_Math_Stack.
     */
    class WC_Eval_Math_Stack
    {
        /**
         * Stack array.
         *
         * @var array
         */
        public $stack = array();
        /**
         * Stack counter.
         *
         * @var integer
         */
        public $count = 0;
        /**
         * Push value into stack.
         *
         * @param  mixed $val
         */
        public function push($val)
        {
        }
        /**
         * Pop value from stack.
         *
         * @return mixed
         */
        public function pop()
        {
        }
        /**
         * Get last value from stack.
         *
         * @param  int $n
         *
         * @return mixed
         */
        public function last($n = 1)
        {
        }
    }
}
namespace Pelago {
    /**
     * This class provides functions for converting CSS styles into inline style attributes in your HTML code.
     *
     * For more information, please see the README.md file.
     *
     * @author Cameron Brooks
     * @author Jaime Prado
     * @author Oliver Klee <github@oliverklee.de>
     * @author Roman Ožana <ozana@omdesign.cz>
     * @author Sander Kruger <s.kruger@invessel.com>
     * @author Zoli Szabó <zoli.szabo+github@gmail.com>
     */
    class Emogrifier
    {
        /**
         * @var int
         */
        const CACHE_KEY_CSS = 0;
        /**
         * @var int
         */
        const CACHE_KEY_SELECTOR = 1;
        /**
         * @var int
         */
        const CACHE_KEY_XPATH = 2;
        /**
         * @var int
         */
        const CACHE_KEY_CSS_DECLARATIONS_BLOCK = 3;
        /**
         * @var int
         */
        const CACHE_KEY_COMBINED_STYLES = 4;
        /**
         * for calculating nth-of-type and nth-child selectors
         *
         * @var int
         */
        const INDEX = 0;
        /**
         * for calculating nth-of-type and nth-child selectors
         *
         * @var int
         */
        const MULTIPLIER = 1;
        /**
         * @var string
         */
        const ID_ATTRIBUTE_MATCHER = '/(\\w+)?\\#([\\w\\-]+)/';
        /**
         * @var string
         */
        const CLASS_ATTRIBUTE_MATCHER = '/(\\w+|[\\*\\]])?((\\.[\\w\\-]+)+)/';
        /**
         * Regular expression component matching a static pseudo class in a selector, without the preceding ":",
         * for which the applicable elements can be determined (by converting the selector to an XPath expression).
         * (Contains alternation without a group and is intended to be placed within a capturing, non-capturing or lookahead
         * group, as appropriate for the usage context.)
         *
         * @var string
         */
        const PSEUDO_CLASS_MATCHER = '\\S+\\-(?:child|type\\()|not\\([[:ascii:]]*\\)';
        /**
         * @var string
         */
        const CONTENT_TYPE_META_TAG = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
        /**
         * @var string
         */
        const DEFAULT_DOCUMENT_TYPE = '<!DOCTYPE html>';
        /**
         * @var string Regular expression part to match tag names that PHP's DOMDocument implementation is not aware are
         *      self-closing. These are mostly HTML5 elements, but for completeness <command> (obsolete) and <keygen>
         *      (deprecated) are also included.
         *
         * @see https://bugs.php.net/bug.php?id=73175
         */
        const PHP_UNRECOGNIZED_VOID_TAGNAME_MATCHER = '(?:command|embed|keygen|source|track|wbr)';
        /**
         * @var \DOMDocument
         */
        protected $domDocument = null;
        /**
         * @var string
         */
        private $css = '';
        /**
         * @var bool[]
         */
        private $excludedSelectors = [];
        /**
         * @var string[]
         */
        private $unprocessableHtmlTags = ['wbr'];
        /**
         * @var bool[]
         */
        private $allowedMediaTypes = ['all' => true, 'screen' => true, 'print' => true];
        /**
         * @var mixed[]
         */
        private $caches = [self::CACHE_KEY_CSS => [], self::CACHE_KEY_SELECTOR => [], self::CACHE_KEY_XPATH => [], self::CACHE_KEY_CSS_DECLARATIONS_BLOCK => [], self::CACHE_KEY_COMBINED_STYLES => []];
        /**
         * the visited nodes with the XPath paths as array keys
         *
         * @var \DOMElement[]
         */
        private $visitedNodes = [];
        /**
         * the styles to apply to the nodes with the XPath paths as array keys for the outer array
         * and the attribute names/values as key/value pairs for the inner array
         *
         * @var string[][]
         */
        private $styleAttributesForNodes = [];
        /**
         * Determines whether the "style" attributes of tags in the the HTML passed to this class should be preserved.
         * If set to false, the value of the style attributes will be discarded.
         *
         * @var bool
         */
        private $isInlineStyleAttributesParsingEnabled = true;
        /**
         * Determines whether the <style> blocks in the HTML passed to this class should be parsed.
         *
         * If set to true, the <style> blocks will be removed from the HTML and their contents will be applied to the HTML
         * via inline styles.
         *
         * If set to false, the <style> blocks will be left as they are in the HTML.
         *
         * @var bool
         */
        private $isStyleBlocksParsingEnabled = true;
        /**
         * Determines whether elements with the `display: none` property are
         * removed from the DOM.
         *
         * @var bool
         */
        private $shouldRemoveInvisibleNodes = true;
        /**
         * For calculating selector precedence order.
         * Keys are a regular expression part to match before a CSS name.
         * Values are a multiplier factor per match to weight specificity.
         *
         * @var int[]
         */
        private $selectorPrecedenceMatchers = [
            // IDs: worth 10000
            '\\#' => 10000,
            // classes, attributes, pseudo-classes (not pseudo-elements) except `:not`: worth 100
            '(?:\\.|\\[|(?<!:):(?!not\\())' => 100,
            // elements (not attribute values or `:not`), pseudo-elements: worth 1
            '(?:(?<![="\':\\w\\-])|::)' => 1,
        ];
        /**
         * @var string[]
         */
        private $xPathRules = [
            // attribute presence
            '/^\\[(\\w+|\\w+\\=[\'"]?\\w+[\'"]?)\\]/' => '*[@\\1]',
            // type and attribute exact value
            '/(\\w)\\[(\\w+)\\=[\'"]?([\\w\\s]+)[\'"]?\\]/' => '\\1[@\\2="\\3"]',
            // type and attribute value with ~ (one word within a whitespace-separated list of words)
            '/([\\w\\*]+)\\[(\\w+)[\\s]*\\~\\=[\\s]*[\'"]?([\\w\\-_\\/]+)[\'"]?\\]/' => '\\1[contains(concat(" ", @\\2, " "), concat(" ", "\\3", " "))]',
            // type and attribute value with | (either exact value match or prefix followed by a hyphen)
            '/([\\w\\*]+)\\[(\\w+)[\\s]*\\|\\=[\\s]*[\'"]?([\\w\\-_\\s\\/]+)[\'"]?\\]/' => '\\1[@\\2="\\3" or starts-with(@\\2, concat("\\3", "-"))]',
            // type and attribute value with ^ (prefix match)
            '/([\\w\\*]+)\\[(\\w+)[\\s]*\\^\\=[\\s]*[\'"]?([\\w\\-_\\/]+)[\'"]?\\]/' => '\\1[starts-with(@\\2, "\\3")]',
            // type and attribute value with * (substring match)
            '/([\\w\\*]+)\\[(\\w+)[\\s]*\\*\\=[\\s]*[\'"]?([\\w\\-_\\s\\/:;]+)[\'"]?\\]/' => '\\1[contains(@\\2, "\\3")]',
            // adjacent sibling
            '/\\s*\\+\\s*/' => '/following-sibling::*[1]/self::',
            // child
            '/\\s*>\\s*/' => '/',
            // descendant (don't match spaces within already translated XPath predicates)
            '/\\s+(?![^\\[\\]]*+\\])/' => '//',
            // type and :first-child
            '/([^\\/]+):first-child/i' => '*[1]/self::\\1',
            // type and :last-child
            '/([^\\/]+):last-child/i' => '*[last()]/self::\\1',
            // The following matcher will break things if it is placed before the adjacent matcher.
            // So one of the matchers matches either too much or not enough.
            // type and attribute value with $ (suffix match)
            '/([\\w\\*]+)\\[(\\w+)[\\s]*\\$\\=[\\s]*[\'"]?([\\w\\-_\\s\\/]+)[\'"]?\\]/' => '\\1[substring(@\\2, string-length(@\\2) - string-length("\\3") + 1) = "\\3"]',
        ];
        /**
         * Determines whether CSS styles that have an equivalent HTML attribute
         * should be mapped and attached to those elements.
         *
         * @var bool
         */
        private $shouldMapCssToHtml = false;
        /**
         * This multi-level array contains simple mappings of CSS properties to
         * HTML attributes. If a mapping only applies to certain HTML nodes or
         * only for certain values, the mapping is an object with a whitelist
         * of nodes and values.
         *
         * @var mixed[][]
         */
        private $cssToHtmlMap = ['background-color' => ['attribute' => 'bgcolor'], 'text-align' => ['attribute' => 'align', 'nodes' => ['p', 'div', 'td'], 'values' => ['left', 'right', 'center', 'justify']], 'float' => ['attribute' => 'align', 'nodes' => ['table', 'img'], 'values' => ['left', 'right']], 'border-spacing' => ['attribute' => 'cellspacing', 'nodes' => ['table']]];
        /**
         * Emogrifier will throw Exceptions when it encounters an error instead of silently ignoring them.
         *
         * @var bool
         */
        private $debug = false;
        /**
         * @param string $unprocessedHtml the HTML to process, must be UTF-8-encoded
         * @param string $css the CSS to merge, must be UTF-8-encoded
         */
        public function __construct($unprocessedHtml = '', $css = '')
        {
        }
        /**
         * Sets the HTML to process.
         *
         * @param string $html the HTML to process, must be UTF-encoded, must not be empty
         *
         * @return void
         *
         * @throws \InvalidArgumentException if $unprocessedHtml is anything other than a non-empty string
         */
        public function setHtml($html)
        {
        }
        /**
         * Provides access to the internal DOMDocument representation of the HTML in its current state.
         *
         * @return \DOMDocument
         */
        public function getDomDocument()
        {
        }
        /**
         * Sets the CSS to merge with the HTML.
         *
         * @param string $css the CSS to merge, must be UTF-8-encoded
         *
         * @return void
         */
        public function setCss($css)
        {
        }
        /**
         * Renders the normalized and processed HTML.
         *
         * @return string
         */
        protected function render()
        {
        }
        /**
         * Renders the content of the BODY element of the normalized and processed HTML.
         *
         * @return string
         */
        protected function renderBodyContent()
        {
        }
        /**
         * Eliminates any invalid closing tags for void elements from the given HTML.
         *
         * @param string $html
         *
         * @return string
         */
        private function removeSelfClosingTagsClosingTags($html)
        {
        }
        /**
         * Returns the BODY element.
         *
         * This method assumes that there always is a BODY element.
         *
         * @return \DOMElement
         */
        private function getBodyElement()
        {
        }
        /**
         * Returns the HEAD element.
         *
         * This method assumes that there always is a HEAD element.
         *
         * @return \DOMElement
         */
        private function getHeadElement()
        {
        }
        /**
         * Applies $this->css to the given HTML and returns the HTML with the CSS
         * applied.
         *
         * This method places the CSS inline.
         *
         * @return string
         *
         * @throws \BadMethodCallException
         */
        public function emogrify()
        {
        }
        /**
         * Applies $this->css to the given HTML and returns only the HTML content
         * within the <body> tag.
         *
         * This method places the CSS inline.
         *
         * @return string
         *
         * @throws \BadMethodCallException
         */
        public function emogrifyBodyContent()
        {
        }
        /**
         * Checks that some HTML has been set, and throws an exception otherwise.
         *
         * @return void
         *
         * @throws \BadMethodCallException
         */
        private function assertExistenceOfHtml()
        {
        }
        /**
         * Creates a DOM document from the given HTML and stores it in $this->domDocument.
         *
         * The DOM document will always have a BODY element.
         *
         * @param string $html
         *
         * @return void
         */
        private function createUnifiedDomDocument($html)
        {
        }
        /**
         * Creates a DOMDocument instance from the given HTML and stores it in $this->domDocument.
         *
         * @param string $html
         *
         * @return void
         */
        private function createRawDomDocument($html)
        {
        }
        /**
         * Returns the HTML with added document type, Content-Type meta tag, and self-closing slashes, if needed,
         * ensuring that the HTML will be good for creating a DOM document from it.
         *
         * @param string $html
         *
         * @return string the unified HTML
         */
        private function prepareHtmlForDomConversion($html)
        {
        }
        /**
         * Applies $this->css to $this->domDocument.
         *
         * This method places the CSS inline.
         *
         * @return void
         *
         * @throws \InvalidArgumentException
         */
        protected function process()
        {
        }
        /**
         * Applies some optional post-processing to the HTML in the DOM document.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function postProcess(\DOMXPath $xPath)
        {
        }
        /**
         * Searches for all nodes with a style attribute, transforms the CSS found
         * to HTML attributes and adds those attributes to each node.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function mapAllInlineStylesToHtmlAttributes(\DOMXPath $xPath)
        {
        }
        /**
         * Searches for all nodes with a style attribute and removes the "!important" annotations out of
         * the inline style declarations, eventually by rearranging declarations.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function removeImportantAnnotationFromAllInlineStyles(\DOMXPath $xPath)
        {
        }
        /**
         * Removes the "!important" annotations out of the inline style declarations,
         * eventually by rearranging declarations.
         * Rearranging needed when !important shorthand properties are followed by some of their
         * not !important expanded-version properties.
         * For example "font: 12px serif !important; font-size: 13px;" must be reordered
         * to "font-size: 13px; font: 12px serif;" in order to remain correct.
         *
         * @param \DOMElement $node
         *
         * @return void
         */
        private function removeImportantAnnotationFromNodeInlineStyle(\DOMElement $node)
        {
        }
        /**
         * Returns a list with all DOM nodes that have a style attribute.
         *
         * @param \DOMXPath $xPath
         *
         * @return \DOMNodeList
         */
        private function getAllNodesWithStyleAttribute(\DOMXPath $xPath)
        {
        }
        /**
         * Applies $styles to $node.
         *
         * This method maps CSS styles to HTML attributes and adds those to the
         * node.
         *
         * @param string[] $styles the new CSS styles taken from the global styles to be applied to this node
         * @param \DOMElement $node node to apply styles to
         *
         * @return void
         */
        private function mapCssToHtmlAttributes(array $styles, \DOMElement $node)
        {
        }
        /**
         * Tries to apply the CSS style to $node as an attribute.
         *
         * This method maps a CSS rule to HTML attributes and adds those to the node.
         *
         * @param string $property the name of the CSS property to map
         * @param string $value the value of the style rule to map
         * @param \DOMElement $node node to apply styles to
         *
         * @return void
         */
        private function mapCssToHtmlAttribute($property, $value, \DOMElement $node)
        {
        }
        /**
         * Looks up the CSS property in the mapping table and maps it if it matches the conditions.
         *
         * @param string $property the name of the CSS property to map
         * @param string $value the value of the style rule to map
         * @param \DOMElement $node node to apply styles to
         *
         * @return bool true if the property can be mapped using the simple mapping table
         */
        private function mapSimpleCssProperty($property, $value, \DOMElement $node)
        {
        }
        /**
         * Maps CSS properties that need special transformation to an HTML attribute.
         *
         * @param string $property the name of the CSS property to map
         * @param string $value the value of the style rule to map
         * @param \DOMElement $node node to apply styles to
         *
         * @return void
         */
        private function mapComplexCssProperty($property, $value, \DOMElement $node)
        {
        }
        /**
         * Maps the "background" CSS property to visual HTML attributes.
         *
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         *
         * @return void
         */
        private function mapBackgroundProperty(\DOMElement $node, $value)
        {
        }
        /**
         * Maps the "width" or "height" CSS properties to visual HTML attributes.
         *
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         * @param string $property the name of the CSS property to map
         *
         * @return void
         */
        private function mapWidthOrHeightProperty(\DOMElement $node, $value, $property)
        {
        }
        /**
         * Maps the "margin" CSS property to visual HTML attributes.
         *
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         *
         * @return void
         */
        private function mapMarginProperty(\DOMElement $node, $value)
        {
        }
        /**
         * Maps the "border" CSS property to visual HTML attributes.
         *
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         *
         * @return void
         */
        private function mapBorderProperty(\DOMElement $node, $value)
        {
        }
        /**
         * Checks whether $node is a table or img element.
         *
         * @param \DOMElement $node
         *
         * @return bool
         */
        private function isTableOrImageNode(\DOMElement $node)
        {
        }
        /**
         * Parses a shorthand CSS value and splits it into individual values
         *
         * @param string $value a string of CSS value with 1, 2, 3 or 4 sizes
         *                      For example: padding: 0 auto;
         *                      '0 auto' is split into top: 0, left: auto, bottom: 0,
         *                      right: auto.
         *
         * @return string[] an array of values for top, right, bottom and left (using these as associative array keys)
         */
        private function parseCssShorthandValue($value)
        {
        }
        /**
         * Extracts and parses the individual rules from a CSS string.
         *
         * @param string $css a string of raw CSS code
         *
         * @return string[][][] A 2-entry array with the key "inlineable" containing rules which can be inlined as `style`
         *         attributes and the key "uninlineable" containing rules which cannot.  Each value is an array of string
         *         sub-arrays with the keys
         *         "media" (the media query string, e.g. "@media screen and (max-width: 480px)",
         *         or an empty string if not from a `@media` rule),
         *         "selector" (the CSS selector, e.g., "*" or "header h1"),
         *         "hasUnmatchablePseudo" (true if that selector contains psuedo-elements or dynamic pseudo-classes
         *         such that the declarations cannot be applied inline),
         *         "declarationsBlock" (the semicolon-separated CSS declarations for that selector,
         *         e.g., "color: red; height: 4px;"),
         *         and "line" (the line number e.g. 42)
         */
        private function parseCssRules($css)
        {
        }
        /**
         * Parses a string of CSS into the media query, selectors and declarations for each ruleset in order.
         *
         * @param string $css
         *
         * @return string[][] Array of string sub-arrays with the keys
         *         "media" (the media query string, e.g. "@media screen and (max-width: 480px)",
         *         or an empty string if not from an `@media` rule),
         *         "selectors" (the CSS selector(s), e.g., "*" or "h1, h2"),
         *         "declarations" (the semicolon-separated CSS declarations for that/those selector(s),
         *         e.g., "color: red; height: 4px;"),
         */
        private function getCssRuleMatches($css)
        {
        }
        /**
         * Disables the parsing of inline styles.
         *
         * @return void
         */
        public function disableInlineStyleAttributesParsing()
        {
        }
        /**
         * Disables the parsing of <style> blocks.
         *
         * @return void
         */
        public function disableStyleBlocksParsing()
        {
        }
        /**
         * Disables the removal of elements with `display: none` properties.
         *
         * @deprecated will be removed in Emogrifier 3.0
         *
         * @return void
         */
        public function disableInvisibleNodeRemoval()
        {
        }
        /**
         * Enables the attachment/override of HTML attributes for which a
         * corresponding CSS property has been set.
         *
         * @deprecated will be removed in Emogrifier 3.0, use the CssToAttributeConverter instead
         *
         * @return void
         */
        public function enableCssToHtmlMapping()
        {
        }
        /**
         * Clears all caches.
         *
         * @return void
         */
        private function clearAllCaches()
        {
        }
        /**
         * Purges the visited nodes.
         *
         * @return void
         */
        private function purgeVisitedNodes()
        {
        }
        /**
         * Marks a tag for removal.
         *
         * There are some HTML tags that DOMDocument cannot process, and it will throw an error if it encounters them.
         * In particular, DOMDocument will complain if you try to use HTML5 tags in an XHTML document.
         *
         * Note: The tags will not be removed if they have any content.
         *
         * @param string $tagName the tag name, e.g., "p"
         *
         * @return void
         */
        public function addUnprocessableHtmlTag($tagName)
        {
        }
        /**
         * Drops a tag from the removal list.
         *
         * @param string $tagName the tag name, e.g., "p"
         *
         * @return void
         */
        public function removeUnprocessableHtmlTag($tagName)
        {
        }
        /**
         * Marks a media query type to keep.
         *
         * @param string $mediaName the media type name, e.g., "braille"
         *
         * @return void
         */
        public function addAllowedMediaType($mediaName)
        {
        }
        /**
         * Drops a media query type from the allowed list.
         *
         * @param string $mediaName the tag name, e.g., "braille"
         *
         * @return void
         */
        public function removeAllowedMediaType($mediaName)
        {
        }
        /**
         * Adds a selector to exclude nodes from emogrification.
         *
         * Any nodes that match the selector will not have their style altered.
         *
         * @param string $selector the selector to exclude, e.g., ".editor"
         *
         * @return void
         */
        public function addExcludedSelector($selector)
        {
        }
        /**
         * No longer excludes the nodes matching this selector from emogrification.
         *
         * @param string $selector the selector to no longer exclude, e.g., ".editor"
         *
         * @return void
         */
        public function removeExcludedSelector($selector)
        {
        }
        /**
         * This removes styles from your email that contain display:none.
         * We need to look for display:none, but we need to do a case-insensitive search. Since DOMDocument only
         * supports XPath 1.0, lower-case() isn't available to us. We've thus far only set attributes to lowercase,
         * not attribute values. Consequently, we need to translate() the letters that would be in 'NONE' ("NOE")
         * to lowercase.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function removeInvisibleNodes(\DOMXPath $xPath)
        {
        }
        /**
         * Parses the document and normalizes all existing CSS attributes.
         * This changes 'DISPLAY: none' to 'display: none'.
         * We wouldn't have to do this if DOMXPath supported XPath 2.0.
         * Also stores a reference of nodes with existing inline styles so we don't overwrite them.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function normalizeStyleAttributesOfAllNodes(\DOMXPath $xPath)
        {
        }
        /**
         * Normalizes the value of the "style" attribute and saves it.
         *
         * @param \DOMElement $node
         *
         * @return void
         */
        private function normalizeStyleAttributes(\DOMElement $node)
        {
        }
        /**
         * Merges styles from styles attributes and style nodes and applies them to the attribute nodes
         *
         * @return void
         */
        private function fillStyleAttributesWithMergedStyles()
        {
        }
        /**
         * This method merges old or existing name/value array with new name/value array
         * and then generates a string of the combined style suitable for placing inline.
         * This becomes the single point for CSS string generation allowing for consistent
         * CSS output no matter where the CSS originally came from.
         *
         * @param string[] $oldStyles
         * @param string[] $newStyles
         *
         * @return string
         */
        private function generateStyleStringFromDeclarationsArrays(array $oldStyles, array $newStyles)
        {
        }
        /**
         * Generates a CSS style string suitable to be used inline from the $styleDeclarations property => value array.
         *
         * @param string[] $styleDeclarations
         *
         * @return string
         */
        private function generateStyleStringFromSingleDeclarationsArray(array $styleDeclarations)
        {
        }
        /**
         * Checks whether $attributeValue is marked as !important.
         *
         * @param string $attributeValue
         *
         * @return bool
         */
        private function attributeValueIsImportant($attributeValue)
        {
        }
        /**
         * Copies $cssRule into the style attribute of $node.
         *
         * Note: This method does not check whether $cssRule matches $node.
         *
         * @param \DOMElement $node
         * @param string[][] $cssRule
         *
         * @return void
         */
        private function copyInlineableCssToStyleAttribute(\DOMElement $node, array $cssRule)
        {
        }
        /**
         * Applies $cssRules to $this->domDocument, limited to the rules that actually apply to the document.
         *
         * @param \DOMXPath $xPath
         * @param string[][] $cssRules The "uninlineable" array of CSS rules returned by `parseCssRules`
         *
         * @return void
         */
        private function copyUninlineableCssToStyleNode(\DOMXPath $xPath, array $cssRules)
        {
        }
        /**
         * Removes pseudo-elements and dynamic pseudo-classes from a CSS selector, replacing them with "*" if necessary.
         *
         * @param string $selector
         *
         * @return string Selector which will match the relevant DOM elements if the pseudo-classes are assumed to apply,
         *                or in the case of pseudo-elements will match their originating element.
         */
        private function removeUnmatchablePseudoComponents($selector)
        {
        }
        /**
         * Checks whether there is at least one matching element for $cssSelector.
         * When not in debug mode, it returns true also for invalid selectors (because they may be valid,
         * just not implemented/recognized yet by Emogrifier).
         *
         * @param \DOMXPath $xPath
         * @param string $cssSelector
         *
         * @return bool
         *
         * @throws \InvalidArgumentException
         */
        private function existsMatchForCssSelector(\DOMXPath $xPath, $cssSelector)
        {
        }
        /**
         * Returns CSS content.
         *
         * @param \DOMXPath $xPath
         *
         * @return string
         */
        private function getCssFromAllStyleNodes(\DOMXPath $xPath)
        {
        }
        /**
         * Adds a style element with $css to $this->domDocument.
         *
         * This method is protected to allow overriding.
         *
         * @see https://github.com/MyIntervals/emogrifier/issues/103
         *
         * @param string $css
         *
         * @return void
         */
        protected function addStyleElementToDocument($css)
        {
        }
        /**
         * Checks that $this->domDocument has a BODY element and adds it if it is missing.
         *
         * @return void
         */
        private function ensureExistenceOfBodyElement()
        {
        }
        /**
         * Splits input CSS code into an array of parts for different media querues, in order.
         * Each part is an array where:
         *
         * - key "css" will contain clean CSS code (for @media rules this will be the group rule body within "{...}")
         * - key "media" will contain "@media " followed by the media query list, for all allowed media queries,
         *   or an empty string for CSS not within a media query
         *
         * Example:
         *
         * The CSS code
         *
         *   "@import "file.css"; h1 { color:red; } @media { h1 {}} @media tv { h1 {}}"
         *
         * will be parsed into the following array:
         *
         *   0 => [
         *     "css" => "h1 { color:red; }",
         *     "media" => ""
         *   ],
         *   1 => [
         *     "css" => " h1 {}",
         *     "media" => "@media "
         *   ]
         *
         * @param string $css
         *
         * @return string[][]
         */
        private function splitCssAndMediaQuery($css)
        {
        }
        /**
         * Removes empty unprocessable tags from the DOM document.
         *
         * @return void
         */
        private function removeUnprocessableTags()
        {
        }
        /**
         * Makes sure that the passed HTML has a document type.
         *
         * @param string $html
         *
         * @return string HTML with document type
         */
        private function ensureDocumentType($html)
        {
        }
        /**
         * Adds a Content-Type meta tag for the charset.
         *
         * This method also ensures that there is a HEAD element.
         *
         * @param string $html
         *
         * @return string the HTML with the meta tag added
         */
        private function addContentTypeMetaTag($html)
        {
        }
        /**
         * Makes sure that any self-closing tags not recognized as such by PHP's DOMDocument implementation have a
         * self-closing slash.
         *
         * @param string $html
         *
         * @return string HTML with problematic tags converted.
         */
        private function ensurePhpUnrecognizedSelfClosingTagsAreXml($html)
        {
        }
        /**
         * @param string[] $a
         * @param string[] $b
         *
         * @return int
         */
        private function sortBySelectorPrecedence(array $a, array $b)
        {
        }
        /**
         * @param string $selector
         *
         * @return int
         */
        private function getCssSelectorPrecedence($selector)
        {
        }
        /**
         * Maps a CSS selector to an XPath query string.
         *
         * @see http://plasmasturm.org/log/444/
         *
         * @param string $cssSelector a CSS selector
         *
         * @return string the corresponding XPath selector
         */
        private function translateCssToXpath($cssSelector)
        {
        }
        /**
         * Flexibly translates the CSS selector $trimmedLowercaseSelector to an xPath selector.
         *
         * @param string $trimmedLowercaseSelector
         *
         * @return string
         */
        private function translateCssToXpathPass($trimmedLowercaseSelector)
        {
        }
        /**
         * Flexibly translates the CSS selector $trimmedLowercaseSelector to an xPath selector for inline usage.
         *
         * @param string $trimmedLowercaseSelector
         *
         * @return string
         */
        private function translateCssToXpathPassInline($trimmedLowercaseSelector)
        {
        }
        /**
         * Flexibly translates the CSS selector $trimmedLowercaseSelector to an xPath selector while using
         * $matchClassAttributesCallback as to match the class attributes.
         *
         * @param string $trimmedLowercaseSelector
         * @param callable $matchClassAttributesCallback
         *
         * @return string
         */
        private function translateCssToXpathPassWithMatchClassAttributesCallback($trimmedLowercaseSelector, callable $matchClassAttributesCallback)
        {
        }
        /**
         * @param string[] $match
         *
         * @return string
         */
        private function matchIdAttributes(array $match)
        {
        }
        /**
         * @param string[] $match
         *
         * @return string xPath class attribute query wrapped in element selector
         */
        private function matchClassAttributes(array $match)
        {
        }
        /**
         * @param string[] $match
         *
         * @return string xPath class attribute query
         */
        private function matchClassAttributesInline(array $match)
        {
        }
        /**
         * @param string[] $match
         *
         * @return string
         */
        private function translateNthChild(array $match)
        {
        }
        /**
         * @param string[] $match
         *
         * @return string
         */
        private function translateNthOfType(array $match)
        {
        }
        /**
         * @param string[] $match
         *
         * @return int[]
         */
        private function parseNth(array $match)
        {
        }
        /**
         * Parses a CSS declaration block into property name/value pairs.
         *
         * Example:
         *
         * The declaration block
         *
         *   "color: #000; font-weight: bold;"
         *
         * will be parsed into the following array:
         *
         *   "color" => "#000"
         *   "font-weight" => "bold"
         *
         * @param string $cssDeclarationsBlock the CSS declarations block without the curly braces, may be empty
         *
         * @return string[]
         *         the CSS declarations with the property names as array keys and the property values as array values
         */
        private function parseCssDeclarationsBlock($cssDeclarationsBlock)
        {
        }
        /**
         * Find the nodes that are not to be emogrified.
         *
         * @param \DOMXPath $xPath
         *
         * @return \DOMElement[]
         *
         * @throws \InvalidArgumentException
         */
        private function getNodesToExclude(\DOMXPath $xPath)
        {
        }
        /**
         * Handles invalid xPath expression warnings, generated during the process() method,
         * during querying \DOMDocument and trigger an \InvalidArgumentException with an invalid selector
         * or \RuntimeException, depending on the source of the warning.
         *
         * @param int $type
         * @param string $message
         * @param string $file
         * @param int $line
         * @param array $context
         *
         * @return bool always false
         *
         * @throws \InvalidArgumentException
         * @throws \RuntimeException
         */
        public function handleXpathQueryWarnings($type, $message, $file, $line, array $context)
        {
        }
        /**
         * Sets the debug mode.
         *
         * @param bool $debug set to true to enable debug mode
         *
         * @return void
         */
        public function setDebug($debug)
        {
        }
    }
}
namespace Pelago\Emogrifier\HtmlProcessor {
    /**
     * Base class for HTML processor that e.g., can remove, add or modify nodes or attributes.
     *
     * The "vanilla" subclass is the HtmlNormalizer.
     *
     * @internal This class currently is a new technology preview, and its API is still in flux. Don't use it in production.
     *
     * @author Oliver Klee <github@oliverklee.de>
     */
    abstract class AbstractHtmlProcessor
    {
        /**
         * @var string
         */
        const DEFAULT_DOCUMENT_TYPE = '<!DOCTYPE html>';
        /**
         * @var string
         */
        const CONTENT_TYPE_META_TAG = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
        /**
         * @var string Regular expression part to match tag names that PHP's DOMDocument implementation is not aware are
         *      self-closing. These are mostly HTML5 elements, but for completeness <command> (obsolete) and <keygen>
         *      (deprecated) are also included.
         *
         * @see https://bugs.php.net/bug.php?id=73175
         */
        const PHP_UNRECOGNIZED_VOID_TAGNAME_MATCHER = '(?:command|embed|keygen|source|track|wbr)';
        /**
         * @var \DOMDocument
         */
        protected $domDocument = null;
        /**
         * @param string $unprocessedHtml raw HTML, must be UTF-encoded, must not be empty
         *
         * @throws \InvalidArgumentException if $unprocessedHtml is anything other than a non-empty string
         */
        public function __construct($unprocessedHtml)
        {
        }
        /**
         * Sets the HTML to process.
         *
         * @param string $html the HTML to process, must be UTF-8-encoded
         *
         * @return void
         */
        private function setHtml($html)
        {
        }
        /**
         * Provides access to the internal DOMDocument representation of the HTML in its current state.
         *
         * @return \DOMDocument
         */
        public function getDomDocument()
        {
        }
        /**
         * Renders the normalized and processed HTML.
         *
         * @return string
         */
        public function render()
        {
        }
        /**
         * Renders the content of the BODY element of the normalized and processed HTML.
         *
         * @return string
         */
        public function renderBodyContent()
        {
        }
        /**
         * Eliminates any invalid closing tags for void elements from the given HTML.
         *
         * @param string $html
         *
         * @return string
         */
        private function removeSelfClosingTagsClosingTags($html)
        {
        }
        /**
         * Returns the BODY element.
         *
         * This method assumes that there always is a BODY element.
         *
         * @return \DOMElement
         */
        private function getBodyElement()
        {
        }
        /**
         * Creates a DOM document from the given HTML and stores it in $this->domDocument.
         *
         * The DOM document will always have a BODY element and a document type.
         *
         * @param string $html
         *
         * @return void
         */
        private function createUnifiedDomDocument($html)
        {
        }
        /**
         * Creates a DOMDocument instance from the given HTML and stores it in $this->domDocument.
         *
         * @param string $html
         *
         * @return void
         */
        private function createRawDomDocument($html)
        {
        }
        /**
         * Returns the HTML with added document type, Content-Type meta tag, and self-closing slashes, if needed,
         * ensuring that the HTML will be good for creating a DOM document from it.
         *
         * @param string $html
         *
         * @return string the unified HTML
         */
        private function prepareHtmlForDomConversion($html)
        {
        }
        /**
         * Makes sure that the passed HTML has a document type.
         *
         * @param string $html
         *
         * @return string HTML with document type
         */
        private function ensureDocumentType($html)
        {
        }
        /**
         * Adds a Content-Type meta tag for the charset.
         *
         * This method also ensures that there is a HEAD element.
         *
         * @param string $html
         *
         * @return string the HTML with the meta tag added
         */
        private function addContentTypeMetaTag($html)
        {
        }
        /**
         * Makes sure that any self-closing tags not recognized as such by PHP's DOMDocument implementation have a
         * self-closing slash.
         *
         * @param string $html
         *
         * @return string HTML with problematic tags converted.
         */
        private function ensurePhpUnrecognizedSelfClosingTagsAreXml($html)
        {
        }
        /**
         * Checks that $this->domDocument has a BODY element and adds it if it is missing.
         *
         * @return void
         */
        private function ensureExistenceOfBodyElement()
        {
        }
    }
}
namespace Pelago\Emogrifier {
    /**
     * This class provides functions for converting CSS styles into inline style attributes in your HTML code.
     *
     * For Emogrifier 3.0.0, this will be the successor to the \Pelago\Emogrifier class (which then will be deprecated).
     *
     * For more information, please see the README.md file.
     *
     * @internal This class currently is a new technology preview, and its API is still in flux. Don't use it in production.
     *
     * @author Cameron Brooks
     * @author Jaime Prado
     * @author Oliver Klee <github@oliverklee.de>
     * @author Roman Ožana <ozana@omdesign.cz>
     * @author Sander Kruger <s.kruger@invessel.com>
     * @author Zoli Szabó <zoli.szabo+github@gmail.com>
     */
    class CssInliner extends \Pelago\Emogrifier\HtmlProcessor\AbstractHtmlProcessor
    {
        /**
         * @var int
         */
        const CACHE_KEY_CSS = 0;
        /**
         * @var int
         */
        const CACHE_KEY_SELECTOR = 1;
        /**
         * @var int
         */
        const CACHE_KEY_CSS_DECLARATIONS_BLOCK = 2;
        /**
         * @var int
         */
        const CACHE_KEY_COMBINED_STYLES = 3;
        /**
         * Regular expression component matching a static pseudo class in a selector, without the preceding ":",
         * for which the applicable elements can be determined (by converting the selector to an XPath expression).
         * (Contains alternation without a group and is intended to be placed within a capturing, non-capturing or lookahead
         * group, as appropriate for the usage context.)
         *
         * @var string
         */
        const PSEUDO_CLASS_MATCHER = '\\S+\\-(?:child|type\\()|not\\([[:ascii:]]*\\)';
        /**
         * @var bool[]
         */
        private $excludedSelectors = [];
        /**
         * @var string[]
         */
        private $unprocessableHtmlTags = [];
        /**
         * @var bool[]
         */
        private $allowedMediaTypes = ['all' => true, 'screen' => true, 'print' => true];
        /**
         * @var mixed[]
         */
        private $caches = [self::CACHE_KEY_CSS => [], self::CACHE_KEY_SELECTOR => [], self::CACHE_KEY_CSS_DECLARATIONS_BLOCK => [], self::CACHE_KEY_COMBINED_STYLES => []];
        /**
         * @var CssSelectorConverter
         */
        private $cssSelectorConverter = null;
        /**
         * the visited nodes with the XPath paths as array keys
         *
         * @var \DOMElement[]
         */
        private $visitedNodes = [];
        /**
         * the styles to apply to the nodes with the XPath paths as array keys for the outer array
         * and the attribute names/values as key/value pairs for the inner array
         *
         * @var string[][]
         */
        private $styleAttributesForNodes = [];
        /**
         * Determines whether the "style" attributes of tags in the the HTML passed to this class should be preserved.
         * If set to false, the value of the style attributes will be discarded.
         *
         * @var bool
         */
        private $isInlineStyleAttributesParsingEnabled = true;
        /**
         * Determines whether the <style> blocks in the HTML passed to this class should be parsed.
         *
         * If set to true, the <style> blocks will be removed from the HTML and their contents will be applied to the HTML
         * via inline styles.
         *
         * If set to false, the <style> blocks will be left as they are in the HTML.
         *
         * @var bool
         */
        private $isStyleBlocksParsingEnabled = true;
        /**
         * Determines whether elements with the `display: none` property are
         * removed from the DOM.
         *
         * @var bool
         */
        private $shouldRemoveInvisibleNodes = true;
        /**
         * For calculating selector precedence order.
         * Keys are a regular expression part to match before a CSS name.
         * Values are a multiplier factor per match to weight specificity.
         *
         * @var int[]
         */
        private $selectorPrecedenceMatchers = [
            // IDs: worth 10000
            '\\#' => 10000,
            // classes, attributes, pseudo-classes (not pseudo-elements) except `:not`: worth 100
            '(?:\\.|\\[|(?<!:):(?!not\\())' => 100,
            // elements (not attribute values or `:not`), pseudo-elements: worth 1
            '(?:(?<![="\':\\w\\-])|::)' => 1,
        ];
        /**
         * Emogrifier will throw Exceptions when it encounters an error instead of silently ignoring them.
         *
         * @var bool
         */
        private $debug = false;
        /**
         * @return CssSelectorConverter
         */
        private function getCssSelectorConverter()
        {
        }
        /**
         * Returns the HEAD element.
         *
         * This method assumes that there always is a HEAD element.
         *
         * @return \DOMElement
         */
        private function getHeadElement()
        {
        }
        /**
         * Inlines the given CSS into the existing HTML.
         *
         * @param string $css the CSS to inline, must be UTF-8-encoded
         *
         * @return CssInliner fluent interface
         *
         * @throws SyntaxErrorException
         */
        public function inlineCss($css)
        {
        }
        /**
         * Applies some optional post-processing to the HTML in the DOM document.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function postProcess(\DOMXPath $xPath)
        {
        }
        /**
         * Searches for all nodes with a style attribute and removes the "!important" annotations out of
         * the inline style declarations, eventually by rearranging declarations.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function removeImportantAnnotationFromAllInlineStyles(\DOMXPath $xPath)
        {
        }
        /**
         * Removes the "!important" annotations out of the inline style declarations,
         * eventually by rearranging declarations.
         * Rearranging needed when !important shorthand properties are followed by some of their
         * not !important expanded-version properties.
         * For example "font: 12px serif !important; font-size: 13px;" must be reordered
         * to "font-size: 13px; font: 12px serif;" in order to remain correct.
         *
         * @param \DOMElement $node
         *
         * @return void
         */
        private function removeImportantAnnotationFromNodeInlineStyle(\DOMElement $node)
        {
        }
        /**
         * Returns a list with all DOM nodes that have a style attribute.
         *
         * @param \DOMXPath $xPath
         *
         * @return \DOMNodeList
         */
        private function getAllNodesWithStyleAttribute(\DOMXPath $xPath)
        {
        }
        /**
         * Extracts and parses the individual rules from a CSS string.
         *
         * @param string $css a string of raw CSS code
         *
         * @return string[][][] A 2-entry array with the key "inlineable" containing rules which can be inlined as `style`
         *         attributes and the key "uninlineable" containing rules which cannot.  Each value is an array of string
         *         sub-arrays with the keys
         *         "media" (the media query string, e.g. "@media screen and (max-width: 480px)",
         *         or an empty string if not from a `@media` rule),
         *         "selector" (the CSS selector, e.g., "*" or "header h1"),
         *         "hasUnmatchablePseudo" (true if that selector contains psuedo-elements or dynamic pseudo-classes
         *         such that the declarations cannot be applied inline),
         *         "declarationsBlock" (the semicolon-separated CSS declarations for that selector,
         *         e.g., "color: red; height: 4px;"),
         *         and "line" (the line number e.g. 42)
         */
        private function parseCssRules($css)
        {
        }
        /**
         * Parses a string of CSS into the media query, selectors and declarations for each ruleset in order.
         *
         * @param string $css
         *
         * @return string[][] Array of string sub-arrays with the keys
         *         "media" (the media query string, e.g. "@media screen and (max-width: 480px)",
         *         or an empty string if not from an `@media` rule),
         *         "selectors" (the CSS selector(s), e.g., "*" or "h1, h2"),
         *         "declarations" (the semicolon-separated CSS declarations for that/those selector(s),
         *         e.g., "color: red; height: 4px;"),
         */
        private function getCssRuleMatches($css)
        {
        }
        /**
         * Disables the parsing of inline styles.
         *
         * @return void
         */
        public function disableInlineStyleAttributesParsing()
        {
        }
        /**
         * Disables the parsing of <style> blocks.
         *
         * @return void
         */
        public function disableStyleBlocksParsing()
        {
        }
        /**
         * Disables the removal of elements with `display: none` properties.
         *
         * @return void
         *
         * @deprecated will be removed in Emogrifier 3.0
         */
        public function disableInvisibleNodeRemoval()
        {
        }
        /**
         * Clears all caches.
         *
         * @return void
         */
        private function clearAllCaches()
        {
        }
        /**
         * Purges the visited nodes.
         *
         * @return void
         */
        private function purgeVisitedNodes()
        {
        }
        /**
         * Marks a tag for removal.
         *
         * There are some HTML tags that DOMDocument cannot process, and it will throw an error if it encounters them.
         * In particular, DOMDocument will complain if you try to use HTML5 tags in an XHTML document.
         *
         * Note: The tags will not be removed if they have any content.
         *
         * @param string $tagName the tag name, e.g., "p"
         *
         * @return void
         */
        public function addUnprocessableHtmlTag($tagName)
        {
        }
        /**
         * Drops a tag from the removal list.
         *
         * @param string $tagName the tag name, e.g., "p"
         *
         * @return void
         */
        public function removeUnprocessableHtmlTag($tagName)
        {
        }
        /**
         * Marks a media query type to keep.
         *
         * @param string $mediaName the media type name, e.g., "braille"
         *
         * @return void
         */
        public function addAllowedMediaType($mediaName)
        {
        }
        /**
         * Drops a media query type from the allowed list.
         *
         * @param string $mediaName the tag name, e.g., "braille"
         *
         * @return void
         */
        public function removeAllowedMediaType($mediaName)
        {
        }
        /**
         * Adds a selector to exclude nodes from emogrification.
         *
         * Any nodes that match the selector will not have their style altered.
         *
         * @param string $selector the selector to exclude, e.g., ".editor"
         *
         * @return void
         */
        public function addExcludedSelector($selector)
        {
        }
        /**
         * No longer excludes the nodes matching this selector from emogrification.
         *
         * @param string $selector the selector to no longer exclude, e.g., ".editor"
         *
         * @return void
         */
        public function removeExcludedSelector($selector)
        {
        }
        /**
         * This removes styles from your email that contain display:none.
         * We need to look for display:none, but we need to do a case-insensitive search. Since DOMDocument only
         * supports XPath 1.0, lower-case() isn't available to us. We've thus far only set attributes to lowercase,
         * not attribute values. Consequently, we need to translate() the letters that would be in 'NONE' ("NOE")
         * to lowercase.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function removeInvisibleNodes(\DOMXPath $xPath)
        {
        }
        /**
         * Parses the document and normalizes all existing CSS attributes.
         * This changes 'DISPLAY: none' to 'display: none'.
         * We wouldn't have to do this if DOMXPath supported XPath 2.0.
         * Also stores a reference of nodes with existing inline styles so we don't overwrite them.
         *
         * @param \DOMXPath $xPath
         *
         * @return void
         */
        private function normalizeStyleAttributesOfAllNodes(\DOMXPath $xPath)
        {
        }
        /**
         * Normalizes the value of the "style" attribute and saves it.
         *
         * @param \DOMElement $node
         *
         * @return void
         */
        private function normalizeStyleAttributes(\DOMElement $node)
        {
        }
        /**
         * Merges styles from styles attributes and style nodes and applies them to the attribute nodes
         *
         * @return void
         */
        private function fillStyleAttributesWithMergedStyles()
        {
        }
        /**
         * This method merges old or existing name/value array with new name/value array
         * and then generates a string of the combined style suitable for placing inline.
         * This becomes the single point for CSS string generation allowing for consistent
         * CSS output no matter where the CSS originally came from.
         *
         * @param string[] $oldStyles
         * @param string[] $newStyles
         *
         * @return string
         */
        private function generateStyleStringFromDeclarationsArrays(array $oldStyles, array $newStyles)
        {
        }
        /**
         * Generates a CSS style string suitable to be used inline from the $styleDeclarations property => value array.
         *
         * @param string[] $styleDeclarations
         *
         * @return string
         */
        private function generateStyleStringFromSingleDeclarationsArray(array $styleDeclarations)
        {
        }
        /**
         * Checks whether $attributeValue is marked as !important.
         *
         * @param string $attributeValue
         *
         * @return bool
         */
        private function attributeValueIsImportant($attributeValue)
        {
        }
        /**
         * Applies $cssRules to $this->domDocument, limited to the rules that actually apply to the document.
         *
         * @param \DOMXPath $xPath
         * @param string[][] $cssRules The "uninlineable" array of CSS rules returned by `parseCssRules`
         *
         * @return void
         */
        private function copyUninlineableCssToStyleNode(\DOMXPath $xPath, array $cssRules)
        {
        }
        /**
         * Removes pseudo-elements and dynamic pseudo-classes from a CSS selector, replacing them with "*" if necessary.
         *
         * @param string $selector
         *
         * @return string Selector which will match the relevant DOM elements if the pseudo-classes are assumed to apply,
         *                or in the case of pseudo-elements will match their originating element.
         */
        private function removeUnmatchablePseudoComponents($selector)
        {
        }
        /**
         * Copies $cssRule into the style attribute of $node.
         *
         * Note: This method does not check whether $cssRule matches $node.
         *
         * @param \DOMElement $node
         * @param string[][] $cssRule
         *
         * @return void
         */
        private function copyInlineableCssToStyleAttribute(\DOMElement $node, array $cssRule)
        {
        }
        /**
         * Checks whether there is at least one matching element for $cssSelector.
         * When not in debug mode, it returns true also for invalid selectors (because they may be valid,
         * just not implemented/recognized yet by Emogrifier).
         *
         * @param \DOMXPath $xPath
         * @param string $cssSelector
         *
         * @return bool
         *
         * @throws SyntaxErrorException
         */
        private function existsMatchForCssSelector(\DOMXPath $xPath, $cssSelector)
        {
        }
        /**
         * Returns CSS content.
         *
         * @param \DOMXPath $xPath
         *
         * @return string
         */
        private function getCssFromAllStyleNodes(\DOMXPath $xPath)
        {
        }
        /**
         * Adds a style element with $css to $this->domDocument.
         *
         * This method is protected to allow overriding.
         *
         * @see https://github.com/MyIntervals/emogrifier/issues/103
         *
         * @param string $css
         *
         * @return void
         */
        protected function addStyleElementToDocument($css)
        {
        }
        /**
         * Splits input CSS code into an array of parts for different media querues, in order.
         * Each part is an array where:
         *
         * - key "css" will contain clean CSS code (for @media rules this will be the group rule body within "{...}")
         * - key "media" will contain "@media " followed by the media query list, for all allowed media queries,
         *   or an empty string for CSS not within a media query
         *
         * Example:
         *
         * The CSS code
         *
         *   "@import "file.css"; h1 { color:red; } @media { h1 {}} @media tv { h1 {}}"
         *
         * will be parsed into the following array:
         *
         *   0 => [
         *     "css" => "h1 { color:red; }",
         *     "media" => ""
         *   ],
         *   1 => [
         *     "css" => " h1 {}",
         *     "media" => "@media "
         *   ]
         *
         * @param string $css
         *
         * @return string[][]
         */
        private function splitCssAndMediaQuery($css)
        {
        }
        /**
         * Removes empty unprocessable tags from the DOM document.
         *
         * @return void
         */
        private function removeUnprocessableTags()
        {
        }
        /**
         * @param string[] $a
         * @param string[] $b
         *
         * @return int
         */
        private function sortBySelectorPrecedence(array $a, array $b)
        {
        }
        /**
         * @param string $selector
         *
         * @return int
         */
        private function getCssSelectorPrecedence($selector)
        {
        }
        /**
         * Parses a CSS declaration block into property name/value pairs.
         *
         * Example:
         *
         * The declaration block
         *
         *   "color: #000; font-weight: bold;"
         *
         * will be parsed into the following array:
         *
         *   "color" => "#000"
         *   "font-weight" => "bold"
         *
         * @param string $cssDeclarationsBlock the CSS declarations block without the curly braces, may be empty
         *
         * @return string[]
         *         the CSS declarations with the property names as array keys and the property values as array values
         */
        private function parseCssDeclarationsBlock($cssDeclarationsBlock)
        {
        }
        /**
         * Find the nodes that are not to be emogrified.
         *
         * @param \DOMXPath $xPath
         *
         * @return \DOMElement[]
         *
         * @throws SyntaxErrorException
         */
        private function getNodesToExclude(\DOMXPath $xPath)
        {
        }
        /**
         * Sets the debug mode.
         *
         * @param bool $debug set to true to enable debug mode
         *
         * @return void
         */
        public function setDebug($debug)
        {
        }
    }
}
namespace Pelago\Emogrifier\HtmlProcessor {
    /**
     * Normalizes HTML:
     * - add a document type (HTML5) if missing
     * - disentangle incorrectly nested tags
     * - add HEAD and BODY elements (if they are missing)
     * - reformat the HTML
     *
     * @internal This class currently is a new technology preview, and its API is still in flux. Don't use it in production.
     *
     * @author Oliver Klee <github@oliverklee.de>
     */
    class HtmlNormalizer extends \Pelago\Emogrifier\HtmlProcessor\AbstractHtmlProcessor
    {
    }
    /**
     * This HtmlProcessor can convert style HTML attributes to the corresponding other visual HTML attributes,
     * e.g. it converts style="width: 100px" to width="100".
     *
     * It will only add attributes, but leaves the style attribute untouched.
     *
     * To trigger the conversion, call the convertCssToVisualAttributes method.
     *
     * @internal This class currently is a new technology preview, and its API is still in flux. Don't use it in production.
     *
     * @author Oliver Klee <github@oliverklee.de>
     */
    class CssToAttributeConverter extends \Pelago\Emogrifier\HtmlProcessor\AbstractHtmlProcessor
    {
        /**
         * This multi-level array contains simple mappings of CSS properties to
         * HTML attributes. If a mapping only applies to certain HTML nodes or
         * only for certain values, the mapping is an object with a whitelist
         * of nodes and values.
         *
         * @var mixed[][]
         */
        private $cssToHtmlMap = ['background-color' => ['attribute' => 'bgcolor'], 'text-align' => ['attribute' => 'align', 'nodes' => ['p', 'div', 'td'], 'values' => ['left', 'right', 'center', 'justify']], 'float' => ['attribute' => 'align', 'nodes' => ['table', 'img'], 'values' => ['left', 'right']], 'border-spacing' => ['attribute' => 'cellspacing', 'nodes' => ['table']]];
        /**
         * @var string[][]
         */
        private static $parsedCssCache = [];
        /**
         * Maps the CSS from the style nodes to visual HTML attributes.
         *
         * @return CssToAttributeConverter fluent interface
         */
        public function convertCssToVisualAttributes()
        {
        }
        /**
         * Returns a list with all DOM nodes that have a style attribute.
         *
         * @return \DOMNodeList
         */
        private function getAllNodesWithStyleAttribute()
        {
        }
        /**
         * Parses a CSS declaration block into property name/value pairs.
         *
         * Example:
         *
         * The declaration block
         *
         *   "color: #000; font-weight: bold;"
         *
         * will be parsed into the following array:
         *
         *   "color" => "#000"
         *   "font-weight" => "bold"
         *
         * @param string $cssDeclarationsBlock the CSS declarations block without the curly braces, may be empty
         *
         * @return string[]
         *         the CSS declarations with the property names as array keys and the property values as array values
         */
        private function parseCssDeclarationsBlock($cssDeclarationsBlock)
        {
        }
        /**
         * Applies $styles to $node.
         *
         * This method maps CSS styles to HTML attributes and adds those to the
         * node.
         *
         * @param string[] $styles the new CSS styles taken from the global styles to be applied to this node
         * @param \DOMElement $node node to apply styles to
         *
         * @return void
         */
        private function mapCssToHtmlAttributes(array $styles, \DOMElement $node)
        {
        }
        /**
         * Tries to apply the CSS style to $node as an attribute.
         *
         * This method maps a CSS rule to HTML attributes and adds those to the node.
         *
         * @param string $property the name of the CSS property to map
         * @param string $value the value of the style rule to map
         * @param \DOMElement $node node to apply styles to
         *
         * @return void
         */
        private function mapCssToHtmlAttribute($property, $value, \DOMElement $node)
        {
        }
        /**
         * Looks up the CSS property in the mapping table and maps it if it matches the conditions.
         *
         * @param string $property the name of the CSS property to map
         * @param string $value the value of the style rule to map
         * @param \DOMElement $node node to apply styles to
         *
         * @return bool true if the property can be mapped using the simple mapping table
         */
        private function mapSimpleCssProperty($property, $value, \DOMElement $node)
        {
        }
        /**
         * Maps CSS properties that need special transformation to an HTML attribute.
         *
         * @param string $property the name of the CSS property to map
         * @param string $value the value of the style rule to map
         * @param \DOMElement $node node to apply styles to
         *
         * @return void
         */
        private function mapComplexCssProperty($property, $value, \DOMElement $node)
        {
        }
        /**
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         *
         * @return void
         */
        private function mapBackgroundProperty(\DOMElement $node, $value)
        {
        }
        /**
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         * @param string $property the name of the CSS property to map
         *
         * @return void
         */
        private function mapWidthOrHeightProperty(\DOMElement $node, $value, $property)
        {
        }
        /**
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         *
         * @return void
         */
        private function mapMarginProperty(\DOMElement $node, $value)
        {
        }
        /**
         * @param \DOMElement $node node to apply styles to
         * @param string $value the value of the style rule to map
         *
         * @return void
         */
        private function mapBorderProperty(\DOMElement $node, $value)
        {
        }
        /**
         * @param \DOMElement $node
         *
         * @return bool
         */
        private function isTableOrImageNode(\DOMElement $node)
        {
        }
        /**
         * Parses a shorthand CSS value and splits it into individual values
         *
         * @param string $value a string of CSS value with 1, 2, 3 or 4 sizes
         *                      For example: padding: 0 auto;
         *                      '0 auto' is split into top: 0, left: auto, bottom: 0,
         *                      right: auto.
         *
         * @return string[] an array of values for top, right, bottom and left (using these as associative array keys)
         */
        private function parseCssShorthandValue($value)
        {
        }
    }
}
namespace Pelago\Emogrifier {
    /**
     * Facilitates building a CSS string by appending rule blocks one at a time, checking whether the media query,
     * selectors, or declarations block are the same as those from the preceding block and combining blocks in such cases.
     *
     * Example:
     *  $concatenator = new CssConcatenator();
     *  $concatenator->append(['body'], 'color: blue;');
     *  $concatenator->append(['body'], 'font-size: 16px;');
     *  $concatenator->append(['p'], 'margin: 1em 0;');
     *  $concatenator->append(['ul', 'ol'], 'margin: 1em 0;');
     *  $concatenator->append(['body'], 'font-size: 14px;', '@media screen and (max-width: 400px)');
     *  $concatenator->append(['ul', 'ol'], 'margin: 0.75em 0;', '@media screen and (max-width: 400px)');
     *  $css = $concatenator->getCss();
     *
     * `$css` (if unminified) would contain the following CSS:
     * ` body {
     * `   color: blue;
     * `   font-size: 16px;
     * ` }
     * ` p, ul, ol {
     * `   margin: 1em 0;
     * ` }
     * ` @media screen and (max-width: 400px) {
     * `   body {
     * `     font-size: 14px;
     * `   }
     * `   ul, ol {
     * `     margin: 0.75em 0;
     * `   }
     * ` }
     *
     * @author Jake Hotson <jake.github@qzdesign.co.uk>
     */
    class CssConcatenator
    {
        /**
         * Array of media rules in order.  Each element is an object with the following properties:
         * - string `media` - The media query string, e.g. "@media screen and (max-width:639px)", or an empty string for
         *   rules not within a media query block;
         * - \stdClass[] `ruleBlocks` - Array of rule blocks in order, where each element is an object with the following
         *   properties:
         *   - mixed[] `selectorsAsKeys` - Array whose keys are selectors for the rule block (values are of no
         *     significance);
         *   - string `declarationsBlock` - The property declarations, e.g. "margin-top: 0.5em; padding: 0".
         *
         * @var \stdClass[]
         */
        private $mediaRules = [];
        /**
         * Appends a declaration block to the CSS.
         *
         * @param string[] $selectors Array of selectors for the rule, e.g. ["ul", "ol", "p:first-child"].
         * @param string $declarationsBlock The property declarations, e.g. "margin-top: 0.5em; padding: 0".
         * @param string $media The media query for the rule, e.g. "@media screen and (max-width:639px)",
         *                      or an empty string if none.
         */
        public function append(array $selectors, $declarationsBlock, $media = '')
        {
        }
        /**
         * @return string
         */
        public function getCss()
        {
        }
        /**
         * @param string $media The media query for rules to be appended, e.g. "@media screen and (max-width:639px)",
         *                      or an empty string if none.
         *
         * @return \stdClass Object with properties as described for elements of `$mediaRules`.
         */
        private function getOrCreateMediaRuleToAppendTo($media)
        {
        }
        /**
         * Tests if two sets of selectors are equivalent (i.e. the same selectors, possibly in a different order).
         *
         * @param mixed[] $selectorsAsKeys1 Array in which the selectors are the keys, and the values are of no
         *                                  significance.
         * @param mixed[] $selectorsAsKeys2 Another such array.
         *
         * @return bool
         */
        private static function hasEquivalentSelectors(array $selectorsAsKeys1, array $selectorsAsKeys2)
        {
        }
        /**
         * @param \stdClass $mediaRule Object with properties as described for elements of `$mediaRules`.
         *
         * @return string CSS for the media rule.
         */
        private static function getMediaRuleCss(\stdClass $mediaRule)
        {
        }
        /**
         * @param \stdClass $ruleBlock Object with properties as described for elements of the `ruleBlocks` property of
         *                            elements of `$mediaRules`.
         *
         * @return string CSS for the rule block.
         */
        private static function getRuleBlockCss(\stdClass $ruleBlock)
        {
        }
    }
}
namespace {
    /**
     * CRON field interface
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    interface CronExpression_FieldInterface
    {
        /**
         * Check if the respective value of a DateTime field satisfies a CRON exp
         *
         * @param DateTime $date  DateTime object to check
         * @param string   $value CRON expression to test against
         *
         * @return bool Returns TRUE if satisfied, FALSE otherwise
         */
        public function isSatisfiedBy(\DateTime $date, $value);
        /**
         * When a CRON expression is not satisfied, this method is used to increment
         * or decrement a DateTime object by the unit of the cron field
         *
         * @param DateTime $date   DateTime object to change
         * @param bool     $invert (optional) Set to TRUE to decrement
         *
         * @return CronExpression_FieldInterface
         */
        public function increment(\DateTime $date, $invert = \false);
        /**
         * Validates a CRON expression for a given field
         *
         * @param string $value CRON expression value to validate
         *
         * @return bool Returns TRUE if valid, FALSE otherwise
         */
        public function validate($value);
    }
    /**
     * Abstract CRON expression field
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    abstract class CronExpression_AbstractField implements \CronExpression_FieldInterface
    {
        /**
         * Check to see if a field is satisfied by a value
         *
         * @param string $dateValue Date value to check
         * @param string $value     Value to test
         *
         * @return bool
         */
        public function isSatisfied($dateValue, $value)
        {
        }
        /**
         * Check if a value is a range
         *
         * @param string $value Value to test
         *
         * @return bool
         */
        public function isRange($value)
        {
        }
        /**
         * Check if a value is an increments of ranges
         *
         * @param string $value Value to test
         *
         * @return bool
         */
        public function isIncrementsOfRanges($value)
        {
        }
        /**
         * Test if a value is within a range
         *
         * @param string $dateValue Set date value
         * @param string $value     Value to test
         *
         * @return bool
         */
        public function isInRange($dateValue, $value)
        {
        }
        /**
         * Test if a value is within an increments of ranges (offset[-to]/step size)
         *
         * @param string $dateValue Set date value
         * @param string $value     Value to test
         *
         * @return bool
         */
        public function isInIncrementsOfRanges($dateValue, $value)
        {
        }
    }
    /**
     * Day of month field.  Allows: * , / - ? L W
     *
     * 'L' stands for "last" and specifies the last day of the month.
     *
     * The 'W' character is used to specify the weekday (Monday-Friday) nearest the
     * given day. As an example, if you were to specify "15W" as the value for the
     * day-of-month field, the meaning is: "the nearest weekday to the 15th of the
     * month". So if the 15th is a Saturday, the trigger will fire on Friday the
     * 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If
     * the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you
     * specify "1W" as the value for day-of-month, and the 1st is a Saturday, the
     * trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary
     * of a month's days. The 'W' character can only be specified when the
     * day-of-month is a single day, not a range or list of days.
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    class CronExpression_DayOfMonthField extends \CronExpression_AbstractField
    {
        /**
         * Get the nearest day of the week for a given day in a month
         *
         * @param int $currentYear  Current year
         * @param int $currentMonth Current month
         * @param int $targetDay    Target day of the month
         *
         * @return DateTime Returns the nearest date
         */
        private static function getNearestWeekday($currentYear, $currentMonth, $targetDay)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function isSatisfiedBy(\DateTime $date, $value)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function increment(\DateTime $date, $invert = \false)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function validate($value)
        {
        }
    }
    /**
     * Minutes field.  Allows: * , / -
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    class CronExpression_MinutesField extends \CronExpression_AbstractField
    {
        /**
         * {@inheritdoc}
         */
        public function isSatisfiedBy(\DateTime $date, $value)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function increment(\DateTime $date, $invert = \false)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function validate($value)
        {
        }
    }
    /**
     * Month field.  Allows: * , / -
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    class CronExpression_MonthField extends \CronExpression_AbstractField
    {
        /**
         * {@inheritdoc}
         */
        public function isSatisfiedBy(\DateTime $date, $value)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function increment(\DateTime $date, $invert = \false)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function validate($value)
        {
        }
    }
    /**
     * Day of week field.  Allows: * / , - ? L #
     *
     * Days of the week can be represented as a number 0-7 (0|7 = Sunday)
     * or as a three letter string: SUN, MON, TUE, WED, THU, FRI, SAT.
     *
     * 'L' stands for "last". It allows you to specify constructs such as
     * "the last Friday" of a given month.
     *
     * '#' is allowed for the day-of-week field, and must be followed by a
     * number between one and five. It allows you to specify constructs such as
     * "the second Friday" of a given month.
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    class CronExpression_DayOfWeekField extends \CronExpression_AbstractField
    {
        /**
         * {@inheritdoc}
         */
        public function isSatisfiedBy(\DateTime $date, $value)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function increment(\DateTime $date, $invert = \false)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function validate($value)
        {
        }
    }
    /**
     * CRON expression parser that can determine whether or not a CRON expression is
     * due to run, the next run date and previous run date of a CRON expression.
     * The determinations made by this class are accurate if checked run once per
     * minute (seconds are dropped from date time comparisons).
     *
     * Schedule parts must map to:
     * minute [0-59], hour [0-23], day of month, month [1-12|JAN-DEC], day of week
     * [1-7|MON-SUN], and an optional year.
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     * @link http://en.wikipedia.org/wiki/Cron
     */
    class CronExpression
    {
        const MINUTE = 0;
        const HOUR = 1;
        const DAY = 2;
        const MONTH = 3;
        const WEEKDAY = 4;
        const YEAR = 5;
        /**
         * @var array CRON expression parts
         */
        private $cronParts;
        /**
         * @var CronExpression_FieldFactory CRON field factory
         */
        private $fieldFactory;
        /**
         * @var array Order in which to test of cron parts
         */
        private static $order = array(self::YEAR, self::MONTH, self::DAY, self::WEEKDAY, self::HOUR, self::MINUTE);
        /**
        * Factory method to create a new CronExpression.
        *
        * @param string $expression The CRON expression to create.  There are
        *      several special predefined values which can be used to substitute the
        *      CRON expression:
        *
        *      @yearly, @annually) - Run once a year, midnight, Jan. 1 - 0 0 1 1 *
        *      @monthly - Run once a month, midnight, first of month - 0 0 1 * *
        *      @weekly - Run once a week, midnight on Sun - 0 0 * * 0
        *      @daily - Run once a day, midnight - 0 0 * * *
        *      @hourly - Run once an hour, first minute - 0 * * * *
        *
        *@param CronExpression_FieldFactory $fieldFactory (optional) Field factory to use
        *
        * @return CronExpression
        */
        public static function factory($expression, \CronExpression_FieldFactory $fieldFactory = \null)
        {
        }
        /**
         * Parse a CRON expression
         *
         * @param string       $expression   CRON expression (e.g. '8 * * * *')
         * @param CronExpression_FieldFactory $fieldFactory Factory to create cron fields
         */
        public function __construct($expression, \CronExpression_FieldFactory $fieldFactory)
        {
        }
        /**
         * Set or change the CRON expression
         *
         * @param string $value CRON expression (e.g. 8 * * * *)
         *
         * @return CronExpression
         * @throws InvalidArgumentException if not a valid CRON expression
         */
        public function setExpression($value)
        {
        }
        /**
         * Set part of the CRON expression
         *
         * @param int    $position The position of the CRON expression to set
         * @param string $value    The value to set
         *
         * @return CronExpression
         * @throws InvalidArgumentException if the value is not valid for the part
         */
        public function setPart($position, $value)
        {
        }
        /**
         * Get a next run date relative to the current date or a specific date
         *
         * @param string|DateTime $currentTime (optional) Relative calculation date
         * @param int             $nth         (optional) Number of matches to skip before returning a
         *     matching next run date.  0, the default, will return the current
         *     date and time if the next run date falls on the current date and
         *     time.  Setting this value to 1 will skip the first match and go to
         *     the second match.  Setting this value to 2 will skip the first 2
         *     matches and so on.
         * @param bool $allowCurrentDate (optional) Set to TRUE to return the
         *     current date if it matches the cron expression
         *
         * @return DateTime
         * @throws RuntimeException on too many iterations
         */
        public function getNextRunDate($currentTime = 'now', $nth = 0, $allowCurrentDate = \false)
        {
        }
        /**
         * Get a previous run date relative to the current date or a specific date
         *
         * @param string|DateTime $currentTime      (optional) Relative calculation date
         * @param int             $nth              (optional) Number of matches to skip before returning
         * @param bool            $allowCurrentDate (optional) Set to TRUE to return the
         *     current date if it matches the cron expression
         *
         * @return DateTime
         * @throws RuntimeException on too many iterations
         * @see CronExpression::getNextRunDate
         */
        public function getPreviousRunDate($currentTime = 'now', $nth = 0, $allowCurrentDate = \false)
        {
        }
        /**
         * Get multiple run dates starting at the current date or a specific date
         *
         * @param int             $total            Set the total number of dates to calculate
         * @param string|DateTime $currentTime      (optional) Relative calculation date
         * @param bool            $invert           (optional) Set to TRUE to retrieve previous dates
         * @param bool            $allowCurrentDate (optional) Set to TRUE to return the
         *     current date if it matches the cron expression
         *
         * @return array Returns an array of run dates
         */
        public function getMultipleRunDates($total, $currentTime = 'now', $invert = \false, $allowCurrentDate = \false)
        {
        }
        /**
         * Get all or part of the CRON expression
         *
         * @param string $part (optional) Specify the part to retrieve or NULL to
         *      get the full cron schedule string.
         *
         * @return string|null Returns the CRON expression, a part of the
         *      CRON expression, or NULL if the part was specified but not found
         */
        public function getExpression($part = \null)
        {
        }
        /**
         * Helper method to output the full expression.
         *
         * @return string Full CRON expression
         */
        public function __toString()
        {
        }
        /**
         * Determine if the cron is due to run based on the current date or a
         * specific date.  This method assumes that the current number of
         * seconds are irrelevant, and should be called once per minute.
         *
         * @param string|DateTime $currentTime (optional) Relative calculation date
         *
         * @return bool Returns TRUE if the cron is due to run or FALSE if not
         */
        public function isDue($currentTime = 'now')
        {
        }
        /**
         * Get the next or previous run date of the expression relative to a date
         *
         * @param string|DateTime $currentTime      (optional) Relative calculation date
         * @param int             $nth              (optional) Number of matches to skip before returning
         * @param bool            $invert           (optional) Set to TRUE to go backwards in time
         * @param bool            $allowCurrentDate (optional) Set to TRUE to return the
         *     current date if it matches the cron expression
         *
         * @return DateTime
         * @throws RuntimeException on too many iterations
         */
        protected function getRunDate($currentTime = \null, $nth = 0, $invert = \false, $allowCurrentDate = \false)
        {
        }
    }
    /**
     * Hours field.  Allows: * , / -
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    class CronExpression_HoursField extends \CronExpression_AbstractField
    {
        /**
         * {@inheritdoc}
         */
        public function isSatisfiedBy(\DateTime $date, $value)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function increment(\DateTime $date, $invert = \false)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function validate($value)
        {
        }
    }
    /**
     * CRON field factory implementing a flyweight factory
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     * @link http://en.wikipedia.org/wiki/Cron
     */
    class CronExpression_FieldFactory
    {
        /**
         * @var array Cache of instantiated fields
         */
        private $fields = array();
        /**
         * Get an instance of a field object for a cron expression position
         *
         * @param int $position CRON expression position value to retrieve
         *
         * @return CronExpression_FieldInterface
         * @throws InvalidArgumentException if a position is not valid
         */
        public function getField($position)
        {
        }
    }
    /**
     * Year field.  Allows: * , / -
     *
     * @author Michael Dowling <mtdowling@gmail.com>
     */
    class CronExpression_YearField extends \CronExpression_AbstractField
    {
        /**
         * {@inheritdoc}
         */
        public function isSatisfiedBy(\DateTime $date, $value)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function increment(\DateTime $date, $invert = \false)
        {
        }
        /**
         * {@inheritdoc}
         */
        public function validate($value)
        {
        }
    }
    /**
     * Class ActionScheduler_AdminView_Deprecated
     *
     * Store deprecated public functions previously found in the ActionScheduler_AdminView class.
     * Keeps them out of the way of the main class.
     *
     * @codeCoverageIgnore
     */
    class ActionScheduler_AdminView_Deprecated
    {
        public function action_scheduler_post_type_args($args)
        {
        }
        /**
         * Customise the post status related views displayed on the Scheduled Actions administration screen.
         *
         * @param array $views An associative array of views and view labels which can be used to filter the 'scheduled-action' posts displayed on the Scheduled Actions administration screen.
         * @return array $views An associative array of views and view labels which can be used to filter the 'scheduled-action' posts displayed on the Scheduled Actions administration screen.
         */
        public function list_table_views($views)
        {
        }
        /**
         * Do not include the "Edit" action for the Scheduled Actions administration screen.
         *
         * Hooked to the 'bulk_actions-edit-action-scheduler' filter.
         *
         * @param array $actions An associative array of actions which can be performed on the 'scheduled-action' post type.
         * @return array $actions An associative array of actions which can be performed on the 'scheduled-action' post type.
         */
        public function bulk_actions($actions)
        {
        }
        /**
         * Completely customer the columns displayed on the Scheduled Actions administration screen.
         *
         * Because we can't filter the content of the default title and date columns, we need to recreate our own
         * custom columns for displaying those post fields. For the column content, @see self::list_table_column_content().
         *
         * @param array $columns An associative array of columns that are use for the table on the Scheduled Actions administration screen.
         * @return array $columns An associative array of columns that are use for the table on the Scheduled Actions administration screen.
         */
        public function list_table_columns($columns)
        {
        }
        /**
         * Make our custom title & date columns use defaulting title & date sorting.
         *
         * @param array $columns An associative array of columns that can be used to sort the table on the Scheduled Actions administration screen.
         * @return array $columns An associative array of columns that can be used to sort the table on the Scheduled Actions administration screen.
         */
        public static function list_table_sortable_columns($columns)
        {
        }
        /**
         * Print the content for our custom columns.
         *
         * @param string $column_name The key for the column for which we should output our content.
         * @param int $post_id The ID of the 'scheduled-action' post for which this row relates.
         */
        public static function list_table_column_content($column_name, $post_id)
        {
        }
        /**
         * Hide the inline "Edit" action for all 'scheduled-action' posts.
         *
         * Hooked to the 'post_row_actions' filter.
         *
         * @param array $actions An associative array of actions which can be performed on the 'scheduled-action' post type.
         * @return array $actions An associative array of actions which can be performed on the 'scheduled-action' post type.
         */
        public static function row_actions($actions, $post)
        {
        }
        /**
         * Run an action when triggered from the Action Scheduler administration screen.
         *
         * @codeCoverageIgnore
         */
        public static function maybe_execute_action()
        {
        }
        /**
         * Convert an interval of seconds into a two part human friendly string.
         *
         * The WordPress human_time_diff() function only calculates the time difference to one degree, meaning
         * even if an action is 1 day and 11 hours away, it will display "1 day". This funciton goes one step
         * further to display two degrees of accuracy.
         *
         * Based on Crontrol::interval() function by Edward Dale: https://wordpress.org/plugins/wp-crontrol/
         *
         * @param int $interval A interval in seconds.
         * @return string A human friendly string representation of the interval.
         */
        public static function admin_notices()
        {
        }
        /**
         * Filter search queries to allow searching by Claim ID (i.e. post_password).
         *
         * @param string $orderby MySQL orderby string.
         * @param WP_Query $query Instance of a WP_Query object
         * @return string MySQL orderby string.
         */
        public function custom_orderby($orderby, $query)
        {
        }
        /**
         * Filter search queries to allow searching by Claim ID (i.e. post_password).
         *
         * @param string $search MySQL search string.
         * @param WP_Query $query Instance of a WP_Query object
         * @return string MySQL search string.
         */
        public function search_post_password($search, $query)
        {
        }
        /**
         * Change messages when a scheduled action is updated.
         *
         * @param  array $messages
         * @return array
         */
        public function post_updated_messages($messages)
        {
        }
    }
    /**
     * Abstract class with common Queue Cleaner functionality.
     */
    abstract class ActionScheduler_Abstract_QueueRunner_Deprecated
    {
        /**
         * Get the maximum number of seconds a batch can run for.
         *
         * @deprecated 2.1.1
         * @return int The number of seconds.
         */
        protected function get_maximum_execution_time()
        {
        }
    }
    /**
     * Class ActionScheduler_Action
     */
    class ActionScheduler_Action
    {
        protected $hook = '';
        protected $args = array();
        /** @var ActionScheduler_Schedule */
        protected $schedule = \NULL;
        protected $group = '';
        public function __construct($hook, array $args = array(), \ActionScheduler_Schedule $schedule = \NULL, $group = '')
        {
        }
        public function execute()
        {
        }
        /**
         * @param string $hook
         */
        protected function set_hook($hook)
        {
        }
        public function get_hook()
        {
        }
        protected function set_schedule(\ActionScheduler_Schedule $schedule)
        {
        }
        /**
         * @return ActionScheduler_Schedule
         */
        public function get_schedule()
        {
        }
        protected function set_args(array $args)
        {
        }
        public function get_args()
        {
        }
        /**
         * @param string $group
         */
        protected function set_group($group)
        {
        }
        /**
         * @return string
         */
        public function get_group()
        {
        }
        /**
         * @return bool If the action has been finished
         */
        public function is_finished()
        {
        }
    }
    /**
     * Class ActionScheduler_NullAction
     */
    class ActionScheduler_NullAction extends \ActionScheduler_Action
    {
        public function __construct($hook = '', array $args = array(), \ActionScheduler_Schedule $schedule = \NULL)
        {
        }
        public function execute()
        {
        }
    }
    /**
     * Class ActionScheduler_wpPostStore_TaxonomyRegistrar
     * @codeCoverageIgnore
     */
    class ActionScheduler_wpPostStore_TaxonomyRegistrar
    {
        public function register()
        {
        }
        protected function taxonomy_args()
        {
        }
    }
    /**
     * Class ActionScheduler_FatalErrorMonitor
     */
    class ActionScheduler_FatalErrorMonitor
    {
        /** @var ActionScheduler_ActionClaim */
        private $claim = \NULL;
        /** @var ActionScheduler_Store */
        private $store = \NULL;
        private $action_id = 0;
        public function __construct(\ActionScheduler_Store $store)
        {
        }
        public function attach(\ActionScheduler_ActionClaim $claim)
        {
        }
        public function detach()
        {
        }
        public function track_current_action($action_id)
        {
        }
        public function untrack_action()
        {
        }
        public function handle_unexpected_shutdown()
        {
        }
    }
    /**
     * Abstract class with common Queue Cleaner functionality.
     */
    abstract class ActionScheduler_Abstract_QueueRunner extends \ActionScheduler_Abstract_QueueRunner_Deprecated
    {
        /** @var ActionScheduler_QueueCleaner */
        protected $cleaner;
        /** @var ActionScheduler_FatalErrorMonitor */
        protected $monitor;
        /** @var ActionScheduler_Store */
        protected $store;
        /**
         * The created time.
         *
         * Represents when the queue runner was constructed and used when calculating how long a PHP request has been running.
         * For this reason it should be as close as possible to the PHP request start time.
         *
         * @var int
         */
        private $created_time;
        /**
         * ActionScheduler_Abstract_QueueRunner constructor.
         *
         * @param ActionScheduler_Store             $store
         * @param ActionScheduler_FatalErrorMonitor $monitor
         * @param ActionScheduler_QueueCleaner      $cleaner
         */
        public function __construct(\ActionScheduler_Store $store = \null, \ActionScheduler_FatalErrorMonitor $monitor = \null, \ActionScheduler_QueueCleaner $cleaner = \null)
        {
        }
        /**
         * Process an individual action.
         *
         * @param int $action_id The action ID to process.
         */
        public function process_action($action_id)
        {
        }
        /**
         * Schedule the next instance of the action if necessary.
         *
         * @param ActionScheduler_Action $action
         */
        protected function schedule_next_instance(\ActionScheduler_Action $action)
        {
        }
        /**
         * Run the queue cleaner.
         *
         * @author Jeremy Pry
         */
        protected function run_cleanup()
        {
        }
        /**
         * Get the number of concurrent batches a runner allows.
         *
         * @return int
         */
        public function get_allowed_concurrent_batches()
        {
        }
        /**
         * Get the maximum number of seconds a batch can run for.
         *
         * @return int The number of seconds.
         */
        protected function get_time_limit()
        {
        }
        /**
         * Get the number of seconds the process has been running.
         *
         * @return int The number of seconds.
         */
        protected function get_execution_time()
        {
        }
        /**
         * Check if the host's max execution time is (likely) to be exceeded if processing more actions.
         *
         * @param int $processed_actions The number of actions processed so far - used to determine the likelihood of exceeding the time limit if processing another action
         * @return bool
         */
        protected function time_likely_to_be_exceeded($processed_actions)
        {
        }
        /**
         * Get memory limit
         *
         * Based on WP_Background_Process::get_memory_limit()
         *
         * @return int
         */
        protected function get_memory_limit()
        {
        }
        /**
         * Memory exceeded
         *
         * Ensures the batch process never exceeds 90% of the maximum WordPress memory.
         *
         * Based on WP_Background_Process::memory_exceeded()
         *
         * @return bool
         */
        protected function memory_exceeded()
        {
        }
        /**
         * See if the batch limits have been exceeded, which is when memory usage is almost at
         * the maximum limit, or the time to process more actions will exceed the max time limit.
         *
         * Based on WC_Background_Process::batch_limits_exceeded()
         *
         * @param int $processed_actions The number of actions processed so far - used to determine the likelihood of exceeding the time limit if processing another action
         * @return bool
         */
        protected function batch_limits_exceeded($processed_actions)
        {
        }
        /**
         * Process actions in the queue.
         *
         * @author Jeremy Pry
         * @return int The number of actions processed.
         */
        public abstract function run();
    }
    /**
     * Class ActionScheduler_Schedule
     */
    interface ActionScheduler_Schedule
    {
        /**
         * @param DateTime $after
         * @return DateTime|null
         */
        public function next(\DateTime $after = \NULL);
        /**
         * @return bool
         */
        public function is_recurring();
    }
    /**
     * Class ActionScheduler_IntervalSchedule
     */
    class ActionScheduler_IntervalSchedule implements \ActionScheduler_Schedule
    {
        /** @var DateTime */
        private $start = \NULL;
        private $start_timestamp = 0;
        private $interval_in_seconds = 0;
        public function __construct(\DateTime $start, $interval)
        {
        }
        /**
         * @param DateTime $after
         *
         * @return DateTime|null
         */
        public function next(\DateTime $after = \NULL)
        {
        }
        /**
         * @return bool
         */
        public function is_recurring()
        {
        }
        /**
         * @return int
         */
        public function interval_in_seconds()
        {
        }
        /**
         * For PHP 5.2 compat, since DateTime objects can't be serialized
         * @return array
         */
        public function __sleep()
        {
        }
        public function __wakeup()
        {
        }
    }
    /**
     * Class ActionScheduler_wcSystemStatus
     */
    class ActionScheduler_wcSystemStatus
    {
        /**
         * The active data stores
         *
         * @var ActionScheduler_Store
         */
        protected $store;
        function __construct($store)
        {
        }
        /**
         * Display action data, including number of actions grouped by status and the oldest & newest action in each status.
         *
         * Helpful to identify issues, like a clogged queue.
         */
        public function render()
        {
        }
        /**
         * Get oldest and newest scheduled dates for a given set of statuses.
         *
         * @param array $status_keys Set of statuses to find oldest & newest action for.
         * @return array
         */
        protected function get_oldest_and_newest($status_keys)
        {
        }
        /**
         * Get oldest or newest scheduled date for a given status.
         *
         * @param string $status Action status label/name string.
         * @param string $date_type Oldest or Newest.
         * @return DateTime
         */
        protected function get_action_status_date($status, $date_type = 'oldest')
        {
        }
        /**
         * Get oldest or newest scheduled date for a given status.
         *
         * @param array $status_labels Set of statuses to find oldest & newest action for.
         * @param array $action_counts Number of actions grouped by status.
         * @param array $oldest_and_newest Date of the oldest and newest action with each status.
         */
        protected function get_template($status_labels, $action_counts, $oldest_and_newest)
        {
        }
        /**
         * is triggered when invoking inaccessible methods in an object context.
         *
         * @param $name      string
         * @param $arguments array
         *
         * @return mixed
         * @link https://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods
         */
        public function __call($name, $arguments)
        {
        }
    }
    /**
     * Class ActionScheduler_TimezoneHelper
     */
    abstract class ActionScheduler_TimezoneHelper
    {
        private static $local_timezone = \NULL;
        /**
         * Set a DateTime's timezone to the WordPress site's timezone, or a UTC offset
         * if no timezone string is available.
         *
         * @since  2.1.0
         *
         * @param DateTime $date
         * @return ActionScheduler_DateTime
         */
        public static function set_local_timezone(\DateTime $date)
        {
        }
        /**
         * Helper to retrieve the timezone string for a site until a WP core method exists
         * (see https://core.trac.wordpress.org/ticket/24730).
         *
         * Adapted from wc_timezone_string() and https://secure.php.net/manual/en/function.timezone-name-from-abbr.php#89155.
         *
         * If no timezone string is set, and its not possible to match the UTC offset set for the site to a timezone
         * string, then an empty string will be returned, and the UTC offset should be used to set a DateTime's
         * timezone.
         *
         * @since 2.1.0
         * @return string PHP timezone string for the site or empty if no timezone string is available.
         */
        protected static function get_local_timezone_string($reset = \false)
        {
        }
        /**
         * Get timezone offset in seconds.
         *
         * @since  2.1.0
         * @return float
         */
        protected static function get_local_timezone_offset()
        {
        }
        /**
         * @deprecated 2.1.0
         */
        public static function get_local_timezone($reset = \FALSE)
        {
        }
    }
    /**
     * WP CLI Queue runner.
     *
     * This class can only be called from within a WP CLI instance.
     */
    class ActionScheduler_WPCLI_QueueRunner extends \ActionScheduler_Abstract_QueueRunner
    {
        /** @var array */
        protected $actions;
        /** @var  ActionScheduler_ActionClaim */
        protected $claim;
        /** @var \cli\progress\Bar */
        protected $progress_bar;
        /**
         * ActionScheduler_WPCLI_QueueRunner constructor.
         *
         * @param ActionScheduler_Store             $store
         * @param ActionScheduler_FatalErrorMonitor $monitor
         * @param ActionScheduler_QueueCleaner      $cleaner
         *
         * @throws Exception When this is not run within WP CLI
         */
        public function __construct(\ActionScheduler_Store $store = \null, \ActionScheduler_FatalErrorMonitor $monitor = \null, \ActionScheduler_QueueCleaner $cleaner = \null)
        {
        }
        /**
         * Set up the Queue before processing.
         *
         * @author Jeremy Pry
         *
         * @param int    $batch_size The batch size to process.
         * @param array  $hooks      The hooks being used to filter the actions claimed in this batch.
         * @param string $group      The group of actions to claim with this batch.
         * @param bool   $force      Whether to force running even with too many concurrent processes.
         *
         * @return int The number of actions that will be run.
         * @throws \WP_CLI\ExitException When there are too many concurrent batches.
         */
        public function setup($batch_size, $hooks = array(), $group = '', $force = \false)
        {
        }
        /**
         * Add our hooks to the appropriate actions.
         *
         * @author Jeremy Pry
         */
        protected function add_hooks()
        {
        }
        /**
         * Set up the WP CLI progress bar.
         *
         * @author Jeremy Pry
         */
        protected function setup_progress_bar()
        {
        }
        /**
         * Process actions in the queue.
         *
         * @author Jeremy Pry
         * @return int The number of actions processed.
         */
        public function run()
        {
        }
        /**
         * Handle WP CLI message when the action is starting.
         *
         * @author Jeremy Pry
         *
         * @param $action_id
         */
        public function before_execute($action_id)
        {
        }
        /**
         * Handle WP CLI message when the action has completed.
         *
         * @author Jeremy Pry
         *
         * @param int $action_id
         * @param null|ActionScheduler_Action $action The instance of the action. Default to null for backward compatibility.
         */
        public function after_execute($action_id, $action = \null)
        {
        }
        /**
         * Handle WP CLI message when the action has failed.
         *
         * @author Jeremy Pry
         *
         * @param int       $action_id
         * @param Exception $exception
         * @throws \WP_CLI\ExitException With failure message.
         */
        public function action_failed($action_id, $exception)
        {
        }
        /**
         * Sleep and help avoid hitting memory limit
         *
         * @param int $sleep_time Amount of seconds to sleep
         */
        protected function stop_the_insanity($sleep_time = 0)
        {
        }
        /**
         * Maybe trigger the stop_the_insanity() method to free up memory.
         */
        protected function maybe_stop_the_insanity()
        {
        }
    }
    /**
     * Class ActionScheduler_Logger
     * @codeCoverageIgnore
     */
    abstract class ActionScheduler_Logger
    {
        private static $logger = \NULL;
        /**
         * @return ActionScheduler_Logger
         */
        public static function instance()
        {
        }
        /**
         * @param string $action_id
         * @param string $message
         * @param DateTime $date
         *
         * @return string The log entry ID
         */
        public abstract function log($action_id, $message, \DateTime $date = \NULL);
        /**
         * @param string $entry_id
         *
         * @return ActionScheduler_LogEntry
         */
        public abstract function get_entry($entry_id);
        /**
         * @param string $action_id
         *
         * @return ActionScheduler_LogEntry[]
         */
        public abstract function get_logs($action_id);
        /**
         * @codeCoverageIgnore
         */
        public function init()
        {
        }
        public function log_stored_action($action_id)
        {
        }
        public function log_canceled_action($action_id)
        {
        }
        public function log_started_action($action_id)
        {
        }
        public function log_completed_action($action_id)
        {
        }
        public function log_failed_action($action_id, \Exception $exception)
        {
        }
        public function log_timed_out_action($action_id, $timeout)
        {
        }
        public function log_unexpected_shutdown($action_id, $error)
        {
        }
        public function log_reset_action($action_id)
        {
        }
        public function log_ignored_action($action_id)
        {
        }
        public function log_failed_fetch_action($action_id)
        {
        }
    }
    /**
     * Class ActionScheduler_wpCommentLogger
     */
    class ActionScheduler_wpCommentLogger extends \ActionScheduler_Logger
    {
        const AGENT = 'ActionScheduler';
        const TYPE = 'action_log';
        /**
         * @param string $action_id
         * @param string $message
         * @param DateTime $date
         *
         * @return string The log entry ID
         */
        public function log($action_id, $message, \DateTime $date = \NULL)
        {
        }
        protected function create_wp_comment($action_id, $message, \DateTime $date)
        {
        }
        /**
         * @param string $entry_id
         *
         * @return ActionScheduler_LogEntry
         */
        public function get_entry($entry_id)
        {
        }
        /**
         * @param string $action_id
         *
         * @return ActionScheduler_LogEntry[]
         */
        public function get_logs($action_id)
        {
        }
        protected function get_comment($comment_id)
        {
        }
        /**
         * @param WP_Comment_Query $query
         */
        public function filter_comment_queries($query)
        {
        }
        /**
         * @param array $clauses
         * @param WP_Comment_Query $query
         *
         * @return array
         */
        public function filter_comment_query_clauses($clauses, $query)
        {
        }
        /**
         * Make sure Action Scheduler logs are excluded from comment feeds, which use WP_Query, not
         * the WP_Comment_Query class handled by @see self::filter_comment_queries().
         *
         * @param string $where
         * @param WP_Query $query
         *
         * @return string
         */
        public function filter_comment_feed($where, $query)
        {
        }
        /**
         * Return a SQL clause to exclude Action Scheduler comments.
         *
         * @return string
         */
        protected function get_where_clause()
        {
        }
        /**
         * Remove action log entries from wp_count_comments()
         *
         * @param array $stats
         * @param int $post_id
         *
         * @return object
         */
        public function filter_comment_count($stats, $post_id)
        {
        }
        /**
         * Retrieve the comment counts from our cache, or the database if the cached version isn't set.
         *
         * @return object
         */
        protected function get_comment_count()
        {
        }
        /**
         * Delete comment count cache whenever there is new comment or the status of a comment changes. Cache
         * will be regenerated next time ActionScheduler_wpCommentLogger::filter_comment_count() is called.
         */
        public function delete_comment_count_cache()
        {
        }
        /**
         * @codeCoverageIgnore
         */
        public function init()
        {
        }
        public function disable_comment_counting()
        {
        }
        public function enable_comment_counting()
        {
        }
    }
    /**
     * Class ActionScheduler_ActionClaim
     */
    class ActionScheduler_ActionClaim
    {
        private $id = '';
        private $action_ids = array();
        public function __construct($id, array $action_ids)
        {
        }
        public function get_id()
        {
        }
        public function get_actions()
        {
        }
    }
    /**
     * Class ActionScheduler_Store
     * @codeCoverageIgnore
     */
    abstract class ActionScheduler_Store
    {
        const STATUS_COMPLETE = 'complete';
        const STATUS_PENDING = 'pending';
        const STATUS_RUNNING = 'in-progress';
        const STATUS_FAILED = 'failed';
        const STATUS_CANCELED = 'canceled';
        /** @var ActionScheduler_Store */
        private static $store = \NULL;
        /**
         * @param ActionScheduler_Action $action
         * @param DateTime $scheduled_date Optional Date of the first instance
         *        to store. Otherwise uses the first date of the action's
         *        schedule.
         *
         * @return string The action ID
         */
        public abstract function save_action(\ActionScheduler_Action $action, \DateTime $scheduled_date = \NULL);
        /**
         * @param string $action_id
         *
         * @return ActionScheduler_Action
         */
        public abstract function fetch_action($action_id);
        /**
         * @param string $hook
         * @param array $params
         * @return string ID of the next action matching the criteria
         */
        public abstract function find_action($hook, $params = array());
        /**
         * @param array $query
         * @return array The IDs of actions matching the query
         */
        public abstract function query_actions($query = array());
        /**
         * Get a count of all actions in the store, grouped by status
         *
         * @return array
         */
        public abstract function action_counts();
        /**
         * @param string $action_id
         */
        public abstract function cancel_action($action_id);
        /**
         * @param string $action_id
         */
        public abstract function delete_action($action_id);
        /**
         * @param string $action_id
         *
         * @return DateTime The date the action is schedule to run, or the date that it ran.
         */
        public abstract function get_date($action_id);
        /**
         * @param int      $max_actions
         * @param DateTime $before_date Claim only actions schedule before the given date. Defaults to now.
         * @param array    $hooks       Claim only actions with a hook or hooks.
         * @param string   $group       Claim only actions in the given group.
         *
         * @return ActionScheduler_ActionClaim
         */
        public abstract function stake_claim($max_actions = 10, \DateTime $before_date = \null, $hooks = array(), $group = '');
        /**
         * @return int
         */
        public abstract function get_claim_count();
        /**
         * @param ActionScheduler_ActionClaim $claim
         */
        public abstract function release_claim(\ActionScheduler_ActionClaim $claim);
        /**
         * @param string $action_id
         */
        public abstract function unclaim_action($action_id);
        /**
         * @param string $action_id
         */
        public abstract function mark_failure($action_id);
        /**
         * @param string $action_id
         */
        public abstract function log_execution($action_id);
        /**
         * @param string $action_id
         */
        public abstract function mark_complete($action_id);
        /**
         * @param string $action_id
         *
         * @return string
         */
        public abstract function get_status($action_id);
        /**
         * @param string $action_id
         * @return mixed
         */
        public abstract function get_claim_id($action_id);
        /**
         * @param string $claim_id
         * @return array
         */
        public abstract function find_actions_by_claim_id($claim_id);
        /**
         * @param string $comparison_operator
         * @return string
         */
        protected function validate_sql_comparator($comparison_operator)
        {
        }
        /**
         * Get the time MySQL formated date/time string for an action's (next) scheduled date.
         *
         * @param ActionScheduler_Action $action
         * @param DateTime $scheduled_date (optional)
         * @return string
         */
        protected function get_scheduled_date_string(\ActionScheduler_Action $action, \DateTime $scheduled_date = \NULL)
        {
        }
        /**
         * Get the time MySQL formated date/time string for an action's (next) scheduled date.
         *
         * @param ActionScheduler_Action $action
         * @param DateTime $scheduled_date (optional)
         * @return string
         */
        protected function get_scheduled_date_string_local(\ActionScheduler_Action $action, \DateTime $scheduled_date = \NULL)
        {
        }
        /**
         * @return array
         */
        public function get_status_labels()
        {
        }
        public function init()
        {
        }
        /**
         * @return ActionScheduler_Store
         */
        public static function instance()
        {
        }
        /**
         * Get the site's local time.
         *
         * @deprecated 2.1.0
         * @return DateTimeZone
         */
        protected function get_local_timezone()
        {
        }
    }
    /**
     * Class ActionScheduler_wpPostStore
     */
    class ActionScheduler_wpPostStore extends \ActionScheduler_Store
    {
        const POST_TYPE = 'scheduled-action';
        const GROUP_TAXONOMY = 'action-group';
        const SCHEDULE_META_KEY = '_action_manager_schedule';
        /** @var DateTimeZone */
        protected $local_timezone = \NULL;
        /** @var int */
        private static $max_index_length = 191;
        public function save_action(\ActionScheduler_Action $action, \DateTime $scheduled_date = \NULL)
        {
        }
        protected function create_post_array(\ActionScheduler_Action $action, \DateTime $scheduled_date = \NULL)
        {
        }
        protected function save_post_array($post_array)
        {
        }
        public function filter_insert_post_data($postdata)
        {
        }
        /**
         * Create a (probably unique) post name for scheduled actions in a more performant manner than wp_unique_post_slug().
         *
         * When an action's post status is transitioned to something other than 'draft', 'pending' or 'auto-draft, like 'publish'
         * or 'failed' or 'trash', WordPress will find a unique slug (stored in post_name column) using the wp_unique_post_slug()
         * function. This is done to ensure URL uniqueness. The approach taken by wp_unique_post_slug() is to iterate over existing
         * post_name values that match, and append a number 1 greater than the largest. This makes sense when manually creating a
         * post from the Edit Post screen. It becomes a bottleneck when automatically processing thousands of actions, with a
         * database containing thousands of related post_name values.
         *
         * WordPress 5.1 introduces the 'pre_wp_unique_post_slug' filter for plugins to address this issue.
         *
         * We can short-circuit WordPress's wp_unique_post_slug() approach using the 'pre_wp_unique_post_slug' filter. This
         * method is available to be used as a callback on that filter. It provides a more scalable approach to generating a
         * post_name/slug that is probably unique. Because Action Scheduler never actually uses the post_name field, or an
         * action's slug, being probably unique is good enough.
         *
         * For more backstory on this issue, see:
         * - https://github.com/Prospress/action-scheduler/issues/44 and
         * - https://core.trac.wordpress.org/ticket/21112
         *
         * @param string $override_slug Short-circuit return value.
         * @param string $slug          The desired slug (post_name).
         * @param int    $post_ID       Post ID.
         * @param string $post_status   The post status.
         * @param string $post_type     Post type.
         * @return string
         */
        public function set_unique_post_slug($override_slug, $slug, $post_ID, $post_status, $post_type)
        {
        }
        protected function save_post_schedule($post_id, $schedule)
        {
        }
        protected function save_action_group($post_id, $group)
        {
        }
        public function fetch_action($action_id)
        {
        }
        protected function get_post($action_id)
        {
        }
        protected function get_null_action()
        {
        }
        protected function make_action_from_post($post)
        {
        }
        /**
         * @param string $post_status
         *
         * @throws InvalidArgumentException if $post_status not in known status fields returned by $this->get_status_labels()
         * @return string
         */
        protected function get_action_status_by_post_status($post_status)
        {
        }
        /**
         * @param string $action_status
         * @throws InvalidArgumentException if $post_status not in known status fields returned by $this->get_status_labels()
         * @return string
         */
        protected function get_post_status_by_action_status($action_status)
        {
        }
        /**
         * @param string $hook
         * @param array $params
         *
         * @return string ID of the next action matching the criteria or NULL if not found
         */
        public function find_action($hook, $params = array())
        {
        }
        /**
         * Returns the SQL statement to query (or count) actions.
         *
         * @param array $query Filtering options
         * @param string $select_or_count  Whether the SQL should select and return the IDs or just the row count
         * @throws InvalidArgumentException if $select_or_count not count or select
         * @return string SQL statement. The returned SQL is already properly escaped.
         */
        protected function get_query_actions_sql(array $query, $select_or_count = 'select')
        {
        }
        /**
         * @param array $query
         * @param string $query_type Whether to select or count the results. Default, select.
         * @return string|array The IDs of actions matching the query
         */
        public function query_actions($query = array(), $query_type = 'select')
        {
        }
        /**
         * Get a count of all actions in the store, grouped by status
         *
         * @return array
         */
        public function action_counts()
        {
        }
        /**
         * @param string $action_id
         *
         * @throws InvalidArgumentException
         */
        public function cancel_action($action_id)
        {
        }
        public function delete_action($action_id)
        {
        }
        /**
         * @param string $action_id
         *
         * @throws InvalidArgumentException
         * @return ActionScheduler_DateTime The date the action is schedule to run, or the date that it ran.
         */
        public function get_date($action_id)
        {
        }
        /**
         * @param string $action_id
         *
         * @throws InvalidArgumentException
         * @return ActionScheduler_DateTime The date the action is schedule to run, or the date that it ran.
         */
        public function get_date_gmt($action_id)
        {
        }
        /**
         * @param int      $max_actions
         * @param DateTime $before_date Jobs must be schedule before this date. Defaults to now.
         * @param array    $hooks       Claim only actions with a hook or hooks.
         * @param string   $group       Claim only actions in the given group.
         *
         * @return ActionScheduler_ActionClaim
         * @throws RuntimeException When there is an error staking a claim.
         * @throws InvalidArgumentException When the given group is not valid.
         */
        public function stake_claim($max_actions = 10, \DateTime $before_date = \null, $hooks = array(), $group = '')
        {
        }
        /**
         * @return int
         */
        public function get_claim_count()
        {
        }
        protected function generate_claim_id()
        {
        }
        /**
         * @param string   $claim_id
         * @param int      $limit
         * @param DateTime $before_date Should use UTC timezone.
         * @param array    $hooks       Claim only actions with a hook or hooks.
         * @param string   $group       Claim only actions in the given group.
         *
         * @return int The number of actions that were claimed
         * @throws RuntimeException When there is a database error.
         * @throws InvalidArgumentException When the group is invalid.
         */
        protected function claim_actions($claim_id, $limit, \DateTime $before_date = \null, $hooks = array(), $group = '')
        {
        }
        /**
         * Get IDs of actions within a certain group and up to a certain date/time.
         *
         * @param string   $group The group to use in finding actions.
         * @param int      $limit The number of actions to retrieve.
         * @param DateTime $date  DateTime object representing cutoff time for actions. Actions retrieved will be
         *                        up to and including this DateTime.
         *
         * @return array IDs of actions in the appropriate group and before the appropriate time.
         * @throws InvalidArgumentException When the group does not exist.
         */
        protected function get_actions_by_group($group, $limit, \DateTime $date)
        {
        }
        /**
         * @param string $claim_id
         * @return array
         */
        public function find_actions_by_claim_id($claim_id)
        {
        }
        public function release_claim(\ActionScheduler_ActionClaim $claim)
        {
        }
        /**
         * @param string $action_id
         */
        public function unclaim_action($action_id)
        {
        }
        public function mark_failure($action_id)
        {
        }
        /**
         * Return an action's claim ID, as stored in the post password column
         *
         * @param string $action_id
         * @return mixed
         */
        public function get_claim_id($action_id)
        {
        }
        /**
         * Return an action's status, as stored in the post status column
         *
         * @param string $action_id
         * @return mixed
         */
        public function get_status($action_id)
        {
        }
        private function get_post_column($action_id, $column_name)
        {
        }
        /**
         * @param string $action_id
         */
        public function log_execution($action_id)
        {
        }
        public function mark_complete($action_id)
        {
        }
        /**
         * InnoDB indexes have a maximum size of 767 bytes by default, which is only 191 characters with utf8mb4.
         *
         * Previously, AS wasn't concerned about args length, as we used the (unindex) post_content column. However,
         * as we prepare to move to custom tables, and can use an indexed VARCHAR column instead, we want to warn
         * developers of this impending requirement.
         *
         * @param ActionScheduler_Action $action
         */
        protected function validate_action(\ActionScheduler_Action $action)
        {
        }
        /**
         * @codeCoverageIgnore
         */
        public function init()
        {
        }
        /**
         * Validate that we could decode action arguments.
         *
         * @param mixed $args      The decoded arguments.
         * @param int   $action_id The action ID.
         *
         * @throws ActionScheduler_InvalidActionException When the decoded arguments are invalid.
         */
        private function validate_args($args, $action_id)
        {
        }
    }
    /**
     * Class ActionScheduler_wpPostStore_PostStatusRegistrar
     * @codeCoverageIgnore
     */
    class ActionScheduler_wpPostStore_PostStatusRegistrar
    {
        public function register()
        {
        }
        /**
         * Build the args array for the post type definition
         *
         * @return array
         */
        protected function post_status_args()
        {
        }
        /**
         * Build the args array for the post type definition
         *
         * @return array
         */
        protected function post_status_failed_labels()
        {
        }
        /**
         * Build the args array for the post type definition
         *
         * @return array
         */
        protected function post_status_running_labels()
        {
        }
    }
    /**
     * Class ActionScheduler_SimpleSchedule
     */
    class ActionScheduler_SimpleSchedule implements \ActionScheduler_Schedule
    {
        private $date = \NULL;
        private $timestamp = 0;
        public function __construct(\DateTime $date)
        {
        }
        /**
         * @param DateTime $after
         *
         * @return DateTime|null
         */
        public function next(\DateTime $after = \NULL)
        {
        }
        /**
         * @return bool
         */
        public function is_recurring()
        {
        }
        /**
         * For PHP 5.2 compat, since DateTime objects can't be serialized
         * @return array
         */
        public function __sleep()
        {
        }
        public function __wakeup()
        {
        }
    }
    /**
     * Class ActionScheduler
     * @codeCoverageIgnore
     */
    abstract class ActionScheduler
    {
        private static $plugin_file = '';
        /** @var ActionScheduler_ActionFactory */
        private static $factory = \NULL;
        public static function factory()
        {
        }
        public static function store()
        {
        }
        public static function logger()
        {
        }
        public static function runner()
        {
        }
        public static function admin_view()
        {
        }
        /**
         * Get the absolute system path to the plugin directory, or a file therein
         * @static
         * @param string $path
         * @return string
         */
        public static function plugin_path($path)
        {
        }
        /**
         * Get the absolute URL to the plugin directory, or a file therein
         * @static
         * @param string $path
         * @return string
         */
        public static function plugin_url($path)
        {
        }
        public static function autoload($class)
        {
        }
        /**
         * Initialize the plugin
         *
         * @static
         * @param string $plugin_file
         */
        public static function init($plugin_file)
        {
        }
        public final function __clone()
        {
        }
        public final function __wakeup()
        {
        }
        private final function __construct()
        {
        }
        /** Deprecated **/
        public static function get_datetime_object($when = \null, $timezone = 'UTC')
        {
        }
    }
    /**
     * Class ActionScheduler_QueueRunner
     */
    class ActionScheduler_QueueRunner extends \ActionScheduler_Abstract_QueueRunner
    {
        const WP_CRON_HOOK = 'action_scheduler_run_queue';
        const WP_CRON_SCHEDULE = 'every_minute';
        /** @var ActionScheduler_QueueRunner  */
        private static $runner = \null;
        /**
         * @return ActionScheduler_QueueRunner
         * @codeCoverageIgnore
         */
        public static function instance()
        {
        }
        /**
         * ActionScheduler_QueueRunner constructor.
         *
         * @param ActionScheduler_Store             $store
         * @param ActionScheduler_FatalErrorMonitor $monitor
         * @param ActionScheduler_QueueCleaner      $cleaner
         */
        public function __construct(\ActionScheduler_Store $store = \null, \ActionScheduler_FatalErrorMonitor $monitor = \null, \ActionScheduler_QueueCleaner $cleaner = \null)
        {
        }
        /**
         * @codeCoverageIgnore
         */
        public function init()
        {
        }
        public function run()
        {
        }
        protected function do_batch($size = 100)
        {
        }
        /**
         * Running large batches can eat up memory, as WP adds data to its object cache.
         *
         * If using a persistent object store, this has the side effect of flushing that
         * as well, so this is disabled by default. To enable:
         *
         * add_filter( 'action_scheduler_queue_runner_flush_cache', '__return_true' );
         */
        protected function clear_caches()
        {
        }
        public function add_wp_cron_schedule($schedules)
        {
        }
    }
    /**
     * ActionScheduler DateTime class.
     *
     * This is a custom extension to DateTime that
     */
    class ActionScheduler_DateTime extends \DateTime
    {
        /**
         * UTC offset.
         *
         * Only used when a timezone is not set. When a timezone string is
         * used, this will be set to 0.
         *
         * @var int
         */
        protected $utcOffset = 0;
        /**
         * Get the unix timestamp of the current object.
         *
         * Missing in PHP 5.2 so just here so it can be supported consistently.
         *
         * @return int
         */
        public function getTimestamp()
        {
        }
        /**
         * Set the UTC offset.
         *
         * This represents a fixed offset instead of a timezone setting.
         *
         * @param $offset
         */
        public function setUtcOffset($offset)
        {
        }
        /**
         * Returns the timezone offset.
         *
         * @return int
         * @link http://php.net/manual/en/datetime.getoffset.php
         */
        public function getOffset()
        {
        }
        /**
         * Set the TimeZone associated with the DateTime
         *
         * @param DateTimeZone $timezone
         *
         * @return static
         * @link http://php.net/manual/en/datetime.settimezone.php
         */
        public function setTimezone($timezone)
        {
        }
        /**
         * Get the timestamp with the WordPress timezone offset added or subtracted.
         *
         * @since  3.0.0
         * @return int
         */
        public function getOffsetTimestamp()
        {
        }
    }
    /**
     * Class ActionScheduler_AdminView
     * @codeCoverageIgnore
     */
    class ActionScheduler_AdminView extends \ActionScheduler_AdminView_Deprecated
    {
        private static $admin_view = \NULL;
        /**
         * @return ActionScheduler_QueueRunner
         * @codeCoverageIgnore
         */
        public static function instance()
        {
        }
        /**
         * @codeCoverageIgnore
         */
        public function init()
        {
        }
        public function system_status_report()
        {
        }
        /**
         * Registers action-scheduler into WooCommerce > System status.
         *
         * @param array $tabs An associative array of tab key => label.
         * @return array $tabs An associative array of tab key => label, including Action Scheduler's tabs
         */
        public function register_system_status_tab(array $tabs)
        {
        }
        /**
         * Include Action Scheduler's administration under the Tools menu.
         *
         * A menu under the Tools menu is important for backward compatibility (as that's
         * where it started), and also provides more convenient access than the WooCommerce
         * System Status page, and for sites where WooCommerce isn't active.
         */
        public function register_menu()
        {
        }
        /**
         * Renders the Admin UI
         */
        public function render_admin_ui()
        {
        }
    }
    /**
     * Action Scheduler Abstract List Table class
     *
     * This abstract class enhances WP_List_Table making it ready to use.
     *
     * By extending this class we can focus on describing how our table looks like,
     * which columns needs to be shown, filter, ordered by and more and forget about the details.
     *
     * This class supports:
     *	- Bulk actions
     *	- Search
     *  - Sortable columns
     *  - Automatic translations of the columns
     *
     * @codeCoverageIgnore
     * @since  2.0.0
     */
    abstract class ActionScheduler_Abstract_ListTable extends \WP_List_Table
    {
        /**
         * The table name
         */
        protected $table_name;
        /**
         * Package name, used in translations
         */
        protected $package;
        /**
         * How many items do we render per page?
         */
        protected $items_per_page = 10;
        /**
         * Enables search in this table listing. If this array
         * is empty it means the listing is not searchable.
         */
        protected $search_by = array();
        /**
         * Columns to show in the table listing. It is a key => value pair. The
         * key must much the table column name and the value is the label, which is
         * automatically translated.
         */
        protected $columns = array();
        /**
         * Defines the row-actions. It expects an array where the key
         * is the column name and the value is an array of actions.
         *
         * The array of actions are key => value, where key is the method name
         * (with the prefix row_action_<key>) and the value is the label
         * and title.
         */
        protected $row_actions = array();
        /**
         * The Primary key of our table
         */
        protected $ID = 'ID';
        /**
         * Enables sorting, it expects an array
         * of columns (the column names are the values)
         */
        protected $sort_by = array();
        protected $filter_by = array();
        /**
         * @var array The status name => count combinations for this table's items. Used to display status filters.
         */
        protected $status_counts = array();
        /**
         * @var array Notices to display when loading the table. Array of arrays of form array( 'class' => {updated|error}, 'message' => 'This is the notice text display.' ).
         */
        protected $admin_notices = array();
        /**
         * @var string Localised string displayed in the <h1> element above the able.
         */
        protected $table_header;
        /**
         * Enables bulk actions. It must be an array where the key is the action name
         * and the value is the label (which is translated automatically). It is important
         * to notice that it will check that the method exists (`bulk_$name`) and will throw
         * an exception if it does not exists.
         *
         * This class will automatically check if the current request has a bulk action, will do the
         * validations and afterwards will execute the bulk method, with two arguments. The first argument
         * is the array with primary keys, the second argument is a string with a list of the primary keys,
         * escaped and ready to use (with `IN`).
         */
        protected $bulk_actions = array();
        /**
         * Makes translation easier, it basically just wraps
         * `_x` with some default (the package name)
         */
        protected function translate($text, $context = '')
        {
        }
        /**
         * Reads `$this->bulk_actions` and returns an array that WP_List_Table understands. It
         * also validates that the bulk method handler exists. It throws an exception because
         * this is a library meant for developers and missing a bulk method is a development-time error.
         */
        protected function get_bulk_actions()
        {
        }
        /**
         * Checks if the current request has a bulk action. If that is the case it will validate and will
         * execute the bulk method handler. Regardless if the action is valid or not it will redirect to
         * the previous page removing the current arguments that makes this request a bulk action.
         */
        protected function process_bulk_action()
        {
        }
        /**
         * Default code for deleting entries. We trust ids_sql because it is
         * validated already by process_bulk_action()
         */
        protected function bulk_delete(array $ids, $ids_sql)
        {
        }
        /**
         * Prepares the _column_headers property which is used by WP_Table_List at rendering.
         * It merges the columns and the sortable columns.
         */
        protected function prepare_column_headers()
        {
        }
        /**
         * Reads $this->sort_by and returns the columns name in a format that WP_Table_List
         * expects
         */
        public function get_sortable_columns()
        {
        }
        /**
         * Returns the columns names for rendering. It adds a checkbox for selecting everything
         * as the first column
         */
        public function get_columns()
        {
        }
        /**
         * Get prepared LIMIT clause for items query
         *
         * @global wpdb $wpdb
         *
         * @return string Prepared LIMIT clause for items query.
         */
        protected function get_items_query_limit()
        {
        }
        /**
         * Returns the number of items to offset/skip for this current view.
         *
         * @return int
         */
        protected function get_items_offset()
        {
        }
        /**
         * Get prepared OFFSET clause for items query
         *
         * @global wpdb $wpdb
         *
         * @return string Prepared OFFSET clause for items query.
         */
        protected function get_items_query_offset()
        {
        }
        /**
         * Prepares the ORDER BY sql statement. It uses `$this->sort_by` to know which
         * columns are sortable. This requests validates the orderby $_GET parameter is a valid
         * column and sortable. It will also use order (ASC|DESC) using DESC by default.
         */
        protected function get_items_query_order()
        {
        }
        /**
         * Return the sortable column specified for this request to order the results by, if any.
         *
         * @return string
         */
        protected function get_request_orderby()
        {
        }
        /**
         * Return the sortable column order specified for this request.
         *
         * @return string
         */
        protected function get_request_order()
        {
        }
        /**
         * Return the status filter for this request, if any.
         *
         * @return string
         */
        protected function get_request_status()
        {
        }
        /**
         * Return the search filter for this request, if any.
         *
         * @return string
         */
        protected function get_request_search_query()
        {
        }
        /**
         * Process and return the columns name. This is meant for using with SQL, this means it
         * always includes the primary key.
         *
         * @return array
         */
        protected function get_table_columns()
        {
        }
        /**
         * Check if the current request is doing a "full text" search. If that is the case
         * prepares the SQL to search texts using LIKE.
         *
         * If the current request does not have any search or if this list table does not support
         * that feature it will return an empty string.
         *
         * TODO:
         *   - Improve search doing LIKE by word rather than by phrases.
         *
         * @return string
         */
        protected function get_items_query_search()
        {
        }
        /**
         * Prepares the SQL to filter rows by the options defined at `$this->filter_by`. Before trusting
         * any data sent by the user it validates that it is a valid option.
         */
        protected function get_items_query_filters()
        {
        }
        /**
         * Prepares the data to feed WP_Table_List.
         *
         * This has the core for selecting, sorting and filting data. To keep the code simple
         * its logic is split among many methods (get_items_query_*).
         *
         * Beside populating the items this function will also count all the records that matches
         * the filtering criteria and will do fill the pagination variables.
         */
        public function prepare_items()
        {
        }
        public function extra_tablenav($which)
        {
        }
        /**
         * Set the data for displaying. It will attempt to unserialize (There is a chance that some columns
         * are serialized). This can be override in child classes for futher data transformation.
         */
        protected function set_items(array $items)
        {
        }
        /**
         * Renders the checkbox for each row, this is the first column and it is named ID regardless
         * of how the primary key is named (to keep the code simpler). The bulk actions will do the proper
         * name transformation though using `$this->ID`.
         */
        public function column_cb($row)
        {
        }
        /**
         * Renders the row-actions.
         *
         * This method renders the action menu, it reads the definition from the $row_actions property,
         * and it checks that the row action method exists before rendering it.
         *
         * @param array $row     Row to render
         * @param $column_name   Current row
         * @return
         */
        protected function maybe_render_actions($row, $column_name)
        {
        }
        protected function process_row_actions()
        {
        }
        /**
         * Default column formatting, it will escape everythig for security.
         */
        public function column_default($item, $column_name)
        {
        }
        /**
         * Display the table heading and search query, if any
         */
        protected function display_header()
        {
        }
        /**
         * Display the table heading and search query, if any
         */
        protected function display_admin_notices()
        {
        }
        /**
         * Prints the available statuses so the user can click to filter.
         */
        protected function display_filter_by_status()
        {
        }
        /**
         * Renders the table list, we override the original class to render the table inside a form
         * and to render any needed HTML (like the search box). By doing so the callee of a function can simple
         * forget about any extra HTML.
         */
        protected function display_table()
        {
        }
        /**
         * Render the list table page, including header, notices, status filters and table.
         */
        public function display_page()
        {
        }
        /**
         * Get the text to display in the search box on the list table.
         */
        protected function get_search_box_placeholder()
        {
        }
    }
    /**
     * ActionScheduler Exception Interface.
     *
     * Facilitates catching Exceptions unique to Action Scheduler.
     *
     * @package Prospress\ActionScheduler
     * @since %VERSION%
     */
    interface ActionScheduler_Exception
    {
    }
    /**
     * InvalidAction Exception.
     *
     * Used for identifying actions that are invalid in some way.
     *
     * @package Prospress\ActionScheduler
     */
    class ActionScheduler_InvalidActionException extends \InvalidArgumentException implements \ActionScheduler_Exception
    {
        /**
         * Create a new exception when the action's args cannot be decoded to an array.
         *
         * @author Jeremy Pry
         *
         * @param string $action_id The action ID with bad args.
         * @return static
         */
        public static function from_decoding_args($action_id)
        {
        }
    }
    /**
     * Class ActionScheduler_CronSchedule
     */
    class ActionScheduler_CronSchedule implements \ActionScheduler_Schedule
    {
        /** @var DateTime */
        private $start = \NULL;
        private $start_timestamp = 0;
        /** @var CronExpression */
        private $cron = \NULL;
        public function __construct(\DateTime $start, \CronExpression $cron)
        {
        }
        /**
         * @param DateTime $after
         * @return DateTime|null
         */
        public function next(\DateTime $after = \NULL)
        {
        }
        /**
         * @return bool
         */
        public function is_recurring()
        {
        }
        /**
         * @return string
         */
        public function get_recurrence()
        {
        }
        /**
         * For PHP 5.2 compat, since DateTime objects can't be serialized
         * @return array
         */
        public function __sleep()
        {
        }
        public function __wakeup()
        {
        }
    }
    /**
     * Class ActionScheduler_Versions
     */
    class ActionScheduler_Versions
    {
        /**
         * @var ActionScheduler_Versions
         */
        private static $instance = \NULL;
        private $versions = array();
        public function register($version_string, $initialization_callback)
        {
        }
        public function get_versions()
        {
        }
        public function latest_version()
        {
        }
        public function latest_version_callback()
        {
        }
        /**
         * @return ActionScheduler_Versions
         * @codeCoverageIgnore
         */
        public static function instance()
        {
        }
        /**
         * @codeCoverageIgnore
         */
        public static function initialize_latest_version()
        {
        }
    }
    /**
     * Class ActionScheduler_wpPostStore_PostTypeRegistrar
     * @codeCoverageIgnore
     */
    class ActionScheduler_wpPostStore_PostTypeRegistrar
    {
        public function register()
        {
        }
        /**
         * Build the args array for the post type definition
         *
         * @return array
         */
        protected function post_type_args()
        {
        }
    }
    /**
     * Class ActionScheduler_LogEntry
     */
    class ActionScheduler_LogEntry
    {
        /**
         * @var int $action_id
         */
        protected $action_id = '';
        /**
         * @var string $message
         */
        protected $message = '';
        /**
         * @var Datetime $date
         */
        protected $date;
        /**
         * Constructor
         *
         * @param mixed  $action_id Action ID
         * @param string $message   Message
         * @param Datetime $date    Datetime object with the time when this log entry was created. If this parameter is
         *                          not provided a new Datetime object (with current time) will be created.
         */
        public function __construct($action_id, $message, $date = \null)
        {
        }
        /**
         * Returns the date when this log entry was created
         *
         * @return Datetime
         */
        public function get_date()
        {
        }
        public function get_action_id()
        {
        }
        public function get_message()
        {
        }
    }
    /**
     * Class ActionScheduler_NullLogEntry
     */
    class ActionScheduler_NullLogEntry extends \ActionScheduler_LogEntry
    {
        public function __construct($action_id = '', $message = '')
        {
        }
    }
    /**
     * Implements the admin view of the actions.
     * @codeCoverageIgnore
     */
    class ActionScheduler_ListTable extends \ActionScheduler_Abstract_ListTable
    {
        /**
         * The package name.
         *
         * @var string
         */
        protected $package = 'action-scheduler';
        /**
         * Columns to show (name => label).
         *
         * @var array
         */
        protected $columns = array();
        /**
         * Actions (name => label).
         *
         * @var array
         */
        protected $row_actions = array();
        /**
         * The active data stores
         *
         * @var ActionScheduler_Store
         */
        protected $store;
        /**
         * A logger to use for getting action logs to display
         *
         * @var ActionScheduler_Logger
         */
        protected $logger;
        /**
         * A ActionScheduler_QueueRunner runner instance (or child class)
         *
         * @var ActionScheduler_QueueRunner
         */
        protected $runner;
        /**
         * Bulk actions. The key of the array is the method name of the implementation:
         *
         *     bulk_<key>(array $ids, string $sql_in).
         *
         * See the comments in the parent class for further details
         *
         * @var array
         */
        protected $bulk_actions = array();
        /**
         * Flag variable to render our notifications, if any, once.
         *
         * @var bool
         */
        protected static $did_notification = \false;
        /**
         * Array of seconds for common time periods, like week or month, alongside an internationalised string representation, i.e. "Day" or "Days"
         *
         * @var array
         */
        private static $time_periods;
        /**
         * Sets the current data store object into `store->action` and initialises the object.
         *
         * @param ActionScheduler_Store $store
         * @param ActionScheduler_Logger $logger
         * @param ActionScheduler_QueueRunner $runner
         */
        public function __construct(\ActionScheduler_Store $store, \ActionScheduler_Logger $logger, \ActionScheduler_QueueRunner $runner)
        {
        }
        /**
         * Convert an interval of seconds into a two part human friendly string.
         *
         * The WordPress human_time_diff() function only calculates the time difference to one degree, meaning
         * even if an action is 1 day and 11 hours away, it will display "1 day". This function goes one step
         * further to display two degrees of accuracy.
         *
         * Inspired by the Crontrol::interval() function by Edward Dale: https://wordpress.org/plugins/wp-crontrol/
         *
         * @param int $interval A interval in seconds.
         * @param int $periods_to_include Depth of time periods to include, e.g. for an interval of 70, and $periods_to_include of 2, both minutes and seconds would be included. With a value of 1, only minutes would be included.
         * @return string A human friendly string representation of the interval.
         */
        private static function human_interval($interval, $periods_to_include = 2)
        {
        }
        /**
         * Returns the recurrence of an action or 'Non-repeating'. The output is human readable.
         *
         * @param ActionScheduler_Action $action
         *
         * @return string
         */
        protected function get_recurrence($action)
        {
        }
        /**
         * Serializes the argument of an action to render it in a human friendly format.
         *
         * @param array $row The array representation of the current row of the table
         *
         * @return string
         */
        public function column_args(array $row)
        {
        }
        /**
         * Prints the logs entries inline. We do so to avoid loading Javascript and other hacks to show it in a modal.
         *
         * @param array $row Action array.
         * @return string
         */
        public function column_log_entries(array $row)
        {
        }
        /**
         * Prints the logs entries inline. We do so to avoid loading Javascript and other hacks to show it in a modal.
         *
         * @param ActionScheduler_LogEntry $log_entry
         * @param DateTimezone $timezone
         * @return string
         */
        protected function get_log_entry_html(\ActionScheduler_LogEntry $log_entry, \DateTimezone $timezone)
        {
        }
        /**
         * Only display row actions for pending actions.
         *
         * @param array  $row         Row to render
         * @param string $column_name Current row
         *
         * @return string
         */
        protected function maybe_render_actions($row, $column_name)
        {
        }
        /**
         * Renders admin notifications
         *
         * Notifications:
         *  1. When the maximum number of tasks are being executed simultaneously
         *  2. Notifications when a task us manually executed
         */
        public function display_admin_notices()
        {
        }
        /**
         * Prints the scheduled date in a human friendly format.
         *
         * @param array $row The array representation of the current row of the table
         *
         * @return string
         */
        public function column_schedule($row)
        {
        }
        /**
         * Get the scheduled date in a human friendly format.
         *
         * @param ActionScheduler_Schedule $schedule
         * @return string
         */
        protected function get_schedule_display_string(\ActionScheduler_Schedule $schedule)
        {
        }
        /**
         * Bulk delete
         *
         * Deletes actions based on their ID. This is the handler for the bulk delete. It assumes the data
         * properly validated by the callee and it will delete the actions without any extra validation.
         *
         * @param array $ids
         * @param string $ids_sql Inherited and unused
         */
        protected function bulk_delete(array $ids, $ids_sql)
        {
        }
        /**
         * Implements the logic behind running an action. ActionScheduler_Abstract_ListTable validates the request and their
         * parameters are valid.
         *
         * @param int $action_id
         */
        protected function row_action_cancel($action_id)
        {
        }
        /**
         * Implements the logic behind running an action. ActionScheduler_Abstract_ListTable validates the request and their
         * parameters are valid.
         *
         * @param int $action_id
         */
        protected function row_action_run($action_id)
        {
        }
        /**
         * Implements the logic behind processing an action once an action link is clicked on the list table.
         *
         * @param int $action_id
         * @param string $row_action_type The type of action to perform on the action.
         */
        protected function process_row_action($action_id, $row_action_type)
        {
        }
        /**
         * {@inheritDoc}
         */
        public function prepare_items()
        {
        }
        /**
         * Prints the available statuses so the user can click to filter.
         */
        protected function display_filter_by_status()
        {
        }
        /**
         * Get the text to display in the search box on the list table.
         */
        protected function get_search_box_button_text()
        {
        }
    }
    /**
     * Class ActionScheduler_FinishedAction
     */
    class ActionScheduler_FinishedAction extends \ActionScheduler_Action
    {
        public function execute()
        {
        }
        public function is_finished()
        {
        }
    }
    /**
     * Class ActionScheduler_CanceledAction
     *
     * Stored action which was canceled and therefore acts like a finished action but should always return a null schedule,
     * regardless of schedule passed to its constructor.
     */
    class ActionScheduler_CanceledAction extends \ActionScheduler_FinishedAction
    {
        /**
         * @param string $hook
         * @param array $args
         * @param ActionScheduler_Schedule $schedule
         * @param string $group
         */
        public function __construct($hook, array $args = array(), \ActionScheduler_Schedule $schedule = \null, $group = '')
        {
        }
    }
    /**
     * Class ActionScheduler_QueueCleaner
     */
    class ActionScheduler_QueueCleaner
    {
        /** @var int */
        protected $batch_size;
        /** @var ActionScheduler_Store */
        private $store = \null;
        /**
         * 31 days in seconds.
         *
         * @var int
         */
        private $month_in_seconds = 2678400;
        /**
         * ActionScheduler_QueueCleaner constructor.
         *
         * @param ActionScheduler_Store $store      The store instance.
         * @param int                   $batch_size The batch size.
         */
        public function __construct(\ActionScheduler_Store $store = \null, $batch_size = 20)
        {
        }
        public function delete_old_actions()
        {
        }
        /**
         * Unclaim pending actions that have not been run within a given time limit.
         *
         * When called by ActionScheduler_Abstract_QueueRunner::run_cleanup(), the time limit passed
         * as a parameter is 10x the time limit used for queue processing.
         *
         * @param int $time_limit The number of seconds to allow a queue to run before unclaiming its pending actions. Default 300 (5 minutes).
         */
        public function reset_timeouts($time_limit = 300)
        {
        }
        /**
         * Mark actions that have been running for more than a given time limit as failed, based on
         * the assumption some uncatachable and unloggable fatal error occurred during processing.
         *
         * When called by ActionScheduler_Abstract_QueueRunner::run_cleanup(), the time limit passed
         * as a parameter is 10x the time limit used for queue processing.
         *
         * @param int $time_limit The number of seconds to allow an action to run before it is considered to have failed. Default 300 (5 minutes).
         */
        public function mark_failures($time_limit = 300)
        {
        }
        /**
         * Do all of the cleaning actions.
         *
         * @param int $time_limit The number of seconds to use as the timeout and failure period. Default 300 (5 minutes).
         * @author Jeremy Pry
         */
        public function clean($time_limit = 300)
        {
        }
        /**
         * Get the batch size for cleaning the queue.
         *
         * @author Jeremy Pry
         * @return int
         */
        protected function get_batch_size()
        {
        }
    }
    /**
     * Class ActionScheduler_NullSchedule
     */
    class ActionScheduler_NullSchedule implements \ActionScheduler_Schedule
    {
        public function next(\DateTime $after = \NULL)
        {
        }
        /**
         * @return bool
         */
        public function is_recurring()
        {
        }
    }
    /**
     * Class ActionScheduler_Compatibility
     */
    class ActionScheduler_Compatibility
    {
        /**
         * Converts a shorthand byte value to an integer byte value.
         *
         * Wrapper for wp_convert_hr_to_bytes(), moved to load.php in WordPress 4.6 from media.php
         *
         * @link https://secure.php.net/manual/en/function.ini-get.php
         * @link https://secure.php.net/manual/en/faq.using.php#faq.using.shorthandbytes
         *
         * @param string $value A (PHP ini) byte value, either shorthand or ordinary.
         * @return int An integer byte value.
         */
        public static function convert_hr_to_bytes($value)
        {
        }
        /**
         * Attempts to raise the PHP memory limit for memory intensive processes.
         *
         * Only allows raising the existing limit and prevents lowering it.
         *
         * Wrapper for wp_raise_memory_limit(), added in WordPress v4.6.0
         *
         * @return bool|int|string The limit that was set or false on failure.
         */
        public static function raise_memory_limit()
        {
        }
        /**
         * Attempts to raise the PHP timeout for time intensive processes.
         *
         * Only allows raising the existing limit and prevents lowering it. Wrapper for wc_set_time_limit(), when available.
         *
         * @param int The time limit in seconds.
         */
        public static function raise_time_limit($limit = 0)
        {
        }
    }
    /**
     * Class ActionScheduler_ActionFactory
     */
    class ActionScheduler_ActionFactory
    {
        /**
         * @param string $status The action's status in the data store
         * @param string $hook The hook to trigger when this action runs
         * @param array $args Args to pass to callbacks when the hook is triggered
         * @param ActionScheduler_Schedule $schedule The action's schedule
         * @param string $group A group to put the action in
         *
         * @return ActionScheduler_Action An instance of the stored action
         */
        public function get_stored_action($status, $hook, array $args = array(), \ActionScheduler_Schedule $schedule = \null, $group = '')
        {
        }
        /**
         * @param string $hook The hook to trigger when this action runs
         * @param array $args Args to pass when the hook is triggered
         * @param int $when Unix timestamp when the action will run
         * @param string $group A group to put the action in
         *
         * @return string The ID of the stored action
         */
        public function single($hook, $args = array(), $when = \null, $group = '')
        {
        }
        /**
         * @param string $hook The hook to trigger when this action runs
         * @param array $args Args to pass when the hook is triggered
         * @param int $first Unix timestamp for the first run
         * @param int $interval Seconds between runs
         * @param string $group A group to put the action in
         *
         * @return string The ID of the stored action
         */
        public function recurring($hook, $args = array(), $first = \null, $interval = \null, $group = '')
        {
        }
        /**
         * @param string $hook The hook to trigger when this action runs
         * @param array $args Args to pass when the hook is triggered
         * @param int $first Unix timestamp for the first run
         * @param int $schedule A cron definition string
         * @param string $group A group to put the action in
         *
         * @return string The ID of the stored action
         */
        public function cron($hook, $args = array(), $first = \null, $schedule = \null, $group = '')
        {
        }
        /**
         * @param ActionScheduler_Action $action
         *
         * @return string The ID of the stored action
         */
        protected function store(\ActionScheduler_Action $action)
        {
        }
    }
    /**
     * Product external class.
     */
    class WC_Product_External extends \WC_Product
    {
        /**
         * Stores product data.
         *
         * @var array
         */
        protected $extra_data = array('product_url' => '', 'button_text' => '');
        /**
         * Get internal type.
         *
         * @return string
         */
        public function get_type()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        |
        | Methods for getting data from the product object.
        */
        /**
         * Get product url.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_product_url($context = 'view')
        {
        }
        /**
         * Get button text.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_button_text($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Functions for setting product data. These should not update anything in the
        | database itself and should only change what is stored in the class
        | object.
        */
        /**
         * Set product URL.
         *
         * @since 3.0.0
         * @param string $product_url Product URL.
         */
        public function set_product_url($product_url)
        {
        }
        /**
         * Set button text.
         *
         * @since 3.0.0
         * @param string $button_text Button text.
         */
        public function set_button_text($button_text)
        {
        }
        /**
         * External products cannot be stock managed.
         *
         * @since 3.0.0
         * @param bool $manage_stock If manage stock.
         */
        public function set_manage_stock($manage_stock)
        {
        }
        /**
         * External products cannot be stock managed.
         *
         * @since 3.0.0
         *
         * @param string $stock_status Stock status.
         */
        public function set_stock_status($stock_status = '')
        {
        }
        /**
         * External products cannot be backordered.
         *
         * @since 3.0.0
         * @param string $backorders Options: 'yes', 'no' or 'notify'.
         */
        public function set_backorders($backorders)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Other Actions
        |--------------------------------------------------------------------------
        */
        /**
         * Returns false if the product cannot be bought.
         *
         * @access public
         * @return bool
         */
        public function is_purchasable()
        {
        }
        /**
         * Get the add to url used mainly in loops.
         *
         * @access public
         * @return string
         */
        public function add_to_cart_url()
        {
        }
        /**
         * Get the add to cart button text for the single page.
         *
         * @access public
         * @return string
         */
        public function single_add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text.
         *
         * @access public
         * @return string
         */
        public function add_to_cart_text()
        {
        }
        /**
         * Get the add to cart button text description - used in aria tags.
         *
         * @since 3.3.0
         * @return string
         */
        public function add_to_cart_description()
        {
        }
    }
    /**
     * Order Class.
     *
     * These are regular WooCommerce orders, which extend the abstract order class.
     */
    class WC_Order extends \WC_Abstract_Order
    {
        /**
         * Stores data about status changes so relevant hooks can be fired.
         *
         * @var bool|array
         */
        protected $status_transition = \false;
        /**
         * Order Data array. This is the core order data exposed in APIs since 3.0.0.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array(
            // Abstract order props.
            'parent_id' => 0,
            'status' => '',
            'currency' => '',
            'version' => '',
            'prices_include_tax' => \false,
            'date_created' => \null,
            'date_modified' => \null,
            'discount_total' => 0,
            'discount_tax' => 0,
            'shipping_total' => 0,
            'shipping_tax' => 0,
            'cart_tax' => 0,
            'total' => 0,
            'total_tax' => 0,
            // Order props.
            'customer_id' => 0,
            'order_key' => '',
            'billing' => array('first_name' => '', 'last_name' => '', 'company' => '', 'address_1' => '', 'address_2' => '', 'city' => '', 'state' => '', 'postcode' => '', 'country' => '', 'email' => '', 'phone' => ''),
            'shipping' => array('first_name' => '', 'last_name' => '', 'company' => '', 'address_1' => '', 'address_2' => '', 'city' => '', 'state' => '', 'postcode' => '', 'country' => ''),
            'payment_method' => '',
            'payment_method_title' => '',
            'transaction_id' => '',
            'customer_ip_address' => '',
            'customer_user_agent' => '',
            'created_via' => '',
            'customer_note' => '',
            'date_completed' => \null,
            'date_paid' => \null,
            'cart_hash' => '',
        );
        /**
         * When a payment is complete this function is called.
         *
         * Most of the time this should mark an order as 'processing' so that admin can process/post the items.
         * If the cart contains only downloadable items then the order is 'completed' since the admin needs to take no action.
         * Stock levels are reduced at this point.
         * Sales are also recorded for products.
         * Finally, record the date of payment.
         *
         * @param string $transaction_id Optional transaction id to store in post meta.
         * @return bool success
         */
        public function payment_complete($transaction_id = '')
        {
        }
        /**
         * Gets order total - formatted for display.
         *
         * @param string $tax_display      Type of tax display.
         * @param bool   $display_refunded If should include refunded value.
         *
         * @return string
         */
        public function get_formatted_order_total($tax_display = '', $display_refunded = \true)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD methods
        |--------------------------------------------------------------------------
        |
        | Methods which create, read, update and delete orders from the database.
        | Written in abstract fashion so that the way orders are stored can be
        | changed more easily in the future.
        |
        | A save method is included for convenience (chooses update or create based
        | on if the order exists yet).
        |
        */
        /**
         * Save data to the database.
         *
         * @since 3.0.0
         * @return int order ID
         */
        public function save()
        {
        }
        /**
         * Log an error about this order is exception is encountered.
         *
         * @param Exception $e Exception object.
         * @param string    $message Message regarding exception thrown.
         * @since 3.7.0
         */
        protected function handle_exception($e, $message = 'Error')
        {
        }
        /**
         * Set order status.
         *
         * @since 3.0.0
         * @param string $new_status    Status to change the order to. No internal wc- prefix is required.
         * @param string $note          Optional note to add.
         * @param bool   $manual_update Is this a manual order status change?.
         * @return array
         */
        public function set_status($new_status, $note = '', $manual_update = \false)
        {
        }
        /**
         * Maybe set date paid.
         *
         * Sets the date paid variable when transitioning to the payment complete
         * order status. This is either processing or completed. This is not filtered
         * to avoid infinite loops e.g. if loading an order via the filter.
         *
         * Date paid is set once in this manner - only when it is not already set.
         * This ensures the data exists even if a gateway does not use the
         * `payment_complete` method.
         *
         * @since 3.0.0
         */
        public function maybe_set_date_paid()
        {
        }
        /**
         * Maybe set date completed.
         *
         * Sets the date completed variable when transitioning to completed status.
         *
         * @since 3.0.0
         */
        protected function maybe_set_date_completed()
        {
        }
        /**
         * Updates status of order immediately.
         *
         * @uses WC_Order::set_status()
         * @param string $new_status    Status to change the order to. No internal wc- prefix is required.
         * @param string $note          Optional note to add.
         * @param bool   $manual        Is this a manual order status change?.
         * @return bool
         */
        public function update_status($new_status, $note = '', $manual = \false)
        {
        }
        /**
         * Handle the status transition.
         */
        protected function status_transition()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        |
        | Methods for getting data from the order object.
        |
        */
        /**
         * Get all class data in array format.
         *
         * @since 3.0.0
         * @return array
         */
        public function get_data()
        {
        }
        /**
         * Expands the shipping and billing information in the changes array.
         */
        public function get_changes()
        {
        }
        /**
         * Gets the order number for display (by default, order ID).
         *
         * @return string
         */
        public function get_order_number()
        {
        }
        /**
         * Get order key.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_order_key($context = 'view')
        {
        }
        /**
         * Get customer_id.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_customer_id($context = 'view')
        {
        }
        /**
         * Alias for get_customer_id().
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return int
         */
        public function get_user_id($context = 'view')
        {
        }
        /**
         * Get the user associated with the order. False for guests.
         *
         * @return WP_User|false
         */
        public function get_user()
        {
        }
        /**
         * Gets a prop for a getter method.
         *
         * @since  3.0.0
         * @param  string $prop Name of prop to get.
         * @param  string $address billing or shipping.
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return mixed
         */
        protected function get_address_prop($prop, $address = 'billing', $context = 'view')
        {
        }
        /**
         * Get billing first name.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_first_name($context = 'view')
        {
        }
        /**
         * Get billing last name.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_last_name($context = 'view')
        {
        }
        /**
         * Get billing company.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_company($context = 'view')
        {
        }
        /**
         * Get billing address line 1.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_address_1($context = 'view')
        {
        }
        /**
         * Get billing address line 2.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_address_2($context = 'view')
        {
        }
        /**
         * Get billing city.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_city($context = 'view')
        {
        }
        /**
         * Get billing state.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_state($context = 'view')
        {
        }
        /**
         * Get billing postcode.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_postcode($context = 'view')
        {
        }
        /**
         * Get billing country.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_country($context = 'view')
        {
        }
        /**
         * Get billing email.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_email($context = 'view')
        {
        }
        /**
         * Get billing phone.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_billing_phone($context = 'view')
        {
        }
        /**
         * Get shipping first name.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_first_name($context = 'view')
        {
        }
        /**
         * Get shipping_last_name.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_last_name($context = 'view')
        {
        }
        /**
         * Get shipping company.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_company($context = 'view')
        {
        }
        /**
         * Get shipping address line 1.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_address_1($context = 'view')
        {
        }
        /**
         * Get shipping address line 2.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_address_2($context = 'view')
        {
        }
        /**
         * Get shipping city.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_city($context = 'view')
        {
        }
        /**
         * Get shipping state.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_state($context = 'view')
        {
        }
        /**
         * Get shipping postcode.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_postcode($context = 'view')
        {
        }
        /**
         * Get shipping country.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_country($context = 'view')
        {
        }
        /**
         * Get the payment method.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_payment_method($context = 'view')
        {
        }
        /**
         * Get payment method title.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_payment_method_title($context = 'view')
        {
        }
        /**
         * Get transaction d.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_transaction_id($context = 'view')
        {
        }
        /**
         * Get customer ip address.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_customer_ip_address($context = 'view')
        {
        }
        /**
         * Get customer user agent.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_customer_user_agent($context = 'view')
        {
        }
        /**
         * Get created via.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_created_via($context = 'view')
        {
        }
        /**
         * Get customer note.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_customer_note($context = 'view')
        {
        }
        /**
         * Get date completed.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_completed($context = 'view')
        {
        }
        /**
         * Get date paid.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_paid($context = 'view')
        {
        }
        /**
         * Get cart hash.
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_cart_hash($context = 'view')
        {
        }
        /**
         * Returns the requested address in raw, non-formatted way.
         * Note: Merges raw data with get_prop data so changes are returned too.
         *
         * @since  2.4.0
         * @param  string $type Billing or shipping. Anything else besides 'billing' will return shipping address.
         * @return array The stored address after filter.
         */
        public function get_address($type = 'billing')
        {
        }
        /**
         * Get a formatted shipping address for the order.
         *
         * @return string
         */
        public function get_shipping_address_map_url()
        {
        }
        /**
         * Get a formatted billing full name.
         *
         * @return string
         */
        public function get_formatted_billing_full_name()
        {
        }
        /**
         * Get a formatted shipping full name.
         *
         * @return string
         */
        public function get_formatted_shipping_full_name()
        {
        }
        /**
         * Get a formatted billing address for the order.
         *
         * @param string $empty_content Content to show if no address is present. @since 3.3.0.
         * @return string
         */
        public function get_formatted_billing_address($empty_content = '')
        {
        }
        /**
         * Get a formatted shipping address for the order.
         *
         * @param string $empty_content Content to show if no address is present. @since 3.3.0.
         * @return string
         */
        public function get_formatted_shipping_address($empty_content = '')
        {
        }
        /**
         * Returns true if the order has a billing address.
         *
         * @since  3.0.4
         * @return boolean
         */
        public function has_billing_address()
        {
        }
        /**
         * Returns true if the order has a shipping address.
         *
         * @since  3.0.4
         * @return boolean
         */
        public function has_shipping_address()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Functions for setting order data. These should not update anything in the
        | database itself and should only change what is stored in the class
        | object. However, for backwards compatibility pre 3.0.0 some of these
        | setters may handle both.
        |
        */
        /**
         * Sets a prop for a setter method.
         *
         * @since 3.0.0
         * @param string $prop Name of prop to set.
         * @param string $address Name of address to set. billing or shipping.
         * @param mixed  $value Value of the prop.
         */
        protected function set_address_prop($prop, $address = 'billing', $value)
        {
        }
        /**
         * Set order key.
         *
         * @param string $value Max length 22 chars.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_order_key($value)
        {
        }
        /**
         * Set customer id.
         *
         * @param int $value Customer ID.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_customer_id($value)
        {
        }
        /**
         * Set billing first name.
         *
         * @param string $value Billing first name.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_first_name($value)
        {
        }
        /**
         * Set billing last name.
         *
         * @param string $value Billing last name.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_last_name($value)
        {
        }
        /**
         * Set billing company.
         *
         * @param string $value Billing company.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_company($value)
        {
        }
        /**
         * Set billing address line 1.
         *
         * @param string $value Billing address line 1.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_address_1($value)
        {
        }
        /**
         * Set billing address line 2.
         *
         * @param string $value Billing address line 2.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_address_2($value)
        {
        }
        /**
         * Set billing city.
         *
         * @param string $value Billing city.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_city($value)
        {
        }
        /**
         * Set billing state.
         *
         * @param string $value Billing state.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_state($value)
        {
        }
        /**
         * Set billing postcode.
         *
         * @param string $value Billing postcode.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_postcode($value)
        {
        }
        /**
         * Set billing country.
         *
         * @param string $value Billing country.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_country($value)
        {
        }
        /**
         * Maybe set empty billing email to that of the user who owns the order.
         */
        protected function maybe_set_user_billing_email()
        {
        }
        /**
         * Set billing email.
         *
         * @param string $value Billing email.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_email($value)
        {
        }
        /**
         * Set billing phone.
         *
         * @param string $value Billing phone.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_billing_phone($value)
        {
        }
        /**
         * Set shipping first name.
         *
         * @param string $value Shipping first name.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_first_name($value)
        {
        }
        /**
         * Set shipping last name.
         *
         * @param string $value Shipping last name.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_last_name($value)
        {
        }
        /**
         * Set shipping company.
         *
         * @param string $value Shipping company.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_company($value)
        {
        }
        /**
         * Set shipping address line 1.
         *
         * @param string $value Shipping address line 1.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_address_1($value)
        {
        }
        /**
         * Set shipping address line 2.
         *
         * @param string $value Shipping address line 2.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_address_2($value)
        {
        }
        /**
         * Set shipping city.
         *
         * @param string $value Shipping city.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_city($value)
        {
        }
        /**
         * Set shipping state.
         *
         * @param string $value Shipping state.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_state($value)
        {
        }
        /**
         * Set shipping postcode.
         *
         * @param string $value Shipping postcode.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_postcode($value)
        {
        }
        /**
         * Set shipping country.
         *
         * @param string $value Shipping country.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_country($value)
        {
        }
        /**
         * Set the payment method.
         *
         * @param string $payment_method Supports WC_Payment_Gateway for bw compatibility with < 3.0.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_payment_method($payment_method = '')
        {
        }
        /**
         * Set payment method title.
         *
         * @param string $value Payment method title.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_payment_method_title($value)
        {
        }
        /**
         * Set transaction id.
         *
         * @param string $value Transaction id.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_transaction_id($value)
        {
        }
        /**
         * Set customer ip address.
         *
         * @param string $value Customer ip address.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_customer_ip_address($value)
        {
        }
        /**
         * Set customer user agent.
         *
         * @param string $value Customer user agent.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_customer_user_agent($value)
        {
        }
        /**
         * Set created via.
         *
         * @param string $value Created via.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_created_via($value)
        {
        }
        /**
         * Set customer note.
         *
         * @param string $value Customer note.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_customer_note($value)
        {
        }
        /**
         * Set date completed.
         *
         * @param  string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_date_completed($date = \null)
        {
        }
        /**
         * Set date paid.
         *
         * @param  string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_date_paid($date = \null)
        {
        }
        /**
         * Set cart hash.
         *
         * @param string $value Cart hash.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_cart_hash($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Conditionals
        |--------------------------------------------------------------------------
        |
        | Checks if a condition is true or false.
        |
        */
        /**
         * Check if an order key is valid.
         *
         * @param string $key Order key.
         * @return bool
         */
        public function key_is_valid($key)
        {
        }
        /**
         * See if order matches cart_hash.
         *
         * @param string $cart_hash Cart hash.
         * @return bool
         */
        public function has_cart_hash($cart_hash = '')
        {
        }
        /**
         * Checks if an order can be edited, specifically for use on the Edit Order screen.
         *
         * @return bool
         */
        public function is_editable()
        {
        }
        /**
         * Returns if an order has been paid for based on the order status.
         *
         * @since 2.5.0
         * @return bool
         */
        public function is_paid()
        {
        }
        /**
         * Checks if product download is permitted.
         *
         * @return bool
         */
        public function is_download_permitted()
        {
        }
        /**
         * Checks if an order needs display the shipping address, based on shipping method.
         *
         * @return bool
         */
        public function needs_shipping_address()
        {
        }
        /**
         * Returns true if the order contains a downloadable product.
         *
         * @return bool
         */
        public function has_downloadable_item()
        {
        }
        /**
         * Get downloads from all line items for this order.
         *
         * @since  3.2.0
         * @return array
         */
        public function get_downloadable_items()
        {
        }
        /**
         * Checks if an order needs payment, based on status and order total.
         *
         * @return bool
         */
        public function needs_payment()
        {
        }
        /**
         * See if the order needs processing before it can be completed.
         *
         * Orders which only contain virtual, downloadable items do not need admin
         * intervention.
         *
         * Uses a transient so these calls are not repeated multiple times, and because
         * once the order is processed this code/transient does not need to persist.
         *
         * @since 3.0.0
         * @return bool
         */
        public function needs_processing()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | URLs and Endpoints
        |--------------------------------------------------------------------------
        */
        /**
         * Generates a URL so that a customer can pay for their (unpaid - pending) order. Pass 'true' for the checkout version which doesn't offer gateway choices.
         *
         * @param  bool $on_checkout If on checkout.
         * @return string
         */
        public function get_checkout_payment_url($on_checkout = \false)
        {
        }
        /**
         * Generates a URL for the thanks page (order received).
         *
         * @return string
         */
        public function get_checkout_order_received_url()
        {
        }
        /**
         * Generates a URL so that a customer can cancel their (unpaid - pending) order.
         *
         * @param string $redirect Redirect URL.
         * @return string
         */
        public function get_cancel_order_url($redirect = '')
        {
        }
        /**
         * Generates a raw (unescaped) cancel-order URL for use by payment gateways.
         *
         * @param string $redirect Redirect URL.
         * @return string The unescaped cancel-order URL.
         */
        public function get_cancel_order_url_raw($redirect = '')
        {
        }
        /**
         * Helper method to return the cancel endpoint.
         *
         * @return string the cancel endpoint; either the cart page or the home page.
         */
        public function get_cancel_endpoint()
        {
        }
        /**
         * Generates a URL to view an order from the my account page.
         *
         * @return string
         */
        public function get_view_order_url()
        {
        }
        /**
         * Get's the URL to edit the order in the backend.
         *
         * @since 3.3.0
         * @return string
         */
        public function get_edit_order_url()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Order notes.
        |--------------------------------------------------------------------------
        */
        /**
         * Adds a note (comment) to the order. Order must exist.
         *
         * @param  string $note              Note to add.
         * @param  int    $is_customer_note  Is this a note for the customer?.
         * @param  bool   $added_by_user     Was the note added by a user?.
         * @return int                       Comment ID.
         */
        public function add_order_note($note, $is_customer_note = 0, $added_by_user = \false)
        {
        }
        /**
         * List order notes (public) for the customer.
         *
         * @return array
         */
        public function get_customer_order_notes()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Refunds
        |--------------------------------------------------------------------------
        */
        /**
         * Get order refunds.
         *
         * @since 2.2
         * @return array of WC_Order_Refund objects
         */
        public function get_refunds()
        {
        }
        /**
         * Get amount already refunded.
         *
         * @since 2.2
         * @return string
         */
        public function get_total_refunded()
        {
        }
        /**
         * Get the total tax refunded.
         *
         * @since  2.3
         * @return float
         */
        public function get_total_tax_refunded()
        {
        }
        /**
         * Get the total shipping refunded.
         *
         * @since  2.4
         * @return float
         */
        public function get_total_shipping_refunded()
        {
        }
        /**
         * Gets the count of order items of a certain type that have been refunded.
         *
         * @since  2.4.0
         * @param string $item_type Item type.
         * @return string
         */
        public function get_item_count_refunded($item_type = '')
        {
        }
        /**
         * Get the total number of items refunded.
         *
         * @since  2.4.0
         *
         * @param  string $item_type Type of the item we're checking, if not a line_item.
         * @return int
         */
        public function get_total_qty_refunded($item_type = 'line_item')
        {
        }
        /**
         * Get the refunded amount for a line item.
         *
         * @param  int    $item_id   ID of the item we're checking.
         * @param  string $item_type Type of the item we're checking, if not a line_item.
         * @return int
         */
        public function get_qty_refunded_for_item($item_id, $item_type = 'line_item')
        {
        }
        /**
         * Get the refunded amount for a line item.
         *
         * @param  int    $item_id   ID of the item we're checking.
         * @param  string $item_type Type of the item we're checking, if not a line_item.
         * @return int
         */
        public function get_total_refunded_for_item($item_id, $item_type = 'line_item')
        {
        }
        /**
         * Get the refunded tax amount for a line item.
         *
         * @param  int    $item_id   ID of the item we're checking.
         * @param  int    $tax_id    ID of the tax we're checking.
         * @param  string $item_type Type of the item we're checking, if not a line_item.
         * @return double
         */
        public function get_tax_refunded_for_item($item_id, $tax_id, $item_type = 'line_item')
        {
        }
        /**
         * Get total tax refunded by rate ID.
         *
         * @param  int $rate_id Rate ID.
         * @return float
         */
        public function get_total_tax_refunded_by_rate_id($rate_id)
        {
        }
        /**
         * How much money is left to refund?
         *
         * @return string
         */
        public function get_remaining_refund_amount()
        {
        }
        /**
         * How many items are left to refund?
         *
         * @return int
         */
        public function get_remaining_refund_items()
        {
        }
        /**
         * Add total row for the payment method.
         *
         * @param array  $total_rows  Total rows.
         * @param string $tax_display Tax to display.
         */
        protected function add_order_item_totals_payment_method_row(&$total_rows, $tax_display)
        {
        }
        /**
         * Add total row for refunds.
         *
         * @param array  $total_rows  Total rows.
         * @param string $tax_display Tax to display.
         */
        protected function add_order_item_totals_refund_rows(&$total_rows, $tax_display)
        {
        }
        /**
         * Get totals for display on pages and in emails.
         *
         * @param string $tax_display Tax to display.
         * @return array
         */
        public function get_order_item_totals($tax_display = '')
        {
        }
    }
    /**
     * Geolite integration class.
     */
    class WC_Geolite_Integration
    {
        /**
         * MaxMind GeoLite2 database path.
         *
         * @var string
         */
        private $database = '';
        /**
         * Logger instance.
         *
         * @var WC_Logger
         */
        private $log = \null;
        /**
         * Constructor.
         *
         * @param string $database MaxMind GeoLite2 database path.
         */
        public function __construct($database)
        {
        }
        /**
         * Get country 2-letters ISO by IP address.
         * Returns empty string when not able to find any ISO code.
         *
         * @param string $ip_address User IP address.
         * @return string
         */
        public function get_country_iso($ip_address)
        {
        }
        /**
         * Logging method.
         *
         * @param string $message Log message.
         * @param string $level   Log level.
         *                        Available options: 'emergency', 'alert',
         *                        'critical', 'error', 'warning', 'notice',
         *                        'info' and 'debug'.
         *                        Defaults to 'info'.
         */
        private function log($message, $level = 'info')
        {
        }
        /**
         * Require geolite library.
         */
        private function require_geolite_library()
        {
        }
    }
    /**
     * Discounts class.
     */
    class WC_Discounts
    {
        /**
         * Reference to cart or order object.
         *
         * @since 3.2.0
         * @var WC_Cart|WC_Order
         */
        protected $object;
        /**
         * An array of items to discount.
         *
         * @var array
         */
        protected $items = array();
        /**
         * An array of discounts which have been applied to items.
         *
         * @var array[] Code => Item Key => Value
         */
        protected $discounts = array();
        /**
         * WC_Discounts Constructor.
         *
         * @param WC_Cart|WC_Order $object Cart or order object.
         */
        public function __construct($object = \null)
        {
        }
        /**
         * Set items directly. Used by WC_Cart_Totals.
         *
         * @since 3.2.3
         * @param array $items Items to set.
         */
        public function set_items($items)
        {
        }
        /**
         * Normalise cart items which will be discounted.
         *
         * @since 3.2.0
         * @param WC_Cart $cart Cart object.
         */
        public function set_items_from_cart($cart)
        {
        }
        /**
         * Normalise order items which will be discounted.
         *
         * @since 3.2.0
         * @param WC_Order $order Order object.
         */
        public function set_items_from_order($order)
        {
        }
        /**
         * Get the object concerned.
         *
         * @since  3.3.2
         * @return object
         */
        public function get_object()
        {
        }
        /**
         * Get items.
         *
         * @since  3.2.0
         * @return object[]
         */
        public function get_items()
        {
        }
        /**
         * Get items to validate.
         *
         * @since  3.3.2
         * @return object[]
         */
        public function get_items_to_validate()
        {
        }
        /**
         * Get discount by key with or without precision.
         *
         * @since  3.2.0
         * @param  string $key name of discount row to return.
         * @param  bool   $in_cents Should the totals be returned in cents, or without precision.
         * @return array
         */
        public function get_discount($key, $in_cents = \false)
        {
        }
        /**
         * Get all discount totals.
         *
         * @since  3.2.0
         * @param  bool $in_cents Should the totals be returned in cents, or without precision.
         * @return array
         */
        public function get_discounts($in_cents = \false)
        {
        }
        /**
         * Get all discount totals per item.
         *
         * @since  3.2.0
         * @param  bool $in_cents Should the totals be returned in cents, or without precision.
         * @return array
         */
        public function get_discounts_by_item($in_cents = \false)
        {
        }
        /**
         * Get all discount totals per coupon.
         *
         * @since  3.2.0
         * @param  bool $in_cents Should the totals be returned in cents, or without precision.
         * @return array
         */
        public function get_discounts_by_coupon($in_cents = \false)
        {
        }
        /**
         * Get discounted price of an item without precision.
         *
         * @since  3.2.0
         * @param  object $item Get data for this item.
         * @return float
         */
        public function get_discounted_price($item)
        {
        }
        /**
         * Get discounted price of an item to precision (in cents).
         *
         * @since  3.2.0
         * @param  object $item Get data for this item.
         * @return int
         */
        public function get_discounted_price_in_cents($item)
        {
        }
        /**
         * Apply a discount to all items using a coupon.
         *
         * @since  3.2.0
         * @param  WC_Coupon $coupon Coupon object being applied to the items.
         * @param  bool      $validate Set to false to skip coupon validation.
         * @throws Exception Error message when coupon isn't valid.
         * @return bool|WP_Error True if applied or WP_Error instance in failure.
         */
        public function apply_coupon($coupon, $validate = \true)
        {
        }
        /**
         * Sort by price.
         *
         * @since  3.2.0
         * @param  array $a First element.
         * @param  array $b Second element.
         * @return int
         */
        protected function sort_by_price($a, $b)
        {
        }
        /**
         * Filter out all products which have been fully discounted to 0.
         * Used as array_filter callback.
         *
         * @since  3.2.0
         * @param  object $item Get data for this item.
         * @return bool
         */
        protected function filter_products_with_price($item)
        {
        }
        /**
         * Get items which the coupon should be applied to.
         *
         * @since  3.2.0
         * @param  object $coupon Coupon object.
         * @return array
         */
        protected function get_items_to_apply_coupon($coupon)
        {
        }
        /**
         * Apply percent discount to items and return an array of discounts granted.
         *
         * @since  3.2.0
         * @param  WC_Coupon $coupon Coupon object. Passed through filters.
         * @param  array     $items_to_apply Array of items to apply the coupon to.
         * @return int Total discounted.
         */
        protected function apply_coupon_percent($coupon, $items_to_apply)
        {
        }
        /**
         * Apply fixed product discount to items.
         *
         * @since  3.2.0
         * @param  WC_Coupon $coupon Coupon object. Passed through filters.
         * @param  array     $items_to_apply Array of items to apply the coupon to.
         * @param  int       $amount Fixed discount amount to apply in cents. Leave blank to pull from coupon.
         * @return int Total discounted.
         */
        protected function apply_coupon_fixed_product($coupon, $items_to_apply, $amount = \null)
        {
        }
        /**
         * Apply fixed cart discount to items.
         *
         * @since  3.2.0
         * @param  WC_Coupon $coupon Coupon object. Passed through filters.
         * @param  array     $items_to_apply Array of items to apply the coupon to.
         * @param  int       $amount Fixed discount amount to apply in cents. Leave blank to pull from coupon.
         * @return int Total discounted.
         */
        protected function apply_coupon_fixed_cart($coupon, $items_to_apply, $amount = \null)
        {
        }
        /**
         * Apply custom coupon discount to items.
         *
         * @since  3.3
         * @param  WC_Coupon $coupon Coupon object. Passed through filters.
         * @param  array     $items_to_apply Array of items to apply the coupon to.
         * @return int Total discounted.
         */
        protected function apply_coupon_custom($coupon, $items_to_apply)
        {
        }
        /**
         * Deal with remaining fractional discounts by splitting it over items
         * until the amount is expired, discounting 1 cent at a time.
         *
         * @since 3.2.0
         * @param  WC_Coupon $coupon Coupon object if appliable. Passed through filters.
         * @param  array     $items_to_apply Array of items to apply the coupon to.
         * @param  int       $amount Fixed discount amount to apply.
         * @return int Total discounted.
         */
        protected function apply_coupon_remainder($coupon, $items_to_apply, $amount)
        {
        }
        /**
         * Ensure coupon exists or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_exists($coupon)
        {
        }
        /**
         * Ensure coupon usage limit is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_usage_limit($coupon)
        {
        }
        /**
         * Ensure coupon user usage limit is valid or throw exception.
         *
         * Per user usage limit - check here if user is logged in (against user IDs).
         * Checked again for emails later on in WC_Cart::check_customer_coupons().
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon  Coupon data.
         * @param  int       $user_id User ID.
         * @return bool
         */
        protected function validate_coupon_user_usage_limit($coupon, $user_id = 0)
        {
        }
        /**
         * Ensure coupon date is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_expiry_date($coupon)
        {
        }
        /**
         * Ensure coupon amount is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon   Coupon data.
         * @return bool
         */
        protected function validate_coupon_minimum_amount($coupon)
        {
        }
        /**
         * Ensure coupon amount is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon   Coupon data.
         * @return bool
         */
        protected function validate_coupon_maximum_amount($coupon)
        {
        }
        /**
         * Ensure coupon is valid for products in the list is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_product_ids($coupon)
        {
        }
        /**
         * Ensure coupon is valid for product categories in the list is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_product_categories($coupon)
        {
        }
        /**
         * Ensure coupon is valid for sale items in the list is valid or throw exception.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_sale_items($coupon)
        {
        }
        /**
         * All exclusion rules must pass at the same time for a product coupon to be valid.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_excluded_items($coupon)
        {
        }
        /**
         * Cart discounts cannot be added if non-eligible product is found.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_eligible_items($coupon)
        {
        }
        /**
         * Exclude products.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_excluded_product_ids($coupon)
        {
        }
        /**
         * Exclude categories from product list.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_excluded_product_categories($coupon)
        {
        }
        /**
         * Get the object subtotal
         *
         * @return int
         */
        protected function get_object_subtotal()
        {
        }
        /**
         * Check if a coupon is valid.
         *
         * Error Codes:
         * - 100: Invalid filtered.
         * - 101: Invalid removed.
         * - 102: Not yours removed.
         * - 103: Already applied.
         * - 104: Individual use only.
         * - 105: Not exists.
         * - 106: Usage limit reached.
         * - 107: Expired.
         * - 108: Minimum spend limit not met.
         * - 109: Not applicable.
         * - 110: Not valid for sale items.
         * - 111: Missing coupon code.
         * - 112: Maximum spend limit met.
         * - 113: Excluded products.
         * - 114: Excluded categories.
         *
         * @since  3.2.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool|WP_Error
         */
        public function is_coupon_valid($coupon)
        {
        }
    }
    /**
     * WC_Background_Updater Class.
     */
    class WC_Background_Updater extends \WC_Background_Process
    {
        /**
         * Initiate new background process.
         */
        public function __construct()
        {
        }
        /**
         * Dispatch updater.
         *
         * Updater will still run via cron job if this fails for any reason.
         */
        public function dispatch()
        {
        }
        /**
         * Handle cron healthcheck
         *
         * Restart the background process if not already running
         * and data exists in the queue.
         */
        public function handle_cron_healthcheck()
        {
        }
        /**
         * Schedule fallback event.
         */
        protected function schedule_event()
        {
        }
        /**
         * Is the updater running?
         *
         * @return boolean
         */
        public function is_updating()
        {
        }
        /**
         * Task
         *
         * Override this method to perform any actions required on each
         * queue item. Return the modified item for further processing
         * in the next pass through. Or, return false to remove the
         * item from the queue.
         *
         * @param string $callback Update callback function.
         * @return string|bool
         */
        protected function task($callback)
        {
        }
        /**
         * Complete
         *
         * Override if applicable, but ensure that the below actions are
         * performed, or, call parent::complete().
         */
        protected function complete()
        {
        }
        /**
         * See if the batch limit has been exceeded.
         *
         * @return bool
         */
        public function is_memory_exceeded()
        {
        }
    }
    /**
     * WC_Cart_Fees class.
     *
     * @since 3.2.0
     */
    final class WC_Cart_Fees
    {
        /**
         * An array of fee objects.
         *
         * @var object[]
         */
        private $fees = array();
        /**
         * Reference to cart object.
         *
         * @since 3.2.0
         * @var WC_Cart
         */
        private $cart;
        /**
         * New fees are made out of these props.
         *
         * @var array
         */
        private $default_fee_props = array('id' => '', 'name' => '', 'tax_class' => '', 'taxable' => \false, 'amount' => 0, 'total' => 0);
        /**
         * Constructor. Reference to the cart.
         *
         * @since 3.2.0
         * @throws Exception If missing WC_Cart object.
         * @param WC_Cart $cart Cart object.
         */
        public function __construct(&$cart)
        {
        }
        /**
         * Register methods for this object on the appropriate WordPress hooks.
         */
        public function init()
        {
        }
        /**
         * Add a fee. Fee IDs must be unique.
         *
         * @since 3.2.0
         * @param array $args Array of fee properties.
         * @return object Either a fee object if added, or a WP_Error if it failed.
         */
        public function add_fee($args = array())
        {
        }
        /**
         * Get fees.
         *
         * @return array
         */
        public function get_fees()
        {
        }
        /**
         * Set fees.
         *
         * @param object[] $raw_fees Array of fees.
         */
        public function set_fees($raw_fees = array())
        {
        }
        /**
         * Remove all fees.
         *
         * @since 3.2.0
         */
        public function remove_all_fees()
        {
        }
        /**
         * Sort fees by amount.
         *
         * @param WC_Coupon $a Coupon object.
         * @param WC_Coupon $b Coupon object.
         * @return int
         */
        protected function sort_fees_callback($a, $b)
        {
        }
        /**
         * Generate a unique ID for the fee being added.
         *
         * @param string $fee Fee object.
         * @return string fee key.
         */
        private function generate_id($fee)
        {
        }
    }
    /**
     * Product factory class.
     */
    class WC_Product_Factory
    {
        /**
         * Get a product.
         *
         * @param mixed $product_id WC_Product|WP_Post|int|bool $product Product instance, post instance, numeric or false to use global $post.
         * @param array $deprecated Previously used to pass arguments to the factory, e.g. to force a type.
         * @return WC_Product|bool Product object or false if the product cannot be loaded.
         */
        public function get_product($product_id = \false, $deprecated = array())
        {
        }
        /**
         * Gets a product classname and allows filtering. Returns WC_Product_Simple if the class does not exist.
         *
         * @since  3.0.0
         * @param  int    $product_id   Product ID.
         * @param  string $product_type Product type.
         * @return string
         */
        public static function get_product_classname($product_id, $product_type)
        {
        }
        /**
         * Get the product type for a product.
         *
         * @since 3.0.0
         * @param  int $product_id Product ID.
         * @return string|false
         */
        public static function get_product_type($product_id)
        {
        }
        /**
         * Create a WC coding standards compliant class name e.g. WC_Product_Type_Class instead of WC_Product_type-class.
         *
         * @param  string $product_type Product type.
         * @return string|false
         */
        public static function get_classname_from_product_type($product_type)
        {
        }
        /**
         * Get the product ID depending on what was passed.
         *
         * @since  3.0.0
         * @param  WC_Product|WP_Post|int|bool $product Product instance, post instance, numeric or false to use global $post.
         * @return int|bool false on failure
         */
        private function get_product_id($product)
        {
        }
    }
    /**
     * WC_Customizer_Control_Cropping class.
     */
    class WC_Customizer_Control_Cropping extends \WP_Customize_Control
    {
        /**
         * Declare the control type.
         *
         * @var string
         */
        public $type = 'woocommerce-cropping-control';
        /**
         * Render control.
         */
        public function render_content()
        {
        }
    }
    /**
     * WC_Shop_Customizer class.
     */
    class WC_Shop_Customizer
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Add settings to the customizer.
         *
         * @param WP_Customize_Manager $wp_customize Theme Customizer object.
         */
        public function add_sections($wp_customize)
        {
        }
        /**
         * Frontend CSS styles.
         */
        public function add_frontend_scripts()
        {
        }
        /**
         * CSS styles to improve our form.
         */
        public function add_styles()
        {
        }
        /**
         * Scripts to improve our form.
         */
        public function add_scripts()
        {
        }
        /**
         * Sanitize the shop page & category display setting.
         *
         * @param string $value '', 'subcategories', or 'both'.
         * @return string
         */
        public function sanitize_archive_display($value)
        {
        }
        /**
         * Sanitize the catalog orderby setting.
         *
         * @param string $value An array key from the below array.
         * @return string
         */
        public function sanitize_default_catalog_orderby($value)
        {
        }
        /**
         * Store notice section.
         *
         * @param WP_Customize_Manager $wp_customize Theme Customizer object.
         */
        private function add_store_notice_section($wp_customize)
        {
        }
        /**
         * Product catalog section.
         *
         * @param WP_Customize_Manager $wp_customize Theme Customizer object.
         */
        public function add_product_catalog_section($wp_customize)
        {
        }
        /**
         * Product images section.
         *
         * @param WP_Customize_Manager $wp_customize Theme Customizer object.
         */
        private function add_product_images_section($wp_customize)
        {
        }
        /**
         * Checkout section.
         *
         * @param WP_Customize_Manager $wp_customize Theme Customizer object.
         */
        public function add_checkout_section($wp_customize)
        {
        }
        /**
         * Sanitize field display.
         *
         * @param string $value '', 'subcategories', or 'both'.
         * @return string
         */
        public function sanitize_checkout_field_display($value)
        {
        }
    }
    /**
     * WC_Background_Emailer Class.
     */
    class WC_Background_Emailer extends \WC_Background_Process
    {
        /**
         * Initiate new background process.
         */
        public function __construct()
        {
        }
        /**
         * Schedule fallback event.
         */
        protected function schedule_event()
        {
        }
        /**
         * Task
         *
         * Override this method to perform any actions required on each
         * queue item. Return the modified item for further processing
         * in the next pass through. Or, return false to remove the
         * item from the queue.
         *
         * @param array $callback Update callback function.
         * @return mixed
         */
        protected function task($callback)
        {
        }
        /**
         * Finishes replying to the client, but keeps the process running for further (async) code execution.
         *
         * @see https://core.trac.wordpress.org/ticket/41358 .
         */
        protected function close_http_connection()
        {
        }
        /**
         * Save and run queue.
         */
        public function dispatch_queue()
        {
        }
        /**
         * Get post args
         *
         * @return array
         */
        protected function get_post_args()
        {
        }
        /**
         * Handle
         *
         * Pass each queue item to the task handler, while remaining
         * within server memory and time limit constraints.
         */
        protected function handle()
        {
        }
    }
    /**
     * WC_Form_Handler class.
     */
    class WC_Form_Handler
    {
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Remove key and user ID (or user login, as a fallback) from query string, set cookie, and redirect to account page to show the form.
         */
        public static function redirect_reset_password_link()
        {
        }
        /**
         * Save and and update a billing or shipping address if the
         * form was submitted through the user account page.
         */
        public static function save_address()
        {
        }
        /**
         * Save the password/account details and redirect back to the my account page.
         */
        public static function save_account_details()
        {
        }
        /**
         * Process the checkout form.
         */
        public static function checkout_action()
        {
        }
        /**
         * Process the pay form.
         *
         * @throws Exception On payment error.
         */
        public static function pay_action()
        {
        }
        /**
         * Process the add payment method form.
         */
        public static function add_payment_method_action()
        {
        }
        /**
         * Process the delete payment method form.
         */
        public static function delete_payment_method_action()
        {
        }
        /**
         * Process the delete payment method form.
         */
        public static function set_default_payment_method_action()
        {
        }
        /**
         * Remove from cart/update.
         */
        public static function update_cart_action()
        {
        }
        /**
         * Place a previous order again.
         *
         * @deprecated 3.5.0 Logic moved to cart session handling.
         */
        public static function order_again()
        {
        }
        /**
         * Cancel a pending order.
         */
        public static function cancel_order()
        {
        }
        /**
         * Add to cart action.
         *
         * Checks for a valid request, does validation (via hooks) and then redirects if valid.
         *
         * @param bool $url (default: false) URL to redirect to.
         */
        public static function add_to_cart_action($url = \false)
        {
        }
        /**
         * Handle adding simple products to the cart.
         *
         * @since 2.4.6 Split from add_to_cart_action.
         * @param int $product_id Product ID to add to the cart.
         * @return bool success or not
         */
        private static function add_to_cart_handler_simple($product_id)
        {
        }
        /**
         * Handle adding grouped products to the cart.
         *
         * @since 2.4.6 Split from add_to_cart_action.
         * @param int $product_id Product ID to add to the cart.
         * @return bool success or not
         */
        private static function add_to_cart_handler_grouped($product_id)
        {
        }
        /**
         * Handle adding variable products to the cart.
         *
         * @since 2.4.6 Split from add_to_cart_action.
         * @throws Exception If add to cart fails.
         * @param int $product_id Product ID to add to the cart.
         * @return bool success or not
         */
        private static function add_to_cart_handler_variable($product_id)
        {
        }
        /**
         * Process the login form.
         *
         * @throws Exception On login error.
         */
        public static function process_login()
        {
        }
        /**
         * Handle lost password form.
         */
        public static function process_lost_password()
        {
        }
        /**
         * Handle reset password form.
         */
        public static function process_reset_password()
        {
        }
        /**
         * Process the registration form.
         *
         * @throws Exception On registration error.
         */
        public static function process_registration()
        {
        }
    }
    /**
     * Coupon class.
     */
    class WC_Coupon extends \WC_Legacy_Coupon
    {
        /**
         * Data array, with defaults.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('code' => '', 'amount' => 0, 'date_created' => \null, 'date_modified' => \null, 'date_expires' => \null, 'discount_type' => 'fixed_cart', 'description' => '', 'usage_count' => 0, 'individual_use' => \false, 'product_ids' => array(), 'excluded_product_ids' => array(), 'usage_limit' => 0, 'usage_limit_per_user' => 0, 'limit_usage_to_x_items' => \null, 'free_shipping' => \false, 'product_categories' => array(), 'excluded_product_categories' => array(), 'exclude_sale_items' => \false, 'minimum_amount' => '', 'maximum_amount' => '', 'email_restrictions' => array(), 'used_by' => array(), 'virtual' => \false);
        // Coupon message codes.
        const E_WC_COUPON_INVALID_FILTERED = 100;
        const E_WC_COUPON_INVALID_REMOVED = 101;
        const E_WC_COUPON_NOT_YOURS_REMOVED = 102;
        const E_WC_COUPON_ALREADY_APPLIED = 103;
        const E_WC_COUPON_ALREADY_APPLIED_INDIV_USE_ONLY = 104;
        const E_WC_COUPON_NOT_EXIST = 105;
        const E_WC_COUPON_USAGE_LIMIT_REACHED = 106;
        const E_WC_COUPON_EXPIRED = 107;
        const E_WC_COUPON_MIN_SPEND_LIMIT_NOT_MET = 108;
        const E_WC_COUPON_NOT_APPLICABLE = 109;
        const E_WC_COUPON_NOT_VALID_SALE_ITEMS = 110;
        const E_WC_COUPON_PLEASE_ENTER = 111;
        const E_WC_COUPON_MAX_SPEND_LIMIT_MET = 112;
        const E_WC_COUPON_EXCLUDED_PRODUCTS = 113;
        const E_WC_COUPON_EXCLUDED_CATEGORIES = 114;
        const WC_COUPON_SUCCESS = 200;
        const WC_COUPON_REMOVED = 201;
        /**
         * Cache group.
         *
         * @var string
         */
        protected $cache_group = 'coupons';
        /**
         * Coupon constructor. Loads coupon data.
         *
         * @param mixed $data Coupon data, object, ID or code.
         */
        public function __construct($data = '')
        {
        }
        /**
         * If the object has an ID, read using the data store.
         *
         * @since 3.4.1
         */
        protected function read_object_from_database()
        {
        }
        /**
         * Checks the coupon type.
         *
         * @param  string $type Array or string of types.
         * @return bool
         */
        public function is_type($type)
        {
        }
        /**
         * Prefix for action and filter hooks on data.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_hook_prefix()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        |
        | Methods for getting data from the coupon object.
        |
        */
        /**
         * Get coupon code.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_code($context = 'view')
        {
        }
        /**
         * Get coupon description.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_description($context = 'view')
        {
        }
        /**
         * Get discount type.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_discount_type($context = 'view')
        {
        }
        /**
         * Get coupon amount.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return float
         */
        public function get_amount($context = 'view')
        {
        }
        /**
         * Get coupon expiration date.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_expires($context = 'view')
        {
        }
        /**
         * Get date_created
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_created($context = 'view')
        {
        }
        /**
         * Get date_modified
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return WC_DateTime|NULL object if the date is set or null if there is no date.
         */
        public function get_date_modified($context = 'view')
        {
        }
        /**
         * Get coupon usage count.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_usage_count($context = 'view')
        {
        }
        /**
         * Get the "indvidual use" checkbox status.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_individual_use($context = 'view')
        {
        }
        /**
         * Get product IDs this coupon can apply to.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_product_ids($context = 'view')
        {
        }
        /**
         * Get product IDs that this coupon should not apply to.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_excluded_product_ids($context = 'view')
        {
        }
        /**
         * Get coupon usage limit.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_usage_limit($context = 'view')
        {
        }
        /**
         * Get coupon usage limit per customer (for a single customer)
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer
         */
        public function get_usage_limit_per_user($context = 'view')
        {
        }
        /**
         * Usage limited to certain amount of items
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return integer|null
         */
        public function get_limit_usage_to_x_items($context = 'view')
        {
        }
        /**
         * If this coupon grants free shipping or not.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_free_shipping($context = 'view')
        {
        }
        /**
         * Get product categories this coupon can apply to.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_product_categories($context = 'view')
        {
        }
        /**
         * Get product categories this coupon cannot not apply to.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_excluded_product_categories($context = 'view')
        {
        }
        /**
         * If this coupon should exclude items on sale.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_exclude_sale_items($context = 'view')
        {
        }
        /**
         * Get minimum spend amount.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return float
         */
        public function get_minimum_amount($context = 'view')
        {
        }
        /**
         * Get maximum spend amount.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return float
         */
        public function get_maximum_amount($context = 'view')
        {
        }
        /**
         * Get emails to check customer usage restrictions.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_email_restrictions($context = 'view')
        {
        }
        /**
         * Get records of all users who have used the current coupon.
         *
         * @since  3.0.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_used_by($context = 'view')
        {
        }
        /**
         * If the filter is added through the woocommerce_get_shop_coupon_data filter, it's virtual and not in the DB.
         *
         * @since 3.2.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return boolean
         */
        public function get_virtual($context = 'view')
        {
        }
        /**
         * Get discount amount for a cart item.
         *
         * @param  float      $discounting_amount Amount the coupon is being applied to.
         * @param  array|null $cart_item          Cart item being discounted if applicable.
         * @param  boolean    $single             True if discounting a single qty item, false if its the line.
         * @return float Amount this coupon has discounted.
         */
        public function get_discount_amount($discounting_amount, $cart_item = \null, $single = \false)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Functions for setting coupon data. These should not update anything in the
        | database itself and should only change what is stored in the class
        | object.
        |
        */
        /**
         * Set coupon code.
         *
         * @since 3.0.0
         * @param string $code Coupon code.
         */
        public function set_code($code)
        {
        }
        /**
         * Set coupon description.
         *
         * @since 3.0.0
         * @param string $description Description.
         */
        public function set_description($description)
        {
        }
        /**
         * Set discount type.
         *
         * @since 3.0.0
         * @param string $discount_type Discount type.
         */
        public function set_discount_type($discount_type)
        {
        }
        /**
         * Set amount.
         *
         * @since 3.0.0
         * @param float $amount Amount.
         */
        public function set_amount($amount)
        {
        }
        /**
         * Set expiration date.
         *
         * @since  3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if there is no date.
         */
        public function set_date_expires($date)
        {
        }
        /**
         * Set date_created
         *
         * @since  3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if there is no date.
         */
        public function set_date_created($date)
        {
        }
        /**
         * Set date_modified
         *
         * @since  3.0.0
         * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if there is no date.
         */
        public function set_date_modified($date)
        {
        }
        /**
         * Set how many times this coupon has been used.
         *
         * @since 3.0.0
         * @param int $usage_count Usage count.
         */
        public function set_usage_count($usage_count)
        {
        }
        /**
         * Set if this coupon can only be used once.
         *
         * @since 3.0.0
         * @param bool $is_individual_use If is for individual use.
         */
        public function set_individual_use($is_individual_use)
        {
        }
        /**
         * Set the product IDs this coupon can be used with.
         *
         * @since 3.0.0
         * @param array $product_ids Products IDs.
         */
        public function set_product_ids($product_ids)
        {
        }
        /**
         * Set the product IDs this coupon cannot be used with.
         *
         * @since 3.0.0
         * @param array $excluded_product_ids Exclude product IDs.
         */
        public function set_excluded_product_ids($excluded_product_ids)
        {
        }
        /**
         * Set the amount of times this coupon can be used.
         *
         * @since 3.0.0
         * @param int $usage_limit Usage limit.
         */
        public function set_usage_limit($usage_limit)
        {
        }
        /**
         * Set the amount of times this coupon can be used per user.
         *
         * @since 3.0.0
         * @param int $usage_limit Usage limit.
         */
        public function set_usage_limit_per_user($usage_limit)
        {
        }
        /**
         * Set usage limit to x number of items.
         *
         * @since 3.0.0
         * @param int|null $limit_usage_to_x_items Limit usage to X items.
         */
        public function set_limit_usage_to_x_items($limit_usage_to_x_items)
        {
        }
        /**
         * Set if this coupon enables free shipping or not.
         *
         * @since 3.0.0
         * @param bool $free_shipping If grant free shipping.
         */
        public function set_free_shipping($free_shipping)
        {
        }
        /**
         * Set the product category IDs this coupon can be used with.
         *
         * @since 3.0.0
         * @param array $product_categories List of product categories.
         */
        public function set_product_categories($product_categories)
        {
        }
        /**
         * Set the product category IDs this coupon cannot be used with.
         *
         * @since 3.0.0
         * @param array $excluded_product_categories List of excluded product categories.
         */
        public function set_excluded_product_categories($excluded_product_categories)
        {
        }
        /**
         * Set if this coupon should excluded sale items or not.
         *
         * @since 3.0.0
         * @param bool $exclude_sale_items If should exclude sale items.
         */
        public function set_exclude_sale_items($exclude_sale_items)
        {
        }
        /**
         * Set the minimum spend amount.
         *
         * @since 3.0.0
         * @param float $amount Minium amount.
         */
        public function set_minimum_amount($amount)
        {
        }
        /**
         * Set the maximum spend amount.
         *
         * @since 3.0.0
         * @param float $amount Maximum amount.
         */
        public function set_maximum_amount($amount)
        {
        }
        /**
         * Set email restrictions.
         *
         * @since 3.0.0
         * @param array $emails List of emails.
         */
        public function set_email_restrictions($emails = array())
        {
        }
        /**
         * Set which users have used this coupon.
         *
         * @since 3.0.0
         * @param array $used_by List of user IDs.
         */
        public function set_used_by($used_by)
        {
        }
        /**
         * Set coupon virtual state.
         *
         * @param boolean $virtual Whether it is virtual or not.
         * @since 3.2.0
         */
        public function set_virtual($virtual)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Other Actions
        |--------------------------------------------------------------------------
        */
        /**
         * Developers can programmatically return coupons. This function will read those values into our WC_Coupon class.
         *
         * @since 3.0.0
         * @param string $code   Coupon code.
         * @param array  $coupon Array of coupon properties.
         */
        public function read_manual_coupon($code, $coupon)
        {
        }
        /**
         * Increase usage count for current coupon.
         *
         * @param string $used_by Either user ID or billing email.
         */
        public function increase_usage_count($used_by = '')
        {
        }
        /**
         * Decrease usage count for current coupon.
         *
         * @param string $used_by Either user ID or billing email.
         */
        public function decrease_usage_count($used_by = '')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Validation & Error Handling
        |--------------------------------------------------------------------------
        */
        /**
         * Returns the error_message string.
         *
         * @access public
         * @return string
         */
        public function get_error_message()
        {
        }
        /**
         * Check if a coupon is valid for the cart.
         *
         * @deprecated 3.2.0 In favor of WC_Discounts->is_coupon_valid.
         * @return bool
         */
        public function is_valid()
        {
        }
        /**
         * Check if a coupon is valid.
         *
         * @return bool
         */
        public function is_valid_for_cart()
        {
        }
        /**
         * Check if a coupon is valid for a product.
         *
         * @param WC_Product $product Product instance.
         * @param array      $values  Values.
         * @return bool
         */
        public function is_valid_for_product($product, $values = array())
        {
        }
        /**
         * Converts one of the WC_Coupon message/error codes to a message string and.
         * displays the message/error.
         *
         * @param int $msg_code Message/error code.
         */
        public function add_coupon_message($msg_code)
        {
        }
        /**
         * Map one of the WC_Coupon message codes to a message string.
         *
         * @param integer $msg_code Message code.
         * @return string Message/error string.
         */
        public function get_coupon_message($msg_code)
        {
        }
        /**
         * Map one of the WC_Coupon error codes to a message string.
         *
         * @param int $err_code Message/error code.
         * @return string Message/error string
         */
        public function get_coupon_error($err_code)
        {
        }
        /**
         * Map one of the WC_Coupon error codes to an error string.
         * No coupon instance will be available where a coupon does not exist,
         * so this static method exists.
         *
         * @param int $err_code Error code.
         * @return string Error string.
         */
        public static function get_generic_coupon_error($err_code)
        {
        }
    }
    /**
     * Session handler class.
     */
    class WC_Session_Handler extends \WC_Session
    {
        /**
         * Cookie name used for the session.
         *
         * @var string cookie name
         */
        protected $_cookie;
        /**
         * Stores session expiry.
         *
         * @var string session due to expire timestamp
         */
        protected $_session_expiring;
        /**
         * Stores session due to expire timestamp.
         *
         * @var string session expiration timestamp
         */
        protected $_session_expiration;
        /**
         * True when the cookie exists.
         *
         * @var bool Based on whether a cookie exists.
         */
        protected $_has_cookie = \false;
        /**
         * Table name for session data.
         *
         * @var string Custom session table name
         */
        protected $_table;
        /**
         * Constructor for the session class.
         */
        public function __construct()
        {
        }
        /**
         * Init hooks and session data.
         *
         * @since 3.3.0
         */
        public function init()
        {
        }
        /**
         * Setup cookie and customer ID.
         *
         * @since 3.6.0
         */
        public function init_session_cookie()
        {
        }
        /**
         * Sets the session cookie on-demand (usually after adding an item to the cart).
         *
         * Since the cookie name (as of 2.1) is prepended with wp, cache systems like batcache will not cache pages when set.
         *
         * Warning: Cookies will only be set if this is called before the headers are sent.
         *
         * @param bool $set Should the session cookie be set.
         */
        public function set_customer_session_cookie($set)
        {
        }
        /**
         * Should the session cookie be secure?
         *
         * @since 3.6.0
         * @return bool
         */
        protected function use_secure_cookie()
        {
        }
        /**
         * Return true if the current user has an active session, i.e. a cookie to retrieve values.
         *
         * @return bool
         */
        public function has_session()
        {
        }
        /**
         * Set session expiration.
         */
        public function set_session_expiration()
        {
        }
        /**
         * Generate a unique customer ID for guests, or return user ID if logged in.
         *
         * Uses Portable PHP password hashing framework to generate a unique cryptographically strong ID.
         *
         * @return string
         */
        public function generate_customer_id()
        {
        }
        /**
         * Get the session cookie, if set. Otherwise return false.
         *
         * Session cookies without a customer ID are invalid.
         *
         * @return bool|array
         */
        public function get_session_cookie()
        {
        }
        /**
         * Get session data.
         *
         * @return array
         */
        public function get_session_data()
        {
        }
        /**
         * Gets a cache prefix. This is used in session names so the entire cache can be invalidated with 1 function call.
         *
         * @return string
         */
        private function get_cache_prefix()
        {
        }
        /**
         * Save data and delete guest session.
         *
         * @param int $old_session_key session ID before user logs in.
         */
        public function save_data($old_session_key = 0)
        {
        }
        /**
         * Destroy all session data.
         */
        public function destroy_session()
        {
        }
        /**
         * Forget all session data without destroying it.
         */
        public function forget_session()
        {
        }
        /**
         * When a user is logged out, ensure they have a unique nonce by using the customer/session ID.
         *
         * @param int $uid User ID.
         * @return string
         */
        public function nonce_user_logged_out($uid)
        {
        }
        /**
         * Cleanup session data from the database and clear caches.
         */
        public function cleanup_sessions()
        {
        }
        /**
         * Returns the session.
         *
         * @param string $customer_id Custo ID.
         * @param mixed  $default Default session value.
         * @return string|array
         */
        public function get_session($customer_id, $default = \false)
        {
        }
        /**
         * Delete the session from the cache and database.
         *
         * @param int $customer_id Customer ID.
         */
        public function delete_session($customer_id)
        {
        }
        /**
         * Update the session expiry timestamp.
         *
         * @param string $customer_id Customer ID.
         * @param int    $timestamp Timestamp to expire the cookie.
         */
        public function update_session_timestamp($customer_id, $timestamp)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * RestApi class.
     */
    class RestApi
    {
        /**
         * Initialize class features.
         */
        public static function init()
        {
        }
        /**
         * Register REST API routes.
         */
        public static function register_rest_routes()
        {
        }
        /**
         * Return a list of controller classes for this REST API namespace.
         *
         * @return array
         */
        protected static function get_controllers()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\BlockTypes {
    /**
     * AbstractDynamicBlock class.
     */
    abstract class AbstractDynamicBlock
    {
        /**
         * Block namespace.
         *
         * @var string
         */
        protected $namespace = 'woocommerce';
        /**
         * Block namespace.
         *
         * @var string
         */
        protected $block_name = '';
        /**
         * Registers the block type with WordPress.
         */
        public function register_block_type()
        {
        }
        /**
         * Include and render a dynamic block.
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $content    Block content. Default empty string.
         * @return string Rendered block type output.
         */
        public abstract function render($attributes = array(), $content = '');
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_attributes()
        {
        }
        /**
         * Get the schema for the alignment property.
         *
         * @return array Property definition for align.
         */
        protected function get_schema_align()
        {
        }
        /**
         * Get the schema for a list of IDs.
         *
         * @return array Property definition for a list of numeric ids.
         */
        protected function get_schema_list_ids()
        {
        }
        /**
         * Get the schema for a boolean value.
         *
         * @param  string $default  The default value.
         * @return array Property definition.
         */
        protected function get_schema_boolean($default = true)
        {
        }
        /**
         * Get the schema for a numeric value.
         *
         * @param  string $default  The default value.
         * @return array Property definition.
         */
        protected function get_schema_number($default)
        {
        }
        /**
         * Get the schema for a string value.
         *
         * @param  string $default  The default value.
         * @return array Property definition.
         */
        protected function get_schema_string($default = '')
        {
        }
    }
    /**
     * AbstractProductGrid class.
     */
    abstract class AbstractProductGrid extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Attributes.
         *
         * @var array
         */
        protected $attributes = array();
        /**
         * InnerBlocks content.
         *
         * @var string
         */
        protected $content = '';
        /**
         * Query args.
         *
         * @var array
         */
        protected $query_args = array();
        /**
         * Get a set of attributes shared across most of the grid blocks.
         *
         * @return array List of block attributes with type and defaults.
         */
        protected function get_attributes()
        {
        }
        /**
         * Include and render the dynamic block.
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $content    Block content. Default empty string.
         * @return string Rendered block type output.
         */
        public function render($attributes = array(), $content = '')
        {
        }
        /**
         * Get the schema for the contentVisibility attribute
         *
         * @return array List of block attributes with type and defaults.
         */
        protected function get_schema_content_visibility()
        {
        }
        /**
         * Get the schema for the orderby attribute.
         *
         * @return array Property definition of `orderby` attribute.
         */
        protected function get_schema_orderby()
        {
        }
        /**
         * Get the block's attributes.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return array  Block attributes merged with defaults.
         */
        protected function parse_attributes($attributes)
        {
        }
        /**
         * Parse query args.
         *
         * @return array
         */
        protected function parse_query_args()
        {
        }
        /**
         * Parse query args.
         *
         * @param array $query_args Query args.
         */
        protected function set_ordering_query_args(&$query_args)
        {
        }
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected abstract function set_block_query_args(&$query_args);
        /**
         * Set categories query args.
         *
         * @param array $query_args Query args.
         */
        protected function set_categories_query_args(&$query_args)
        {
        }
        /**
         * Set visibility query args.
         *
         * @param array $query_args Query args.
         */
        protected function set_visibility_query_args(&$query_args)
        {
        }
        /**
         * Works out the item limit based on rows and columns, or returns default.
         *
         * @return int
         */
        protected function get_products_limit()
        {
        }
        /**
         * Run the query and return an array of product IDs
         *
         * @return array List of product IDs
         */
        protected function get_products()
        {
        }
        /**
         * Get the list of classes to apply to this block.
         *
         * @return string space-separated list of classes.
         */
        protected function get_container_classes()
        {
        }
        /**
         * Render a single products.
         *
         * @param int $id Product ID.
         * @return string Rendered product output.
         */
        public function render_product($id)
        {
        }
        /**
         * Get the product image.
         *
         * @param \WC_Product $product Product.
         * @return string
         */
        protected function get_image_html($product)
        {
        }
        /**
         * Get the product title.
         *
         * @param \WC_Product $product Product.
         * @return string
         */
        protected function get_title_html($product)
        {
        }
        /**
         * Render the rating icons.
         *
         * @param WC_Product $product Product.
         * @return string Rendered product output.
         */
        protected function get_rating_html($product)
        {
        }
        /**
         * Get the price.
         *
         * @param \WC_Product $product Product.
         * @return string Rendered product output.
         */
        protected function get_price_html($product)
        {
        }
        /**
         * Get the sale badge.
         *
         * @param \WC_Product $product Product.
         * @return string Rendered product output.
         */
        protected function get_sale_badge_html($product)
        {
        }
        /**
         * Get the button.
         *
         * @param \WC_Product $product Product.
         * @return string Rendered product output.
         */
        protected function get_button_html($product)
        {
        }
        /**
         * Get the "add to cart" button.
         *
         * @param \WC_Product $product Product.
         * @return string Rendered product output.
         */
        protected function get_add_to_cart($product)
        {
        }
    }
    /**
     * ProductCategory class.
     */
    class ProductCategory extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-category';
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_attributes()
        {
        }
    }
    /**
     * ProductTag class.
     */
    class ProductTag extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-tag';
        /**
         * Set args specific to this block.
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_attributes()
        {
        }
    }
    /**
     * FeaturedProduct class.
     */
    class FeaturedProduct extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'featured-product';
        /**
         * Default attribute values, should match what's set in JS `registerBlockType`.
         *
         * @var array
         */
        protected $defaults = array('align' => 'none', 'contentAlign' => 'center', 'dimRatio' => 50, 'focalPoint' => false, 'height' => false, 'mediaId' => 0, 'mediaSrc' => '', 'showDesc' => true, 'showPrice' => true);
        /**
         * Render the Featured Product block.
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $content    Block content. Default empty string.
         * @return string Rendered block type output.
         */
        public function render($attributes = array(), $content = '')
        {
        }
        /**
         * Get the styles for the wrapper element (background image, color).
         *
         * @param array       $attributes Block attributes. Default empty array.
         * @param \WC_Product $product Product object.
         * @return string
         */
        public function get_styles($attributes, $product)
        {
        }
        /**
         * Get class names for the block container.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return string
         */
        public function get_classes($attributes)
        {
        }
        /**
         * Returns the main product image URL.
         *
         * @param \WC_Product $product Product object.
         * @param string      $size    Image size, defaults to 'full'.
         * @return string
         */
        public function get_image($product, $size = 'full')
        {
        }
    }
    /**
     * ProductTopRated class.
     */
    class ProductTopRated extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-top-rated';
        /**
         * Force orderby to rating.
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
    }
    /**
     * AbstractBlock class.
     */
    abstract class AbstractBlock
    {
        /**
         * Block namespace.
         *
         * @var string
         */
        protected $namespace = 'woocommerce';
        /**
         * Block namespace.
         *
         * @var string
         */
        protected $block_name = '';
        /**
         * Registers the block type with WordPress.
         */
        public function register_block_type()
        {
        }
    }
    /**
     * FeaturedCategory class.
     */
    class FeaturedCategory extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'featured-category';
        /**
         * Default attribute values, should match what's set in JS `registerBlockType`.
         *
         * @var array
         */
        protected $defaults = array('align' => 'none', 'contentAlign' => 'center', 'dimRatio' => 50, 'focalPoint' => false, 'height' => false, 'mediaId' => 0, 'mediaSrc' => '', 'showDesc' => true);
        /**
         * Render the Featured Category block.
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $content    Block content. Default empty string.
         * @return string Rendered block type output.
         */
        public function render($attributes = array(), $content = '')
        {
        }
        /**
         * Get the styles for the wrapper element (background image, color).
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param \WP_Term $category Term object.
         * @return string
         */
        public function get_styles($attributes, $category)
        {
        }
        /**
         * Get class names for the block container.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return string
         */
        public function get_classes($attributes)
        {
        }
        /**
         * Returns the main product image URL.
         *
         * @param \WP_Term $category Term object.
         * @param string   $size    Image size, defaults to 'full'.
         * @return string
         */
        public function get_image($category, $size = 'full')
        {
        }
    }
    /**
     * ProductOnSale class.
     */
    class ProductOnSale extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-on-sale';
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_attributes()
        {
        }
    }
    /**
     * ProductNew class.
     */
    class ProductNew extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-new';
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
    }
    /**
     * ProductBestSellers class.
     */
    class ProductBestSellers extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-best-sellers';
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
    }
    /**
     * ProductsByAttribute class.
     */
    class ProductsByAttribute extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'products-by-attribute';
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_attributes()
        {
        }
    }
    /**
     * HandpickedProducts class.
     */
    class HandpickedProducts extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractProductGrid
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'handpicked-products';
        /**
         * Set args specific to this block
         *
         * @param array $query_args Query args.
         */
        protected function set_block_query_args(&$query_args)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_attributes()
        {
        }
    }
    /**
     * ProductCategories class.
     */
    class ProductCategories extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-categories';
        /**
         * Registers the block type with WordPress.
         */
        public function register_block_type()
        {
        }
        /**
         * Append frontend scripts when rendering the Product Categories List block.
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $content    Block content. Default empty string.
         * @return string Rendered block type output.
         */
        public function render($attributes = array(), $content = '')
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * Main package class.
     */
    class Package
    {
        /**
         * Version.
         *
         * @var string
         */
        const VERSION = '2.3.0';
        /**
         * Stores if init has ran yet.
         *
         * @var boolean
         */
        protected static $did_init = false;
        /**
         * Init the package - load the blocks library and define constants.
         */
        public static function init()
        {
        }
        /**
         * Return the version of the package.
         *
         * @return string
         */
        public static function get_version()
        {
        }
        /**
         * Return the path to the package.
         *
         * @return string
         */
        public static function get_path()
        {
        }
        /**
         * Check dependencies exist.
         *
         * @return boolean
         */
        protected static function has_dependencies()
        {
        }
        /**
         * See if files have been built or not.
         *
         * @return bool
         */
        protected static function is_built()
        {
        }
        /**
         * Add a notice stating that the build has not been done yet.
         */
        protected static function add_build_notice()
        {
        }
        /**
         * Remove core blocks (for 3.6 and below).
         */
        protected static function remove_core_blocks()
        {
        }
    }
    /**
     * Assets class.
     */
    class Assets
    {
        /**
         * Initialize class features on init.
         */
        public static function init()
        {
        }
        /**
         * Register block scripts & styles.
         */
        public static function register_assets()
        {
        }
        /**
         * Add body classes.
         *
         * @param array $classes Array of CSS classnames.
         * @return array Modified array of CSS classnames.
         */
        public static function add_theme_body_class($classes = array())
        {
        }
        /**
         * These are used by @woocommerce/components & the block library to set up defaults
         * based on user-controlled settings from WordPress. Only use this in wp-admin.
         */
        public static function print_script_wc_settings()
        {
        }
        /**
         * Output block-related data on a global object.
         *
         * This is used to map site settings & data into JS-accessible variables.
         *
         * @since 2.0.0
         */
        public static function print_script_block_data()
        {
        }
        /**
         * Get the file modified time as a cache buster if we're in dev mode.
         *
         * @param string $file Local path to the file.
         * @return string The cache buster value to use for the given file.
         */
        protected static function get_file_version($file)
        {
        }
        /**
         * Registers a script according to `wp_register_script`, additionally loading the translations for the file.
         *
         * @since 2.0.0
         *
         * @param string $handle    Name of the script. Should be unique.
         * @param string $src       Full URL of the script, or path of the script relative to the WordPress root directory.
         * @param array  $deps      Optional. An array of registered script handles this script depends on. Default empty array.
         * @param bool   $has_i18n  Optional. Whether to add a script translation call to this file. Default 'true'.
         */
        protected static function register_script($handle, $src, $deps = array(), $has_i18n = true)
        {
        }
        /**
         * Queues a block script.
         *
         * @since 2.3.0
         *
         * @param string $name Name of the script used to identify the file inside build folder.
         */
        public static function register_block_script($name)
        {
        }
        /**
         * Registers a style according to `wp_register_style`.
         *
         * @since 2.0.0
         *
         * @param string $handle Name of the stylesheet. Should be unique.
         * @param string $src    Full URL of the stylesheet, or path of the stylesheet relative to the WordPress root directory.
         * @param array  $deps   Optional. An array of registered stylesheet handles this stylesheet depends on. Default empty array.
         * @param string $media  Optional. The media for which this stylesheet has been defined. Default 'all'. Accepts media types like
         *                       'all', 'print' and 'screen', or media queries like '(orientation: portrait)' and '(max-width: 640px)'.
         */
        protected static function register_style($handle, $src, $deps = array(), $media = 'all')
        {
        }
    }
    /**
     * Library class.
     */
    class Library
    {
        /**
         * Initialize block library features.
         */
        public static function init()
        {
        }
        /**
         * Register blocks, hooking up assets and render functions as needed.
         */
        public static function register_blocks()
        {
        }
    }
}
namespace {
    /**
     * Terms controller class.
     */
    abstract class WC_REST_Terms_Controller extends \WC_REST_Controller
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = '';
        /**
         * Taxonomy.
         *
         * @var string
         */
        protected $taxonomy = '';
        /**
         * Register the routes for terms.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read the terms.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to create a term.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a term.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to update a term.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to delete a term.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return boolean|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Check permissions.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @param string          $context Request context.
         * @return bool|WP_Error
         */
        protected function check_permissions($request, $context = 'read')
        {
        }
        /**
         * Get terms associated with a taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single term for a taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function create_item($request)
        {
        }
        /**
         * Get a single term from a taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Update a single term from a taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single term from a taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object          $term   Term object.
         * @param WP_REST_Request $request Full details about the request.
         * @return array Links for the given term.
         */
        protected function prepare_links($term, $request)
        {
        }
        /**
         * Update term meta fields.
         *
         * @param WP_Term         $term    Term object.
         * @param WP_REST_Request $request Full details about the request.
         * @return bool|WP_Error
         */
        protected function update_term_meta_fields($term, $request)
        {
        }
        /**
         * Get the terms attached to a product.
         *
         * This is an alternative to `get_terms()` that uses `get_the_terms()`
         * instead, which hits the object cache. There are a few things not
         * supported, notably `include`, `exclude`. In `self::get_items()` these
         * are instead treated as a full query.
         *
         * @param array           $prepared_args Arguments for `get_terms()`.
         * @param WP_REST_Request $request       Full details about the request.
         * @return array List of term objects. (Total count in `$this->total_terms`).
         */
        protected function get_terms_for_product($prepared_args, $request)
        {
        }
        /**
         * Comparison function for sorting terms by a column.
         *
         * Uses `$this->sort_column` to determine field to sort by.
         *
         * @param stdClass $left Term object.
         * @param stdClass $right Term object.
         * @return int <0 if left is higher "priority" than right, 0 if equal, >0 if right is higher "priority" than left.
         */
        protected function compare_terms($left, $right)
        {
        }
        /**
         * Get the query params for collections
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return int|WP_Error
         */
        protected function get_taxonomy($request)
        {
        }
    }
    /**
     * REST API Product Tags controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Terms_Controller
     */
    class WC_REST_Product_Tags_V1_Controller extends \WC_REST_Terms_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/tags';
        /**
         * Taxonomy.
         *
         * @var string
         */
        protected $taxonomy = 'product_tag';
        /**
         * Prepare a single product tag output for response.
         *
         * @param obj $item Term object.
         * @param WP_REST_Request $request
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Tag's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Product Tags controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Tags_V1_Controller
     */
    class WC_REST_Product_Tags_V2_Controller extends \WC_REST_Product_Tags_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Product Tags controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Tags_V2_Controller
     */
    class WC_REST_Product_Tags_Controller extends \WC_REST_Product_Tags_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
}
namespace Automattic\WooCommerce\Blocks\RestApi\Controllers {
    /**
     * REST API Product Tags controller class.
     */
    class ProductTags extends \WC_REST_Product_Tags_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/blocks';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Check permissions.
         *
         * @param \WP_REST_Request $request Full details about the request.
         * @param string           $context Request context.
         * @return bool|\WP_Error
         */
        protected function check_permissions($request, $context = 'read')
        {
        }
    }
}
namespace {
    /**
     * REST API Product Attribute Terms controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Terms_Controller
     */
    class WC_REST_Product_Attribute_Terms_V1_Controller extends \WC_REST_Terms_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/attributes/(?P<attribute_id>[\\d]+)/terms';
        /**
         * Register the routes for terms.
         */
        public function register_routes()
        {
        }
        /**
         * Prepare a single product attribute term output for response.
         *
         * @param WP_Term $item Term object.
         * @param WP_REST_Request $request
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Update term meta fields.
         *
         * @param WP_Term $term
         * @param WP_REST_Request $request
         * @return bool|WP_Error
         */
        protected function update_term_meta_fields($term, $request)
        {
        }
        /**
         * Get the Attribute Term's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Product Attribute Terms controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Attribute_Terms_V1_Controller
     */
    class WC_REST_Product_Attribute_Terms_V2_Controller extends \WC_REST_Product_Attribute_Terms_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Product Attribute Terms controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Attribute_Terms_V2_Controller
     */
    class WC_REST_Product_Attribute_Terms_Controller extends \WC_REST_Product_Attribute_Terms_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
}
namespace Automattic\WooCommerce\Blocks\RestApi\Controllers {
    /**
     * REST API Product Attribute Terms controller class.
     */
    class ProductAttributeTerms extends \WC_REST_Product_Attribute_Terms_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/blocks';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Check permissions.
         *
         * @param \WP_REST_Request $request Full details about the request.
         * @param string           $context Request context.
         * @return bool|\WP_Error
         */
        protected function check_permissions($request, $context = 'read')
        {
        }
        /**
         * Prepare a single product category output for response.
         *
         * @param \WP_Term         $item    Term object.
         * @param \WP_REST_Request $request Request instance.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
}
namespace {
    /**
     * REST API Product Attributes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Product_Attributes_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/attributes';
        /**
         * Attribute name.
         *
         * @var string
         */
        protected $attribute = '';
        /**
         * Register the routes for product attributes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read the attributes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to create a attribute.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a attribute.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to update a attribute.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to delete a attribute.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Get all attributes.
         *
         * @param WP_REST_Request $request
         * @return array
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single attribute.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function create_item($request)
        {
        }
        /**
         * Get a single attribute.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Update a single term from a taxonomy.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single attribute.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single product attribute output for response.
         *
         * @param obj $item Term object.
         * @param WP_REST_Request $request
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object $attribute Attribute object.
         * @return array Links for the given attribute.
         */
        protected function prepare_links($attribute)
        {
        }
        /**
         * Get the Attribute's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get attribute name.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return string
         */
        protected function get_taxonomy($request)
        {
        }
        /**
         * Get attribute data.
         *
         * @param int $id Attribute ID.
         * @return stdClass|WP_Error
         */
        protected function get_attribute($id)
        {
        }
        /**
         * Validate attribute slug.
         *
         * @deprecated 3.2.0
         * @param string $slug
         * @param bool $new_data
         * @return bool|WP_Error
         */
        protected function validate_attribute_slug($slug, $new_data = \true)
        {
        }
        /**
         * Schedule to flush rewrite rules.
         *
         * @deprecated 3.2.0
         * @since 3.0.0
         */
        protected function flush_rewrite_rules()
        {
        }
    }
    /**
     * REST API Product Attributes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Attributes_V1_Controller
     */
    class WC_REST_Product_Attributes_V2_Controller extends \WC_REST_Product_Attributes_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Product Attributes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Attributes_V2_Controller
     */
    class WC_REST_Product_Attributes_Controller extends \WC_REST_Product_Attributes_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
}
namespace Automattic\WooCommerce\Blocks\RestApi\Controllers {
    /**
     * REST API Product Attributes controller class.
     */
    class ProductAttributes extends \WC_REST_Product_Attributes_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/blocks';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read the attributes.
         *
         * @param  \WP_REST_Request $request Full details about the request.
         * @return \WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a attribute.
         *
         * @param  \WP_REST_Request $request Full details about the request.
         * @return \WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check permissions.
         *
         * @param \WP_REST_Request $request Full details about the request.
         * @param string           $context Request context.
         * @return bool|\WP_Error
         */
        protected function check_permissions($request, $context = 'read')
        {
        }
        /**
         * Prepare a single product category output for response.
         *
         * @param \WP_Term         $item    Term object.
         * @param \WP_REST_Request $request Request instance.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
}
namespace {
    /**
     * REST API Products controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Products_V2_Controller extends \WC_REST_CRUD_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'product';
        /**
         * If object is hierarchical.
         *
         * @var bool
         */
        protected $hierarchical = \true;
        /**
         * Initialize product actions.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Get object.
         *
         * @param int $id Object ID.
         *
         * @since  3.0.0
         * @return WC_Data
         */
        protected function get_object($id)
        {
        }
        /**
         * Prepare a single product output for response.
         *
         * @param WC_Data         $object  Object data.
         * @param WP_REST_Request $request Request object.
         *
         * @since  3.0.0
         * @return WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @since  3.0.0
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get the downloads for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         *
         * @return array
         */
        protected function get_downloads($product)
        {
        }
        /**
         * Get taxonomy terms.
         *
         * @param WC_Product $product  Product instance.
         * @param string     $taxonomy Taxonomy slug.
         *
         * @return array
         */
        protected function get_taxonomy_terms($product, $taxonomy = 'cat')
        {
        }
        /**
         * Get the images for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         *
         * @return array
         */
        protected function get_images($product)
        {
        }
        /**
         * Get attribute taxonomy label.
         *
         * @param string $name Taxonomy name.
         *
         * @deprecated 3.0.0
         * @return     string
         */
        protected function get_attribute_taxonomy_label($name)
        {
        }
        /**
         * Get product attribute taxonomy name.
         *
         * @param string     $slug    Taxonomy name.
         * @param WC_Product $product Product data.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_attribute_taxonomy_name($slug, $product)
        {
        }
        /**
         * Get default attributes.
         *
         * @param WC_Product $product Product instance.
         *
         * @return array
         */
        protected function get_default_attributes($product)
        {
        }
        /**
         * Get attribute options.
         *
         * @param int   $product_id Product ID.
         * @param array $attribute  Attribute data.
         *
         * @return array
         */
        protected function get_attribute_options($product_id, $attribute)
        {
        }
        /**
         * Get the attributes for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         *
         * @return array
         */
        protected function get_attributes($product)
        {
        }
        /**
         * Get product data.
         *
         * @param WC_Product $product Product instance.
         * @param string     $context Request context.
         *                            Options: 'view' and 'edit'.
         *
         * @return array
         */
        protected function get_product_data($product, $context = 'view')
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Data         $object  Object data.
         * @param WP_REST_Request $request Request object.
         *
         * @return array                   Links for the given post.
         */
        protected function prepare_links($object, $request)
        {
        }
        /**
         * Prepare a single product for create or update.
         *
         * @param WP_REST_Request $request Request object.
         * @param bool            $creating If is creating a new object.
         *
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Set product images.
         *
         * @param WC_Product $product Product instance.
         * @param array      $images  Images data.
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @return WC_Product
         */
        protected function set_product_images($product, $images)
        {
        }
        /**
         * Save product shipping data.
         *
         * @param WC_Product $product Product instance.
         * @param array      $data    Shipping data.
         *
         * @return WC_Product
         */
        protected function save_product_shipping_data($product, $data)
        {
        }
        /**
         * Save downloadable files.
         *
         * @param WC_Product $product    Product instance.
         * @param array      $downloads  Downloads data.
         * @param int        $deprecated Deprecated since 3.0.
         *
         * @return WC_Product
         */
        protected function save_downloadable_files($product, $downloads, $deprecated = 0)
        {
        }
        /**
         * Save taxonomy terms.
         *
         * @param WC_Product $product  Product instance.
         * @param array      $terms    Terms data.
         * @param string     $taxonomy Taxonomy name.
         *
         * @return WC_Product
         */
        protected function save_taxonomy_terms($product, $terms, $taxonomy = 'cat')
        {
        }
        /**
         * Save default attributes.
         *
         * @param WC_Product      $product Product instance.
         * @param WP_REST_Request $request Request data.
         *
         * @since  3.0.0
         * @return WC_Product
         */
        protected function save_default_attributes($product, $request)
        {
        }
        /**
         * Clear caches here so in sync with any new variations/children.
         *
         * @param WC_Data $object Object data.
         */
        public function clear_transients($object)
        {
        }
        /**
         * Delete a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API variations controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Products_V2_Controller
     */
    class WC_REST_Product_Variations_V2_Controller extends \WC_REST_Products_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/(?P<product_id>[\\d]+)/variations';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'product_variation';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Get object.
         *
         * @since  3.0.0
         * @param  int $id Object ID.
         * @return WC_Data
         */
        protected function get_object($id)
        {
        }
        /**
         * Check if a given request has access to update an item.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Prepare a single variation output for response.
         *
         * @since  3.0.0
         * @param  WC_Data         $object  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Prepare a single variation for create or update.
         *
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Clear caches here so in sync with any new variations.
         *
         * @param WC_Data $object Object data.
         */
        public function clear_transients($object)
        {
        }
        /**
         * Delete a variation.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error|WP_REST_Response
         */
        public function delete_item($request)
        {
        }
        /**
         * Bulk create, update and delete items.
         *
         * @since  3.0.0
         * @param WP_REST_Request $request Full details about the request.
         * @return array Of WP_Error or WP_REST_Response.
         */
        public function batch_items($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Data         $object  Object data.
         * @param WP_REST_Request $request Request object.
         * @return array                   Links for the given post.
         */
        protected function prepare_links($object, $request)
        {
        }
        /**
         * Get the Variation's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API variations controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Variations_V2_Controller
     */
    class WC_REST_Product_Variations_Controller extends \WC_REST_Product_Variations_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Prepare a single variation output for response.
         *
         * @param  WC_Data         $object  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepare a single variation for create or update.
         *
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Get the image for a product variation.
         *
         * @param WC_Product_Variation $variation Variation data.
         * @return array
         */
        protected function get_image($variation)
        {
        }
        /**
         * Set variation image.
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param  WC_Product_Variation $variation Variation instance.
         * @param  array                $image    Image data.
         * @return WC_Product_Variation
         */
        protected function set_variation_image($variation, $image)
        {
        }
        /**
         * Get the Variation's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\RestApi\Controllers {
    /**
     * REST API variations controller class.
     */
    class Variations extends \WC_REST_Product_Variations_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/blocks';
        /**
         * Register the routes for variations.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read items.
         *
         * @param  \WP_REST_Request $request Full details about the request.
         * @return \WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Prepare a single variation output for response.
         *
         * @param  \WC_Data         $object  Object data.
         * @param  \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
}
namespace {
    /**
     * REST API Products controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Products_V2_Controller
     */
    class WC_REST_Products_Controller extends \WC_REST_Products_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Get the images for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         * @return array
         */
        protected function get_images($product)
        {
        }
        /**
         * Make extra product orderby features supported by WooCommerce available to the WC API.
         * This includes 'price', 'popularity', and 'rating'.
         *
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Set product images.
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param WC_Product $product Product instance.
         * @param array      $images  Images data.
         * @return WC_Product
         */
        protected function set_product_images($product, $images)
        {
        }
        /**
         * Prepare a single product for create or update.
         *
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Add new options for 'orderby' to the collection params.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get product data.
         *
         * @param WC_Product $product Product instance.
         * @param string     $context Request context.
         *                            Options: 'view' and 'edit'.
         * @return array
         */
        protected function get_product_data($product, $context = 'view')
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\RestApi\Controllers {
    /**
     * REST API Products controller class.
     */
    class Products extends \WC_REST_Products_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/blocks';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read items.
         *
         * @param  \WP_REST_Request $request Full details about the request.
         * @return \WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read an item.
         *
         * @param  \WP_REST_Request $request Full details about the request.
         * @return \WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Change read permissions to allow author access to this API.
         *
         * @param array $permissions Array of access permissions.
         */
        public function change_permissions($permissions)
        {
        }
        /**
         * Get a collection of posts.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Make extra product orderby features supported by WooCommerce available to the WC API.
         * This includes 'price', 'popularity', and 'rating'.
         *
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get product data.
         *
         * @param \WC_Product|\WC_Product_Variation $product Product instance.
         * @param string                            $context Request context. Options: 'view' and 'edit'.
         * @return array
         */
        protected function get_product_data($product, $context = 'view')
        {
        }
        /**
         * Get the images for a product or product variation.
         *
         * @param \WC_Product|\WC_Product_Variation $product Product instance.
         * @return array
         */
        protected function get_images($product)
        {
        }
        /**
         * Update the collection params.
         *
         * Adds new options for 'orderby', and new parameters 'category_operator', 'attribute_operator'.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
}
namespace {
    /**
     * REST API Product Categories controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Terms_Controller
     */
    class WC_REST_Product_Categories_V1_Controller extends \WC_REST_Terms_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/categories';
        /**
         * Taxonomy.
         *
         * @var string
         */
        protected $taxonomy = 'product_cat';
        /**
         * Prepare a single product category output for response.
         *
         * @param WP_Term         $item    Term object.
         * @param WP_REST_Request $request Request instance.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Update term meta fields.
         *
         * @param WP_Term         $term    Term object.
         * @param WP_REST_Request $request Request instance.
         * @return bool|WP_Error
         */
        protected function update_term_meta_fields($term, $request)
        {
        }
        /**
         * Get the Category schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Product Categories controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Categories_V1_Controller
     */
    class WC_REST_Product_Categories_V2_Controller extends \WC_REST_Product_Categories_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Prepare a single product category output for response.
         *
         * @param WP_Term         $item    Term object.
         * @param WP_REST_Request $request Request instance.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Category schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Product Categories controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Categories_V2_Controller
     */
    class WC_REST_Product_Categories_Controller extends \WC_REST_Product_Categories_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Prepare a single product category output for response.
         *
         * @param WP_Term         $item    Term object.
         * @param WP_REST_Request $request Request instance.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Category schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Update term meta fields.
         *
         * @param WP_Term         $term    Term object.
         * @param WP_REST_Request $request Request instance.
         * @return bool|WP_Error
         *
         * @since 3.5.5
         */
        protected function update_term_meta_fields($term, $request)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\RestApi\Controllers {
    /**
     * REST API Product Categories controller class.
     */
    class ProductCategories extends \WC_REST_Product_Categories_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/blocks';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Check permissions.
         *
         * @param \WP_REST_Request $request Full details about the request.
         * @param string           $context Request context.
         * @return bool|\WP_Error
         */
        protected function check_permissions($request, $context = 'read')
        {
        }
        /**
         * Prepare a single product category output for response.
         *
         * @param \WP_Term         $item    Term object.
         * @param \WP_REST_Request $request Request instance.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
}
namespace {
    /**
     * REST API Product Shipping Classes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Terms_Controller
     */
    class WC_REST_Product_Shipping_Classes_V1_Controller extends \WC_REST_Terms_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/shipping_classes';
        /**
         * Taxonomy.
         *
         * @var string
         */
        protected $taxonomy = 'product_shipping_class';
        /**
         * Prepare a single product shipping class output for response.
         *
         * @param obj $item Term object.
         * @param WP_REST_Request $request
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the Shipping Class schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Orders controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Posts_Controller
     */
    class WC_REST_Orders_V1_Controller extends \WC_REST_Posts_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'orders';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_order';
        /**
         * Initialize orders actions.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for orders.
         */
        public function register_routes()
        {
        }
        /**
         * Prepare a single order output for response.
         *
         * @param WP_Post $post Post object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $data
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Order $order Order object.
         * @param WP_REST_Request $request Request object.
         * @return array Links for the given order.
         */
        protected function prepare_links($order, $request)
        {
        }
        /**
         * Query args.
         *
         * @param array $args
         * @param WP_REST_Request $request
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Prepare a single order for create.
         *
         * @param  WP_REST_Request $request Request object.
         * @return WP_Error|WC_Order $data Object.
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Create base WC Order object.
         * @deprecated 3.0.0
         * @param array $data
         * @return WC_Order
         */
        protected function create_base_order($data)
        {
        }
        /**
         * Only return writable props from schema.
         * @param  array $schema
         * @return bool
         */
        protected function filter_writable_props($schema)
        {
        }
        /**
         * Create order.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return int|WP_Error
         */
        protected function create_order($request)
        {
        }
        /**
         * Update order.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return int|WP_Error
         */
        protected function update_order($request)
        {
        }
        /**
         * Update address.
         *
         * @param WC_Order $order
         * @param array $posted
         * @param string $type
         */
        protected function update_address($order, $posted, $type = 'billing')
        {
        }
        /**
         * Gets the product ID from the SKU or posted ID.
         *
         * @param array $posted Request data
         *
         * @return int
         * @throws WC_REST_Exception
         */
        protected function get_product_id($posted)
        {
        }
        /**
         * Maybe set an item prop if the value was posted.
         * @param WC_Order_Item $item
         * @param string $prop
         * @param array $posted Request data.
         */
        protected function maybe_set_item_prop($item, $prop, $posted)
        {
        }
        /**
         * Maybe set item props if the values were posted.
         * @param WC_Order_Item $item
         * @param string[] $props
         * @param array $posted Request data.
         */
        protected function maybe_set_item_props($item, $props, $posted)
        {
        }
        /**
         * Create or update a line item.
         *
         * @param array $posted Line item data.
         * @param string $action 'create' to add line item or 'update' to update it.
         *
         * @return WC_Order_Item_Product
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_line_items($posted, $action = 'create')
        {
        }
        /**
         * Create or update an order shipping method.
         *
         * @param $posted $shipping Item data.
         * @param string $action 'create' to add shipping or 'update' to update it.
         *
         * @return WC_Order_Item_Shipping
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_shipping_lines($posted, $action)
        {
        }
        /**
         * Create or update an order fee.
         *
         * @param array $posted Item data.
         * @param string $action 'create' to add fee or 'update' to update it.
         *
         * @return WC_Order_Item_Fee
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_fee_lines($posted, $action)
        {
        }
        /**
         * Create or update an order coupon.
         *
         * @param array $posted Item data.
         * @param string $action 'create' to add coupon or 'update' to update it.
         *
         * @return WC_Order_Item_Coupon
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_coupon_lines($posted, $action)
        {
        }
        /**
         * Wrapper method to create/update order items.
         * When updating, the item ID provided is checked to ensure it is associated
         * with the order.
         *
         * @param WC_Order $order order
         * @param string $item_type
         * @param array $posted item provided in the request body
         * @throws WC_REST_Exception If item ID is not associated with order
         */
        protected function set_item($order, $item_type, $posted)
        {
        }
        /**
         * Helper method to check if the resource ID associated with the provided item is null.
         * Items can be deleted by setting the resource ID to null.
         *
         * @param array $item Item provided in the request body.
         * @return bool True if the item resource ID is null, false otherwise.
         */
        protected function item_is_null($item)
        {
        }
        /**
         * Create a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single order.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Get order statuses without prefixes.
         * @return array
         */
        protected function get_order_statuses()
        {
        }
        /**
         * Get the Order's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Customers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Customer_Downloads_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'customers/(?P<customer_id>[\\d]+)/downloads';
        /**
         * Register the routes for customers.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read customers.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Get all customer downloads.
         *
         * @param WP_REST_Request $request
         * @return array
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a single download output for response.
         *
         * @param stdObject $download Download object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($download, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param stdClass $download Download object.
         * @param WP_REST_Request $request Request object.
         * @return array Links for the given customer download.
         */
        protected function prepare_links($download, $request)
        {
        }
        /**
         * Get the Customer Download's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Coupons controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Posts_Controller
     */
    class WC_REST_Coupons_V1_Controller extends \WC_REST_Posts_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'coupons';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_coupon';
        /**
         * Coupons actions.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for coupons.
         */
        public function register_routes()
        {
        }
        /**
         * Query args.
         *
         * @param array $args Query args
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Prepare a single coupon output for response.
         *
         * @param WP_Post $post Post object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $data
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Only return writable props from schema.
         * @param  array $schema
         * @return bool
         */
        protected function filter_writable_props($schema)
        {
        }
        /**
         * Prepare a single coupon for create or update.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_Error|stdClass $data Post object.
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Create a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single coupon.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Saves a coupon to the database.
         *
         * @since 3.0.0
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|int
         */
        protected function save_coupon($request)
        {
        }
        /**
         * Get the Coupon's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Order Refunds controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Orders_V1_Controller
     */
    class WC_REST_Order_Refunds_V1_Controller extends \WC_REST_Orders_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'orders/(?P<order_id>[\\d]+)/refunds';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_order_refund';
        /**
         * Order refunds actions.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for order refunds.
         */
        public function register_routes()
        {
        }
        /**
         * Prepare a single order refund output for response.
         *
         * @param WP_Post $post Post object.
         * @param WP_REST_Request $request Request object.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Order_Refund $refund Comment object.
         * @param WP_REST_Request $request Request object.
         * @return array Links for the given order refund.
         */
        protected function prepare_links($refund, $request)
        {
        }
        /**
         * Query args.
         *
         * @param array           $args    Request args.
         * @param WP_REST_Request $request Request object.
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Create a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Get the Order's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Webhook Deliveries controller class.
     *
     * @deprecated 3.3.0 Webhooks deliveries logs now uses logging system.
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Webhook_Deliveries_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'webhooks/(?P<webhook_id>[\\d]+)/deliveries';
        /**
         * Register the routes for webhook deliveries.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read taxes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a tax.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Get all webhook deliveries.
         *
         * @param WP_REST_Request $request
         *
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Get a single webhook delivery.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Prepare a single webhook delivery output for response.
         *
         * @param stdClass $log Delivery log object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($log, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param stdClass $log Delivery log object.
         * @return array Links for the given webhook delivery.
         */
        protected function prepare_links($log)
        {
        }
        /**
         * Get the Webhook's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Tax Classes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Tax_Classes_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'taxes/classes';
        /**
         * Register the routes for tax classes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read tax classes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access create tax classes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access delete a tax.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Get all tax classes.
         *
         * @param WP_REST_Request $request
         * @return array
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single tax class.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Delete a single tax class.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single tax class output for response.
         *
         * @param array $tax_class Tax class data.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($tax_class, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @return array Links for the given tax class.
         */
        protected function prepare_links()
        {
        }
        /**
         * Get the Tax Classes schema, conforming to JSON Schema
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Webhooks controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Webhooks_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'webhooks';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_webhook';
        /**
         * Register the routes for webhooks.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read webhooks.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access create webhooks.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a webhook.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access update a webhook.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access delete a webhook.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Get the default REST API version.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_default_api_version()
        {
        }
        /**
         * Get all webhooks.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Create a single webhook.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single webhook.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single webhook.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single webhook for create or update.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_Error|stdClass $data Post object.
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Prepare a single webhook output for response.
         *
         * @param int               $id       Webhook ID or object.
         * @param WP_REST_Request   $request  Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($id, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param int $id Webhook ID.
         * @return array
         */
        protected function prepare_links($id)
        {
        }
        /**
         * Get the Webhook's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Product Reviews Controller Class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Product_Reviews_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/(?P<product_id>[\\d]+)/reviews';
        /**
         * Register the routes for product reviews.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read webhook deliveries.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to create a new product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to update a product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to delete a product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Get all reviews from a product.
         *
         * @param WP_REST_Request $request
         *
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Get a single product review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Create a product review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single product review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a product review.
         *
         * @param WP_REST_Request $request Full details about the request
         *
         * @return bool|WP_Error|WP_REST_Response
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single product review output for response.
         *
         * @param WP_Comment $review Product review object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($review, $request)
        {
        }
        /**
         * Prepare a single product review to be inserted into the database.
         *
         * @param  WP_REST_Request $request Request object.
         * @return array|WP_Error  $prepared_review
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WP_Comment $review Product review object.
         * @param WP_REST_Request $request Request object.
         * @return array Links for the given product review.
         */
        protected function prepare_links($review, $request)
        {
        }
        /**
         * Get the Product Review's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Products controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Posts_Controller
     */
    class WC_REST_Products_V1_Controller extends \WC_REST_Posts_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'product';
        /**
         * Initialize product actions.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Get post types.
         *
         * @return array
         */
        protected function get_post_types()
        {
        }
        /**
         * Query args.
         *
         * @param array           $args    Request args.
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        public function query_args($args, $request)
        {
        }
        /**
         * Get the downloads for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         * @return array
         */
        protected function get_downloads($product)
        {
        }
        /**
         * Get taxonomy terms.
         *
         * @param WC_Product $product  Product instance.
         * @param string     $taxonomy Taxonomy slug.
         * @return array
         */
        protected function get_taxonomy_terms($product, $taxonomy = 'cat')
        {
        }
        /**
         * Get the images for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         * @return array
         */
        protected function get_images($product)
        {
        }
        /**
         * Get attribute taxonomy label.
         *
         * @param  string $name Taxonomy name.
         * @return string
         */
        protected function get_attribute_taxonomy_label($name)
        {
        }
        /**
         * Get default attributes.
         *
         * @param WC_Product $product Product instance.
         * @return array
         */
        protected function get_default_attributes($product)
        {
        }
        /**
         * Get attribute options.
         *
         * @param int   $product_id Product ID.
         * @param array $attribute  Attribute data.
         * @return array
         */
        protected function get_attribute_options($product_id, $attribute)
        {
        }
        /**
         * Get the attributes for a product or product variation.
         *
         * @param WC_Product|WC_Product_Variation $product Product instance.
         * @return array
         */
        protected function get_attributes($product)
        {
        }
        /**
         * Get product menu order.
         *
         * @deprecated 3.0.0
         * @param WC_Product $product Product instance.
         * @return int
         */
        protected function get_product_menu_order($product)
        {
        }
        /**
         * Get product data.
         *
         * @param WC_Product $product Product instance.
         * @return array
         */
        protected function get_product_data($product)
        {
        }
        /**
         * Get an individual variation's data.
         *
         * @param WC_Product $product Product instance.
         * @return array
         */
        protected function get_variation_data($product)
        {
        }
        /**
         * Prepare a single product output for response.
         *
         * @param WP_Post         $post    Post object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($post, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Product      $product Product object.
         * @param WP_REST_Request $request Request object.
         * @return array Links for the given product.
         */
        protected function prepare_links($product, $request)
        {
        }
        /**
         * Prepare a single product for create or update.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_Error|stdClass $data Post object.
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Create a single product.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single product.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Saves a product to the database.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return int
         */
        public function save_product($request)
        {
        }
        /**
         * Save product images.
         *
         * @deprecated 3.0.0
         * @param int $product_id
         * @param array $images
         * @throws WC_REST_Exception
         */
        protected function save_product_images($product_id, $images)
        {
        }
        /**
         * Set product images.
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param WC_Product $product Product instance.
         * @param array      $images  Images data.
         * @return WC_Product
         */
        protected function set_product_images($product, $images)
        {
        }
        /**
         * Save product shipping data.
         *
         * @param WC_Product $product Product instance.
         * @param array      $data    Shipping data.
         * @return WC_Product
         */
        protected function save_product_shipping_data($product, $data)
        {
        }
        /**
         * Save downloadable files.
         *
         * @param WC_Product $product    Product instance.
         * @param array      $downloads  Downloads data.
         * @param int        $deprecated Deprecated since 3.0.
         * @return WC_Product
         */
        protected function save_downloadable_files($product, $downloads, $deprecated = 0)
        {
        }
        /**
         * Save taxonomy terms.
         *
         * @param WC_Product $product  Product instance.
         * @param array      $terms    Terms data.
         * @param string     $taxonomy Taxonomy name.
         * @return WC_Product
         */
        protected function save_taxonomy_terms($product, $terms, $taxonomy = 'cat')
        {
        }
        /**
         * Save default attributes.
         *
         * @since 3.0.0
         *
         * @param WC_Product      $product Product instance.
         * @param WP_REST_Request $request Request data.
         * @return WC_Product
         */
        protected function save_default_attributes($product, $request)
        {
        }
        /**
         * Save product meta.
         *
         * @deprecated 3.0.0
         * @param WC_Product $product
         * @param WP_REST_Request $request
         * @return bool
         * @throws WC_REST_Exception
         */
        protected function save_product_meta($product, $request)
        {
        }
        /**
         * Set product meta.
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param WC_Product      $product Product instance.
         * @param WP_REST_Request $request Request data.
         * @return WC_Product
         */
        protected function set_product_meta($product, $request)
        {
        }
        /**
         * Save variations.
         *
         * @throws WC_REST_Exception REST API exceptions.
         * @param WC_Product      $product          Product instance.
         * @param WP_REST_Request $request          Request data.
         * @return bool
         */
        protected function save_variations_data($product, $request)
        {
        }
        /**
         * Add post meta fields.
         *
         * @param WP_Post         $post    Post data.
         * @param WP_REST_Request $request Request data.
         * @return bool|WP_Error
         */
        protected function add_post_meta_fields($post, $request)
        {
        }
        /**
         * Update post meta fields.
         *
         * @param WP_Post         $post    Post data.
         * @param WP_REST_Request $request Request data.
         * @return bool|WP_Error
         */
        protected function update_post_meta_fields($post, $request)
        {
        }
        /**
         * Clear cache/transients.
         *
         * @param WP_Post $post Post data.
         */
        public function clear_transients($post)
        {
        }
        /**
         * Delete post.
         *
         * @param int|WP_Post $id Post ID or WP_Post instance.
         */
        protected function delete_post($id)
        {
        }
        /**
         * Delete a single item.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Report Sales controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Report_Sales_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/sales';
        /**
         * Report instance.
         *
         * @var WC_Admin_Report
         */
        protected $report;
        /**
         * Register the routes for sales reports.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read report.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Get sales reports.
         *
         * @param WP_REST_Request $request
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report sales object for serialization.
         *
         * @param null $_
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($_, $request)
        {
        }
        /**
         * Setup the report object and parse any date filtering.
         *
         * @param array $filter date filtering
         */
        protected function setup_report($filter)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Order Notes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Order_Notes_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'orders/(?P<order_id>[\\d]+)/notes';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_order';
        /**
         * Register the routes for order notes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read order notes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access create order notes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a order note.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access delete a order note.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Get order notes from an order.
         *
         * @param WP_REST_Request $request
         *
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single order note.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Get a single order note.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Delete a single order note.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single order note output for response.
         *
         * @param WP_Comment $note Order note object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($note, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WP_Comment $note Delivery order_note object.
         * @return array Links for the given order note.
         */
        protected function prepare_links($note)
        {
        }
        /**
         * Get the Order Notes schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Reports controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Reports_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports';
        /**
         * Register the routes for reports.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read reports.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
        /**
         * Get all reports.
         *
         * @param WP_REST_Request $request
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report object for serialization.
         *
         * @param stdClass $report Report data.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Taxes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Taxes_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'taxes';
        /**
         * Register the routes for taxes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read taxes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access create taxes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a tax.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access update a tax.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access delete a tax.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Get all taxes.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Take tax data from the request and return the updated or newly created rate.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @param stdClass|null $current Existing tax object.
         * @return object
         */
        protected function create_or_update_tax($request, $current = \null)
        {
        }
        /**
         * Create a single tax.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Get a single tax.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Update a single tax.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single tax.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single tax output for response.
         *
         * @param stdClass $tax Tax object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($tax, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param stdClass $tax Tax object.
         * @return array Links for the given tax.
         */
        protected function prepare_links($tax)
        {
        }
        /**
         * Get the Taxes schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Customers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Customers_V1_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'customers';
        /**
         * Register the routes for customers.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read customers.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access create customers.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a customer.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access update a customer.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access delete a customer.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         *
         * @return bool|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Get all customers.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single customer.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Get a single customer.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Update a single user.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single customer.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single customer output for response.
         *
         * @param  WP_User          $user_data User object.
         * @param  WP_REST_Request  $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($user_data, $request)
        {
        }
        /**
         * Update customer meta fields.
         *
         * @param WC_Customer $customer
         * @param WP_REST_Request $request
         */
        protected function update_customer_meta_fields($customer, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WP_User $customer Customer object.
         * @return array Links for the given customer.
         */
        protected function prepare_links($customer)
        {
        }
        /**
         * Get the Customer's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get role names.
         *
         * @return array
         */
        protected function get_role_names()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Report Top Sellers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Report_Sales_V1_Controller
     */
    class WC_REST_Report_Top_Sellers_V1_Controller extends \WC_REST_Report_Sales_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v1';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/top_sellers';
        /**
         * Get sales reports.
         *
         * @param WP_REST_Request $request
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report sales object for serialization.
         *
         * @param stdClass $top_seller
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($top_seller, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Paymenga gateways controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Payment_Gateways_V2_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'payment_gateways';
        /**
         * Register the route for /payment_gateways and /payment_gateways/<id>
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view payment gateways.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a payment gateway.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check whether a given request has permission to edit payment gateways.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_items_permissions_check($request)
        {
        }
        /**
         * Get payment gateways.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get a single payment gateway.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Update A Single Payment Method.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function update_item($request)
        {
        }
        /**
         * Get a gateway based on the current request object.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|null
         */
        public function get_gateway($request)
        {
        }
        /**
         * Prepare a payment gateway for response.
         *
         * @param  WC_Payment_Gateway $gateway    Payment gateway object.
         * @param  WP_REST_Request    $request    Request object.
         * @return WP_REST_Response   $response   Response data.
         */
        public function prepare_item_for_response($gateway, $request)
        {
        }
        /**
         * Return settings associated with this payment gateway.
         *
         * @param WC_Payment_Gateway $gateway Gateway data.
         *
         * @return array
         */
        public function get_settings($gateway)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param  WC_Payment_Gateway $gateway    Payment gateway object.
         * @param  WP_REST_Request    $request    Request object.
         * @return array
         */
        protected function prepare_links($gateway, $request)
        {
        }
        /**
         * Get the payment gateway schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get any query params needed.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Setting Options controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Setting_Options_V2_Controller extends \WC_REST_Controller
    {
        /**
         * WP REST API namespace/version.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'settings/(?P<group_id>[\\w-]+)';
        /**
         * Register routes.
         *
         * @since 3.0.0
         */
        public function register_routes()
        {
        }
        /**
         * Return a single setting.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Return all settings in a group.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get all settings in a group.
         *
         * @since  3.0.0
         * @param string $group_id Group ID.
         * @return array|WP_Error
         */
        public function get_group_settings($group_id)
        {
        }
        /**
         * Returns a list of countries and states for use in the base location setting.
         *
         * @since  3.0.7
         * @return array Array of states and countries.
         */
        private function get_countries_and_states()
        {
        }
        /**
         * Get setting data.
         *
         * @since  3.0.0
         * @param string $group_id Group ID.
         * @param string $setting_id Setting ID.
         * @return stdClass|WP_Error
         */
        public function get_setting($group_id, $setting_id)
        {
        }
        /**
         * Bulk create, update and delete items.
         *
         * @since  3.0.0
         * @param WP_REST_Request $request Full details about the request.
         * @return array Of WP_Error or WP_REST_Response.
         */
        public function batch_items($request)
        {
        }
        /**
         * Update a single setting in a group.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Prepare a single setting object for response.
         *
         * @since  3.0.0
         * @param object          $item Setting object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @since  3.0.0
         * @param string $setting_id Setting ID.
         * @param string $group_id Group ID.
         * @return array Links for the given setting.
         */
        protected function prepare_links($setting_id, $group_id)
        {
        }
        /**
         * Makes sure the current user has access to READ the settings APIs.
         *
         * @since  3.0.0
         * @param WP_REST_Request $request Full data about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Makes sure the current user has access to WRITE the settings APIs.
         *
         * @since  3.0.0
         * @param WP_REST_Request $request Full data about the request.
         * @return WP_Error|boolean
         */
        public function update_items_permissions_check($request)
        {
        }
        /**
         * Filters out bad values from the settings array/filter so we
         * only return known values via the API.
         *
         * @since 3.0.0
         * @param  array $setting Settings.
         * @return array
         */
        public function filter_setting($setting)
        {
        }
        /**
         * For image_width, Crop can return "0" instead of false -- so we want
         * to make sure we return these consistently the same we accept them.
         *
         * @todo remove in 4.0
         * @since 3.0.0
         * @param  array $setting Settings.
         * @return array
         */
        public function cast_image_width($setting)
        {
        }
        /**
         * Callback for allowed keys for each setting response.
         *
         * @since  3.0.0
         * @param  string $key Key to check.
         * @return boolean
         */
        public function allowed_setting_keys($key)
        {
        }
        /**
         * Boolean for if a setting type is a valid supported setting type.
         *
         * @since  3.0.0
         * @param  string $type Type.
         * @return bool
         */
        public function is_setting_type_valid($type)
        {
        }
        /**
         * Get the settings schema, conforming to JSON Schema.
         *
         * @since 3.0.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Report Sales controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Report_Sales_V1_Controller
     */
    class WC_REST_Report_Sales_V2_Controller extends \WC_REST_Report_Sales_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Product Shipping Classes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Shipping_Classes_V1_Controller
     */
    class WC_REST_Product_Shipping_Classes_V2_Controller extends \WC_REST_Product_Shipping_Classes_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * System status tools controller.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_System_Status_Tools_V2_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'system_status/tools';
        /**
         * Register the routes for /system_status/tools/*.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view system status tools.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check whether a given request has permission to view a specific system status tool.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check whether a given request has permission to execute a specific system status tool.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * A list of available tools for use in the system status section.
         * 'button' becomes 'action' in the API.
         *
         * @return array
         */
        public function get_tools()
        {
        }
        /**
         * Get a list of system status tools.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Return a single tool.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Update (execute) a tool.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Prepare a tool item for serialization.
         *
         * @param  array           $item     Object.
         * @param  WP_REST_Request $request  Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Get the system status tools schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param string $id ID.
         * @return array
         */
        protected function prepare_links($id)
        {
        }
        /**
         * Get any query params needed.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Actually executes a tool.
         *
         * @param  string $tool Tool.
         * @return array
         */
        public function execute_tool($tool)
        {
        }
    }
    /**
     * REST API Webhooks controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Webhooks_V1_Controller
     */
    class WC_REST_Webhooks_V2_Controller extends \WC_REST_Webhooks_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Prepare a single webhook output for response.
         *
         * @param int             $id       Webhook ID.
         * @param WP_REST_Request $request  Request object.
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($id, $request)
        {
        }
        /**
         * Get the default REST API version.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_default_api_version()
        {
        }
        /**
         * Get the Webhook's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Shipping methods controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Shipping_Methods_V2_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'shipping_methods';
        /**
         * Register the route for /shipping_methods and /shipping_methods/<method>
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view shipping methods.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a shipping method.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Get shipping methods.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get a single Shipping Method.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Prepare a shipping method for response.
         *
         * @param  WC_Shipping_Method $method   Shipping method object.
         * @param  WP_REST_Request    $request  Request object.
         * @return WP_REST_Response   $response Response data.
         */
        public function prepare_item_for_response($method, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Shipping_Method $method Shipping method object.
         * @param WP_REST_Request    $request Request object.
         * @return array
         */
        protected function prepare_links($method, $request)
        {
        }
        /**
         * Get the shipping method schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get any query params needed.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Product Reviews Controller Class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Reviews_V1_Controller
     */
    class WC_REST_Product_Reviews_V2_Controller extends \WC_REST_Product_Reviews_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/(?P<product_id>[\\d]+)/reviews';
        /**
         * Register the routes for product reviews.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to batch manage product reviews.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Prepare a single product review output for response.
         *
         * @param WP_Comment      $review Product review object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($review, $request)
        {
        }
        /**
         * Bulk create, update and delete items.
         *
         * @since  3.0.0
         * @param WP_REST_Request $request Full details about the request.
         * @return array Of WP_Error or WP_REST_Response.
         */
        public function batch_items($request)
        {
        }
        /**
         * Get the Product Review's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Orders controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Orders_V2_Controller extends \WC_REST_CRUD_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'orders';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_order';
        /**
         * If object is hierarchical.
         *
         * @var bool
         */
        protected $hierarchical = \true;
        /**
         * Stores the request.
         *
         * @var array
         */
        protected $request = array();
        /**
         * Register the routes for orders.
         */
        public function register_routes()
        {
        }
        /**
         * Get object. Return false if object is not of required type.
         *
         * @since  3.0.0
         * @param  int $id Object ID.
         * @return WC_Data|bool
         */
        protected function get_object($id)
        {
        }
        /**
         * Expands an order item to get its data.
         *
         * @param WC_Order_item $item Order item data.
         * @return array
         */
        protected function get_order_item_data($item)
        {
        }
        /**
         * Get formatted item data.
         *
         * @since  3.0.0
         * @param  WC_Data $object WC_Data instance.
         * @return array
         */
        protected function get_formatted_item_data($object)
        {
        }
        /**
         * Prepare a single order output for response.
         *
         * @since  3.0.0
         * @param  WC_Data         $object  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Data         $object  Object data.
         * @param WP_REST_Request $request Request object.
         * @return array                   Links for the given post.
         */
        protected function prepare_links($object, $request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Only return writable props from schema.
         *
         * @param  array $schema Schema.
         * @return bool
         */
        protected function filter_writable_props($schema)
        {
        }
        /**
         * Prepare a single order for create or update.
         *
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Save an object data.
         *
         * @since  3.0.0
         * @throws WC_REST_Exception But all errors are validated before returning any data.
         * @param  WP_REST_Request $request  Full details about the request.
         * @param  bool            $creating If is creating a new object.
         * @return WC_Data|WP_Error
         */
        protected function save_object($request, $creating = \false)
        {
        }
        /**
         * Update address.
         *
         * @param WC_Order $order  Order data.
         * @param array    $posted Posted data.
         * @param string   $type   Address type.
         */
        protected function update_address($order, $posted, $type = 'billing')
        {
        }
        /**
         * Gets the product ID from the SKU or posted ID.
         *
         * @throws WC_REST_Exception When SKU or ID is not valid.
         * @param array $posted Request data.
         * @return int
         */
        protected function get_product_id($posted)
        {
        }
        /**
         * Maybe set an item prop if the value was posted.
         *
         * @param WC_Order_Item $item   Order item.
         * @param string        $prop   Order property.
         * @param array         $posted Request data.
         */
        protected function maybe_set_item_prop($item, $prop, $posted)
        {
        }
        /**
         * Maybe set item props if the values were posted.
         *
         * @param WC_Order_Item $item   Order item data.
         * @param string[]      $props  Properties.
         * @param array         $posted Request data.
         */
        protected function maybe_set_item_props($item, $props, $posted)
        {
        }
        /**
         * Maybe set item meta if posted.
         *
         * @param WC_Order_Item $item   Order item data.
         * @param array         $posted Request data.
         */
        protected function maybe_set_item_meta_data($item, $posted)
        {
        }
        /**
         * Create or update a line item.
         *
         * @param array  $posted Line item data.
         * @param string $action 'create' to add line item or 'update' to update it.
         * @param object $item Passed when updating an item. Null during creation.
         * @return WC_Order_Item_Product
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_line_items($posted, $action = 'create', $item = \null)
        {
        }
        /**
         * Create or update an order shipping method.
         *
         * @param array  $posted $shipping Item data.
         * @param string $action 'create' to add shipping or 'update' to update it.
         * @param object $item Passed when updating an item. Null during creation.
         * @return WC_Order_Item_Shipping
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_shipping_lines($posted, $action = 'create', $item = \null)
        {
        }
        /**
         * Create or update an order fee.
         *
         * @param array  $posted Item data.
         * @param string $action 'create' to add fee or 'update' to update it.
         * @param object $item Passed when updating an item. Null during creation.
         * @return WC_Order_Item_Fee
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_fee_lines($posted, $action = 'create', $item = \null)
        {
        }
        /**
         * Create or update an order coupon.
         *
         * @param array  $posted Item data.
         * @param string $action 'create' to add coupon or 'update' to update it.
         * @param object $item Passed when updating an item. Null during creation.
         * @return WC_Order_Item_Coupon
         * @throws WC_REST_Exception Invalid data, server error.
         */
        protected function prepare_coupon_lines($posted, $action = 'create', $item = \null)
        {
        }
        /**
         * Wrapper method to create/update order items.
         * When updating, the item ID provided is checked to ensure it is associated
         * with the order.
         *
         * @param WC_Order $order order object.
         * @param string   $item_type The item type.
         * @param array    $posted item provided in the request body.
         * @throws WC_REST_Exception If item ID is not associated with order.
         */
        protected function set_item($order, $item_type, $posted)
        {
        }
        /**
         * Helper method to check if the resource ID associated with the provided item is null.
         * Items can be deleted by setting the resource ID to null.
         *
         * @param array $item Item provided in the request body.
         * @return bool True if the item resource ID is null, false otherwise.
         */
        protected function item_is_null($item)
        {
        }
        /**
         * Get order statuses without prefixes.
         *
         * @return array
         */
        protected function get_order_statuses()
        {
        }
        /**
         * Get the Order's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Coupons controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Coupons_V2_Controller extends \WC_REST_CRUD_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'coupons';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_coupon';
        /**
         * Register the routes for coupons.
         */
        public function register_routes()
        {
        }
        /**
         * Get object.
         *
         * @since  3.0.0
         * @param  int $id Object ID.
         * @return WC_Data
         */
        protected function get_object($id)
        {
        }
        /**
         * Get formatted item data.
         *
         * @since  3.0.0
         * @param  WC_Data $object WC_Data instance.
         * @return array
         */
        protected function get_formatted_item_data($object)
        {
        }
        /**
         * Prepare a single coupon output for response.
         *
         * @since  3.0.0
         * @param  WC_Data         $object  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Only return writable props from schema.
         *
         * @param  array $schema Schema.
         * @return bool
         */
        protected function filter_writable_props($schema)
        {
        }
        /**
         * Prepare a single coupon for create or update.
         *
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Get the Coupon's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Settings controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Settings_V2_Controller extends \WC_REST_Controller
    {
        /**
         * WP REST API namespace/version.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'settings';
        /**
         * Register routes.
         *
         * @since 3.0.0
         */
        public function register_routes()
        {
        }
        /**
         * Get all settings groups items.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param string $group_id Group ID.
         * @return array Links for the given group.
         */
        protected function prepare_links($group_id)
        {
        }
        /**
         * Prepare a report sales object for serialization.
         *
         * @since  3.0.0
         * @param array           $item Group object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Filters out bad values from the groups array/filter so we
         * only return known values via the API.
         *
         * @since 3.0.0
         * @param  array $group Group.
         * @return array
         */
        public function filter_group($group)
        {
        }
        /**
         * Callback for allowed keys for each group response.
         *
         * @since  3.0.0
         * @param  string $key Key to check.
         * @return boolean
         */
        public function allowed_group_keys($key)
        {
        }
        /**
         * Returns default settings for groups. null means the field is required.
         *
         * @since  3.0.0
         * @return array
         */
        protected function group_defaults()
        {
        }
        /**
         * Makes sure the current user has access to READ the settings APIs.
         *
         * @since  3.0.0
         * @param WP_REST_Request $request Full data about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Get the groups schema, conforming to JSON Schema.
         *
         * @since  3.0.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Customers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Customers_V1_Controller
     */
    class WC_REST_Customers_V2_Controller extends \WC_REST_Customers_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Get formatted item data.
         *
         * @since  3.0.0
         * @param  WC_Data $object WC_Data instance.
         * @return array
         */
        protected function get_formatted_item_data($object)
        {
        }
        /**
         * Prepare a single customer output for response.
         *
         * @param  WP_User         $user_data User object.
         * @param  WP_REST_Request $request   Request object.
         * @return WP_REST_Response $response  Response data.
         */
        public function prepare_item_for_response($user_data, $request)
        {
        }
        /**
         * Update customer meta fields.
         *
         * @param WC_Customer     $customer Customer data.
         * @param WP_REST_Request $request  Request data.
         */
        protected function update_customer_meta_fields($customer, $request)
        {
        }
        /**
         * Get the Customer's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Webhook Deliveries controller class.
     *
     * @deprecated 3.3.0 Webhooks deliveries logs now uses logging system.
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Webhook_Deliveries_V1_Controller
     */
    class WC_REST_Webhook_Deliveries_V2_Controller extends \WC_REST_Webhook_Deliveries_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Prepare a single webhook delivery output for response.
         *
         * @param  stdClass        $log Delivery log object.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($log, $request)
        {
        }
        /**
         * Get the Webhook's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Taxes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Taxes_V1_Controller
     */
    class WC_REST_Taxes_V2_Controller extends \WC_REST_Taxes_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Report Top Sellers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Report_Top_Sellers_V1_Controller
     */
    class WC_REST_Report_Top_Sellers_V2_Controller extends \WC_REST_Report_Top_Sellers_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Network Orders controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Orders_V2_Controller
     */
    class WC_REST_Network_Orders_V2_Controller extends \WC_REST_Orders_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Register the routes for network orders.
         */
        public function register_routes()
        {
        }
        /**
         * Retrieves the item's schema for display / public consumption purposes.
         *
         * @return array Public item schema data.
         */
        public function get_public_item_schema()
        {
        }
        /**
         * Does a permissions check for the proper requested blog
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return bool $permission
         */
        public function network_orders_permissions_check($request)
        {
        }
        /**
         * Get a collection of orders from the requested blog id
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_REST_Response
         */
        public function network_orders($request)
        {
        }
        /**
         * Filters the post statuses to on hold and processing for the network order query.
         *
         * @param array $args Query args.
         *
         * @return array
         */
        public function network_orders_filter_args($args)
        {
        }
    }
    /**
     * REST API Order Refunds controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Orders_V2_Controller
     */
    class WC_REST_Order_Refunds_V2_Controller extends \WC_REST_Orders_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'orders/(?P<order_id>[\\d]+)/refunds';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_order_refund';
        /**
         * Stores the request.
         *
         * @var array
         */
        protected $request = array();
        /**
         * Order refunds actions.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for order refunds.
         */
        public function register_routes()
        {
        }
        /**
         * Get object.
         *
         * @since  3.0.0
         * @param  int $id Object ID.
         * @return WC_Data
         */
        protected function get_object($id)
        {
        }
        /**
         * Get formatted item data.
         *
         * @since  3.0.0
         * @param  WC_Data $object WC_Data instance.
         * @return array
         */
        protected function get_formatted_item_data($object)
        {
        }
        /**
         * Prepare a single order output for response.
         *
         * @since  3.0.0
         *
         * @param  WC_Data         $object  Object data.
         * @param  WP_REST_Request $request Request object.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function prepare_object_for_response($object, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Data         $object  Object data.
         * @param WP_REST_Request $request Request object.
         * @return array                   Links for the given post.
         */
        protected function prepare_links($object, $request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Prepares one object for create or update operation.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data The prepared item, or WP_Error object on failure.
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Save an object data.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request  Full details about the request.
         * @param  bool            $creating If is creating a new object.
         * @return WC_Data|WP_Error
         */
        protected function save_object($request, $creating = \false)
        {
        }
        /**
         * Get the Order's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Shipping Zones base class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    abstract class WC_REST_Shipping_Zones_Controller_Base extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'shipping/zones';
        /**
         * Retrieve a Shipping Zone by it's ID.
         *
         * @param int $zone_id Shipping Zone ID.
         * @return WC_Shipping_Zone|WP_Error
         */
        protected function get_zone($zone_id)
        {
        }
        /**
         * Check whether a given request has permission to read Shipping Zones.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to create Shipping Zones.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check whether a given request has permission to edit Shipping Zones.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_items_permissions_check($request)
        {
        }
        /**
         * Check whether a given request has permission to delete Shipping Zones.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function delete_items_permissions_check($request)
        {
        }
    }
    /**
     * REST API Shipping Zone Locations class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Zones_Controller_Base
     */
    class WC_REST_Shipping_Zone_Locations_V2_Controller extends \WC_REST_Shipping_Zones_Controller_Base
    {
        /**
         * Register the routes for Shipping Zone Locations.
         */
        public function register_routes()
        {
        }
        /**
         * Get all Shipping Zone Locations.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Update all Shipping Zone Locations.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function update_items($request)
        {
        }
        /**
         * Prepare the Shipping Zone Location for the REST response.
         *
         * @param array           $item Shipping Zone Location.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param int $zone_id Given Shipping Zone ID.
         * @return array Links for the given Shipping Zone Location.
         */
        protected function prepare_links($zone_id)
        {
        }
        /**
         * Get the Shipping Zone Locations schema, conforming to JSON Schema
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Shipping Zone Methods class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Zones_Controller_Base
     */
    class WC_REST_Shipping_Zone_Methods_V2_Controller extends \WC_REST_Shipping_Zones_Controller_Base
    {
        /**
         * Register the routes for Shipping Zone Methods.
         */
        public function register_routes()
        {
        }
        /**
         * Get a single Shipping Zone Method.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Get all Shipping Zone Methods.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Create a new shipping zone method instance.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function create_item($request)
        {
        }
        /**
         * Delete a shipping method instance.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function delete_item($request)
        {
        }
        /**
         * Update A Single Shipping Zone Method.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function update_item($request)
        {
        }
        /**
         * Updates settings, order, and enabled status on create.
         *
         * @param int                $instance_id Instance ID.
         * @param WC_Shipping_Method $method      Shipping method data.
         * @param WP_REST_Request    $request     Request data.
         *
         * @return WC_Shipping_Method
         */
        public function update_fields($instance_id, $method, $request)
        {
        }
        /**
         * Prepare the Shipping Zone Method for the REST response.
         *
         * @param array           $item Shipping Zone Method.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Return settings associated with this shipping zone method instance.
         *
         * @param WC_Shipping_Method $item Shipping method data.
         *
         * @return array
         */
        public function get_settings($item)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param int $zone_id Given Shipping Zone ID.
         * @param int $instance_id Given Shipping Zone Method Instance ID.
         * @return array Links for the given Shipping Zone Method.
         */
        protected function prepare_links($zone_id, $instance_id)
        {
        }
        /**
         * Get the Shipping Zone Methods schema, conforming to JSON Schema
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * System status controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_System_Status_V2_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'system_status';
        /**
         * Register the route for /system_status
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view system status.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Get a system status info, by section.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get the system status schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Return an array of sections and the data associated with each.
         *
         * @return array
         */
        public function get_item_mappings()
        {
        }
        /**
         * Get array of environment information. Includes thing like software
         * versions, and various server settings.
         *
         * @return array
         */
        public function get_environment_info()
        {
        }
        /**
         * Add prefix to table.
         *
         * @param string $table Table name.
         * @return stromg
         */
        protected function add_db_table_prefix($table)
        {
        }
        /**
         * Get array of database information. Version, prefix, and table existence.
         *
         * @return array
         */
        public function get_database_info()
        {
        }
        /**
         * Get array of counts of objects. Orders, products, etc.
         *
         * @return array
         */
        public function get_post_type_counts()
        {
        }
        /**
         * Get a list of plugins active on the site.
         *
         * @return array
         */
        public function get_active_plugins()
        {
        }
        /**
         * Get a list of inplugins active on the site.
         *
         * @return array
         */
        public function get_inactive_plugins()
        {
        }
        /**
         * Format plugin data, including data on updates, into a standard format.
         *
         * @since 3.6.0
         * @param string $plugin Plugin directory/file.
         * @param array  $data Plugin data from WP.
         * @return array Formatted data.
         */
        protected function format_plugin_data($plugin, $data)
        {
        }
        /**
         * Get a list of Dropins and MU plugins.
         *
         * @since 3.6.0
         * @return array
         */
        public function get_dropins_mu_plugins()
        {
        }
        /**
         * Get info on the current active theme, info on parent theme (if presnet)
         * and a list of template overrides.
         *
         * @return array
         */
        public function get_theme_info()
        {
        }
        /**
         * Get some setting values for the site that are useful for debugging
         * purposes. For full settings access, use the settings api.
         *
         * @return array
         */
        public function get_settings()
        {
        }
        /**
         * Returns security tips.
         *
         * @return array
         */
        public function get_security_info()
        {
        }
        /**
         * Returns a mini-report on WC pages and if they are configured correctly:
         * Present, visible, and including the correct shortcode.
         *
         * @return array
         */
        public function get_pages()
        {
        }
        /**
         * Get any query params needed.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Prepare the system status response
         *
         * @param  array           $system_status System status data.
         * @param  WP_REST_Request $request       Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($system_status, $request)
        {
        }
    }
    /**
     * REST API Shipping Zones class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Zones_Controller_Base
     */
    class WC_REST_Shipping_Zones_V2_Controller extends \WC_REST_Shipping_Zones_Controller_Base
    {
        /**
         * Register the routes for Shipping Zones.
         */
        public function register_routes()
        {
        }
        /**
         * Get a single Shipping Zone.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Get all Shipping Zones.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single Shipping Zone.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single Shipping Zone.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single Shipping Zone.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare the Shipping Zone for the REST response.
         *
         * @param array           $item Shipping Zone.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param int $zone_id Given Shipping Zone ID.
         * @return array Links for the given Shipping Zone.
         */
        protected function prepare_links($zone_id)
        {
        }
        /**
         * Get the Shipping Zones schema, conforming to JSON Schema
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Tax Classes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Tax_Classes_V1_Controller
     */
    class WC_REST_Tax_Classes_V2_Controller extends \WC_REST_Tax_Classes_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Customers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Customer_Downloads_V1_Controller
     */
    class WC_REST_Customer_Downloads_V2_Controller extends \WC_REST_Customer_Downloads_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Prepare a single download output for response.
         *
         * @param stdClass        $download Download object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($download, $request)
        {
        }
        /**
         * Get the Customer Download's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Order Notes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Order_Notes_V1_Controller
     */
    class WC_REST_Order_Notes_V2_Controller extends \WC_REST_Order_Notes_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
        /**
         * Get order notes from an order.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a single order note output for response.
         *
         * @param WP_Comment      $note Order note object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($note, $request)
        {
        }
        /**
         * Get the Order Notes schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Reports controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_V1_Controller
     */
    class WC_REST_Reports_V2_Controller extends \WC_REST_Reports_V1_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v2';
    }
    /**
     * REST API Shipping Zone Locations class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Zone_Locations_V2_Controller
     */
    class WC_REST_Shipping_Zone_Locations_Controller extends \WC_REST_Shipping_Zone_Locations_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Tax Classes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Tax_Classes_V2_Controller
     */
    class WC_REST_Tax_Classes_Controller extends \WC_REST_Tax_Classes_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * Paymenga gateways controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Payment_Gateways_V2_Controller
     */
    class WC_REST_Payment_Gateways_Controller extends \WC_REST_Payment_Gateways_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Prepare a payment gateway for response.
         *
         * @param  WC_Payment_Gateway $gateway    Payment gateway object.
         * @param  WP_REST_Request    $request    Request object.
         * @return WP_REST_Response   $response   Response data.
         */
        public function prepare_item_for_response($gateway, $request)
        {
        }
        /**
         * Return settings associated with this payment gateway.
         *
         * @param WC_Payment_Gateway $gateway Gateway instance.
         *
         * @return array
         */
        public function get_settings($gateway)
        {
        }
        /**
         * Get the payment gateway schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Settings controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Settings_V2_Controller
     */
    class WC_REST_Settings_Controller extends \WC_REST_Settings_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Makes sure the current user has access to WRITE the settings APIs.
         *
         * @param WP_REST_Request $request Full data about the request.
         * @return WP_Error|bool
         */
        public function update_items_permissions_check($request)
        {
        }
        /**
         * Update a setting.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function update_item($request)
        {
        }
        /**
         * Get the groups schema, conforming to JSON Schema.
         *
         * @since  3.0.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Product Shipping Classes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Product_Shipping_Classes_V2_Controller
     */
    class WC_REST_Product_Shipping_Classes_Controller extends \WC_REST_Product_Shipping_Classes_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Coupons controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Coupons_V2_Controller
     */
    class WC_REST_Coupons_Controller extends \WC_REST_Coupons_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * System status tools controller.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_System_Status_Tools_V2_Controller
     */
    class WC_REST_System_Status_Tools_Controller extends \WC_REST_System_Status_Tools_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Data controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Data_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'data';
        /**
         * Register routes.
         *
         * @since 3.5.0
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read site data.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check whether a given request has permission to read site settings.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Return the list of data resources.
         *
         * @since  3.5.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a data resource object for serialization.
         *
         * @param stdClass        $resource Resource data.
         * @param WP_REST_Request $request  Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($resource, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object $item Data object.
         * @return array Links for the given country.
         */
        protected function prepare_links($item)
        {
        }
        /**
         * Get the data index schema, conforming to JSON Schema.
         *
         * @since  3.5.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Data Currencies controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     */
    class WC_REST_Data_Currencies_Controller extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'data/currencies';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Get currency information.
         *
         * @param  string          $code    Currency code.
         * @param  WP_REST_Request $request Request data.
         * @return array|mixed Response data, ready for insertion into collection data.
         */
        public function get_currency($code = \false, $request)
        {
        }
        /**
         * Return the list of currencies.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Return information for a specific currency.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Return information for the current site currency.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_current_item($request)
        {
        }
        /**
         * Prepare the data object for response.
         *
         * @param object          $item Data object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object $item Data object.
         * @return array Links for the given currency.
         */
        protected function prepare_links($item)
        {
        }
        /**
         * Get the currency schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * System status controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_System_Status_V2_Controller
     */
    class WC_REST_System_Status_Controller extends \WC_REST_System_Status_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Shipping Zone Methods class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Zone_Methods_V2_Controller
     */
    class WC_REST_Shipping_Zone_Methods_Controller extends \WC_REST_Shipping_Zone_Methods_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Reports controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_V2_Controller
     */
    class WC_REST_Reports_Controller extends \WC_REST_Reports_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
    }
    /**
     * REST API Reports Coupons Totals controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_Controller
     */
    class WC_REST_Report_Coupons_Totals_Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/coupons/totals';
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
        /**
         * Prepare a report object for serialization.
         *
         * @param  stdClass        $report Report data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Report Top Sellers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Report_Top_Sellers_V2_Controller
     */
    class WC_REST_Report_Top_Sellers_Controller extends \WC_REST_Report_Top_Sellers_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Report Sales controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Report_Sales_V2_Controller
     */
    class WC_REST_Report_Sales_Controller extends \WC_REST_Report_Sales_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Orders controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Orders_V2_Controller
     */
    class WC_REST_Orders_Controller extends \WC_REST_Orders_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Calculate coupons.
         *
         * @throws WC_REST_Exception When fails to set any item.
         * @param WP_REST_Request $request Request object.
         * @param WC_Order        $order   Order data.
         * @return bool
         */
        protected function calculate_coupons($request, $order)
        {
        }
        /**
         * Prepare a single order for create or update.
         *
         * @throws WC_REST_Exception When fails to set any item.
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
        /**
         * Save an object data.
         *
         * @since  3.0.0
         * @throws WC_REST_Exception But all errors are validated before returning any data.
         * @param  WP_REST_Request $request  Full details about the request.
         * @param  bool            $creating If is creating a new object.
         * @return WC_Data|WP_Error
         */
        protected function save_object($request, $creating = \false)
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get the Order's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Shipping Zones class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Zones_V2_Controller
     */
    class WC_REST_Shipping_Zones_Controller extends \WC_REST_Shipping_Zones_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Webhooks controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Webhooks_V2_Controller
     */
    class WC_REST_Webhooks_Controller extends \WC_REST_Webhooks_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Get the default REST API version.
         *
         * @since  3.0.0
         * @return string
         */
        protected function get_default_api_version()
        {
        }
    }
    /**
     * REST API Reports Customers Totals controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_Controller
     */
    class WC_REST_Report_Customers_Totals_Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/customers/totals';
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
        /**
         * Prepare a report object for serialization.
         *
         * @param  stdClass        $report Report data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Customers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Customers_V2_Controller
     */
    class WC_REST_Customers_Controller extends \WC_REST_Customers_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Get formatted item data.
         *
         * @param WC_Data $object WC_Data instance.
         *
         * @since  3.0.0
         * @return array
         */
        protected function get_formatted_item_data($object)
        {
        }
        /**
         * Get the Customer's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Customers controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Customer_Downloads_V2_Controller
     */
    class WC_REST_Customer_Downloads_Controller extends \WC_REST_Customer_Downloads_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Reports Reviews Totals controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_Controller
     */
    class WC_REST_Report_Reviews_Totals_Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/reviews/totals';
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
        /**
         * Prepare a report object for serialization.
         *
         * @param  stdClass        $report Report data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Order Refunds controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Order_Refunds_V2_Controller
     */
    class WC_REST_Order_Refunds_Controller extends \WC_REST_Order_Refunds_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Prepares one object for create or update operation.
         *
         * @since  3.0.0
         * @param  WP_REST_Request $request Request object.
         * @param  bool            $creating If is creating a new object.
         * @return WP_Error|WC_Data The prepared item, or WP_Error object on failure.
         */
        protected function prepare_object_for_database($request, $creating = \false)
        {
        }
    }
    /**
     * REST API Taxes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Taxes_V2_Controller
     */
    class WC_REST_Taxes_Controller extends \WC_REST_Taxes_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Data continents controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Data_Continents_Controller extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'data/continents';
        /**
         * Register routes.
         *
         * @since 3.5.0
         */
        public function register_routes()
        {
        }
        /**
         * Return the list of countries and states for a given continent.
         *
         * @since  3.5.0
         * @param  string          $continent_code Continent code.
         * @param  WP_REST_Request $request        Request data.
         * @return array|mixed Response data, ready for insertion into collection data.
         */
        public function get_continent($continent_code = \false, $request)
        {
        }
        /**
         * Return the list of states for all continents.
         *
         * @since  3.5.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Return the list of locations for a given continent.
         *
         * @since  3.5.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Prepare the data object for response.
         *
         * @since  3.5.0
         * @param object          $item Data object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object $item Data object.
         * @return array Links for the given continent.
         */
        protected function prepare_links($item)
        {
        }
        /**
         * Get the location schema, conforming to JSON Schema.
         *
         * @since  3.5.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Data countries controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Data_Countries_Controller extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'data/countries';
        /**
         * Register routes.
         *
         * @since 3.5.0
         */
        public function register_routes()
        {
        }
        /**
         * Get a list of countries and states.
         *
         * @param  string          $country_code Country code.
         * @param  WP_REST_Request $request      Request data.
         * @return array|mixed Response data, ready for insertion into collection data.
         */
        public function get_country($country_code = \false, $request)
        {
        }
        /**
         * Return the list of states for all countries.
         *
         * @since  3.5.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Return the list of states for a given country.
         *
         * @since  3.5.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Prepare the data object for response.
         *
         * @since  3.5.0
         * @param object          $item Data object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object $item Data object.
         * @return array Links for the given country.
         */
        protected function prepare_links($item)
        {
        }
        /**
         * Get the location schema, conforming to JSON Schema.
         *
         * @since  3.5.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Reports Orders Totals controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_Controller
     */
    class WC_REST_Report_Orders_Totals_Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/orders/totals';
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
        /**
         * Prepare a report object for serialization.
         *
         * @param  stdClass        $report Report data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Setting Options controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Setting_Options_V2_Controller
     */
    class WC_REST_Setting_Options_Controller extends \WC_REST_Setting_Options_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Get setting data.
         *
         * @param string $group_id Group ID.
         * @param string $setting_id Setting ID.
         * @return stdClass|WP_Error
         */
        public function get_setting($group_id, $setting_id)
        {
        }
        /**
         * Callback for allowed keys for each setting response.
         *
         * @param  string $key Key to check.
         * @return boolean
         */
        public function allowed_setting_keys($key)
        {
        }
        /**
         * Get all settings in a group.
         *
         * @param string $group_id Group ID.
         * @return array|WP_Error
         */
        public function get_group_settings($group_id)
        {
        }
        /**
         * Returns a list of countries and states for use in the base location setting.
         *
         * @since  3.0.7
         * @return array Array of states and countries.
         */
        private function get_countries_and_states()
        {
        }
        /**
         * Get the settings schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Reports Products Totals controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Reports_Controller
     */
    class WC_REST_Report_Products_Totals_Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/products/totals';
        /**
         * Get reports list.
         *
         * @since 3.5.0
         * @return array
         */
        protected function get_reports()
        {
        }
        /**
         * Prepare a report object for serialization.
         *
         * @param  stdClass        $report Report data.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Network Orders controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Network_Orders_V2_Controller
     */
    class WC_REST_Network_Orders_Controller extends \WC_REST_Network_Orders_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
    /**
     * REST API Product Reviews Controller Class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Product_Reviews_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/reviews';
        /**
         * Register the routes for product reviews.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read webhook deliveries.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to read a product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to create a new product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to update a product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access to delete a product review.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function delete_item_permissions_check($request)
        {
        }
        /**
         * Check if a given request has access batch create, update and delete items.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return boolean|WP_Error
         */
        public function batch_items_permissions_check($request)
        {
        }
        /**
         * Get all reviews.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Create a single review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Get a single product review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item($request)
        {
        }
        /**
         * Updates a review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
         */
        public function update_item($request)
        {
        }
        /**
         * Deletes a review.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
         */
        public function delete_item($request)
        {
        }
        /**
         * Prepare a single product review output for response.
         *
         * @param WP_Comment      $review Product review object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($review, $request)
        {
        }
        /**
         * Prepare a single product review to be inserted into the database.
         *
         * @param  WP_REST_Request $request Request object.
         * @return array|WP_Error  $prepared_review
         */
        protected function prepare_item_for_database($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WP_Comment $review Product review object.
         * @return array Links for the given product review.
         */
        protected function prepare_links($review)
        {
        }
        /**
         * Get the Product Review's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the reivew, if the ID is valid.
         *
         * @since 3.5.0
         * @param int $id Supplied ID.
         * @return WP_Comment|WP_Error Comment object if ID is valid, WP_Error otherwise.
         */
        protected function get_review($id)
        {
        }
        /**
         * Prepends internal property prefix to query parameters to match our response fields.
         *
         * @since 3.5.0
         * @param string $query_param Query parameter.
         * @return string
         */
        protected function normalize_query_param($query_param)
        {
        }
        /**
         * Checks comment_approved to set comment status for single comment output.
         *
         * @since 3.5.0
         * @param string|int $comment_approved comment status.
         * @return string Comment status.
         */
        protected function prepare_status_response($comment_approved)
        {
        }
        /**
         * Sets the comment_status of a given review object when creating or updating a review.
         *
         * @since 3.5.0
         * @param string|int $new_status New review status.
         * @param int        $id         Review ID.
         * @return bool Whether the status was changed.
         */
        protected function handle_status_param($new_status, $id)
        {
        }
    }
    /**
     * REST API Order Notes controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Order_Notes_V2_Controller
     */
    class WC_REST_Order_Notes_Controller extends \WC_REST_Order_Notes_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Prepare a single order note output for response.
         *
         * @param WP_Comment      $note    Order note object.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($note, $request)
        {
        }
        /**
         * Create a single order note.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_item($request)
        {
        }
        /**
         * Get the Order Notes schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Shipping methods controller class.
     *
     * @package Automattic/WooCommerce/RestApi
     * @extends WC_REST_Shipping_Methods_V2_Controller
     */
    class WC_REST_Shipping_Methods_Controller extends \WC_REST_Shipping_Methods_V2_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
    }
}
namespace Automattic\WooCommerce\RestApi {
    /**
     * Main package class.
     */
    class Package
    {
        /**
         * Version.
         *
         * @var string
         */
        const VERSION = '1.0.2';
        /**
         * Init the package - load the REST API Server class.
         */
        public static function init()
        {
        }
        /**
         * Return the version of the package.
         *
         * @return string
         */
        public static function get_version()
        {
        }
        /**
         * Return the path to the package.
         *
         * @return string
         */
        public static function get_path()
        {
        }
    }
}
namespace Automattic\WooCommerce\RestApi\Utilities {
    /**
     * Singleton trait.
     */
    trait SingletonTrait
    {
        /**
         * The single instance of the class.
         *
         * @var object
         */
        protected static $instance = null;
        /**
         * Constructor
         *
         * @return void
         */
        protected function __construct()
        {
        }
        /**
         * Get class instance.
         *
         * @return object Instance.
         */
        public static final function instance()
        {
        }
        /**
         * Prevent cloning.
         */
        private function __clone()
        {
        }
        /**
         * Prevent unserializing.
         */
        private function __wakeup()
        {
        }
    }
}
namespace Automattic\WooCommerce\RestApi {
    /**
     * Class responsible for loading the REST API and all REST API namespaces.
     */
    class Server
    {
        use \Automattic\WooCommerce\RestApi\Utilities\SingletonTrait;
        /**
         * REST API namespaces and endpoints.
         *
         * @var array
         */
        protected $controllers = [];
        /**
         * Hook into WordPress ready to init the REST API as needed.
         */
        public function init()
        {
        }
        /**
         * Register REST API routes.
         */
        public function register_rest_routes()
        {
        }
        /**
         * Get API namespaces - new namespaces should be registered here.
         *
         * @return array List of Namespaces and Main controller classes.
         */
        protected function get_rest_namespaces()
        {
        }
        /**
         * List of controllers in the wc/v1 namespace.
         *
         * @return array
         */
        protected function get_v1_controllers()
        {
        }
        /**
         * List of controllers in the wc/v2 namespace.
         *
         * @return array
         */
        protected function get_v2_controllers()
        {
        }
        /**
         * List of controllers in the wc/v3 namespace.
         *
         * @return array
         */
        protected function get_v3_controllers()
        {
        }
    }
}
namespace Automattic\WooCommerce\RestApi\Utilities {
    /**
     * ImageAttachment class.
     */
    class ImageAttachment
    {
        /**
         * Attachment ID.
         *
         * @var integer
         */
        public $id = 0;
        /**
         * Object attached to.
         *
         * @var integer
         */
        public $object_id = 0;
        /**
         * Constructor.
         *
         * @param integer $id Attachment ID.
         * @param integer $object_id Object ID.
         */
        public function __construct($id = 0, $object_id = 0)
        {
        }
        /**
         * Upload an attachment file.
         *
         * @throws \WC_REST_Exception REST API exceptions.
         * @param string $src URL to file.
         */
        public function upload_image_from_src($src)
        {
        }
        /**
         * Update attachment alt text.
         *
         * @param string $text Text to set.
         */
        public function update_alt_text($text)
        {
        }
        /**
         * Update attachment name.
         *
         * @param string $text Text to set.
         */
        public function update_name($text)
        {
        }
    }
}
namespace {
    // Before wpautop().
    /**
     * Define a constant if it is not already defined.
     *
     * @since 3.0.0
     * @param string $name  Constant name.
     * @param mixed  $value Value.
     */
    function wc_maybe_define_constant($name, $value)
    {
    }
    /**
     * Create a new order programmatically.
     *
     * Returns a new order object on success which can then be used to add additional data.
     *
     * @param  array $args Order arguments.
     * @return WC_Order|WP_Error
     */
    function wc_create_order($args = array())
    {
    }
    /**
     * Update an order. Uses wc_create_order.
     *
     * @param  array $args Order arguments.
     * @return WC_Order|WP_Error
     */
    function wc_update_order($args)
    {
    }
    /**
     * Get template part (for templates like the shop-loop).
     *
     * WC_TEMPLATE_DEBUG_MODE will prevent overrides in themes from taking priority.
     *
     * @param mixed  $slug Template slug.
     * @param string $name Template name (default: '').
     */
    function wc_get_template_part($slug, $name = '')
    {
    }
    /**
     * Get other templates (e.g. product attributes) passing attributes and including the file.
     *
     * @param string $template_name Template name.
     * @param array  $args          Arguments. (default: array).
     * @param string $template_path Template path. (default: '').
     * @param string $default_path  Default path. (default: '').
     */
    function wc_get_template($template_name, $args = array(), $template_path = '', $default_path = '')
    {
    }
    /**
     * Like wc_get_template, but returns the HTML instead of outputting.
     *
     * @see wc_get_template
     * @since 2.5.0
     * @param string $template_name Template name.
     * @param array  $args          Arguments. (default: array).
     * @param string $template_path Template path. (default: '').
     * @param string $default_path  Default path. (default: '').
     *
     * @return string
     */
    function wc_get_template_html($template_name, $args = array(), $template_path = '', $default_path = '')
    {
    }
    /**
     * Locate a template and return the path for inclusion.
     *
     * This is the load order:
     *
     * yourtheme/$template_path/$template_name
     * yourtheme/$template_name
     * $default_path/$template_name
     *
     * @param string $template_name Template name.
     * @param string $template_path Template path. (default: '').
     * @param string $default_path  Default path. (default: '').
     * @return string
     */
    function wc_locate_template($template_name, $template_path = '', $default_path = '')
    {
    }
    /**
     * Get Base Currency Code.
     *
     * @return string
     */
    function get_woocommerce_currency()
    {
    }
    /**
     * Get full list of currency codes.
     *
     * @return array
     */
    function get_woocommerce_currencies()
    {
    }
    /**
     * Get Currency symbol.
     *
     * @param string $currency Currency. (default: '').
     * @return string
     */
    function get_woocommerce_currency_symbol($currency = '')
    {
    }
    /**
     * Send HTML emails from WooCommerce.
     *
     * @param mixed  $to          Receiver.
     * @param mixed  $subject     Subject.
     * @param mixed  $message     Message.
     * @param string $headers     Headers. (default: "Content-Type: text/html\r\n").
     * @param string $attachments Attachments. (default: "").
     */
    function wc_mail($to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = '')
    {
    }
    /**
     * Return "theme support" values from the current theme, if set.
     *
     * @since  3.3.0
     * @param  string $prop Name of prop (or key::subkey for arrays of props) if you want a specific value. Leave blank to get all props as an array.
     * @param  mixed  $default Optional value to return if the theme does not declare support for a prop.
     * @return mixed  Value of prop(s).
     */
    function wc_get_theme_support($prop = '', $default = \null)
    {
    }
    /**
     * Get an image size by name or defined dimensions.
     *
     * The returned variable is filtered by woocommerce_get_image_size_{image_size} filter to
     * allow 3rd party customisation.
     *
     * Sizes defined by the theme take priority over settings. Settings are hidden when a theme
     * defines sizes.
     *
     * @param array|string $image_size Name of the image size to get, or an array of dimensions.
     * @return array Array of dimensions including width, height, and cropping mode. Cropping mode is 0 for no crop, and 1 for hard crop.
     */
    function wc_get_image_size($image_size)
    {
    }
    /**
     * Queue some JavaScript code to be output in the footer.
     *
     * @param string $code Code.
     */
    function wc_enqueue_js($code)
    {
    }
    /**
     * Output any queued javascript code in the footer.
     */
    function wc_print_js()
    {
    }
    /**
     * Set a cookie - wrapper for setcookie using WP constants.
     *
     * @param  string  $name   Name of the cookie being set.
     * @param  string  $value  Value of the cookie.
     * @param  integer $expire Expiry of the cookie.
     * @param  bool    $secure Whether the cookie should be served only over https.
     * @param  bool    $httponly Whether the cookie is only accessible over HTTP, not scripting languages like JavaScript. @since 3.6.0.
     */
    function wc_setcookie($name, $value, $expire = 0, $secure = \false, $httponly = \false)
    {
    }
    /**
     * Get the URL to the WooCommerce REST API.
     *
     * @since 2.1
     * @param string $path an endpoint to include in the URL.
     * @return string the URL.
     */
    function get_woocommerce_api_url($path)
    {
    }
    /**
     * Get a log file path.
     *
     * @since 2.2
     *
     * @param string $handle name.
     * @return string the log file path.
     */
    function wc_get_log_file_path($handle)
    {
    }
    /**
     * Get a log file name.
     *
     * @since 3.3
     *
     * @param string $handle Name.
     * @return string The log file name.
     */
    function wc_get_log_file_name($handle)
    {
    }
    /**
     * Recursively get page children.
     *
     * @param  int $page_id Page ID.
     * @return int[]
     */
    function wc_get_page_children($page_id)
    {
    }
    /**
     * Flushes rewrite rules when the shop page (or it's children) gets saved.
     */
    function flush_rewrite_rules_on_shop_page_save()
    {
    }
    /**
     * Various rewrite rule fixes.
     *
     * @since 2.2
     * @param array $rules Rules.
     * @return array
     */
    function wc_fix_rewrite_rules($rules)
    {
    }
    /**
     * Prevent product attachment links from breaking when using complex rewrite structures.
     *
     * @param  string $link    Link.
     * @param  int    $post_id Post ID.
     * @return string
     */
    function wc_fix_product_attachment_link($link, $post_id)
    {
    }
    /**
     * Protect downloads from ms-files.php in multisite.
     *
     * @param string $rewrite rewrite rules.
     * @return string
     */
    function wc_ms_protect_download_rewite_rules($rewrite)
    {
    }
    /**
     * Formats a string in the format COUNTRY:STATE into an array.
     *
     * @since 2.3.0
     * @param  string $country_string Country string.
     * @return array
     */
    function wc_format_country_state_string($country_string)
    {
    }
    /**
     * Get the store's base location.
     *
     * @since 2.3.0
     * @return array
     */
    function wc_get_base_location()
    {
    }
    /**
     * Get the customer's default location.
     *
     * Filtered, and set to base location or left blank. If cache-busting,
     * this should only be used when 'location' is set in the querystring.
     *
     * @since 2.3.0
     * @return array
     */
    function wc_get_customer_default_location()
    {
    }
    /**
     * Get user agent string.
     *
     * @since  3.0.0
     * @return string
     */
    function wc_get_user_agent()
    {
    }
    /**
     * Generate a rand hash.
     *
     * @since  2.4.0
     * @return string
     */
    function wc_rand_hash()
    {
    }
    /**
     * WC API - Hash.
     *
     * @since  2.4.0
     * @param  string $data Message to be hashed.
     * @return string
     */
    function wc_api_hash($data)
    {
    }
    /**
     * Find all possible combinations of values from the input array and return in a logical order.
     *
     * @since 2.5.0
     * @param array $input Input.
     * @return array
     */
    function wc_array_cartesian($input)
    {
    }
    /**
     * Run a MySQL transaction query, if supported.
     *
     * @since 2.5.0
     * @param string $type Types: start (default), commit, rollback.
     * @param bool   $force use of transactions.
     */
    function wc_transaction_query($type = 'start', $force = \false)
    {
    }
    /**
     * Gets the url to the cart page.
     *
     * @since  2.5.0
     *
     * @return string Url to cart page
     */
    function wc_get_cart_url()
    {
    }
    /**
     * Gets the url to the checkout page.
     *
     * @since  2.5.0
     *
     * @return string Url to checkout page
     */
    function wc_get_checkout_url()
    {
    }
    /**
     * Register a shipping method.
     *
     * @since 1.5.7
     * @param string|object $shipping_method class name (string) or a class object.
     */
    function woocommerce_register_shipping_method($shipping_method)
    {
    }
    /**
     * Get the shipping zone matching a given package from the cart.
     *
     * @since  2.6.0
     * @uses   WC_Shipping_Zones::get_zone_matching_package
     * @param  array $package Shipping package.
     * @return WC_Shipping_Zone
     */
    function wc_get_shipping_zone($package)
    {
    }
    /**
     * Get a nice name for credit card providers.
     *
     * @since  2.6.0
     * @param  string $type Provider Slug/Type.
     * @return string
     */
    function wc_get_credit_card_type_label($type)
    {
    }
    /**
     * Outputs a "back" link so admin screens can easily jump back a page.
     *
     * @param string $label Title of the page to return to.
     * @param string $url   URL of the page to return to.
     */
    function wc_back_link($label, $url)
    {
    }
    /**
     * Display a WooCommerce help tip.
     *
     * @since  2.5.0
     *
     * @param  string $tip        Help tip text.
     * @param  bool   $allow_html Allow sanitized HTML if true or escape.
     * @return string
     */
    function wc_help_tip($tip, $allow_html = \false)
    {
    }
    /**
     * Return a list of potential postcodes for wildcard searching.
     *
     * @since 2.6.0
     * @param  string $postcode Postcode.
     * @param  string $country  Country to format postcode for matching.
     * @return string[]
     */
    function wc_get_wildcard_postcodes($postcode, $country = '')
    {
    }
    /**
     * Used by shipping zones and taxes to compare a given $postcode to stored
     * postcodes to find matches for numerical ranges, and wildcards.
     *
     * @since 2.6.0
     * @param string $postcode           Postcode you want to match against stored postcodes.
     * @param array  $objects            Array of postcode objects from Database.
     * @param string $object_id_key      DB column name for the ID.
     * @param string $object_compare_key DB column name for the value.
     * @param string $country            Country from which this postcode belongs. Allows for formatting.
     * @return array Array of matching object ID and matching values.
     */
    function wc_postcode_location_matcher($postcode, $objects, $object_id_key, $object_compare_key, $country = '')
    {
    }
    /**
     * Gets number of shipping methods currently enabled. Used to identify if
     * shipping is configured.
     *
     * @since  2.6.0
     * @param  bool $include_legacy Count legacy shipping methods too.
     * @return int
     */
    function wc_get_shipping_method_count($include_legacy = \false)
    {
    }
    /**
     * Wrapper for set_time_limit to see if it is enabled.
     *
     * @since 2.6.0
     * @param int $limit Time limit.
     */
    function wc_set_time_limit($limit = 0)
    {
    }
    /**
     * Wrapper for nocache_headers which also disables page caching.
     *
     * @since 3.2.4
     */
    function wc_nocache_headers()
    {
    }
    /**
     * Used to sort products attributes with uasort.
     *
     * @since 2.6.0
     * @param array $a First attribute to compare.
     * @param array $b Second attribute to compare.
     * @return int
     */
    function wc_product_attribute_uasort_comparison($a, $b)
    {
    }
    /**
     * Used to sort shipping zone methods with uasort.
     *
     * @since 3.0.0
     * @param array $a First shipping zone method to compare.
     * @param array $b Second shipping zone method to compare.
     * @return int
     */
    function wc_shipping_zone_method_order_uasort_comparison($a, $b)
    {
    }
    /**
     * User to sort checkout fields based on priority with uasort.
     *
     * @since 3.5.1
     * @param array $a First field to compare.
     * @param array $b Second field to compare.
     * @return int
     */
    function wc_checkout_fields_uasort_comparison($a, $b)
    {
    }
    /**
     * User to sort two values with ausort.
     *
     * @since 3.5.1
     * @param int $a First value to compare.
     * @param int $b Second value to compare.
     * @return int
     */
    function wc_uasort_comparison($a, $b)
    {
    }
    /**
     * Sort values based on ascii, usefull for special chars in strings.
     *
     * @param string $a First value.
     * @param string $b Second value.
     * @return int
     */
    function wc_ascii_uasort_comparison($a, $b)
    {
    }
    /**
     * Get rounding mode for internal tax calculations.
     *
     * @since 3.2.4
     * @return int
     */
    function wc_get_tax_rounding_mode()
    {
    }
    /**
     * Get rounding precision for internal WC calculations.
     * Will increase the precision of wc_get_price_decimals by 2 decimals, unless WC_ROUNDING_PRECISION is set to a higher number.
     *
     * @since 2.6.3
     * @return int
     */
    function wc_get_rounding_precision()
    {
    }
    /**
     * Add precision to a number and return a number.
     *
     * @since  3.2.0
     * @param  float $value Number to add precision to.
     * @param  bool  $round If should round after adding precision.
     * @return int|float
     */
    function wc_add_number_precision($value, $round = \true)
    {
    }
    /**
     * Remove precision from a number and return a float.
     *
     * @since  3.2.0
     * @param  float $value Number to add precision to.
     * @return float
     */
    function wc_remove_number_precision($value)
    {
    }
    /**
     * Add precision to an array of number and return an array of int.
     *
     * @since  3.2.0
     * @param  array $value Number to add precision to.
     * @param  bool  $round Should we round after adding precision?.
     * @return int|array
     */
    function wc_add_number_precision_deep($value, $round = \true)
    {
    }
    /**
     * Remove precision from an array of number and return an array of int.
     *
     * @since  3.2.0
     * @param  array $value Number to add precision to.
     * @return int|array
     */
    function wc_remove_number_precision_deep($value)
    {
    }
    /**
     * Get a shared logger instance.
     *
     * Use the woocommerce_logging_class filter to change the logging class. You may provide one of the following:
     *     - a class name which will be instantiated as `new $class` with no arguments
     *     - an instance which will be used directly as the logger
     * In either case, the class or instance *must* implement WC_Logger_Interface.
     *
     * @see WC_Logger_Interface
     *
     * @return WC_Logger
     */
    function wc_get_logger()
    {
    }
    /**
     * Trigger logging cleanup using the logging class.
     *
     * @since 3.4.0
     */
    function wc_cleanup_logs()
    {
    }
    /**
     * Prints human-readable information about a variable.
     *
     * Some server environments blacklist some debugging functions. This function provides a safe way to
     * turn an expression into a printable, readable form without calling blacklisted functions.
     *
     * @since 3.0
     *
     * @param mixed $expression The expression to be printed.
     * @param bool  $return     Optional. Default false. Set to true to return the human-readable string.
     * @return string|bool False if expression could not be printed. True if the expression was printed.
     *     If $return is true, a string representation will be returned.
     */
    function wc_print_r($expression, $return = \false)
    {
    }
    /**
     * Registers the default log handler.
     *
     * @since 3.0
     * @param array $handlers Handlers.
     * @return array
     */
    function wc_register_default_log_handler($handlers)
    {
    }
    /**
     * Based on wp_list_pluck, this calls a method instead of returning a property.
     *
     * @since 3.0.0
     * @param array      $list              List of objects or arrays.
     * @param int|string $callback_or_field Callback method from the object to place instead of the entire object.
     * @param int|string $index_key         Optional. Field from the object to use as keys for the new array.
     *                                      Default null.
     * @return array Array of values.
     */
    function wc_list_pluck($list, $callback_or_field, $index_key = \null)
    {
    }
    /**
     * Get permalink settings for things like products and taxonomies.
     *
     * As of 3.3.0, the permalink settings are stored to the option instead of
     * being blank and inheritting from the locale. This speeds up page loading
     * times by negating the need to switch locales on each page load.
     *
     * This is more inline with WP core behavior which does not localize slugs.
     *
     * @since  3.0.0
     * @return array
     */
    function wc_get_permalink_structure()
    {
    }
    /**
     * Switch WooCommerce to site language.
     *
     * @since 3.1.0
     */
    function wc_switch_to_site_locale()
    {
    }
    /**
     * Switch WooCommerce language to original.
     *
     * @since 3.1.0
     */
    function wc_restore_locale()
    {
    }
    /**
     * Convert plaintext phone number to clickable phone number.
     *
     * Remove formatting and allow "+".
     * Example and specs: https://developer.mozilla.org/en/docs/Web/HTML/Element/a#Creating_a_phone_link
     *
     * @since 3.1.0
     *
     * @param string $phone Content to convert phone number.
     * @return string Content with converted phone number.
     */
    function wc_make_phone_clickable($phone)
    {
    }
    /**
     * Get an item of post data if set, otherwise return a default value.
     *
     * @since  3.0.9
     * @param  string $key     Meta key.
     * @param  string $default Default value.
     * @return mixed Value sanitized by wc_clean.
     */
    function wc_get_post_data_by_key($key, $default = '')
    {
    }
    /**
     * Get data if set, otherwise return a default value or null. Prevents notices when data is not set.
     *
     * @since  3.2.0
     * @param  mixed  $var     Variable.
     * @param  string $default Default value.
     * @return mixed
     */
    function wc_get_var(&$var, $default = \null)
    {
    }
    /**
     * Read in WooCommerce headers when reading plugin headers.
     *
     * @since 3.2.0
     * @param array $headers Headers.
     * @return array
     */
    function wc_enable_wc_plugin_headers($headers)
    {
    }
    /**
     * Prevent auto-updating the WooCommerce plugin on major releases if there are untested extensions active.
     *
     * @since 3.2.0
     * @param  bool   $should_update If should update.
     * @param  object $plugin        Plugin data.
     * @return bool
     */
    function wc_prevent_dangerous_auto_updates($should_update, $plugin)
    {
    }
    /**
     * Delete expired transients.
     *
     * Deletes all expired transients. The multi-table delete syntax is used.
     * to delete the transient record from table a, and the corresponding.
     * transient_timeout record from table b.
     *
     * Based on code inside core's upgrade_network() function.
     *
     * @since 3.2.0
     * @return int Number of transients that were cleared.
     */
    function wc_delete_expired_transients()
    {
    }
    /**
     * Make a URL relative, if possible.
     *
     * @since 3.2.0
     * @param string $url URL to make relative.
     * @return string
     */
    function wc_get_relative_url($url)
    {
    }
    /**
     * See if a resource is remote.
     *
     * @since 3.2.0
     * @param string $url URL to check.
     * @return bool
     */
    function wc_is_external_resource($url)
    {
    }
    /**
     * See if theme/s is activate or not.
     *
     * @since 3.3.0
     * @param string|array $theme Theme name or array of theme names to check.
     * @return boolean
     */
    function wc_is_active_theme($theme)
    {
    }
    /**
     * Cleans up session data - cron callback.
     *
     * @since 3.3.0
     */
    function wc_cleanup_session_data()
    {
    }
    /**
     * Convert a decimal (e.g. 3.5) to a fraction (e.g. 7/2).
     * From: https://www.designedbyaturtle.co.uk/2015/converting-a-decimal-to-a-fraction-in-php/
     *
     * @param float $decimal the decimal number.
     * @return array|bool a 1/2 would be [1, 2] array (this can be imploded with '/' to form a string).
     */
    function wc_decimal_to_fraction($decimal)
    {
    }
    /**
     * Round discount.
     *
     * @param  double $value Amount to round.
     * @param  int    $precision DP to round.
     * @return float
     */
    function wc_round_discount($value, $precision)
    {
    }
    /**
     * Return the html selected attribute if stringified $value is found in array of stringified $options
     * or if stringified $value is the same as scalar stringified $options.
     *
     * @param string|int       $value   Value to find within options.
     * @param string|int|array $options Options to go through when looking for value.
     * @return string
     */
    function wc_selected($value, $options)
    {
    }
    /**
     * Retrieves the MySQL server version. Based on $wpdb.
     *
     * @since 3.4.1
     * @return array Vesion information.
     */
    function wc_get_server_database_version()
    {
    }
    /**
     * Initialize and load the cart functionality.
     *
     * @since 3.6.4
     * @return void
     */
    function wc_load_cart()
    {
    }
    /**
     * Standard way of retrieving products based on certain parameters.
     *
     * This function should be used for product retrieval so that we have a data agnostic
     * way to get a list of products.
     *
     * Args and usage: https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
     *
     * @since  3.0.0
     * @param  array $args Array of args (above).
     * @return array|stdClass Number of pages and an array of product objects if
     *                             paginate is true, or just an array of values.
     */
    function wc_get_products($args)
    {
    }
    /**
     * Main function for returning products, uses the WC_Product_Factory class.
     *
     * @since 2.2.0
     *
     * @param mixed $the_product Post object or post ID of the product.
     * @param array $deprecated Previously used to pass arguments to the factory, e.g. to force a type.
     * @return WC_Product|null|false
     */
    function wc_get_product($the_product = \false, $deprecated = array())
    {
    }
    /**
     * Returns whether or not SKUS are enabled.
     *
     * @return bool
     */
    function wc_product_sku_enabled()
    {
    }
    /**
     * Returns whether or not product weights are enabled.
     *
     * @return bool
     */
    function wc_product_weight_enabled()
    {
    }
    /**
     * Returns whether or not product dimensions (HxWxD) are enabled.
     *
     * @return bool
     */
    function wc_product_dimensions_enabled()
    {
    }
    /**
     * Clear transient cache for product data.
     *
     * @param int $post_id (default: 0) The product ID.
     */
    function wc_delete_product_transients($post_id = 0)
    {
    }
    /**
     * Function that returns an array containing the IDs of the products that are on sale.
     *
     * @since 2.0
     * @return array
     */
    function wc_get_product_ids_on_sale()
    {
    }
    /**
     * Function that returns an array containing the IDs of the featured products.
     *
     * @since 2.1
     * @return array
     */
    function wc_get_featured_product_ids()
    {
    }
    /**
     * Filter to allow product_cat in the permalinks for products.
     *
     * @param  string  $permalink The existing permalink URL.
     * @param  WP_Post $post WP_Post object.
     * @return string
     */
    function wc_product_post_type_link($permalink, $post)
    {
    }
    /**
     * Get the placeholder image URL either from media, or use the fallback image.
     *
     * @param string $size Thumbnail size to use.
     * @return string
     */
    function wc_placeholder_img_src($size = 'woocommerce_thumbnail')
    {
    }
    /**
     * Get the placeholder image.
     *
     * Uses wp_get_attachment_image if using an attachment ID @since 3.6.0 to handle responsiveness.
     *
     * @param string $size Image size.
     * @return string
     */
    function wc_placeholder_img($size = 'woocommerce_thumbnail')
    {
    }
    /**
     * Variation Formatting.
     *
     * Gets a formatted version of variation data or item meta.
     *
     * @param array|WC_Product_Variation $variation Variation object.
     * @param bool                       $flat Should this be a flat list or HTML list? (default: false).
     * @param bool                       $include_names include attribute names/labels in the list.
     * @param bool                       $skip_attributes_in_name Do not list attributes already part of the variation name.
     * @return string
     */
    function wc_get_formatted_variation($variation, $flat = \false, $include_names = \true, $skip_attributes_in_name = \false)
    {
    }
    /**
     * Function which handles the start and end of scheduled sales via cron.
     */
    function wc_scheduled_sales()
    {
    }
    /**
     * Get attachment image attributes.
     *
     * @param array $attr Image attributes.
     * @return array
     */
    function wc_get_attachment_image_attributes($attr)
    {
    }
    /**
     * Prepare attachment for JavaScript.
     *
     * @param array $response JS version of a attachment post object.
     * @return array
     */
    function wc_prepare_attachment_for_js($response)
    {
    }
    /**
     * Track product views.
     */
    function wc_track_product_view()
    {
    }
    /**
     * Get product types.
     *
     * @since 2.2
     * @return array
     */
    function wc_get_product_types()
    {
    }
    /**
     * Check if product sku is unique.
     *
     * @since 2.2
     * @param int    $product_id Product ID.
     * @param string $sku Product SKU.
     * @return bool
     */
    function wc_product_has_unique_sku($product_id, $sku)
    {
    }
    /**
     * Force a unique SKU.
     *
     * @since  3.0.0
     * @param  integer $product_id Product ID.
     */
    function wc_product_force_unique_sku($product_id)
    {
    }
    /**
     * Recursively appends a suffix until a unique SKU is found.
     *
     * @since  3.0.0
     * @param  integer $product_id Product ID.
     * @param  string  $sku Product SKU.
     * @param  integer $index An optional index that can be added to the product SKU.
     * @return string
     */
    function wc_product_generate_unique_sku($product_id, $sku, $index = 0)
    {
    }
    /**
     * Get product ID by SKU.
     *
     * @since  2.3.0
     * @param  string $sku Product SKU.
     * @return int
     */
    function wc_get_product_id_by_sku($sku)
    {
    }
    /**
     * Get attibutes/data for an individual variation from the database and maintain it's integrity.
     *
     * @since  2.4.0
     * @param  int $variation_id Variation ID.
     * @return array
     */
    function wc_get_product_variation_attributes($variation_id)
    {
    }
    /**
     * Get all product cats for a product by ID, including hierarchy
     *
     * @since  2.5.0
     * @param  int $product_id Product ID.
     * @return array
     */
    function wc_get_product_cat_ids($product_id)
    {
    }
    /**
     * Gets data about an attachment, such as alt text and captions.
     *
     * @since 2.6.0
     *
     * @param int|null        $attachment_id Attachment ID.
     * @param WC_Product|bool $product WC_Product object.
     *
     * @return array
     */
    function wc_get_product_attachment_props($attachment_id = \null, $product = \false)
    {
    }
    /**
     * Get product visibility options.
     *
     * @since 3.0.0
     * @return array
     */
    function wc_get_product_visibility_options()
    {
    }
    /**
     * Get product tax class options.
     *
     * @since 3.0.0
     * @return array
     */
    function wc_get_product_tax_class_options()
    {
    }
    /**
     * Get stock status options.
     *
     * @since 3.0.0
     * @return array
     */
    function wc_get_product_stock_status_options()
    {
    }
    /**
     * Get backorder options.
     *
     * @since 3.0.0
     * @return array
     */
    function wc_get_product_backorder_options()
    {
    }
    /**
     * Get related products based on product category and tags.
     *
     * @since  3.0.0
     * @param  int   $product_id  Product ID.
     * @param  int   $limit       Limit of results.
     * @param  array $exclude_ids Exclude IDs from the results.
     * @return array
     */
    function wc_get_related_products($product_id, $limit = 5, $exclude_ids = array())
    {
    }
    /**
     * Retrieves product term ids for a taxonomy.
     *
     * @since  3.0.0
     * @param  int    $product_id Product ID.
     * @param  string $taxonomy   Taxonomy slug.
     * @return array
     */
    function wc_get_product_term_ids($product_id, $taxonomy)
    {
    }
    /**
     * For a given product, and optionally price/qty, work out the price with tax included, based on store settings.
     *
     * @since  3.0.0
     * @param  WC_Product $product WC_Product object.
     * @param  array      $args Optional arguments to pass product quantity and price.
     * @return float
     */
    function wc_get_price_including_tax($product, $args = array())
    {
    }
    /**
     * For a given product, and optionally price/qty, work out the price with tax excluded, based on store settings.
     *
     * @since  3.0.0
     * @param  WC_Product $product WC_Product object.
     * @param  array      $args Optional arguments to pass product quantity and price.
     * @return float
     */
    function wc_get_price_excluding_tax($product, $args = array())
    {
    }
    /**
     * Returns the price including or excluding tax, based on the 'woocommerce_tax_display_shop' setting.
     *
     * @since  3.0.0
     * @param  WC_Product $product WC_Product object.
     * @param  array      $args Optional arguments to pass product quantity and price.
     * @return float
     */
    function wc_get_price_to_display($product, $args = array())
    {
    }
    /**
     * Returns the product categories in a list.
     *
     * @param int    $product_id Product ID.
     * @param string $sep (default: ', ').
     * @param string $before (default: '').
     * @param string $after (default: '').
     * @return string
     */
    function wc_get_product_category_list($product_id, $sep = ', ', $before = '', $after = '')
    {
    }
    /**
     * Returns the product tags in a list.
     *
     * @param int    $product_id Product ID.
     * @param string $sep (default: ', ').
     * @param string $before (default: '').
     * @param string $after (default: '').
     * @return string
     */
    function wc_get_product_tag_list($product_id, $sep = ', ', $before = '', $after = '')
    {
    }
    /**
     * Callback for array filter to get visible only.
     *
     * @since  3.0.0
     * @param  WC_Product $product WC_Product object.
     * @return bool
     */
    function wc_products_array_filter_visible($product)
    {
    }
    /**
     * Callback for array filter to get visible grouped products only.
     *
     * @since  3.1.0
     * @param  WC_Product $product WC_Product object.
     * @return bool
     */
    function wc_products_array_filter_visible_grouped($product)
    {
    }
    /**
     * Callback for array filter to get products the user can edit only.
     *
     * @since  3.0.0
     * @param  WC_Product $product WC_Product object.
     * @return bool
     */
    function wc_products_array_filter_editable($product)
    {
    }
    /**
     * Callback for array filter to get products the user can view only.
     *
     * @since  3.4.0
     * @param  WC_Product $product WC_Product object.
     * @return bool
     */
    function wc_products_array_filter_readable($product)
    {
    }
    /**
     * Sort an array of products by a value.
     *
     * @since  3.0.0
     *
     * @param array  $products List of products to be ordered.
     * @param string $orderby Optional order criteria.
     * @param string $order Ascending or descending order.
     *
     * @return array
     */
    function wc_products_array_orderby($products, $orderby = 'date', $order = 'desc')
    {
    }
    /**
     * Sort by title.
     *
     * @since  3.0.0
     * @param  WC_Product $a First WC_Product object.
     * @param  WC_Product $b Second WC_Product object.
     * @return int
     */
    function wc_products_array_orderby_title($a, $b)
    {
    }
    /**
     * Sort by id.
     *
     * @since  3.0.0
     * @param  WC_Product $a First WC_Product object.
     * @param  WC_Product $b Second WC_Product object.
     * @return int
     */
    function wc_products_array_orderby_id($a, $b)
    {
    }
    /**
     * Sort by date.
     *
     * @since  3.0.0
     * @param  WC_Product $a First WC_Product object.
     * @param  WC_Product $b Second WC_Product object.
     * @return int
     */
    function wc_products_array_orderby_date($a, $b)
    {
    }
    /**
     * Sort by modified.
     *
     * @since  3.0.0
     * @param  WC_Product $a First WC_Product object.
     * @param  WC_Product $b Second WC_Product object.
     * @return int
     */
    function wc_products_array_orderby_modified($a, $b)
    {
    }
    /**
     * Sort by menu order.
     *
     * @since  3.0.0
     * @param  WC_Product $a First WC_Product object.
     * @param  WC_Product $b Second WC_Product object.
     * @return int
     */
    function wc_products_array_orderby_menu_order($a, $b)
    {
    }
    /**
     * Sort by price low to high.
     *
     * @since  3.0.0
     * @param  WC_Product $a First WC_Product object.
     * @param  WC_Product $b Second WC_Product object.
     * @return int
     */
    function wc_products_array_orderby_price($a, $b)
    {
    }
    /**
     * Queue a product for syncing at the end of the request.
     *
     * @param int $product_id Product ID.
     */
    function wc_deferred_product_sync($product_id)
    {
    }
    /**
     * See if the lookup table is being generated already.
     *
     * @since 3.6.0
     * @return bool
     */
    function wc_update_product_lookup_tables_is_running()
    {
    }
    /**
     * Populate lookup table data for products.
     *
     * @since 3.6.0
     */
    function wc_update_product_lookup_tables()
    {
    }
    /**
     * Populate lookup table column data.
     *
     * @since 3.6.0
     * @param string $column Column name to set.
     */
    function wc_update_product_lookup_tables_column($column)
    {
    }
    /**
     * Populate rating count lookup table data for products.
     *
     * @since 3.6.0
     * @param array $rows Rows of rating counts to update in lookup table.
     */
    function wc_update_product_lookup_tables_rating_count($rows)
    {
    }
    /**
     * Populate a batch of rating count lookup table data for products.
     *
     * @since 3.6.2
     * @param array $offset Offset to query.
     * @param array $limit  Limit to query.
     */
    function wc_update_product_lookup_tables_rating_count_batch($offset = 0, $limit = 0)
    {
    }
    /**
     * Process webhook delivery.
     *
     * @since 3.3.0
     * @param WC_Webhook $webhook Webhook instance.
     * @param array      $arg     Delivery arguments.
     */
    function wc_webhook_process_delivery($webhook, $arg)
    {
    }
    /**
     * Wrapper function to execute the `woocommerce_deliver_webhook_async` cron.
     * hook, see WC_Webhook::process().
     *
     * @since 2.2.0
     * @param int   $webhook_id Webhook ID to deliver.
     * @throws Exception        If webhook cannot be read/found and $data parameter of WC_Webhook class constructor is set.
     * @param mixed $arg        Hook argument.
     */
    function wc_deliver_webhook_async($webhook_id, $arg)
    {
    }
    /**
     * Check if the given topic is a valid webhook topic, a topic is valid if:
     *
     * + starts with `action.woocommerce_` or `action.wc_`.
     * + it has a valid resource & event.
     *
     * @since  2.2.0
     * @param  string $topic Webhook topic.
     * @return bool
     */
    function wc_is_webhook_valid_topic($topic)
    {
    }
    /**
     * Check if given status is a valid webhook status.
     *
     * @since 3.5.3
     * @param string $status Status to check.
     * @return bool
     */
    function wc_is_webhook_valid_status($status)
    {
    }
    /**
     * Get Webhook statuses.
     *
     * @since  2.3.0
     * @return array
     */
    function wc_get_webhook_statuses()
    {
    }
    /**
     * Load webhooks.
     *
     * @since  3.3.0
     * @throws Exception If webhook cannot be read/found and $data parameter of WC_Webhook class constructor is set.
     * @param  string   $status Optional - status to filter results by. Must be a key in return value of @see wc_get_webhook_statuses(). @since 3.5.0.
     * @param  null|int $limit Limit number of webhooks loaded. @since 3.6.0.
     * @return bool
     */
    function wc_load_webhooks($status = '', $limit = \null)
    {
    }
    /**
     * Get webhook.
     *
     * @param  int|WC_Webhook $id Webhook ID or object.
     * @throws Exception          If webhook cannot be read/found and $data parameter of WC_Webhook class constructor is set.
     * @return WC_Webhook|null
     */
    function wc_get_webhook($id)
    {
    }
    /**
     * Get webhoook REST API versions.
     *
     * @since 3.5.1
     * @return array
     */
    function wc_get_webhook_rest_api_versions()
    {
    }
    /**
     * Standard way of retrieving orders based on certain parameters.
     *
     * This function should be used for order retrieval so that when we move to
     * custom tables, functions still work.
     *
     * Args and usage: https://github.com/woocommerce/woocommerce/wiki/wc_get_orders-and-WC_Order_Query
     *
     * @since  2.6.0
     * @param  array $args Array of args (above).
     * @return WC_Order[]|stdClass Number of pages and an array of order objects if
     *                             paginate is true, or just an array of values.
     */
    function wc_get_orders($args)
    {
    }
    /**
     * Main function for returning orders, uses the WC_Order_Factory class.
     *
     * @since  2.2
     *
     * @param  mixed $the_order Post object or post ID of the order.
     *
     * @return bool|WC_Order|WC_Order_Refund
     */
    function wc_get_order($the_order = \false)
    {
    }
    /**
     * Get all order statuses.
     *
     * @since 2.2
     * @used-by WC_Order::set_status
     * @return array
     */
    function wc_get_order_statuses()
    {
    }
    /**
     * See if a string is an order status.
     *
     * @param  string $maybe_status Status, including any wc- prefix.
     * @return bool
     */
    function wc_is_order_status($maybe_status)
    {
    }
    /**
     * Get list of statuses which are consider 'paid'.
     *
     * @since  3.0.0
     * @return array
     */
    function wc_get_is_paid_statuses()
    {
    }
    /**
     * Get list of statuses which are consider 'pending payment'.
     *
     * @since  3.6.0
     * @return array
     */
    function wc_get_is_pending_statuses()
    {
    }
    /**
     * Get the nice name for an order status.
     *
     * @since  2.2
     * @param  string $status Status.
     * @return string
     */
    function wc_get_order_status_name($status)
    {
    }
    /**
     * Generate an order key.
     *
     * @since 3.5.4
     * @return string The order key.
     */
    function wc_generate_order_key()
    {
    }
    /**
     * Finds an Order ID based on an order key.
     *
     * @param string $order_key An order key has generated by.
     * @return int The ID of an order, or 0 if the order could not be found.
     */
    function wc_get_order_id_by_order_key($order_key)
    {
    }
    /**
     * Get all registered order types.
     *
     * @since  2.2
     * @param  string $for Optionally define what you are getting order types for so
     *                     only relevant types are returned.
     *                     e.g. for 'order-meta-boxes', 'order-count'.
     * @return array
     */
    function wc_get_order_types($for = '')
    {
    }
    /**
     * Get an order type by post type name.
     *
     * @param  string $type Post type name.
     * @return bool|array Details about the order type.
     */
    function wc_get_order_type($type)
    {
    }
    /**
     * Register order type. Do not use before init.
     *
     * Wrapper for register post type, as well as a method of telling WC which.
     * post types are types of orders, and having them treated as such.
     *
     * $args are passed to register_post_type, but there are a few specific to this function:
     *      - exclude_from_orders_screen (bool) Whether or not this order type also get shown in the main.
     *      orders screen.
     *      - add_order_meta_boxes (bool) Whether or not the order type gets shop_order meta boxes.
     *      - exclude_from_order_count (bool) Whether or not this order type is excluded from counts.
     *      - exclude_from_order_views (bool) Whether or not this order type is visible by customers when.
     *      viewing orders e.g. on the my account page.
     *      - exclude_from_order_reports (bool) Whether or not to exclude this type from core reports.
     *      - exclude_from_order_sales_reports (bool) Whether or not to exclude this type from core sales reports.
     *
     * @since  2.2
     * @see    register_post_type for $args used in that function
     * @param  string $type Post type. (max. 20 characters, can not contain capital letters or spaces).
     * @param  array  $args An array of arguments.
     * @return bool Success or failure
     */
    function wc_register_order_type($type, $args = array())
    {
    }
    /**
     * Return the count of processing orders.
     *
     * @return int
     */
    function wc_processing_order_count()
    {
    }
    /**
     * Return the orders count of a specific order status.
     *
     * @param string $status Status.
     * @return int
     */
    function wc_orders_count($status)
    {
    }
    /**
     * Grant downloadable product access to the file identified by $download_id.
     *
     * @param  string         $download_id File identifier.
     * @param  int|WC_Product $product     Product instance or ID.
     * @param  WC_Order       $order       Order data.
     * @param  int            $qty         Quantity purchased.
     * @return int|bool insert id or false on failure.
     */
    function wc_downloadable_file_permission($download_id, $product, $order, $qty = 1)
    {
    }
    /**
     * Order Status completed - give downloadable product access to customer.
     *
     * @param int  $order_id Order ID.
     * @param bool $force    Force downloadable permissions.
     */
    function wc_downloadable_product_permissions($order_id, $force = \false)
    {
    }
    /**
     * Clear all transients cache for order data.
     *
     * @param int|WC_Order $order Order instance or ID.
     */
    function wc_delete_shop_order_transients($order = 0)
    {
    }
    /**
     * See if we only ship to billing addresses.
     *
     * @return bool
     */
    function wc_ship_to_billing_address_only()
    {
    }
    /**
     * Create a new order refund programmatically.
     *
     * Returns a new refund object on success which can then be used to add additional data.
     *
     * @since 2.2
     * @throws Exception Throws exceptions when fail to create, but returns WP_Error instead.
     * @param array $args New refund arguments.
     * @return WC_Order_Refund|WP_Error
     */
    function wc_create_refund($args = array())
    {
    }
    /**
     * Try to refund the payment for an order via the gateway.
     *
     * @since 3.0.0
     * @throws Exception Throws exceptions when fail to refund, but returns WP_Error instead.
     * @param WC_Order $order  Order instance.
     * @param string   $amount Amount to refund.
     * @param string   $reason Refund reason.
     * @return bool|WP_Error
     */
    function wc_refund_payment($order, $amount, $reason = '')
    {
    }
    /**
     * Restock items during refund.
     *
     * @since 3.0.0
     * @param WC_Order $order               Order instance.
     * @param array    $refunded_line_items Refunded items list.
     */
    function wc_restock_refunded_items($order, $refunded_line_items)
    {
    }
    /**
     * Get tax class by tax id.
     *
     * @since 2.2
     * @param int $tax_id Tax ID.
     * @return string
     */
    function wc_get_tax_class_by_tax_id($tax_id)
    {
    }
    /**
     * Get payment gateway class by order data.
     *
     * @since 2.2
     * @param int|WC_Order $order Order instance.
     * @return WC_Payment_Gateway|bool
     */
    function wc_get_payment_gateway_by_order($order)
    {
    }
    /**
     * When refunding an order, create a refund line item if the partial refunds do not match order total.
     *
     * This is manual; no gateway refund will be performed.
     *
     * @since 2.4
     * @param int $order_id Order ID.
     */
    function wc_order_fully_refunded($order_id)
    {
    }
    /**
     * Search orders.
     *
     * @since  2.6.0
     * @param  string $term Term to search.
     * @return array List of orders ID.
     */
    function wc_order_search($term)
    {
    }
    /**
     * Update total sales amount for each product within a paid order.
     *
     * @since 3.0.0
     * @param int $order_id Order ID.
     */
    function wc_update_total_sales_counts($order_id)
    {
    }
    /**
     * Update used coupon amount for each coupon within an order.
     *
     * @since 3.0.0
     * @param int $order_id Order ID.
     */
    function wc_update_coupon_usage_counts($order_id)
    {
    }
    /**
     * Cancel all unpaid orders after held duration to prevent stock lock for those products.
     */
    function wc_cancel_unpaid_orders()
    {
    }
    /**
     * Sanitize order id removing unwanted characters.
     *
     * E.g Users can sometimes try to track an order id using # with no success.
     * This function will fix this.
     *
     * @since 3.1.0
     * @param int $order_id Order ID.
     */
    function wc_sanitize_order_id($order_id)
    {
    }
    /**
     * Get an order note.
     *
     * @since  3.2.0
     * @param  int|WP_Comment $data Note ID (or WP_Comment instance for internal use only).
     * @return stdClass|null        Object with order note details or null when does not exists.
     */
    function wc_get_order_note($data)
    {
    }
    /**
     * Get order notes.
     *
     * @since  3.2.0
     * @param  array $args Query arguments {
     *     Array of query parameters.
     *
     *     @type string $limit         Maximum number of notes to retrieve.
     *                                 Default empty (no limit).
     *     @type int    $order_id      Limit results to those affiliated with a given order ID.
     *                                 Default 0.
     *     @type array  $order__in     Array of order IDs to include affiliated notes for.
     *                                 Default empty.
     *     @type array  $order__not_in Array of order IDs to exclude affiliated notes for.
     *                                 Default empty.
     *     @type string $orderby       Define how should sort notes.
     *                                 Accepts 'date_created', 'date_created_gmt' or 'id'.
     *                                 Default: 'id'.
     *     @type string $order         How to order retrieved notes.
     *                                 Accepts 'ASC' or 'DESC'.
     *                                 Default: 'DESC'.
     *     @type string $type          Define what type of note should retrieve.
     *                                 Accepts 'customer', 'internal' or empty for both.
     *                                 Default empty.
     * }
     * @return stdClass[]              Array of stdClass objects with order notes details.
     */
    function wc_get_order_notes($args)
    {
    }
    /**
     * Create an order note.
     *
     * @since  3.2.0
     * @param  int    $order_id         Order ID.
     * @param  string $note             Note to add.
     * @param  bool   $is_customer_note If is a costumer note.
     * @param  bool   $added_by_user    If note is create by an user.
     * @return int|WP_Error             Integer when created or WP_Error when found an error.
     */
    function wc_create_order_note($order_id, $note, $is_customer_note = \false, $added_by_user = \false)
    {
    }
    /**
     * Delete an order note.
     *
     * @since  3.2.0
     * @param  int $note_id Order note.
     * @return bool         True on success, false on failure.
     */
    function wc_delete_order_note($note_id)
    {
    }
    /**
     * Register Widgets.
     *
     * @since 2.3.0
     */
    function wc_register_widgets()
    {
    }
    /**
     * Prevent any user who cannot 'edit_posts' (subscribers, customers etc) from seeing the admin bar.
     *
     * Note: get_option( 'woocommerce_lock_down_admin', true ) is a deprecated option here for backwards compatibility. Defaults to true.
     *
     * @param bool $show_admin_bar If should display admin bar.
     * @return bool
     */
    function wc_disable_admin_bar($show_admin_bar)
    {
    }
    /**
     * Create a new customer.
     *
     * @param  string $email    Customer email.
     * @param  string $username Customer username.
     * @param  string $password Customer password.
     * @param  array  $args     List of arguments to pass to `wp_insert_user()`.
     * @return int|WP_Error Returns WP_Error on failure, Int (user ID) on success.
     */
    function wc_create_new_customer($email, $username = '', $password = '', $args = array())
    {
    }
    /**
     * Create a unique username for a new customer.
     *
     * @since 3.6.0
     * @param string $email New customer email address.
     * @param array  $new_user_args Array of new user args, maybe including first and last names.
     * @param string $suffix Append string to username to make it unique.
     * @return string Generated username.
     */
    function wc_create_new_customer_username($email, $new_user_args = array(), $suffix = '')
    {
    }
    /**
     * Login a customer (set auth cookie and set global user object).
     *
     * @param int $customer_id Customer ID.
     */
    function wc_set_customer_auth_cookie($customer_id)
    {
    }
    /**
     * Get past orders (by email) and update them.
     *
     * @param  int $customer_id Customer ID.
     * @return int
     */
    function wc_update_new_customer_past_orders($customer_id)
    {
    }
    /**
     * Order payment completed - This is a paying customer.
     *
     * @param int $order_id Order ID.
     */
    function wc_paying_customer($order_id)
    {
    }
    /**
     * Checks if a user (by email or ID or both) has bought an item.
     *
     * @param string $customer_email Customer email to check.
     * @param int    $user_id User ID to check.
     * @param int    $product_id Product ID to check.
     * @return bool
     */
    function wc_customer_bought_product($customer_email, $user_id, $product_id)
    {
    }
    /**
     * Checks if the current user has a role.
     *
     * @param string $role The role.
     * @return bool
     */
    function wc_current_user_has_role($role)
    {
    }
    /**
     * Checks if a user has a role.
     *
     * @param int|\WP_User $user The user.
     * @param string       $role The role.
     * @return bool
     */
    function wc_user_has_role($user, $role)
    {
    }
    /**
     * Checks if a user has a certain capability.
     *
     * @param array $allcaps All capabilities.
     * @param array $caps    Capabilities.
     * @param array $args    Arguments.
     *
     * @return array The filtered array of all capabilities.
     */
    function wc_customer_has_capability($allcaps, $caps, $args)
    {
    }
    /**
     * Safe way of allowing shop managers restricted capabilities that will remove
     * access to the capabilities if WooCommerce is deactivated.
     *
     * @since 3.5.4
     * @param bool[]   $allcaps Array of key/value pairs where keys represent a capability name and boolean values
     *                          represent whether the user has that capability.
     * @param string[] $caps    Required primitive capabilities for the requested capability.
     * @param array    $args Arguments that accompany the requested capability check.
     * @param WP_User  $user    The user object.
     * @return bool[]
     */
    function wc_shop_manager_has_capability($allcaps, $caps, $args, $user)
    {
    }
    /**
     * Modify the list of editable roles to prevent non-admin adding admin users.
     *
     * @param  array $roles Roles.
     * @return array
     */
    function wc_modify_editable_roles($roles)
    {
    }
    /**
     * Modify capabilities to prevent non-admin users editing admin users.
     *
     * $args[0] will be the user being edited in this case.
     *
     * @param  array  $caps    Array of caps.
     * @param  string $cap     Name of the cap we are checking.
     * @param  int    $user_id ID of the user being checked against.
     * @param  array  $args    Arguments.
     * @return array
     */
    function wc_modify_map_meta_cap($caps, $cap, $user_id, $args)
    {
    }
    /**
     * Get customer download permissions from the database.
     *
     * @param int $customer_id Customer/User ID.
     * @return array
     */
    function wc_get_customer_download_permissions($customer_id)
    {
    }
    /**
     * Get customer available downloads.
     *
     * @param int $customer_id Customer/User ID.
     * @return array
     */
    function wc_get_customer_available_downloads($customer_id)
    {
    }
    /**
     * Get total spent by customer.
     *
     * @param  int $user_id User ID.
     * @return string
     */
    function wc_get_customer_total_spent($user_id)
    {
    }
    /**
     * Get total orders by customer.
     *
     * @param  int $user_id User ID.
     * @return int
     */
    function wc_get_customer_order_count($user_id)
    {
    }
    /**
     * Reset _customer_user on orders when a user is deleted.
     *
     * @param int $user_id User ID.
     */
    function wc_reset_order_customer_id_on_deleted_user($user_id)
    {
    }
    /**
     * Get review verification status.
     *
     * @param  int $comment_id Comment ID.
     * @return bool
     */
    function wc_review_is_from_verified_owner($comment_id)
    {
    }
    /**
     * Disable author archives for customers.
     *
     * @since 2.5.0
     */
    function wc_disable_author_archives_for_customers()
    {
    }
    /**
     * Hooks into the `profile_update` hook to set the user last updated timestamp.
     *
     * @since 2.6.0
     * @param int   $user_id The user that was updated.
     * @param array $old     The profile fields pre-change.
     */
    function wc_update_profile_last_update_time($user_id, $old)
    {
    }
    /**
     * Hooks into the update user meta function to set the user last updated timestamp.
     *
     * @since 2.6.0
     * @param int    $meta_id     ID of the meta object that was changed.
     * @param int    $user_id     The user that was updated.
     * @param string $meta_key    Name of the meta key that was changed.
     * @param string $_meta_value Value of the meta that was changed.
     */
    function wc_meta_update_last_update_time($meta_id, $user_id, $meta_key, $_meta_value)
    {
    }
    /**
     * Sets a user's "last update" time to the current timestamp.
     *
     * @since 2.6.0
     * @param int $user_id The user to set a timestamp for.
     */
    function wc_set_user_last_update_time($user_id)
    {
    }
    /**
     * Get customer saved payment methods list.
     *
     * @since 2.6.0
     * @param int $customer_id Customer ID.
     * @return array
     */
    function wc_get_customer_saved_methods_list($customer_id)
    {
    }
    /**
     * Get info about customer's last order.
     *
     * @since 2.6.0
     * @param int $customer_id Customer ID.
     * @return WC_Order|bool Order object if successful or false.
     */
    function wc_get_customer_last_order($customer_id)
    {
    }
    /**
     * Add support for searching by display_name.
     *
     * @since 3.2.0
     * @param array $search_columns Column names.
     * @return array
     */
    function wc_user_search_columns($search_columns)
    {
    }
    /**
     * When a user is deleted in WordPress, delete corresponding WooCommerce data.
     *
     * @param int $user_id User ID being deleted.
     */
    function wc_delete_user_data($user_id)
    {
    }
    /**
     * Store user agents. Used for tracker.
     *
     * @since 3.0.0
     * @param string     $user_login User login.
     * @param int|object $user       User.
     */
    function wc_maybe_store_user_agent($user_login, $user)
    {
    }
    /**
     * Update logic triggered on login.
     *
     * @since 3.4.0
     * @param string $user_login User login.
     * @param object $user       User.
     */
    function wc_user_logged_in($user_login, $user)
    {
    }
    /**
     * Update when the user was last active.
     *
     * @since 3.4.0
     */
    function wc_current_user_is_active()
    {
    }
    /**
     * Set the user last active timestamp to now.
     *
     * @since 3.4.0
     * @param int $user_id User ID to mark active.
     */
    function wc_update_user_last_active($user_id)
    {
    }
    /**
     * Translate WC roles using the woocommerce textdomain.
     *
     * @since 3.7.0
     * @param string $translation  Translated text.
     * @param string $text         Text to translate.
     * @param string $context      Context information for the translators.
     * @param string $domain       Text domain. Unique identifier for retrieving translated strings.
     * @return string
     */
    function wc_translate_user_roles($translation, $text, $context, $domain)
    {
    }
    /**
     * Get coupon types.
     *
     * @return array
     */
    function wc_get_coupon_types()
    {
    }
    /**
     * Get a coupon type's name.
     *
     * @param string $type Coupon type.
     * @return string
     */
    function wc_get_coupon_type($type = '')
    {
    }
    /**
     * Coupon types that apply to individual products. Controls which validation rules will apply.
     *
     * @since  2.5.0
     * @return array
     */
    function wc_get_product_coupon_types()
    {
    }
    /**
     * Coupon types that apply to the cart as a whole. Controls which validation rules will apply.
     *
     * @since  2.5.0
     * @return array
     */
    function wc_get_cart_coupon_types()
    {
    }
    /**
     * Check if coupons are enabled.
     * Filterable.
     *
     * @since  2.5.0
     *
     * @return bool
     */
    function wc_coupons_enabled()
    {
    }
    /**
     * Get coupon code by ID.
     *
     * @since 3.0.0
     * @param int $id Coupon ID.
     * @return string
     */
    function wc_get_coupon_code_by_id($id)
    {
    }
    /**
     * Get coupon code by ID.
     *
     * @since 3.0.0
     * @param string $code    Coupon code.
     * @param int    $exclude Used to exclude an ID from the check if you're checking existence.
     * @return int
     */
    function wc_get_coupon_id_by_code($code, $exclude = 0)
    {
    }
    /**
     * Converts a string (e.g. 'yes' or 'no') to a bool.
     *
     * @since 3.0.0
     * @param string $string String to convert.
     * @return bool
     */
    function wc_string_to_bool($string)
    {
    }
    /**
     * Converts a bool to a 'yes' or 'no'.
     *
     * @since 3.0.0
     * @param bool $bool String to convert.
     * @return string
     */
    function wc_bool_to_string($bool)
    {
    }
    /**
     * Explode a string into an array by $delimiter and remove empty values.
     *
     * @since 3.0.0
     * @param string $string    String to convert.
     * @param string $delimiter Delimiter, defaults to ','.
     * @return array
     */
    function wc_string_to_array($string, $delimiter = ',')
    {
    }
    /**
     * Sanitize taxonomy names. Slug format (no spaces, lowercase).
     * Urldecode is used to reverse munging of UTF8 characters.
     *
     * @param string $taxonomy Taxonomy name.
     * @return string
     */
    function wc_sanitize_taxonomy_name($taxonomy)
    {
    }
    /**
     * Sanitize permalink values before insertion into DB.
     *
     * Cannot use wc_clean because it sometimes strips % chars and breaks the user's setting.
     *
     * @since  2.6.0
     * @param  string $value Permalink.
     * @return string
     */
    function wc_sanitize_permalink($value)
    {
    }
    /**
     * Gets the filename part of a download URL.
     *
     * @param string $file_url File URL.
     * @return string
     */
    function wc_get_filename_from_url($file_url)
    {
    }
    /**
     * Normalise dimensions, unify to cm then convert to wanted unit value.
     *
     * Usage:
     * wc_get_dimension( 55, 'in' );
     * wc_get_dimension( 55, 'in', 'm' );
     *
     * @param int|float $dimension    Dimension.
     * @param string    $to_unit      Unit to convert to.
     *                                Options: 'in', 'm', 'cm', 'm'.
     * @param string    $from_unit    Unit to convert from.
     *                                Defaults to ''.
     *                                Options: 'in', 'm', 'cm', 'm'.
     * @return float
     */
    function wc_get_dimension($dimension, $to_unit, $from_unit = '')
    {
    }
    /**
     * Normalise weights, unify to kg then convert to wanted unit value.
     *
     * Usage:
     * wc_get_weight(55, 'kg');
     * wc_get_weight(55, 'kg', 'lbs');
     *
     * @param int|float $weight    Weight.
     * @param string    $to_unit   Unit to convert to.
     *                             Options: 'g', 'kg', 'lbs', 'oz'.
     * @param string    $from_unit Unit to convert from.
     *                             Defaults to ''.
     *                             Options: 'g', 'kg', 'lbs', 'oz'.
     * @return float
     */
    function wc_get_weight($weight, $to_unit, $from_unit = '')
    {
    }
    /**
     * Trim trailing zeros off prices.
     *
     * @param string|float|int $price Price.
     * @return string
     */
    function wc_trim_zeros($price)
    {
    }
    /**
     * Round a tax amount.
     *
     * @param  double $value Amount to round.
     * @param  int    $precision DP to round. Defaults to wc_get_price_decimals.
     * @return float
     */
    function wc_round_tax_total($value, $precision = \null)
    {
    }
    /**
     * Round half down in PHP 5.2.
     *
     * @since 3.2.6
     * @param float $value Value to round.
     * @param int   $precision Precision to round down to.
     * @return float
     */
    function wc_legacy_round_half_down($value, $precision)
    {
    }
    /**
     * Make a refund total negative.
     *
     * @param float $amount Refunded amount.
     *
     * @return float
     */
    function wc_format_refund_total($amount)
    {
    }
    /**
     * Format decimal numbers ready for DB storage.
     *
     * Sanitize, remove decimals, and optionally round + trim off zeros.
     *
     * This function does not remove thousands - this should be done before passing a value to the function.
     *
     * @param  float|string $number     Expects either a float or a string with a decimal separator only (no thousands).
     * @param  mixed        $dp number  Number of decimal points to use, blank to use woocommerce_price_num_decimals, or false to avoid all rounding.
     * @param  bool         $trim_zeros From end of string.
     * @return string
     */
    function wc_format_decimal($number, $dp = \false, $trim_zeros = \false)
    {
    }
    /**
     * Convert a float to a string without locale formatting which PHP adds when changing floats to strings.
     *
     * @param  float $float Float value to format.
     * @return string
     */
    function wc_float_to_string($float)
    {
    }
    /**
     * Format a price with WC Currency Locale settings.
     *
     * @param  string $value Price to localize.
     * @return string
     */
    function wc_format_localized_price($value)
    {
    }
    /**
     * Format a decimal with PHP Locale settings.
     *
     * @param  string $value Decimal to localize.
     * @return string
     */
    function wc_format_localized_decimal($value)
    {
    }
    /**
     * Format a coupon code.
     *
     * @since  3.0.0
     * @param  string $value Coupon code to format.
     * @return string
     */
    function wc_format_coupon_code($value)
    {
    }
    /**
     * Sanitize a coupon code.
     *
     * Uses sanitize_post_field since coupon codes are stored as
     * post_titles - the sanitization and escaping must match.
     *
     * @since  3.6.0
     * @param  string $value Coupon code to format.
     * @return string
     */
    function wc_sanitize_coupon_code($value)
    {
    }
    /**
     * Clean variables using sanitize_text_field. Arrays are cleaned recursively.
     * Non-scalar values are ignored.
     *
     * @param string|array $var Data to sanitize.
     * @return string|array
     */
    function wc_clean($var)
    {
    }
    /**
     * Function wp_check_invalid_utf8 with recursive array support.
     *
     * @param string|array $var Data to sanitize.
     * @return string|array
     */
    function wc_check_invalid_utf8($var)
    {
    }
    /**
     * Run wc_clean over posted textarea but maintain line breaks.
     *
     * @since  3.0.0
     * @param  string $var Data to sanitize.
     * @return string
     */
    function wc_sanitize_textarea($var)
    {
    }
    /**
     * Sanitize a string destined to be a tooltip.
     *
     * @since  2.3.10 Tooltips are encoded with htmlspecialchars to prevent XSS. Should not be used in conjunction with esc_attr()
     * @param  string $var Data to sanitize.
     * @return string
     */
    function wc_sanitize_tooltip($var)
    {
    }
    /**
     * Merge two arrays.
     *
     * @param array $a1 First array to merge.
     * @param array $a2 Second array to merge.
     * @return array
     */
    function wc_array_overlay($a1, $a2)
    {
    }
    /**
     * Formats a stock amount by running it through a filter.
     *
     * @param  int|float $amount Stock amount.
     * @return int|float
     */
    function wc_stock_amount($amount)
    {
    }
    /**
     * Get the price format depending on the currency position.
     *
     * @return string
     */
    function get_woocommerce_price_format()
    {
    }
    /**
     * Return the thousand separator for prices.
     *
     * @since  2.3
     * @return string
     */
    function wc_get_price_thousand_separator()
    {
    }
    /**
     * Return the decimal separator for prices.
     *
     * @since  2.3
     * @return string
     */
    function wc_get_price_decimal_separator()
    {
    }
    /**
     * Return the number of decimals after the decimal point.
     *
     * @since  2.3
     * @return int
     */
    function wc_get_price_decimals()
    {
    }
    /**
     * Format the price with a currency symbol.
     *
     * @param  float $price Raw price.
     * @param  array $args  Arguments to format a price {
     *     Array of arguments.
     *     Defaults to empty array.
     *
     *     @type bool   $ex_tax_label       Adds exclude tax label.
     *                                      Defaults to false.
     *     @type string $currency           Currency code.
     *                                      Defaults to empty string (Use the result from get_woocommerce_currency()).
     *     @type string $decimal_separator  Decimal separator.
     *                                      Defaults the result of wc_get_price_decimal_separator().
     *     @type string $thousand_separator Thousand separator.
     *                                      Defaults the result of wc_get_price_thousand_separator().
     *     @type string $decimals           Number of decimals.
     *                                      Defaults the result of wc_get_price_decimals().
     *     @type string $price_format       Price format depending on the currency position.
     *                                      Defaults the result of get_woocommerce_price_format().
     * }
     * @return string
     */
    function wc_price($price, $args = array())
    {
    }
    /**
     * Notation to numbers.
     *
     * This function transforms the php.ini notation for numbers (like '2M') to an integer.
     *
     * @param  string $size Size value.
     * @return int
     */
    function wc_let_to_num($size)
    {
    }
    /**
     * WooCommerce Date Format - Allows to change date format for everything WooCommerce.
     *
     * @return string
     */
    function wc_date_format()
    {
    }
    /**
     * WooCommerce Time Format - Allows to change time format for everything WooCommerce.
     *
     * @return string
     */
    function wc_time_format()
    {
    }
    /**
     * Convert mysql datetime to PHP timestamp, forcing UTC. Wrapper for strtotime.
     *
     * Based on wcs_strtotime_dark_knight() from WC Subscriptions by Prospress.
     *
     * @since  3.0.0
     * @param  string   $time_string    Time string.
     * @param  int|null $from_timestamp Timestamp to convert from.
     * @return int
     */
    function wc_string_to_timestamp($time_string, $from_timestamp = \null)
    {
    }
    /**
     * Convert a date string to a WC_DateTime.
     *
     * @since  3.1.0
     * @param  string $time_string Time string.
     * @return WC_DateTime
     */
    function wc_string_to_datetime($time_string)
    {
    }
    /**
     * WooCommerce Timezone - helper to retrieve the timezone string for a site until.
     * a WP core method exists (see https://core.trac.wordpress.org/ticket/24730).
     *
     * Adapted from https://secure.php.net/manual/en/function.timezone-name-from-abbr.php#89155.
     *
     * @since 2.1
     * @return string PHP timezone string for the site
     */
    function wc_timezone_string()
    {
    }
    /**
     * Get timezone offset in seconds.
     *
     * @since  3.0.0
     * @return float
     */
    function wc_timezone_offset()
    {
    }
    /**
     * Callback which can flatten post meta (gets the first value if it's an array).
     *
     * @since  3.0.0
     * @param  array $value Value to flatten.
     * @return mixed
     */
    function wc_flatten_meta_callback($value)
    {
    }
    /**
     * Convert RGB to HEX.
     *
     * @param mixed $color Color.
     *
     * @return array
     */
    function wc_rgb_from_hex($color)
    {
    }
    /**
     * Make HEX color darker.
     *
     * @param mixed $color  Color.
     * @param int   $factor Darker factor.
     *                      Defaults to 30.
     * @return string
     */
    function wc_hex_darker($color, $factor = 30)
    {
    }
    /**
     * Make HEX color lighter.
     *
     * @param mixed $color  Color.
     * @param int   $factor Lighter factor.
     *                      Defaults to 30.
     * @return string
     */
    function wc_hex_lighter($color, $factor = 30)
    {
    }
    /**
     * Determine whether a hex color is light.
     *
     * @param mixed $color Color.
     * @return bool  True if a light color.
     */
    function wc_hex_is_light($color)
    {
    }
    /**
     * Detect if we should use a light or dark color on a background color.
     *
     * @param mixed  $color Color.
     * @param string $dark  Darkest reference.
     *                      Defaults to '#000000'.
     * @param string $light Lightest reference.
     *                      Defaults to '#FFFFFF'.
     * @return string
     */
    function wc_light_or_dark($color, $dark = '#000000', $light = '#FFFFFF')
    {
    }
    /**
     * Format string as hex.
     *
     * @param string $hex HEX color.
     * @return string|null
     */
    function wc_format_hex($hex)
    {
    }
    /**
     * Format the postcode according to the country and length of the postcode.
     *
     * @param string $postcode Unformatted postcode.
     * @param string $country  Base country.
     * @return string
     */
    function wc_format_postcode($postcode, $country)
    {
    }
    /**
     * Normalize postcodes.
     *
     * Remove spaces and convert characters to uppercase.
     *
     * @since 2.6.0
     * @param string $postcode Postcode.
     * @return string
     */
    function wc_normalize_postcode($postcode)
    {
    }
    /**
     * Format phone numbers.
     *
     * @param string $phone Phone number.
     * @return string
     */
    function wc_format_phone_number($phone)
    {
    }
    /**
     * Sanitize phone number.
     * Allows only numbers and "+" (plus sign).
     *
     * @since 3.6.0
     * @param string $phone Phone number.
     * @return string
     */
    function wc_sanitize_phone_number($phone)
    {
    }
    /**
     * Wrapper for mb_strtoupper which see's if supported first.
     *
     * @since  3.1.0
     * @param  string $string String to format.
     * @return string
     */
    function wc_strtoupper($string)
    {
    }
    /**
     * Make a string lowercase.
     * Try to use mb_strtolower() when available.
     *
     * @since  2.3
     * @param  string $string String to format.
     * @return string
     */
    function wc_strtolower($string)
    {
    }
    /**
     * Trim a string and append a suffix.
     *
     * @param  string  $string String to trim.
     * @param  integer $chars  Amount of characters.
     *                         Defaults to 200.
     * @param  string  $suffix Suffix.
     *                         Defaults to '...'.
     * @return string
     */
    function wc_trim_string($string, $chars = 200, $suffix = '...')
    {
    }
    /**
     * Format content to display shortcodes.
     *
     * @since  2.3.0
     * @param  string $raw_string Raw string.
     * @return string
     */
    function wc_format_content($raw_string)
    {
    }
    /**
     * Format product short description.
     * Adds support for Jetpack Markdown.
     *
     * @codeCoverageIgnore
     * @since  2.4.0
     * @param  string $content Product short description.
     * @return string
     */
    function wc_format_product_short_description($content)
    {
    }
    /**
     * Formats curency symbols when saved in settings.
     *
     * @codeCoverageIgnore
     * @param  string $value     Option value.
     * @param  array  $option    Option name.
     * @param  string $raw_value Raw value.
     * @return string
     */
    function wc_format_option_price_separators($value, $option, $raw_value)
    {
    }
    /**
     * Formats decimals when saved in settings.
     *
     * @codeCoverageIgnore
     * @param  string $value     Option value.
     * @param  array  $option    Option name.
     * @param  string $raw_value Raw value.
     * @return string
     */
    function wc_format_option_price_num_decimals($value, $option, $raw_value)
    {
    }
    /**
     * Formats hold stock option and sets cron event up.
     *
     * @codeCoverageIgnore
     * @param  string $value     Option value.
     * @param  array  $option    Option name.
     * @param  string $raw_value Raw value.
     * @return string
     */
    function wc_format_option_hold_stock_minutes($value, $option, $raw_value)
    {
    }
    /**
     * Sanitize terms from an attribute text based.
     *
     * @since  2.4.5
     * @param  string $term Term value.
     * @return string
     */
    function wc_sanitize_term_text_based($term)
    {
    }
    /**
     * Make numeric postcode.
     *
     * Converts letters to numbers so we can do a simple range check on postcodes.
     * E.g. PE30 becomes 16050300 (P = 16, E = 05, 3 = 03, 0 = 00)
     *
     * @since 2.6.0
     * @param string $postcode Regular postcode.
     * @return string
     */
    function wc_make_numeric_postcode($postcode)
    {
    }
    /**
     * Format the stock amount ready for display based on settings.
     *
     * @since  3.0.0
     * @param  WC_Product $product Product object for which the stock you need to format.
     * @return string
     */
    function wc_format_stock_for_display($product)
    {
    }
    /**
     * Format the stock quantity ready for display.
     *
     * @since  3.0.0
     * @param  int        $stock_quantity Stock quantity.
     * @param  WC_Product $product        Product instance so that we can pass through the filters.
     * @return string
     */
    function wc_format_stock_quantity_for_display($stock_quantity, $product)
    {
    }
    /**
     * Format a sale price for display.
     *
     * @since  3.0.0
     * @param  string $regular_price Regular price.
     * @param  string $sale_price    Sale price.
     * @return string
     */
    function wc_format_sale_price($regular_price, $sale_price)
    {
    }
    /**
     * Format a price range for display.
     *
     * @param  string $from Price from.
     * @param  string $to   Price to.
     * @return string
     */
    function wc_format_price_range($from, $to)
    {
    }
    /**
     * Format a weight for display.
     *
     * @since  3.0.0
     * @param  float $weight Weight.
     * @return string
     */
    function wc_format_weight($weight)
    {
    }
    /**
     * Format dimensions for display.
     *
     * @since  3.0.0
     * @param  array $dimensions Array of dimensions.
     * @return string
     */
    function wc_format_dimensions($dimensions)
    {
    }
    /**
     * Format a date for output.
     *
     * @since  3.0.0
     * @param  WC_DateTime $date   Instance of WC_DateTime.
     * @param  string      $format Data format.
     *                             Defaults to the wc_date_format function if not set.
     * @return string
     */
    function wc_format_datetime($date, $format = '')
    {
    }
    /**
     * Process oEmbeds.
     *
     * @since  3.1.0
     * @param  string $content Content.
     * @return string
     */
    function wc_do_oembeds($content)
    {
    }
    /**
     * Get part of a string before :.
     *
     * Used for example in shipping methods ids where they take the format
     * method_id:instance_id
     *
     * @since  3.2.0
     * @param  string $string String to extract.
     * @return string
     */
    function wc_get_string_before_colon($string)
    {
    }
    /**
     * Array merge and sum function.
     *
     * Source:  https://gist.github.com/Nickology/f700e319cbafab5eaedc
     *
     * @since 3.2.0
     * @return array
     */
    function wc_array_merge_recursive_numeric()
    {
    }
    /**
     * Implode and escape HTML attributes for output.
     *
     * @since 3.3.0
     * @param array $raw_attributes Attribute name value pairs.
     * @return string
     */
    function wc_implode_html_attributes($raw_attributes)
    {
    }
    /**
     * Escape JSON for use on HTML or attribute text nodes.
     *
     * @since 3.5.5
     * @param string $json JSON to escape.
     * @param bool   $html True if escaping for HTML text node, false for attributes. Determines how quotes are handled.
     * @return string Escaped JSON.
     */
    function wc_esc_json($json, $html = \false)
    {
    }
    /**
     * Parse a relative date option from the settings API into a standard format.
     *
     * @since 3.4.0
     * @param mixed $raw_value Value stored in DB.
     * @return array Nicely formatted array with number and unit values.
     */
    function wc_parse_relative_date_option($raw_value)
    {
    }
    /**
     * Format the endpoint slug, strip out anything not allowed in a url.
     *
     * @since 3.5.0
     * @param string $raw_value The raw value.
     * @return string
     */
    function wc_sanitize_endpoint_slug($raw_value)
    {
    }
    /**
     * Gets text attributes from a string.
     *
     * @since  2.4
     * @param string $raw_attributes Raw attributes.
     * @return array
     */
    function wc_get_text_attributes($raw_attributes)
    {
    }
    /**
     * See if an attribute is actually valid.
     *
     * @since  3.0.0
     * @param  string $value Value.
     * @return bool
     */
    function wc_get_text_attributes_filter_callback($value)
    {
    }
    /**
     * Implode an array of attributes using WC_DELIMITER.
     *
     * @since  3.0.0
     * @param  array $attributes Attributes list.
     * @return string
     */
    function wc_implode_text_attributes($attributes)
    {
    }
    /**
     * Get attribute taxonomies.
     *
     * @return array of objects, @since 3.6.0 these are also indexed by ID.
     */
    function wc_get_attribute_taxonomies()
    {
    }
    /**
     * Get (cached) attribute taxonomy ID and name pairs.
     *
     * @since 3.6.0
     * @return array
     */
    function wc_get_attribute_taxonomy_ids()
    {
    }
    /**
     * Get (cached) attribute taxonomy label and name pairs.
     *
     * @since 3.6.0
     * @return array
     */
    function wc_get_attribute_taxonomy_labels()
    {
    }
    /**
     * Get a product attribute name.
     *
     * @param string $attribute_name Attribute name.
     * @return string
     */
    function wc_attribute_taxonomy_name($attribute_name)
    {
    }
    /**
     * Get the attribute name used when storing values in post meta.
     *
     * @since 2.6.0
     * @param string $attribute_name Attribute name.
     * @return string
     */
    function wc_variation_attribute_name($attribute_name)
    {
    }
    /**
     * Get a product attribute name by ID.
     *
     * @since  2.4.0
     * @param int $attribute_id Attribute ID.
     * @return string Return an empty string if attribute doesn't exist.
     */
    function wc_attribute_taxonomy_name_by_id($attribute_id)
    {
    }
    /**
     * Get a product attribute ID by name.
     *
     * @since  2.6.0
     * @param string $name Attribute name.
     * @return int
     */
    function wc_attribute_taxonomy_id_by_name($name)
    {
    }
    /**
     * Get a product attributes label.
     *
     * @param string     $name    Attribute name.
     * @param WC_Product $product Product data.
     * @return string
     */
    function wc_attribute_label($name, $product = '')
    {
    }
    /**
     * Get a product attributes orderby setting.
     *
     * @param string $name Attribute name.
     * @return string
     */
    function wc_attribute_orderby($name)
    {
    }
    /**
     * Get an array of product attribute taxonomies.
     *
     * @return array
     */
    function wc_get_attribute_taxonomy_names()
    {
    }
    /**
     * Get attribute types.
     *
     * @since  2.4.0
     * @return array
     */
    function wc_get_attribute_types()
    {
    }
    /**
     * Check if there are custom attribute types.
     *
     * @since  3.3.2
     * @return bool True if there are custom types, otherwise false.
     */
    function wc_has_custom_attribute_types()
    {
    }
    /**
     * Get attribute type label.
     *
     * @since  3.0.0
     * @param  string $type Attribute type slug.
     * @return string
     */
    function wc_get_attribute_type_label($type)
    {
    }
    /**
     * Check if attribute name is reserved.
     * https://codex.wordpress.org/Function_Reference/register_taxonomy#Reserved_Terms.
     *
     * @since  2.4.0
     * @param  string $attribute_name Attribute name.
     * @return bool
     */
    function wc_check_if_attribute_name_is_reserved($attribute_name)
    {
    }
    /**
     * Callback for array filter to get visible only.
     *
     * @since  3.0.0
     * @param  WC_Product_Attribute $attribute Attribute data.
     * @return bool
     */
    function wc_attributes_array_filter_visible($attribute)
    {
    }
    /**
     * Callback for array filter to get variation attributes only.
     *
     * @since  3.0.0
     * @param  WC_Product_Attribute $attribute Attribute data.
     * @return bool
     */
    function wc_attributes_array_filter_variation($attribute)
    {
    }
    /**
     * Check if an attribute is included in the attributes area of a variation name.
     *
     * @since  3.0.2
     * @param  string $attribute Attribute value to check for.
     * @param  string $name      Product name to check in.
     * @return bool
     */
    function wc_is_attribute_in_product_name($attribute, $name)
    {
    }
    /**
     * Callback for array filter to get default attributes.  Will allow for '0' string values, but regard all other
     * class PHP FALSE equivalents normally.
     *
     * @since 3.1.0
     * @param mixed $attribute Attribute being considered for exclusion from parent array.
     * @return bool
     */
    function wc_array_filter_default_attributes($attribute)
    {
    }
    /**
     * Get attribute data by ID.
     *
     * @since  3.2.0
     * @param  int $id Attribute ID.
     * @return stdClass|null
     */
    function wc_get_attribute($id)
    {
    }
    /**
     * Create attribute.
     *
     * @since  3.2.0
     * @param  array $args Attribute arguments {
     *     Array of attribute parameters.
     *
     *     @type int    $id           Unique identifier, used to update an attribute.
     *     @type string $name         Attribute name. Always required.
     *     @type string $slug         Attribute alphanumeric identifier.
     *     @type string $type         Type of attribute.
     *                                Core by default accepts: 'select' and 'text'.
     *                                Default to 'select'.
     *     @type string $order_by     Sort order.
     *                                Accepts: 'menu_order', 'name', 'name_num' and 'id'.
     *                                Default to 'menu_order'.
     *     @type bool   $has_archives Enable or disable attribute archives. False by default.
     * }
     * @return int|WP_Error
     */
    function wc_create_attribute($args)
    {
    }
    /**
     * Update an attribute.
     *
     * For available args see wc_create_attribute().
     *
     * @since  3.2.0
     * @param  int   $id   Attribute ID.
     * @param  array $args Attribute arguments.
     * @return int|WP_Error
     */
    function wc_update_attribute($id, $args)
    {
    }
    /**
     * Delete attribute by ID.
     *
     * @since  3.2.0
     * @param  int $id Attribute ID.
     * @return bool
     */
    function wc_delete_attribute($id)
    {
    }
    /**
     * Get an unprefixed product attribute name.
     *
     * @since 3.6.0
     *
     * @param  string $attribute_name Attribute name.
     * @return string
     */
    function wc_attribute_taxonomy_slug($attribute_name)
    {
    }
    /**
     * Get the count of notices added, either for all notices (default) or for one.
     * particular notice type specified by $notice_type.
     *
     * @since  2.1
     * @param  string $notice_type Optional. The name of the notice type - either error, success or notice.
     * @return int
     */
    function wc_notice_count($notice_type = '')
    {
    }
    /**
     * Check if a notice has already been added.
     *
     * @since  2.1
     * @param  string $message The text to display in the notice.
     * @param  string $notice_type Optional. The name of the notice type - either error, success or notice.
     * @return bool
     */
    function wc_has_notice($message, $notice_type = 'success')
    {
    }
    /**
     * Add and store a notice.
     *
     * @since 2.1
     * @param string $message The text to display in the notice.
     * @param string $notice_type Optional. The name of the notice type - either error, success or notice.
     */
    function wc_add_notice($message, $notice_type = 'success')
    {
    }
    /**
     * Set all notices at once.
     *
     * @since 2.6.0
     * @param mixed $notices Array of notices.
     */
    function wc_set_notices($notices)
    {
    }
    /**
     * Unset all notices.
     *
     * @since 2.1
     */
    function wc_clear_notices()
    {
    }
    /**
     * Prints messages and errors which are stored in the session, then clears them.
     *
     * @since 2.1
     * @param bool $return true to return rather than echo. @since 3.5.0.
     * @return string|null
     */
    function wc_print_notices($return = \false)
    {
    }
    /**
     * Print a single notice immediately.
     *
     * @since 2.1
     * @param string $message The text to display in the notice.
     * @param string $notice_type Optional. The singular name of the notice type - either error, success or notice.
     */
    function wc_print_notice($message, $notice_type = 'success')
    {
    }
    /**
     * Returns all queued notices, optionally filtered by a notice type.
     *
     * @since  2.1
     * @param  string $notice_type Optional. The singular name of the notice type - either error, success or notice.
     * @return array|mixed
     */
    function wc_get_notices($notice_type = '')
    {
    }
    /**
     * Add notices for WP Errors.
     *
     * @param WP_Error $errors Errors.
     */
    function wc_add_wp_error_notices($errors)
    {
    }
    /**
     * Filters out the same tags as wp_kses_post, but allows tabindex for <a> element.
     *
     * @since 3.5.0
     * @param string $message Content to filter through kses.
     * @return string
     */
    function wc_kses_notice($message)
    {
    }
    /**
     * Update a product's stock amount.
     *
     * Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues).
     *
     * @since  3.0.0 this supports set, increase and decrease.
     *
     * @param  int|WC_Product $product        Product ID or product instance.
     * @param  int|null       $stock_quantity Stock quantity.
     * @param  string         $operation      Type of opertion, allows 'set', 'increase' and 'decrease'.
     * @param  bool           $updating       If true, the product object won't be saved here as it will be updated later.
     * @return bool|int|null
     */
    function wc_update_product_stock($product, $stock_quantity = \null, $operation = 'set', $updating = \false)
    {
    }
    /**
     * Update a product's stock status.
     *
     * @param  int $product_id Product ID.
     * @param  int $status     Status.
     */
    function wc_update_product_stock_status($product_id, $status)
    {
    }
    /**
     * When a payment is complete, we can reduce stock levels for items within an order.
     *
     * @since 3.0.0
     * @param int $order_id Order ID.
     */
    function wc_maybe_reduce_stock_levels($order_id)
    {
    }
    /**
     * When a payment is cancelled, restore stock.
     *
     * @since 3.0.0
     * @param int $order_id Order ID.
     */
    function wc_maybe_increase_stock_levels($order_id)
    {
    }
    /**
     * Reduce stock levels for items within an order, if stock has not already been reduced for the items.
     *
     * @since 3.0.0
     * @param int|WC_Order $order_id Order ID or order instance.
     */
    function wc_reduce_stock_levels($order_id)
    {
    }
    /**
     * After stock change events, triggers emails and adds order notes.
     *
     * @since 3.5.0
     * @param WC_Order $order order object.
     * @param array    $changes Array of changes.
     */
    function wc_trigger_stock_change_notifications($order, $changes)
    {
    }
    /**
     * Increase stock levels for items within an order.
     *
     * @since 3.0.0
     * @param int|WC_Order $order_id Order ID or order instance.
     */
    function wc_increase_stock_levels($order_id)
    {
    }
    /**
     * See how much stock is being held in pending orders.
     *
     * @since 3.5.0
     * @param WC_Product $product Product to check.
     * @param integer    $exclude_order_id Order ID to exclude.
     * @return int
     */
    function wc_get_held_stock_quantity($product, $exclude_order_id = 0)
    {
    }
    /**
     * Return low stock amount to determine if notification needs to be sent
     *
     * @param  WC_Product $product Product to get data from.
     * @since  3.5.0
     * @return int
     */
    function wc_get_low_stock_amount(\WC_Product $product)
    {
    }
    /**
     * Is_woocommerce - Returns true if on a page which uses WooCommerce templates (cart and checkout are standard pages with shortcodes and thus are not included).
     *
     * @return bool
     */
    function is_woocommerce()
    {
    }
    /**
     * Is_shop - Returns true when viewing the product type archive (shop).
     *
     * @return bool
     */
    function is_shop()
    {
    }
    /**
     * Is_product_taxonomy - Returns true when viewing a product taxonomy archive.
     *
     * @return bool
     */
    function is_product_taxonomy()
    {
    }
    /**
     * Is_product_category - Returns true when viewing a product category.
     *
     * @param  string $term (default: '') The term slug your checking for. Leave blank to return true on any.
     * @return bool
     */
    function is_product_category($term = '')
    {
    }
    /**
     * Is_product_tag - Returns true when viewing a product tag.
     *
     * @param  string $term (default: '') The term slug your checking for. Leave blank to return true on any.
     * @return bool
     */
    function is_product_tag($term = '')
    {
    }
    /**
     * Is_product - Returns true when viewing a single product.
     *
     * @return bool
     */
    function is_product()
    {
    }
    /**
     * Is_cart - Returns true when viewing the cart page.
     *
     * @return bool
     */
    function is_cart()
    {
    }
    /**
     * Is_checkout - Returns true when viewing the checkout page.
     *
     * @return bool
     */
    function is_checkout()
    {
    }
    /**
     * Is_checkout_pay - Returns true when viewing the checkout's pay page.
     *
     * @return bool
     */
    function is_checkout_pay_page()
    {
    }
    /**
     * Is_wc_endpoint_url - Check if an endpoint is showing.
     *
     * @param string|false $endpoint Whether endpoint.
     * @return bool
     */
    function is_wc_endpoint_url($endpoint = \false)
    {
    }
    /**
     * Is_account_page - Returns true when viewing an account page.
     *
     * @return bool
     */
    function is_account_page()
    {
    }
    /**
     * Is_view_order_page - Returns true when on the view order page.
     *
     * @return bool
     */
    function is_view_order_page()
    {
    }
    /**
     * Check for edit account page.
     * Returns true when viewing the edit account page.
     *
     * @since 2.5.1
     * @return bool
     */
    function is_edit_account_page()
    {
    }
    /**
     * Is_order_received_page - Returns true when viewing the order received page.
     *
     * @return bool
     */
    function is_order_received_page()
    {
    }
    /**
     * Is_add_payment_method_page - Returns true when viewing the add payment method page.
     *
     * @return bool
     */
    function is_add_payment_method_page()
    {
    }
    /**
     * Is_lost_password_page - Returns true when viewing the lost password page.
     *
     * @return bool
     */
    function is_lost_password_page()
    {
    }
    /**
     * Is_ajax - Returns true when the page is loaded via ajax.
     *
     * @return bool
     */
    function is_ajax()
    {
    }
    /**
     * Is_store_notice_showing - Returns true when store notice is active.
     *
     * @return bool
     */
    function is_store_notice_showing()
    {
    }
    /**
     * Is_filtered - Returns true when filtering products using layered nav or price sliders.
     *
     * @return bool
     */
    function is_filtered()
    {
    }
    /**
     * Returns true when the passed taxonomy name is a product attribute.
     *
     * @uses   $wc_product_attributes global which stores taxonomy names upon registration
     * @param  string $name of the attribute.
     * @return bool
     */
    function taxonomy_is_product_attribute($name)
    {
    }
    /**
     * Returns true when the passed meta name is a product attribute.
     *
     * @param  string $name of the attribute.
     * @param  string $value of the attribute.
     * @param  int    $product_id to check for attribute.
     * @return bool
     */
    function meta_is_product_attribute($name, $value, $product_id)
    {
    }
    /**
     * Are store-wide taxes enabled?
     *
     * @return bool
     */
    function wc_tax_enabled()
    {
    }
    /**
     * Is shipping enabled?
     *
     * @return bool
     */
    function wc_shipping_enabled()
    {
    }
    /**
     * Are prices inclusive of tax?
     *
     * @return bool
     */
    function wc_prices_include_tax()
    {
    }
    /**
     * Simple check for validating a URL, it must start with http:// or https://.
     * and pass FILTER_VALIDATE_URL validation.
     *
     * @param  string $url to check.
     * @return bool
     */
    function wc_is_valid_url($url)
    {
    }
    /**
     * Check if the home URL is https. If it is, we don't need to do things such as 'force ssl'.
     *
     * @since  2.4.13
     * @return bool
     */
    function wc_site_is_https()
    {
    }
    /**
     * Check if the checkout is configured for https. Look at options, WP HTTPS plugin, or the permalink itself.
     *
     * @since  2.5.0
     * @return bool
     */
    function wc_checkout_is_https()
    {
    }
    /**
     * Checks whether the content passed contains a specific short code.
     *
     * @param  string $tag Shortcode tag to check.
     * @return bool
     */
    function wc_post_content_has_shortcode($tag = '')
    {
    }
    /**
     * Check if reviews are enabled.
     *
     * @since 3.6.0
     * @return bool
     */
    function wc_reviews_enabled()
    {
    }
    /**
     * Check if reviews ratings are enabled.
     *
     * @since 3.6.0
     * @return bool
     */
    function wc_review_ratings_enabled()
    {
    }
    /**
     * Check if review ratings are required.
     *
     * @since 3.6.0
     * @return bool
     */
    function wc_review_ratings_required()
    {
    }
    /**
     * Check if a CSV file is valid.
     *
     * @since 3.6.5
     * @param string $file       File name.
     * @param bool   $check_path If should check for the path.
     * @return bool
     */
    function wc_is_file_valid_csv($file, $check_path = \true)
    {
    }
    /**
     * Get all WooCommerce screen ids.
     *
     * @return array
     */
    function wc_get_screen_ids()
    {
    }
    /**
     * Create a page and store the ID in an option.
     *
     * @param mixed  $slug Slug for the new page.
     * @param string $option Option name to store the page's ID.
     * @param string $page_title (default: '') Title for the new page.
     * @param string $page_content (default: '') Content for the new page.
     * @param int    $post_parent (default: 0) Parent for the new page.
     * @return int page ID.
     */
    function wc_create_page($slug, $option = '', $page_title = '', $page_content = '', $post_parent = 0)
    {
    }
    /**
     * Output admin fields.
     *
     * Loops though the woocommerce options array and outputs each field.
     *
     * @param array $options Opens array to output.
     */
    function woocommerce_admin_fields($options)
    {
    }
    /**
     * Update all settings which are passed.
     *
     * @param array $options Option fields to save.
     * @param array $data Passed data.
     */
    function woocommerce_update_options($options, $data = \null)
    {
    }
    /**
     * Get a setting from the settings API.
     *
     * @param mixed $option_name Option name to save.
     * @param mixed $default Default value to save.
     * @return string
     */
    function woocommerce_settings_get_option($option_name, $default = '')
    {
    }
    /**
     * Sees if line item stock has already reduced stock, and whether those values need adjusting e.g. after changing item qty.
     *
     * @since 3.6.0
     * @param WC_Order_Item $item Item object.
     * @param integer       $item_quantity Optional quantity to check against. Read from object if not passed.
     * @return boolean|array|WP_Error Array of changes or error object when stock is updated (@see wc_update_product_stock). False if nothing changes.
     */
    function wc_maybe_adjust_line_item_product_stock($item, $item_quantity = -1)
    {
    }
    /**
     * Save order items. Uses the CRUD.
     *
     * @since 2.2
     * @param int   $order_id Order ID.
     * @param array $items Order items to save.
     */
    function wc_save_order_items($order_id, $items)
    {
    }
    /**
     * Get HTML for some action buttons. Used in list tables.
     *
     * @since 3.3.0
     * @param array $actions Actions to output.
     * @return string
     */
    function wc_render_action_buttons($actions)
    {
    }
    /**
     * Shows a notice if variations are missing prices.
     *
     * @since 3.6.0
     * @param WC_Product $product_object Product object.
     */
    function wc_render_invalid_variation_notice($product_object)
    {
    }
    /**
     * Output a text input box.
     *
     * @param array $field
     */
    function woocommerce_wp_text_input($field)
    {
    }
    /**
     * Output a hidden input box.
     *
     * @param array $field
     */
    function woocommerce_wp_hidden_input($field)
    {
    }
    /**
     * Output a textarea input box.
     *
     * @param array $field
     */
    function woocommerce_wp_textarea_input($field)
    {
    }
    /**
     * Output a checkbox input box.
     *
     * @param array $field
     */
    function woocommerce_wp_checkbox($field)
    {
    }
    /**
     * Output a select input box.
     *
     * @param array $field Data about the field to render.
     */
    function woocommerce_wp_select($field)
    {
    }
    /**
     * Output a radio input box.
     *
     * @param array $field
     */
    function woocommerce_wp_radio($field)
    {
    }
    /**
     * Add Shopify mappings.
     *
     * @since 3.7.0
     * @param array $mappings    Importer columns mappings.
     * @param array $raw_headers Raw headers from CSV being imported.
     * @return array
     */
    function wc_importer_shopify_mappings($mappings, $raw_headers)
    {
    }
    /**
     * Add special wildcard Shopify mappings.
     *
     * @since 3.7.0
     * @param array $mappings    Importer columns mappings.
     * @param array $raw_headers Raw headers from CSV being imported.
     * @return array
     */
    function wc_importer_shopify_special_mappings($mappings, $raw_headers)
    {
    }
    /**
     * Expand special Shopify columns to WC format.
     *
     * @since 3.7.0
     * @param  array $data Array of data.
     * @return array Expanded data.
     */
    function wc_importer_shopify_expand_data($data)
    {
    }
    /**
     * Importer current locale.
     *
     * @since 3.1.0
     * @return string
     */
    function wc_importer_current_locale()
    {
    }
    /**
     * Add English mapping placeholders when not using English as current language.
     *
     * @since 3.1.0
     * @param array $mappings Importer columns mappings.
     * @return array
     */
    function wc_importer_default_english_mappings($mappings)
    {
    }
    /**
     * Add English special mapping placeholders when not using English as current language.
     *
     * @since 3.1.0
     * @param array $mappings Importer columns mappings.
     * @return array
     */
    function wc_importer_default_special_english_mappings($mappings)
    {
    }
    /**
     * Add mappings for WordPress tables.
     *
     * @since 3.1.0
     * @param array $mappings Importer columns mappings.
     * @return array
     */
    function wc_importer_wordpress_mappings($mappings)
    {
    }
    /**
     * Add generic mappings.
     *
     * @since 3.1.0
     * @param array $mappings Importer columns mappings.
     * @return array
     */
    function wc_importer_generic_mappings($mappings)
    {
    }
    /**
     * Replace a page title with the endpoint title.
     *
     * @param  string $title Post title.
     * @return string
     */
    function wc_page_endpoint_title($title)
    {
    }
    /**
     * Retrieve page ids - used for myaccount, edit_address, shop, cart, checkout, pay, view_order, terms. returns -1 if no page is found.
     *
     * @param string $page Page slug.
     * @return int
     */
    function wc_get_page_id($page)
    {
    }
    /**
     * Retrieve page permalink.
     *
     * @param string      $page page slug.
     * @param string|bool $fallback Fallback URL if page is not set. Defaults to home URL. @since 3.4.0.
     * @return string
     */
    function wc_get_page_permalink($page, $fallback = \null)
    {
    }
    /**
     * Get endpoint URL.
     *
     * Gets the URL for an endpoint, which varies depending on permalink settings.
     *
     * @param  string $endpoint  Endpoint slug.
     * @param  string $value     Query param value.
     * @param  string $permalink Permalink.
     *
     * @return string
     */
    function wc_get_endpoint_url($endpoint, $value = '', $permalink = '')
    {
    }
    /**
     * Hide menu items conditionally.
     *
     * @param array $items Navigation items.
     * @return array
     */
    function wc_nav_menu_items($items)
    {
    }
    /**
     * Fix active class in nav for shop page.
     *
     * @param array $menu_items Menu items.
     * @return array
     */
    function wc_nav_menu_item_classes($menu_items)
    {
    }
    /**
     * Fix active class in wp_list_pages for shop page.
     *
     * See details in https://github.com/woocommerce/woocommerce/issues/177.
     *
     * @param string $pages Pages list.
     * @return string
     */
    function wc_list_pages($pages)
    {
    }
    /**
     * Add a item to an order (for example a line item).
     *
     * @param int   $order_id   Order ID.
     * @param array $item_array Items list.
     *
     * @throws Exception        When `WC_Data_Store::load` validation fails.
     * @return int|bool         Item ID or false
     */
    function wc_add_order_item($order_id, $item_array)
    {
    }
    /**
     * Update an item for an order.
     *
     * @since 2.2
     * @param int   $item_id Item ID.
     * @param array $args    Either `order_item_type` or `order_item_name`.
     *
     * @throws Exception     When `WC_Data_Store::load` validation fails.
     * @return bool          True if successfully updated, false otherwise.
     */
    function wc_update_order_item($item_id, $args)
    {
    }
    /**
     * Delete an item from the order it belongs to based on item id.
     *
     * @param int $item_id  Item ID.
     *
     * @throws Exception    When `WC_Data_Store::load` validation fails.
     * @return bool
     */
    function wc_delete_order_item($item_id)
    {
    }
    /**
     * WooCommerce Order Item Meta API - Update term meta.
     *
     * @param int    $item_id    Item ID.
     * @param string $meta_key   Meta key.
     * @param string $meta_value Meta value.
     * @param string $prev_value Previous value (default: '').
     *
     * @throws Exception         When `WC_Data_Store::load` validation fails.
     * @return bool
     */
    function wc_update_order_item_meta($item_id, $meta_key, $meta_value, $prev_value = '')
    {
    }
    /**
     * WooCommerce Order Item Meta API - Add term meta.
     *
     * @param int    $item_id    Item ID.
     * @param string $meta_key   Meta key.
     * @param string $meta_value Meta value.
     * @param bool   $unique     If meta data should be unique (default: false).
     *
     * @throws Exception         When `WC_Data_Store::load` validation fails.
     * @return int               New row ID or 0.
     */
    function wc_add_order_item_meta($item_id, $meta_key, $meta_value, $unique = \false)
    {
    }
    /**
     * WooCommerce Order Item Meta API - Delete term meta.
     *
     * @param int    $item_id    Item ID.
     * @param string $meta_key   Meta key.
     * @param string $meta_value Meta value (default: '').
     * @param bool   $delete_all Delete all meta data, defaults to `false`.
     *
     * @throws Exception         When `WC_Data_Store::load` validation fails.
     * @return bool
     */
    function wc_delete_order_item_meta($item_id, $meta_key, $meta_value = '', $delete_all = \false)
    {
    }
    /**
     * WooCommerce Order Item Meta API - Get term meta.
     *
     * @param int    $item_id Item ID.
     * @param string $key     Meta key.
     * @param bool   $single  Whether to return a single value. (default: true).
     *
     * @throws Exception      When `WC_Data_Store::load` validation fails.
     * @return mixed
     */
    function wc_get_order_item_meta($item_id, $key, $single = \true)
    {
    }
    /**
     * Get order ID by order item ID.
     *
     * @param  int $item_id Item ID.
     *
     * @throws Exception    When `WC_Data_Store::load` validation fails.
     * @return int
     */
    function wc_get_order_id_by_order_item_id($item_id)
    {
    }
    /**
     * Prevent password protected products being added to the cart.
     *
     * @param  bool $passed     Validation.
     * @param  int  $product_id Product ID.
     * @return bool
     */
    function wc_protected_product_add_to_cart($passed, $product_id)
    {
    }
    /**
     * Clears the cart session when called.
     */
    function wc_empty_cart()
    {
    }
    /**
     * Load the persistent cart.
     *
     * @param string  $user_login User login.
     * @param WP_User $user       User data.
     * @deprecated 2.3
     */
    function wc_load_persistent_cart($user_login, $user)
    {
    }
    /**
     * Retrieves unvalidated referer from '_wp_http_referer' or HTTP referer.
     *
     * Do not use for redirects, use {@see wp_get_referer()} instead.
     *
     * @since 2.6.1
     * @return string|false Referer URL on success, false on failure.
     */
    function wc_get_raw_referer()
    {
    }
    /**
     * Add to cart messages.
     *
     * @param int|array $products Product ID list or single product ID.
     * @param bool      $show_qty Should qty's be shown? Added in 2.6.0.
     * @param bool      $return   Return message rather than add it.
     *
     * @return mixed
     */
    function wc_add_to_cart_message($products, $show_qty = \false, $return = \false)
    {
    }
    /**
     * Comma separate a list of item names, and replace final comma with 'and'.
     *
     * @param  array $items Cart items.
     * @return string
     */
    function wc_format_list_of_items($items)
    {
    }
    /**
     * Clear cart after payment.
     */
    function wc_clear_cart_after_payment()
    {
    }
    /**
     * Get the subtotal.
     */
    function wc_cart_totals_subtotal_html()
    {
    }
    /**
     * Get shipping methods.
     */
    function wc_cart_totals_shipping_html()
    {
    }
    /**
     * Get taxes total.
     */
    function wc_cart_totals_taxes_total_html()
    {
    }
    /**
     * Get a coupon label.
     *
     * @param string|WC_Coupon $coupon Coupon data or code.
     * @param bool             $echo   Echo or return.
     *
     * @return string
     */
    function wc_cart_totals_coupon_label($coupon, $echo = \true)
    {
    }
    /**
     * Get coupon display HTML.
     *
     * @param string|WC_Coupon $coupon Coupon data or code.
     */
    function wc_cart_totals_coupon_html($coupon)
    {
    }
    /**
     * Get order total html including inc tax if needed.
     */
    function wc_cart_totals_order_total_html()
    {
    }
    /**
     * Get the fee value.
     *
     * @param object $fee Fee data.
     */
    function wc_cart_totals_fee_html($fee)
    {
    }
    /**
     * Get a shipping methods full label including price.
     *
     * @param  WC_Shipping_Rate $method Shipping method rate data.
     * @return string
     */
    function wc_cart_totals_shipping_method_label($method)
    {
    }
    /**
     * Round discount.
     *
     * @param  double $value Amount to round.
     * @param  int    $precision DP to round.
     * @return float
     */
    function wc_cart_round_discount($value, $precision)
    {
    }
    /**
     * Gets chosen shipping method IDs from chosen_shipping_methods session, without instance IDs.
     *
     * @since  2.6.2
     * @return string[]
     */
    function wc_get_chosen_shipping_method_ids()
    {
    }
    /**
     * Get chosen method for package from session.
     *
     * @since  3.2.0
     * @param  int   $key Key of package.
     * @param  array $package Package data array.
     * @return string|bool
     */
    function wc_get_chosen_shipping_method_for_package($key, $package)
    {
    }
    /**
     * Choose the default method for a package.
     *
     * @since  3.2.0
     * @param  int    $key Key of package.
     * @param  array  $package Package data array.
     * @param  string $chosen_method Chosen method id.
     * @return string
     */
    function wc_get_default_shipping_method_for_package($key, $package, $chosen_method)
    {
    }
    /**
     * See if the methods have changed since the last request.
     *
     * @since  3.2.0
     * @param  int   $key Key of package.
     * @param  array $package Package data array.
     * @return bool
     */
    function wc_shipping_methods_have_changed($key, $package)
    {
    }
    /**
     * Gets a hash of important product data that when changed should cause cart items to be invalidated.
     *
     * The woocommerce_cart_item_data_to_validate filter can be used to add custom properties.
     *
     * @param WC_Product $product Product object.
     * @return string
     */
    function wc_get_cart_item_data_hash($product)
    {
    }
    /**
     * Returns the url to the lost password endpoint url.
     *
     * @param  string $default_url Default lost password URL.
     * @return string
     */
    function wc_lostpassword_url($default_url = '')
    {
    }
    /**
     * Get the link to the edit account details page.
     *
     * @return string
     */
    function wc_customer_edit_account_url()
    {
    }
    /**
     * Get the edit address slug translation.
     *
     * @param  string $id   Address ID.
     * @param  bool   $flip Flip the array to make it possible to retrieve the values ​​from both sides.
     *
     * @return string       Address slug i18n.
     */
    function wc_edit_address_i18n($id, $flip = \false)
    {
    }
    /**
     * Get My Account menu items.
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_menu_items()
    {
    }
    /**
     * Get account menu item classes.
     *
     * @since 2.6.0
     * @param string $endpoint Endpoint.
     * @return string
     */
    function wc_get_account_menu_item_classes($endpoint)
    {
    }
    /**
     * Get account endpoint URL.
     *
     * @since 2.6.0
     * @param string $endpoint Endpoint.
     * @return string
     */
    function wc_get_account_endpoint_url($endpoint)
    {
    }
    /**
     * Get My Account > Orders columns.
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_orders_columns()
    {
    }
    /**
     * Get My Account > Downloads columns.
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_downloads_columns()
    {
    }
    /**
     * Get My Account > Payment methods columns.
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_payment_methods_columns()
    {
    }
    /**
     * Get My Account > Payment methods types
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_payment_methods_types()
    {
    }
    /**
     * Get account orders actions.
     *
     * @since  3.2.0
     * @param  int|WC_Order $order Order instance or ID.
     * @return array
     */
    function wc_get_account_orders_actions($order)
    {
    }
    /**
     * Get account formatted address.
     *
     * @since  3.2.0
     * @param  string $address_type Address type.
     *                              Accepts: 'billing' or 'shipping'.
     *                              Default to 'billing'.
     * @param  int    $customer_id  Customer ID.
     *                              Default to 0.
     * @return string
     */
    function wc_get_account_formatted_address($address_type = 'billing', $customer_id = 0)
    {
    }
    /**
     * Returns an array of a user's saved payments list for output on the account tab.
     *
     * @since  2.6
     * @param  array $list         List of payment methods passed from wc_get_customer_saved_methods_list().
     * @param  int   $customer_id  The customer to fetch payment methods for.
     * @return array               Filtered list of customers payment methods.
     */
    function wc_get_account_saved_payment_methods_list($list, $customer_id)
    {
    }
    /**
     * Controls the output for credit cards on the my account page.
     *
     * @since 2.6
     * @param  array            $item         Individual list item from woocommerce_saved_payment_methods_list.
     * @param  WC_Payment_Token $payment_token The payment token associated with this method entry.
     * @return array                           Filtered item.
     */
    function wc_get_account_saved_payment_methods_list_item_cc($item, $payment_token)
    {
    }
    /**
     * Controls the output for eChecks on the my account page.
     *
     * @since 2.6
     * @param  array            $item         Individual list item from woocommerce_saved_payment_methods_list.
     * @param  WC_Payment_Token $payment_token The payment token associated with this method entry.
     * @return array                           Filtered item.
     */
    function wc_get_account_saved_payment_methods_list_item_echeck($item, $payment_token)
    {
    }
    /**
     * Runs a deprecated action with notice only if used.
     *
     * @since 3.0.0
     * @param string $tag         The name of the action hook.
     * @param array  $args        Array of additional function arguments to be passed to do_action().
     * @param string $version     The version of WooCommerce that deprecated the hook.
     * @param string $replacement The hook that should have been used.
     * @param string $message     A message regarding the change.
     */
    function wc_do_deprecated_action($tag, $args, $version, $replacement = \null, $message = \null)
    {
    }
    /**
     * Wrapper for deprecated functions so we can apply some extra logic.
     *
     * @since 3.0.0
     * @param string $function Function used.
     * @param string $version Version the message was added in.
     * @param string $replacement Replacement for the called function.
     */
    function wc_deprecated_function($function, $version, $replacement = \null)
    {
    }
    /**
     * Wrapper for deprecated hook so we can apply some extra logic.
     *
     * @since 3.3.0
     * @param string $hook        The hook that was used.
     * @param string $version     The version of WordPress that deprecated the hook.
     * @param string $replacement The hook that should have been used.
     * @param string $message     A message regarding the change.
     */
    function wc_deprecated_hook($hook, $version, $replacement = \null, $message = \null)
    {
    }
    /**
     * When catching an exception, this allows us to log it if unexpected.
     *
     * @since 3.3.0
     * @param Exception $exception_object The exception object.
     * @param string    $function The function which threw exception.
     * @param array     $args The args passed to the function.
     */
    function wc_caught_exception($exception_object, $function = '', $args = array())
    {
    }
    /**
     * Wrapper for wc_doing_it_wrong.
     *
     * @since  3.0.0
     * @param string $function Function used.
     * @param string $message Message to log.
     * @param string $version Version the message was added in.
     */
    function wc_doing_it_wrong($function, $message, $version)
    {
    }
    /**
     * Wrapper for deprecated arguments so we can apply some extra logic.
     *
     * @since  3.0.0
     * @param  string $argument
     * @param  string $version
     * @param  string $replacement
     */
    function wc_deprecated_argument($argument, $version, $message = \null)
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_show_messages()
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_weekend_area_js()
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_tooltip_js()
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_datepicker_js()
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_admin_scripts()
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_create_page($slug, $option = '', $page_title = '', $page_content = '', $post_parent = 0)
    {
    }
    /**
     * @deprecated 2.1
     */
    function woocommerce_readfile_chunked($file, $retbytes = \true)
    {
    }
    /**
     * Formal total costs - format to the number of decimal places for the base currency.
     *
     * @access public
     * @param mixed $number
     * @deprecated 2.1
     * @return string
     */
    function woocommerce_format_total($number)
    {
    }
    /**
     * Get product name with extra details such as SKU price and attributes. Used within admin.
     *
     * @access public
     * @param WC_Product $product
     * @deprecated 2.1
     * @return string
     */
    function woocommerce_get_formatted_product_name($product)
    {
    }
    /**
     * Handle IPN requests for the legacy paypal gateway by calling gateways manually if needed.
     *
     * @access public
     */
    function woocommerce_legacy_paypal_ipn()
    {
    }
    /**
     * @deprecated 3.0
     */
    function get_product($the_product = \false, $args = array())
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_protected_product_add_to_cart($passed, $product_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_empty_cart()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_load_persistent_cart($user_login, $user = 0)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_add_to_cart_message($product_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_clear_cart_after_payment()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cart_totals_subtotal_html()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cart_totals_shipping_html()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cart_totals_coupon_html($coupon)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cart_totals_order_total_html()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cart_totals_fee_html($fee)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cart_totals_shipping_method_label($method)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_template_part($slug, $name = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_template($template_name, $args = array(), $template_path = '', $default_path = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_locate_template($template_name, $template_path = '', $default_path = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_mail($to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = "")
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_disable_admin_bar($show_admin_bar)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_create_new_customer($email, $username = '', $password = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_set_customer_auth_cookie($customer_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_update_new_customer_past_orders($customer_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_paying_customer($order_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_customer_bought_product($customer_email, $user_id, $product_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_customer_has_capability($allcaps, $caps, $args)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_sanitize_taxonomy_name($taxonomy)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_filename_from_url($file_url)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_dimension($dim, $to_unit)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_weight($weight, $to_unit)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_trim_zeros($price)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_round_tax_total($tax)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_format_decimal($number, $dp = \false, $trim_zeros = \false)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_clean($var)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_array_overlay($a1, $a2)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_price($price, $args = array())
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_let_to_num($size)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_date_format()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_time_format()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_timezone_string()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_rgb_from_hex($color)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_hex_darker($color, $factor = 30)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_hex_lighter($color, $factor = 30)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_light_or_dark($color, $dark = '#000000', $light = '#FFFFFF')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_format_hex($hex)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_order_id_by_order_key($order_key)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_downloadable_file_permission($download_id, $product_id, $order)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_downloadable_product_permissions($order_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_add_order_item($order_id, $item)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_delete_order_item($item_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_update_order_item_meta($item_id, $meta_key, $meta_value, $prev_value = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_add_order_item_meta($item_id, $meta_key, $meta_value, $unique = \false)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_delete_order_item_meta($item_id, $meta_key, $meta_value = '', $delete_all = \false)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_order_item_meta($item_id, $key, $single = \true)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_cancel_unpaid_orders()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_processing_order_count()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_page_id($page)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_endpoint_url($endpoint, $value = '', $permalink = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_lostpassword_url($url)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_customer_edit_account_url()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_nav_menu_items($items, $args)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_nav_menu_item_classes($menu_items, $args)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_list_pages($pages)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_product_dropdown_categories($args = array(), $deprecated_hierarchical = 1, $deprecated_show_uncategorized = 1, $deprecated_orderby = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_walk_category_dropdown_tree($a1 = '', $a2 = '', $a3 = '')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_taxonomy_metadata_wpdbfix()
    {
    }
    /**
     * @deprecated 3.0
     */
    function wc_taxonomy_metadata_wpdbfix()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_order_terms($the_term, $next_id, $taxonomy, $index = 0, $terms = \null)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_set_term_order($term_id, $index, $taxonomy, $recursive = \false)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_terms_clauses($clauses, $taxonomies, $args)
    {
    }
    /**
     * @deprecated 3.0
     */
    function _woocommerce_term_recount($terms, $taxonomy, $callback, $terms_are_term_taxonomy_ids)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_recount_after_stock_change($product_id)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_change_term_counts($terms, $taxonomies, $args)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_product_ids_on_sale()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_featured_product_ids()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_product_terms($object_id, $taxonomy, $fields = 'all')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_product_post_type_link($permalink, $post)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_placeholder_img_src()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_placeholder_img($size = 'woocommerce_thumbnail')
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_formatted_variation($variation = '', $flat = \false)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_scheduled_sales()
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_get_attachment_image_attributes($attr)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_prepare_attachment_for_js($response)
    {
    }
    /**
     * @deprecated 3.0
     */
    function woocommerce_track_product_view()
    {
    }
    /**
     * @since 2.3
     * @deprecated has no replacement
     */
    function woocommerce_compile_less_styles()
    {
    }
    /**
     * woocommerce_calc_shipping was an option used to determine if shipping was enabled prior to version 2.6.0. This has since been replaced with wc_shipping_enabled() function and
     * the woocommerce_ship_to_countries setting.
     * @since 2.6.0
     * @return string
     */
    function woocommerce_calc_shipping_backwards_compatibility($value)
    {
    }
    /**
     * @deprecated 3.0.0
     * @see WC_Structured_Data class
     *
     * @return string
     */
    function woocommerce_get_product_schema()
    {
    }
    /**
     * Save product price.
     *
     * This is a private function (internal use ONLY) used until a data manipulation api is built.
     *
     * @deprecated 3.0.0
     * @param int $product_id
     * @param float $regular_price
     * @param float $sale_price
     * @param string $date_from
     * @param string $date_to
     */
    function _wc_save_product_price($product_id, $regular_price, $sale_price = '', $date_from = '', $date_to = '')
    {
    }
    /**
     * Return customer avatar URL.
     *
     * @deprecated 3.1.0
     * @since 2.6.0
     * @param string $email the customer's email.
     * @return string the URL to the customer's avatar.
     */
    function wc_get_customer_avatar_url($email)
    {
    }
    /**
     * WooCommerce Core Supported Themes.
     *
     * @deprecated 3.3.0
     * @since 2.2
     * @return string[]
     */
    function wc_get_core_supported_themes()
    {
    }
    /**
     * Get min/max price meta query args.
     *
     * @deprecated 3.6.0
     * @since 3.0.0
     * @param array $args Min price and max price arguments.
     * @return array
     */
    function wc_get_min_max_price_meta_query($args)
    {
    }
    /**
     * When a term is split, ensure meta data maintained.
     *
     * @deprecated 3.6.0
     * @param  int    $old_term_id      Old term ID.
     * @param  int    $new_term_id      New term ID.
     * @param  string $term_taxonomy_id Term taxonomy ID.
     * @param  string $taxonomy         Taxonomy.
     */
    function wc_taxonomy_metadata_update_content_for_split_terms($old_term_id, $new_term_id, $term_taxonomy_id, $taxonomy)
    {
    }
    /**
     * WooCommerce Term Meta API.
     *
     * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table.
     * This function serves as a wrapper, using the new table if present, or falling back to the WC table.
     *
     * @deprecated 3.6.0
     * @param int    $term_id    Term ID.
     * @param string $meta_key   Meta key.
     * @param mixed  $meta_value Meta value.
     * @param string $prev_value Previous value. (default: '').
     * @return bool
     */
    function update_woocommerce_term_meta($term_id, $meta_key, $meta_value, $prev_value = '')
    {
    }
    /**
     * WooCommerce Term Meta API.
     *
     * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table.
     * This function serves as a wrapper, using the new table if present, or falling back to the WC table.
     *
     * @deprecated 3.6.0
     * @param int    $term_id    Term ID.
     * @param string $meta_key   Meta key.
     * @param mixed  $meta_value Meta value.
     * @param bool   $unique     Make meta key unique. (default: false).
     * @return bool
     */
    function add_woocommerce_term_meta($term_id, $meta_key, $meta_value, $unique = \false)
    {
    }
    /**
     * WooCommerce Term Meta API
     *
     * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table.
     * This function serves as a wrapper, using the new table if present, or falling back to the WC table.
     *
     * @deprecated 3.6.0
     * @param int    $term_id    Term ID.
     * @param string $meta_key   Meta key.
     * @param string $meta_value Meta value (default: '').
     * @param bool   $deprecated Deprecated param (default: false).
     * @return bool
     */
    function delete_woocommerce_term_meta($term_id, $meta_key, $meta_value = '', $deprecated = \false)
    {
    }
    /**
     * WooCommerce Term Meta API
     *
     * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table.
     * This function serves as a wrapper, using the new table if present, or falling back to the WC table.
     *
     * @deprecated 3.6.0
     * @param int    $term_id Term ID.
     * @param string $key     Meta key.
     * @param bool   $single  Whether to return a single value. (default: true).
     * @return mixed
     */
    function get_woocommerce_term_meta($term_id, $key, $single = \true)
    {
    }
    /**
     * Change get terms defaults for attributes to order by the sorting setting, or default to menu_order for sortable taxonomies.
     *
     * @since 3.6.0 Sorting options are now set as the default automatically, so you no longer have to request to orderby menu_order.
     *
     * @param array $defaults   An array of default get_terms() arguments.
     * @param array $taxonomies An array of taxonomies.
     * @return array
     */
    function wc_change_get_terms_defaults($defaults, $taxonomies)
    {
    }
    /**
     * Adds support to get_terms for menu_order argument.
     *
     * @since 3.6.0
     * @param WP_Term_Query $terms_query Instance of WP_Term_Query.
     */
    function wc_change_pre_get_terms($terms_query)
    {
    }
    /**
     * Adjust term query to handle custom sorting parameters.
     *
     * @param array $clauses    Clauses.
     * @param array $taxonomies Taxonomies.
     * @param array $args       Arguments.
     * @return array
     */
    function wc_terms_clauses($clauses, $taxonomies, $args)
    {
    }
    /**
     * Helper to get cached object terms and filter by field using wp_list_pluck().
     * Works as a cached alternative for wp_get_post_terms() and wp_get_object_terms().
     *
     * @since  3.0.0
     * @param  int    $object_id Object ID.
     * @param  string $taxonomy  Taxonomy slug.
     * @param  string $field     Field name.
     * @param  string $index_key Index key name.
     * @return array
     */
    function wc_get_object_terms($object_id, $taxonomy, $field = \null, $index_key = \null)
    {
    }
    /**
     * Cached version of wp_get_post_terms().
     * This is a private function (internal use ONLY).
     *
     * @since  3.0.0
     * @param  int    $product_id Product ID.
     * @param  string $taxonomy   Taxonomy slug.
     * @param  array  $args       Query arguments.
     * @return array
     */
    function _wc_get_cached_product_terms($product_id, $taxonomy, $args = array())
    {
    }
    /**
     * Wrapper used to get terms for a product.
     *
     * @param  int    $product_id Product ID.
     * @param  string $taxonomy   Taxonomy slug.
     * @param  array  $args       Query arguments.
     * @return array
     */
    function wc_get_product_terms($product_id, $taxonomy, $args = array())
    {
    }
    /**
     * Sort by name (numeric).
     *
     * @param  WP_Post $a First item to compare.
     * @param  WP_Post $b Second item to compare.
     * @return int
     */
    function _wc_get_product_terms_name_num_usort_callback($a, $b)
    {
    }
    /**
     * Sort by parent.
     *
     * @param  WP_Post $a First item to compare.
     * @param  WP_Post $b Second item to compare.
     * @return int
     */
    function _wc_get_product_terms_parent_usort_callback($a, $b)
    {
    }
    /**
     * WooCommerce Dropdown categories.
     *
     * @param array $args Args to control display of dropdown.
     */
    function wc_product_dropdown_categories($args = array())
    {
    }
    /**
     * Custom walker for Product Categories.
     *
     * Previously used by wc_product_dropdown_categories, but wp_dropdown_categories has been fixed in core.
     *
     * @return mixed
     */
    function wc_walk_category_dropdown_tree()
    {
    }
    /**
     * Migrate data from WC term meta to WP term meta.
     *
     * When the database is updated to support term meta, migrate WC term meta data across.
     * We do this when the new version is >= 34370, and the old version is < 34370 (34370 is when term meta table was added).
     *
     * @param string $wp_db_version The new $wp_db_version.
     * @param string $wp_current_db_version The old (current) $wp_db_version.
     */
    function wc_taxonomy_metadata_migrate_data($wp_db_version, $wp_current_db_version)
    {
    }
    /**
     * Move a term before the a given element of its hierarchy level.
     *
     * @param int    $the_term Term ID.
     * @param int    $next_id  The id of the next sibling element in save hierarchy level.
     * @param string $taxonomy Taxnomy.
     * @param int    $index    Term index (default: 0).
     * @param mixed  $terms    List of terms. (default: null).
     * @return int
     */
    function wc_reorder_terms($the_term, $next_id, $taxonomy, $index = 0, $terms = \null)
    {
    }
    /**
     * Set the sort order of a term.
     *
     * @param int    $term_id   Term ID.
     * @param int    $index     Index.
     * @param string $taxonomy  Taxonomy.
     * @param bool   $recursive Recursive (default: false).
     * @return int
     */
    function wc_set_term_order($term_id, $index, $taxonomy, $recursive = \false)
    {
    }
    /**
     * Function for recounting product terms, ignoring hidden products.
     *
     * @param array  $terms                       List of terms.
     * @param object $taxonomy                    Taxonomy.
     * @param bool   $callback                    Callback.
     * @param bool   $terms_are_term_taxonomy_ids If terms are from term_taxonomy_id column.
     */
    function _wc_term_recount($terms, $taxonomy, $callback = \true, $terms_are_term_taxonomy_ids = \true)
    {
    }
    /**
     * Recount terms after the stock amount changes.
     *
     * @param int $product_id Product ID.
     */
    function wc_recount_after_stock_change($product_id)
    {
    }
    /**
     * Overrides the original term count for product categories and tags with the product count.
     * that takes catalog visibility into account.
     *
     * @param array        $terms      List of terms.
     * @param string|array $taxonomies Single taxonomy or list of taxonomies.
     * @return array
     */
    function wc_change_term_counts($terms, $taxonomies)
    {
    }
    /**
     * Return products in a given term, and cache value.
     *
     * To keep in sync, product_count will be cleared on "set_object_terms".
     *
     * @param int    $term_id  Term ID.
     * @param string $taxonomy Taxonomy.
     * @return array
     */
    function wc_get_term_product_ids($term_id, $taxonomy)
    {
    }
    /**
     * When a post is updated and terms recounted (called by _update_post_term_count), clear the ids.
     *
     * @param int    $object_id  Object ID.
     * @param array  $terms      An array of object terms.
     * @param array  $tt_ids     An array of term taxonomy IDs.
     * @param string $taxonomy   Taxonomy slug.
     * @param bool   $append     Whether to append new terms to the old terms.
     * @param array  $old_tt_ids Old array of term taxonomy IDs.
     */
    function wc_clear_term_product_ids($object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids)
    {
    }
    /**
     * Get full list of product visibilty term ids.
     *
     * @since  3.0.0
     * @return int[]
     */
    function wc_get_product_visibility_term_ids()
    {
    }
    /**
     * Update file paths for 2.0
     *
     * @return void
     */
    function wc_update_200_file_paths()
    {
    }
    /**
     * Update permalinks for 2.0
     *
     * @return void
     */
    function wc_update_200_permalinks()
    {
    }
    /**
     * Update sub-category display options for 2.0
     *
     * @return void
     */
    function wc_update_200_subcat_display()
    {
    }
    /**
     * Update tax rates for 2.0
     *
     * @return void
     */
    function wc_update_200_taxrates()
    {
    }
    /**
     * Update order item line items for 2.0
     *
     * @return void
     */
    function wc_update_200_line_items()
    {
    }
    /**
     * Update image settings for 2.0
     *
     * @return void
     */
    function wc_update_200_images()
    {
    }
    /**
     * Update DB version for 2.0
     *
     * @return void
     */
    function wc_update_200_db_version()
    {
    }
    /**
     * Update Brazilian States for 2.0.9
     *
     * @return void
     */
    function wc_update_209_brazillian_state()
    {
    }
    /**
     * Update DB version for 2.0.9
     *
     * @return void
     */
    function wc_update_209_db_version()
    {
    }
    /**
     * Remove pages for 2.1
     *
     * @return void
     */
    function wc_update_210_remove_pages()
    {
    }
    /**
     * Update file paths to support multiple files for 2.1
     *
     * @return void
     */
    function wc_update_210_file_paths()
    {
    }
    /**
     * Update DB version for 2.1
     *
     * @return void
     */
    function wc_update_210_db_version()
    {
    }
    /**
     * Update shipping options for 2.2
     *
     * @return void
     */
    function wc_update_220_shipping()
    {
    }
    /**
     * Update order statuses for 2.2
     *
     * @return void
     */
    function wc_update_220_order_status()
    {
    }
    /**
     * Update variations for 2.2
     *
     * @return void
     */
    function wc_update_220_variations()
    {
    }
    /**
     * Update attributes for 2.2
     *
     * @return void
     */
    function wc_update_220_attributes()
    {
    }
    /**
     * Update DB version for 2.2
     *
     * @return void
     */
    function wc_update_220_db_version()
    {
    }
    /**
     * Update options for 2.3
     *
     * @return void
     */
    function wc_update_230_options()
    {
    }
    /**
     * Update DB version for 2.3
     *
     * @return void
     */
    function wc_update_230_db_version()
    {
    }
    /**
     * Update calc discount options for 2.4
     *
     * @return void
     */
    function wc_update_240_options()
    {
    }
    /**
     * Update shipping methods for 2.4
     *
     * @return void
     */
    function wc_update_240_shipping_methods()
    {
    }
    /**
     * Update API keys for 2.4
     *
     * @return void
     */
    function wc_update_240_api_keys()
    {
    }
    /**
     * Update webhooks for 2.4
     *
     * @return void
     */
    function wc_update_240_webhooks()
    {
    }
    /**
     * Update refunds for 2.4
     *
     * @return void
     */
    function wc_update_240_refunds()
    {
    }
    /**
     * Update DB version for 2.4
     *
     * @return void
     */
    function wc_update_240_db_version()
    {
    }
    /**
     * Update variations for 2.4.1
     *
     * @return void
     */
    function wc_update_241_variations()
    {
    }
    /**
     * Update DB version for 2.4.1
     *
     * @return void
     */
    function wc_update_241_db_version()
    {
    }
    /**
     * Update currency settings for 2.5
     *
     * @return void
     */
    function wc_update_250_currency()
    {
    }
    /**
     * Update DB version for 2.5
     *
     * @return void
     */
    function wc_update_250_db_version()
    {
    }
    /**
     * Update ship to countries options for 2.6
     *
     * @return void
     */
    function wc_update_260_options()
    {
    }
    /**
     * Update term meta for 2.6
     *
     * @return void
     */
    function wc_update_260_termmeta()
    {
    }
    /**
     * Update zones for 2.6
     *
     * @return void
     */
    function wc_update_260_zones()
    {
    }
    /**
     * Update zone methods for 2.6
     *
     * @return void
     */
    function wc_update_260_zone_methods()
    {
    }
    /**
     * Update refunds for 2.6
     *
     * @return void
     */
    function wc_update_260_refunds()
    {
    }
    /**
     * Update DB version for 2.6
     *
     * @return void
     */
    function wc_update_260_db_version()
    {
    }
    /**
     * Update webhooks for 3.0
     *
     * @return void
     */
    function wc_update_300_webhooks()
    {
    }
    /**
     * Add an index to the field comment_type to improve the response time of the query
     * used by WC_Comments::wp_count_comments() to get the number of comments by type.
     */
    function wc_update_300_comment_type_index()
    {
    }
    /**
     * Update grouped products for 3.0
     *
     * @return void
     */
    function wc_update_300_grouped_products()
    {
    }
    /**
     * Update shipping tax classes for 3.0
     *
     * @return void
     */
    function wc_update_300_settings()
    {
    }
    /**
     * Convert meta values into term for product visibility.
     */
    function wc_update_300_product_visibility()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_300_db_version()
    {
    }
    /**
     * Add an index to the downloadable product permissions table to improve performance of update_user_by_order_id.
     */
    function wc_update_310_downloadable_products()
    {
    }
    /**
     * Find old order notes and ensure they have the correct type for exclusion.
     */
    function wc_update_310_old_comments()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_310_db_version()
    {
    }
    /**
     * Update shop_manager capabilities.
     */
    function wc_update_312_shop_manager_capabilities()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_312_db_version()
    {
    }
    /**
     * Update state codes for Mexico.
     */
    function wc_update_320_mexican_states()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_320_db_version()
    {
    }
    /**
     * Update image settings to use new aspect ratios and widths.
     */
    function wc_update_330_image_options()
    {
    }
    /**
     * Migrate webhooks from post type to CRUD.
     */
    function wc_update_330_webhooks()
    {
    }
    /**
     * Assign default cat to all products with no cats.
     */
    function wc_update_330_set_default_product_cat()
    {
    }
    /**
     * Update product stock status to use the new onbackorder status.
     */
    function wc_update_330_product_stock_status()
    {
    }
    /**
     * Clear addons page transients
     */
    function wc_update_330_clear_transients()
    {
    }
    /**
     * Set PayPal's sandbox credentials.
     */
    function wc_update_330_set_paypal_sandbox_credentials()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_330_db_version()
    {
    }
    /**
     * Update state codes for Ireland and BD.
     */
    function wc_update_340_states()
    {
    }
    /**
     * Update next state in the queue.
     *
     * @return bool True to run again, false if completed.
     */
    function wc_update_340_state()
    {
    }
    /**
     * Set last active prop for users.
     */
    function wc_update_340_last_active()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_340_db_version()
    {
    }
    /**
     * Remove duplicate foreign keys
     *
     * @return void
     */
    function wc_update_343_cleanup_foreign_keys()
    {
    }
    /**
     * Update DB version.
     *
     * @return void
     */
    function wc_update_343_db_version()
    {
    }
    /**
     * Recreate user roles so existing users will get the new capabilities.
     *
     * @return void
     */
    function wc_update_344_recreate_roles()
    {
    }
    /**
     * Update DB version.
     *
     * @return void
     */
    function wc_update_344_db_version()
    {
    }
    /**
     * Set the comment type to 'review' for product reviews that don't have a comment type.
     */
    function wc_update_350_reviews_comment_type()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_350_db_version()
    {
    }
    /**
     * Drop the fk_wc_download_log_permission_id FK as we use a new one with the table and blog prefix for MS compatability.
     *
     * @return void
     */
    function wc_update_352_drop_download_log_fk()
    {
    }
    /**
     * Remove edit_user capabilities from shop managers and use "translated" capabilities instead.
     * See wc_shop_manager_has_capability function.
     */
    function wc_update_354_modify_shop_manager_caps()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_354_db_version()
    {
    }
    /**
     * Update product lookup tables in bulk.
     */
    function wc_update_360_product_lookup_tables()
    {
    }
    /**
     * Renames ordering meta to be consistent across taxonomies.
     */
    function wc_update_360_term_meta()
    {
    }
    /**
     * Add new user_order_remaining_expires to speed up user download permission fetching.
     *
     * @return void
     */
    function wc_update_360_downloadable_product_permissions_index()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_360_db_version()
    {
    }
    /**
     * Put tax classes into a DB table.
     *
     * @return void
     */
    function wc_update_370_tax_rate_classes()
    {
    }
    /**
     * Update currency settings for 3.7.0
     *
     * @return void
     */
    function wc_update_370_mro_std_currency()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_update_370_db_version()
    {
    }
    /**
     * Deprecated API functions for scheduling actions
     *
     * Functions with the wc prefix were deprecated to avoid confusion with
     * Action Scheduler being included in WooCommerce core, and it providing
     * a different set of APIs for working with the action queue.
     */
    /**
     * Schedule an action to run one time
     *
     * @param int $timestamp When the job will run
     * @param string $hook The hook to trigger
     * @param array $args Arguments to pass when the hook triggers
     * @param string $group The group to assign this job to
     *
     * @return string The job ID
     */
    function wc_schedule_single_action($timestamp, $hook, $args = array(), $group = '')
    {
    }
    /**
     * Schedule a recurring action
     *
     * @param int $timestamp When the first instance of the job will run
     * @param int $interval_in_seconds How long to wait between runs
     * @param string $hook The hook to trigger
     * @param array $args Arguments to pass when the hook triggers
     * @param string $group The group to assign this job to
     *
     * @deprecated 2.1.0
     *
     * @return string The job ID
     */
    function wc_schedule_recurring_action($timestamp, $interval_in_seconds, $hook, $args = array(), $group = '')
    {
    }
    /**
     * Schedule an action that recurs on a cron-like schedule.
     *
     * @param int $timestamp The schedule will start on or after this time
     * @param string $schedule A cron-link schedule string
     * @see http://en.wikipedia.org/wiki/Cron
     *   *    *    *    *    *    *
     *   ┬    ┬    ┬    ┬    ┬    ┬
     *   |    |    |    |    |    |
     *   |    |    |    |    |    + year [optional]
     *   |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
     *   |    |    |    +---------- month (1 - 12)
     *   |    |    +--------------- day of month (1 - 31)
     *   |    +-------------------- hour (0 - 23)
     *   +------------------------- min (0 - 59)
     * @param string $hook The hook to trigger
     * @param array $args Arguments to pass when the hook triggers
     * @param string $group The group to assign this job to
     *
     * @deprecated 2.1.0
     *
     * @return string The job ID
     */
    function wc_schedule_cron_action($timestamp, $schedule, $hook, $args = array(), $group = '')
    {
    }
    /**
     * Cancel the next occurrence of a job.
     *
     * @param string $hook The hook that the job will trigger
     * @param array $args Args that would have been passed to the job
     * @param string $group
     *
     * @deprecated 2.1.0
     */
    function wc_unschedule_action($hook, $args = array(), $group = '')
    {
    }
    /**
     * @param string $hook
     * @param array $args
     * @param string $group
     *
     * @deprecated 2.1.0
     *
     * @return int|bool The timestamp for the next occurrence, or false if nothing was found
     */
    function wc_next_scheduled_action($hook, $args = \NULL, $group = '')
    {
    }
    /**
     * Find scheduled actions
     *
     * @param array $args Possible arguments, with their default values:
     *        'hook' => '' - the name of the action that will be triggered
     *        'args' => NULL - the args array that will be passed with the action
     *        'date' => NULL - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
     *        'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='
     *        'modified' => NULL - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
     *        'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='
     *        'group' => '' - the group the action belongs to
     *        'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
     *        'claimed' => NULL - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID
     *        'per_page' => 5 - Number of results to return
     *        'offset' => 0
     *        'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'
     *        'order' => 'ASC'
     * @param string $return_format OBJECT, ARRAY_A, or ids
     *
     * @deprecated 2.1.0
     *
     * @return array
     */
    function wc_get_scheduled_actions($args = array(), $return_format = \OBJECT)
    {
    }
    /**
     * General API functions for scheduling actions
     */
    /**
     * Schedule an action to run one time
     *
     * @param int $timestamp When the job will run
     * @param string $hook The hook to trigger
     * @param array $args Arguments to pass when the hook triggers
     * @param string $group The group to assign this job to
     *
     * @return string The job ID
     */
    function as_schedule_single_action($timestamp, $hook, $args = array(), $group = '')
    {
    }
    /**
     * Schedule a recurring action
     *
     * @param int $timestamp When the first instance of the job will run
     * @param int $interval_in_seconds How long to wait between runs
     * @param string $hook The hook to trigger
     * @param array $args Arguments to pass when the hook triggers
     * @param string $group The group to assign this job to
     *
     * @return string The job ID
     */
    function as_schedule_recurring_action($timestamp, $interval_in_seconds, $hook, $args = array(), $group = '')
    {
    }
    /**
     * Schedule an action that recurs on a cron-like schedule.
     *
     * @param int $timestamp The schedule will start on or after this time
     * @param string $schedule A cron-link schedule string
     * @see http://en.wikipedia.org/wiki/Cron
     *   *    *    *    *    *    *
     *   ┬    ┬    ┬    ┬    ┬    ┬
     *   |    |    |    |    |    |
     *   |    |    |    |    |    + year [optional]
     *   |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
     *   |    |    |    +---------- month (1 - 12)
     *   |    |    +--------------- day of month (1 - 31)
     *   |    +-------------------- hour (0 - 23)
     *   +------------------------- min (0 - 59)
     * @param string $hook The hook to trigger
     * @param array $args Arguments to pass when the hook triggers
     * @param string $group The group to assign this job to
     *
     * @return string The job ID
     */
    function as_schedule_cron_action($timestamp, $schedule, $hook, $args = array(), $group = '')
    {
    }
    /**
     * Cancel the next occurrence of a scheduled action.
     *
     * While only the next instance of a recurring or cron action is unscheduled by this method, that will also prevent
     * all future instances of that recurring or cron action from being run. Recurring and cron actions are scheduled in
     * a sequence instead of all being scheduled at once. Each successive occurrence of a recurring action is scheduled
     * only after the former action is run. If the next instance is never run, because it's unscheduled by this function,
     * then the following instance will never be scheduled (or exist), which is effectively the same as being unscheduled
     * by this method also.
     *
     * @param string $hook The hook that the job will trigger
     * @param array $args Args that would have been passed to the job
     * @param string $group
     *
     * @return string The scheduled action ID if a scheduled action was found, or empty string if no matching action found.
     */
    function as_unschedule_action($hook, $args = array(), $group = '')
    {
    }
    /**
     * Cancel all occurrences of a scheduled action.
     *
     * @param string $hook The hook that the job will trigger
     * @param array $args Args that would have been passed to the job
     * @param string $group
     */
    function as_unschedule_all_actions($hook, $args = array(), $group = '')
    {
    }
    /**
     * @param string $hook
     * @param array $args
     * @param string $group
     *
     * @return int|bool The timestamp for the next occurrence, or false if nothing was found
     */
    function as_next_scheduled_action($hook, $args = \NULL, $group = '')
    {
    }
    /**
     * Find scheduled actions
     *
     * @param array $args Possible arguments, with their default values:
     *        'hook' => '' - the name of the action that will be triggered
     *        'args' => NULL - the args array that will be passed with the action
     *        'date' => NULL - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
     *        'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='
     *        'modified' => NULL - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
     *        'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='
     *        'group' => '' - the group the action belongs to
     *        'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
     *        'claimed' => NULL - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID
     *        'per_page' => 5 - Number of results to return
     *        'offset' => 0
     *        'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'
     *        'order' => 'ASC'
     *
     * @param string $return_format OBJECT, ARRAY_A, or ids
     *
     * @return array
     */
    function as_get_scheduled_actions($args = array(), $return_format = \OBJECT)
    {
    }
    /**
     * Helper function to create an instance of DateTime based on a given
     * string and timezone. By default, will return the current date/time
     * in the UTC timezone.
     *
     * Needed because new DateTime() called without an explicit timezone
     * will create a date/time in PHP's timezone, but we need to have
     * assurance that a date/time uses the right timezone (which we almost
     * always want to be UTC), which means we need to always include the
     * timezone when instantiating datetimes rather than leaving it up to
     * the PHP default.
     *
     * @param mixed $date_string A date/time string. Valid formats are explained in http://php.net/manual/en/datetime.formats.php
     * @param string $timezone A timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available http://php.net/manual/en/timezones.php
     *
     * @return ActionScheduler_DateTime
     */
    function as_get_datetime_object($date_string = \null, $timezone = 'UTC')
    {
    }
    function action_scheduler_register_2_dot_2_dot_5()
    {
    }
    function action_scheduler_initialize_2_dot_2_dot_5()
    {
    }
    /**
     * Handle redirects before content is output - hooked into template_redirect so is_page works.
     */
    function wc_template_redirect()
    {
    }
    /**
     * When loading sensitive checkout or account pages, send a HTTP header to limit rendering of pages to same origin iframes for security reasons.
     *
     * Can be disabled with: remove_action( 'template_redirect', 'wc_send_frame_options_header' );
     *
     * @since  2.3.10
     */
    function wc_send_frame_options_header()
    {
    }
    /**
     * No index our endpoints.
     * Prevent indexing pages like order-received.
     *
     * @since 2.5.3
     */
    function wc_prevent_endpoint_indexing()
    {
    }
    /**
     * Remove adjacent_posts_rel_link_wp_head - pointless for products.
     *
     * @since 3.0.0
     */
    function wc_prevent_adjacent_posts_rel_link_wp_head()
    {
    }
    /**
     * Show the gallery if JS is disabled.
     *
     * @since 3.0.6
     */
    function wc_gallery_noscript()
    {
    }
    /**
     * When the_post is called, put product data into a global.
     *
     * @param mixed $post Post Object.
     * @return WC_Product
     */
    function wc_setup_product_data($post)
    {
    }
    /**
     * Sets up the woocommerce_loop global from the passed args or from the main query.
     *
     * @since 3.3.0
     * @param array $args Args to pass into the global.
     */
    function wc_setup_loop($args = array())
    {
    }
    /**
     * Resets the woocommerce_loop global.
     *
     * @since 3.3.0
     */
    function wc_reset_loop()
    {
    }
    /**
     * Gets a property from the woocommerce_loop global.
     *
     * @since 3.3.0
     * @param string $prop Prop to get.
     * @param string $default Default if the prop does not exist.
     * @return mixed
     */
    function wc_get_loop_prop($prop, $default = '')
    {
    }
    /**
     * Sets a property in the woocommerce_loop global.
     *
     * @since 3.3.0
     * @param string $prop Prop to set.
     * @param string $value Value to set.
     */
    function wc_set_loop_prop($prop, $value = '')
    {
    }
    /**
     * Should the WooCommerce loop be displayed?
     *
     * This will return true if we have posts (products) or if we have subcats to display.
     *
     * @since 3.4.0
     * @return bool
     */
    function woocommerce_product_loop()
    {
    }
    /**
     * Output generator tag to aid debugging.
     *
     * @param string $gen Generator.
     * @param string $type Type.
     * @return string
     */
    function wc_generator_tag($gen, $type)
    {
    }
    /**
     * Add body classes for WC pages.
     *
     * @param  array $classes Body Classes.
     * @return array
     */
    function wc_body_class($classes)
    {
    }
    /**
     * NO JS handling.
     *
     * @since 3.4.0
     */
    function wc_no_js()
    {
    }
    /**
     * Display the classes for the product cat div.
     *
     * @since 2.4.0
     * @param string|array $class One or more classes to add to the class list.
     * @param object       $category object Optional.
     */
    function wc_product_cat_class($class = '', $category = \null)
    {
    }
    /**
     * Get the default columns setting - this is how many products will be shown per row in loops.
     *
     * @since 3.3.0
     * @return int
     */
    function wc_get_default_products_per_row()
    {
    }
    /**
     * Get the default rows setting - this is how many product rows will be shown in loops.
     *
     * @since 3.3.0
     * @return int
     */
    function wc_get_default_product_rows_per_page()
    {
    }
    /**
     * Reset the product grid settings when a new theme is activated.
     *
     * @since 3.3.0
     */
    function wc_reset_product_grid_settings()
    {
    }
    /**
     * Get classname for woocommerce loops.
     *
     * @since 2.6.0
     * @return string
     */
    function wc_get_loop_class()
    {
    }
    /**
     * Get the classes for the product cat div.
     *
     * @since 2.4.0
     *
     * @param string|array $class One or more classes to add to the class list.
     * @param object       $category object Optional.
     *
     * @return array
     */
    function wc_get_product_cat_class($class = '', $category = \null)
    {
    }
    /**
     * Adds extra post classes for products via the WordPress post_class hook, if used.
     *
     * Note: For performance reasons we instead recommend using wc_product_class/wc_get_product_class instead.
     *
     * @since 2.1.0
     * @param array        $classes Current classes.
     * @param string|array $class Additional class.
     * @param int          $post_id Post ID.
     * @return array
     */
    function wc_product_post_class($classes, $class = '', $post_id = 0)
    {
    }
    /**
     * Get product taxonomy HTML classes.
     *
     * @since 3.4.0
     * @param array  $term_ids Array of terms IDs or objects.
     * @param string $taxonomy Taxonomy.
     * @return array
     */
    function wc_get_product_taxonomy_class($term_ids, $taxonomy)
    {
    }
    /**
     * Retrieves the classes for the post div as an array.
     *
     * This method was modified from WordPress's get_post_class() to allow the removal of taxonomies
     * (for performance reasons). Previously wc_product_post_class was hooked into post_class. @since 3.6.0
     *
     * @since 3.4.0
     * @param string|array           $class      One or more classes to add to the class list.
     * @param int|WP_Post|WC_Product $product Product ID or product object.
     * @return array
     */
    function wc_get_product_class($class = '', $product = \null)
    {
    }
    /**
     * Display the classes for the product div.
     *
     * @since 3.4.0
     * @param string|array           $class      One or more classes to add to the class list.
     * @param int|WP_Post|WC_Product $product_id Product ID or product object.
     */
    function wc_product_class($class = '', $product_id = \null)
    {
    }
    /**
     * Outputs hidden form inputs for each query string variable.
     *
     * @since 3.0.0
     * @param string|array $values Name value pairs, or a URL to parse.
     * @param array        $exclude Keys to exclude.
     * @param string       $current_key Current key we are outputting.
     * @param bool         $return Whether to return.
     * @return string
     */
    function wc_query_string_form_fields($values = \null, $exclude = array(), $current_key = '', $return = \false)
    {
    }
    /**
     * Get the terms and conditons page ID.
     *
     * @since 3.4.0
     * @return int
     */
    function wc_terms_and_conditions_page_id()
    {
    }
    /**
     * Get the privacy policy page ID.
     *
     * @since 3.4.0
     * @return int
     */
    function wc_privacy_policy_page_id()
    {
    }
    /**
     * See if the checkbox is enabled or not based on the existance of the terms page and checkbox text.
     *
     * @since 3.4.0
     * @return bool
     */
    function wc_terms_and_conditions_checkbox_enabled()
    {
    }
    /**
     * Get the terms and conditons checkbox text, if set.
     *
     * @since 3.4.0
     * @return string
     */
    function wc_get_terms_and_conditions_checkbox_text()
    {
    }
    /**
     * Get the privacy policy text, if set.
     *
     * @since 3.4.0
     * @param string $type Type of policy to load. Valid values include registration and checkout.
     * @return string
     */
    function wc_get_privacy_policy_text($type = '')
    {
    }
    /**
     * Output t&c checkbox text.
     *
     * @since 3.4.0
     */
    function wc_terms_and_conditions_checkbox_text()
    {
    }
    /**
     * Output t&c page's content (if set). The page can be set from checkout settings.
     *
     * @since 3.4.0
     */
    function wc_terms_and_conditions_page_content()
    {
    }
    /**
     * Render privacy policy text on the checkout.
     *
     * @since 3.4.0
     */
    function wc_checkout_privacy_policy_text()
    {
    }
    /**
     * Render privacy policy text on the register forms.
     *
     * @since 3.4.0
     */
    function wc_registration_privacy_policy_text()
    {
    }
    /**
     * Output privacy policy text. This is custom text which can be added via the customizer/privacy settings section.
     *
     * Loads the relevant policy for the current page unless a specific policy text is required.
     *
     * @since 3.4.0
     * @param string $type Type of policy to load. Valid values include registration and checkout.
     */
    function wc_privacy_policy_text($type = 'checkout')
    {
    }
    /**
     * Replaces placeholders with links to WooCommerce policy pages.
     *
     * @since 3.4.0
     * @param string $text Text to find/replace within.
     * @return string
     */
    function wc_replace_policy_page_link_placeholders($text)
    {
    }
    /**
     * Output WooCommerce content.
     *
     * This function is only used in the optional 'woocommerce.php' template.
     * which people can add to their themes to add basic woocommerce support.
     * without hooks or modifying core templates.
     */
    function woocommerce_content()
    {
    }
    /**
     * Output the start of the page wrapper.
     */
    function woocommerce_output_content_wrapper()
    {
    }
    /**
     * Output the end of the page wrapper.
     */
    function woocommerce_output_content_wrapper_end()
    {
    }
    /**
     * Get the shop sidebar template.
     */
    function woocommerce_get_sidebar()
    {
    }
    /**
     * Adds a demo store banner to the site if enabled.
     */
    function woocommerce_demo_store()
    {
    }
    /**
     * Page Title function.
     *
     * @param  bool $echo Should echo title.
     * @return string
     */
    function woocommerce_page_title($echo = \true)
    {
    }
    /**
     * Output the start of a product loop. By default this is a UL.
     *
     * @param bool $echo Should echo?.
     * @return string
     */
    function woocommerce_product_loop_start($echo = \true)
    {
    }
    /**
     * Output the end of a product loop. By default this is a UL.
     *
     * @param bool $echo Should echo?.
     * @return string
     */
    function woocommerce_product_loop_end($echo = \true)
    {
    }
    /**
     * Show the product title in the product loop. By default this is an H2.
     */
    function woocommerce_template_loop_product_title()
    {
    }
    /**
     * Show the subcategory title in the product loop.
     *
     * @param object $category Category object.
     */
    function woocommerce_template_loop_category_title($category)
    {
    }
    /**
     * Insert the opening anchor tag for products in the loop.
     */
    function woocommerce_template_loop_product_link_open()
    {
    }
    /**
     * Insert the opening anchor tag for products in the loop.
     */
    function woocommerce_template_loop_product_link_close()
    {
    }
    /**
     * Insert the opening anchor tag for categories in the loop.
     *
     * @param int|object|string $category Category ID, Object or String.
     */
    function woocommerce_template_loop_category_link_open($category)
    {
    }
    /**
     * Insert the closing anchor tag for categories in the loop.
     */
    function woocommerce_template_loop_category_link_close()
    {
    }
    /**
     * Show an archive description on taxonomy archives.
     */
    function woocommerce_taxonomy_archive_description()
    {
    }
    /**
     * Show a shop page description on product archives.
     */
    function woocommerce_product_archive_description()
    {
    }
    /**
     * Get the add to cart template for the loop.
     *
     * @param array $args Arguments.
     */
    function woocommerce_template_loop_add_to_cart($args = array())
    {
    }
    /**
     * Get the product thumbnail for the loop.
     */
    function woocommerce_template_loop_product_thumbnail()
    {
    }
    /**
     * Get the product price for the loop.
     */
    function woocommerce_template_loop_price()
    {
    }
    /**
     * Display the average rating in the loop.
     */
    function woocommerce_template_loop_rating()
    {
    }
    /**
     * Get the sale flash for the loop.
     */
    function woocommerce_show_product_loop_sale_flash()
    {
    }
    /**
     * Get the product thumbnail, or the placeholder if not set.
     *
     * @param string $size (default: 'woocommerce_thumbnail').
     * @param int    $deprecated1 Deprecated since WooCommerce 2.0 (default: 0).
     * @param int    $deprecated2 Deprecated since WooCommerce 2.0 (default: 0).
     * @return string
     */
    function woocommerce_get_product_thumbnail($size = 'woocommerce_thumbnail', $deprecated1 = 0, $deprecated2 = 0)
    {
    }
    /**
     * Output the result count text (Showing x - x of x results).
     */
    function woocommerce_result_count()
    {
    }
    /**
     * Output the product sorting options.
     */
    function woocommerce_catalog_ordering()
    {
    }
    /**
     * Output the pagination.
     */
    function woocommerce_pagination()
    {
    }
    /**
     * Output the product image before the single product summary.
     */
    function woocommerce_show_product_images()
    {
    }
    /**
     * Output the product thumbnails.
     */
    function woocommerce_show_product_thumbnails()
    {
    }
    /**
     * Get HTML for a gallery image.
     *
     * Woocommerce_gallery_thumbnail_size, woocommerce_gallery_image_size and woocommerce_gallery_full_size accept name based image sizes, or an array of width/height values.
     *
     * @since 3.3.2
     * @param int  $attachment_id Attachment ID.
     * @param bool $main_image Is this the main image or a thumbnail?.
     * @return string
     */
    function wc_get_gallery_image_html($attachment_id, $main_image = \false)
    {
    }
    /**
     * Output the product tabs.
     */
    function woocommerce_output_product_data_tabs()
    {
    }
    /**
     * Output the product title.
     */
    function woocommerce_template_single_title()
    {
    }
    /**
     * Output the product rating.
     */
    function woocommerce_template_single_rating()
    {
    }
    /**
     * Output the product price.
     */
    function woocommerce_template_single_price()
    {
    }
    /**
     * Output the product short description (excerpt).
     */
    function woocommerce_template_single_excerpt()
    {
    }
    /**
     * Output the product meta.
     */
    function woocommerce_template_single_meta()
    {
    }
    /**
     * Output the product sharing.
     */
    function woocommerce_template_single_sharing()
    {
    }
    /**
     * Output the product sale flash.
     */
    function woocommerce_show_product_sale_flash()
    {
    }
    /**
     * Trigger the single product add to cart action.
     */
    function woocommerce_template_single_add_to_cart()
    {
    }
    /**
     * Output the simple product add to cart area.
     */
    function woocommerce_simple_add_to_cart()
    {
    }
    /**
     * Output the grouped product add to cart area.
     */
    function woocommerce_grouped_add_to_cart()
    {
    }
    /**
     * Output the variable product add to cart area.
     */
    function woocommerce_variable_add_to_cart()
    {
    }
    /**
     * Output the external product add to cart area.
     */
    function woocommerce_external_add_to_cart()
    {
    }
    /**
     * Output the quantity input for add to cart forms.
     *
     * @param  array           $args Args for the input.
     * @param  WC_Product|null $product Product.
     * @param  boolean         $echo Whether to return or echo|string.
     *
     * @return string
     */
    function woocommerce_quantity_input($args = array(), $product = \null, $echo = \true)
    {
    }
    /**
     * Output the description tab content.
     */
    function woocommerce_product_description_tab()
    {
    }
    /**
     * Output the attributes tab content.
     */
    function woocommerce_product_additional_information_tab()
    {
    }
    /**
     * Add default product tabs to product pages.
     *
     * @param array $tabs Array of tabs.
     * @return array
     */
    function woocommerce_default_product_tabs($tabs = array())
    {
    }
    /**
     * Sort tabs by priority.
     *
     * @param array $tabs Array of tabs.
     * @return array
     */
    function woocommerce_sort_product_tabs($tabs = array())
    {
    }
    /**
     * Output the Review comments template.
     *
     * @param WP_Comment $comment Comment object.
     * @param array      $args Arguments.
     * @param int        $depth Depth.
     */
    function woocommerce_comments($comment, $args, $depth)
    {
    }
    /**
     * Display the review authors gravatar
     *
     * @param array $comment WP_Comment.
     * @return void
     */
    function woocommerce_review_display_gravatar($comment)
    {
    }
    /**
     * Display the reviewers star rating
     *
     * @return void
     */
    function woocommerce_review_display_rating()
    {
    }
    /**
     * Display the review authors meta (name, verified owner, review date)
     *
     * @return void
     */
    function woocommerce_review_display_meta()
    {
    }
    /**
     * Display the review content.
     */
    function woocommerce_review_display_comment_text()
    {
    }
    /**
     * Output the related products.
     */
    function woocommerce_output_related_products()
    {
    }
    /**
     * Output the related products.
     *
     * @param array $args Provided arguments.
     */
    function woocommerce_related_products($args = array())
    {
    }
    /**
     * Output product up sells.
     *
     * @param int    $limit (default: -1).
     * @param int    $columns (default: 4).
     * @param string $orderby Supported values - rand, title, ID, date, modified, menu_order, price.
     * @param string $order Sort direction.
     */
    function woocommerce_upsell_display($limit = '-1', $columns = 4, $orderby = 'rand', $order = 'desc')
    {
    }
    /**
     * Output the cart shipping calculator.
     *
     * @param string $button_text Text for the shipping calculation toggle.
     */
    function woocommerce_shipping_calculator($button_text = '')
    {
    }
    /**
     * Output the cart totals.
     */
    function woocommerce_cart_totals()
    {
    }
    /**
     * Output the cart cross-sells.
     *
     * @param  int    $limit (default: 2).
     * @param  int    $columns (default: 2).
     * @param  string $orderby (default: 'rand').
     * @param  string $order (default: 'desc').
     */
    function woocommerce_cross_sell_display($limit = 2, $columns = 2, $orderby = 'rand', $order = 'desc')
    {
    }
    /**
     * Output the proceed to checkout button.
     */
    function woocommerce_button_proceed_to_checkout()
    {
    }
    /**
     * Output the view cart button.
     */
    function woocommerce_widget_shopping_cart_button_view_cart()
    {
    }
    /**
     * Output the proceed to checkout button.
     */
    function woocommerce_widget_shopping_cart_proceed_to_checkout()
    {
    }
    /**
     * Output to view cart subtotal.
     *
     * @since 3.7.0
     */
    function woocommerce_widget_shopping_cart_subtotal()
    {
    }
    /**
     * Output the Mini-cart - used by cart widget.
     *
     * @param array $args Arguments.
     */
    function woocommerce_mini_cart($args = array())
    {
    }
    /**
     * Output the WooCommerce Login Form.
     *
     * @param array $args Arguments.
     */
    function woocommerce_login_form($args = array())
    {
    }
    /**
     * Output the WooCommerce Checkout Login Form.
     */
    function woocommerce_checkout_login_form()
    {
    }
    /**
     * Output the WooCommerce Breadcrumb.
     *
     * @param array $args Arguments.
     */
    function woocommerce_breadcrumb($args = array())
    {
    }
    /**
     * Output the Order review table for the checkout.
     *
     * @param bool $deprecated Deprecated param.
     */
    function woocommerce_order_review($deprecated = \false)
    {
    }
    /**
     * Output the Payment Methods on the checkout.
     */
    function woocommerce_checkout_payment()
    {
    }
    /**
     * Output the Coupon form for the checkout.
     */
    function woocommerce_checkout_coupon_form()
    {
    }
    /**
     * Check if we will be showing products or not (and not sub-categories only).
     *
     * @return bool
     */
    function woocommerce_products_will_display()
    {
    }
    /**
     * See what is going to display in the loop.
     *
     * @since 3.3.0
     * @return string Either products, subcategories, or both, based on current page.
     */
    function woocommerce_get_loop_display_mode()
    {
    }
    /**
     * Maybe display categories before, or instead of, a product loop.
     *
     * @since 3.3.0
     * @param string $loop_html HTML.
     * @return string
     */
    function woocommerce_maybe_show_product_subcategories($loop_html = '')
    {
    }
    /**
     * This is a legacy function which used to check if we needed to display subcats and then output them. It was called by templates.
     *
     * From 3.3 onwards this is all handled via hooks and the woocommerce_maybe_show_product_subcategories function.
     *
     * Since some templates have not updated compatibility, to avoid showing incorrect categories this function has been deprecated and will
     * return nothing. Replace usage with woocommerce_output_product_categories to render the category list manually.
     *
     * This is a legacy function which also checks if things should display.
     * Themes no longer need to call these functions. It's all done via hooks.
     *
     * @deprecated 3.3.1 @todo Add a notice in a future version.
     * @param array $args Arguments.
     * @return null|boolean
     */
    function woocommerce_product_subcategories($args = array())
    {
    }
    /**
     * Display product sub categories as thumbnails.
     *
     * This is a replacement for woocommerce_product_subcategories which also does some logic
     * based on the loop. This function however just outputs when called.
     *
     * @since 3.3.1
     * @param array $args Arguments.
     * @return boolean
     */
    function woocommerce_output_product_categories($args = array())
    {
    }
    /**
     * Get (and cache) product subcategories.
     *
     * @param int $parent_id Get subcategories of this ID.
     * @return array
     */
    function woocommerce_get_product_subcategories($parent_id = 0)
    {
    }
    /**
     * Show subcategory thumbnails.
     *
     * @param mixed $category Category.
     */
    function woocommerce_subcategory_thumbnail($category)
    {
    }
    /**
     * Displays order details in a table.
     *
     * @param mixed $order_id Order ID.
     */
    function woocommerce_order_details_table($order_id)
    {
    }
    /**
     * Displays order downloads in a table.
     *
     * @since 3.2.0
     * @param array $downloads Downloads.
     */
    function woocommerce_order_downloads_table($downloads)
    {
    }
    /**
     * Display an 'order again' button on the view order page.
     *
     * @param object $order Order.
     */
    function woocommerce_order_again_button($order)
    {
    }
    /**
     * Outputs a checkout/address form field.
     *
     * @param string $key Key.
     * @param mixed  $args Arguments.
     * @param string $value (default: null).
     * @return string
     */
    function woocommerce_form_field($key, $args, $value = \null)
    {
    }
    /**
     * Display product search form.
     *
     * Will first attempt to locate the product-searchform.php file in either the child or.
     * the parent, then load it. If it doesn't exist, then the default search form.
     * will be displayed.
     *
     * The default searchform uses html5.
     *
     * @param bool $echo (default: true).
     * @return string
     */
    function get_product_search_form($echo = \true)
    {
    }
    /**
     * Output the Auth header.
     */
    function woocommerce_output_auth_header()
    {
    }
    /**
     * Output the Auth footer.
     */
    function woocommerce_output_auth_footer()
    {
    }
    /**
     * Output placeholders for the single variation.
     */
    function woocommerce_single_variation()
    {
    }
    /**
     * Output the add to cart button for variations.
     */
    function woocommerce_single_variation_add_to_cart_button()
    {
    }
    /**
     * Output a list of variation attributes for use in the cart forms.
     *
     * @param array $args Arguments.
     * @since 2.4.0
     */
    function wc_dropdown_variation_attribute_options($args = array())
    {
    }
    /**
     * My Account content output.
     */
    function woocommerce_account_content()
    {
    }
    /**
     * My Account navigation template.
     */
    function woocommerce_account_navigation()
    {
    }
    /**
     * My Account > Orders template.
     *
     * @param int $current_page Current page number.
     */
    function woocommerce_account_orders($current_page)
    {
    }
    /**
     * My Account > View order template.
     *
     * @param int $order_id Order ID.
     */
    function woocommerce_account_view_order($order_id)
    {
    }
    /**
     * My Account > Downloads template.
     */
    function woocommerce_account_downloads()
    {
    }
    /**
     * My Account > Edit address template.
     *
     * @param string $type Address type.
     */
    function woocommerce_account_edit_address($type)
    {
    }
    /**
     * My Account > Downloads template.
     */
    function woocommerce_account_payment_methods()
    {
    }
    /**
     * My Account > Add payment method template.
     */
    function woocommerce_account_add_payment_method()
    {
    }
    /**
     * My Account > Edit account template.
     */
    function woocommerce_account_edit_account()
    {
    }
    /**
     * Handles the loop when no products were found/no product exist.
     */
    function wc_no_products_found()
    {
    }
    /**
     * Get HTML for the order items to be shown in emails.
     *
     * @param WC_Order $order Order object.
     * @param array    $args Arguments.
     *
     * @since 3.0.0
     * @return string
     */
    function wc_get_email_order_items($order, $args = array())
    {
    }
    /**
     * Display item meta data.
     *
     * @since  3.0.0
     * @param  WC_Order_Item $item Order Item.
     * @param  array         $args Arguments.
     * @return string|void
     */
    function wc_display_item_meta($item, $args = array())
    {
    }
    /**
     * Display item download links.
     *
     * @since  3.0.0
     * @param  WC_Order_Item $item Order Item.
     * @param  array         $args Arguments.
     * @return string|void
     */
    function wc_display_item_downloads($item, $args = array())
    {
    }
    /**
     * Get the shop sidebar template.
     */
    function woocommerce_photoswipe()
    {
    }
    /**
     * Outputs a list of product attributes for a product.
     *
     * @since  3.0.0
     * @param  WC_Product $product Product Object.
     */
    function wc_display_product_attributes($product)
    {
    }
    /**
     * Get HTML to show product stock.
     *
     * @since  3.0.0
     * @param  WC_Product $product Product Object.
     * @return string
     */
    function wc_get_stock_html($product)
    {
    }
    /**
     * Get HTML for ratings.
     *
     * @since  3.0.0
     * @param  float $rating Rating being shown.
     * @param  int   $count  Total number of ratings.
     * @return string
     */
    function wc_get_rating_html($rating, $count = 0)
    {
    }
    /**
     * Get HTML for star rating.
     *
     * @since  3.1.0
     * @param  float $rating Rating being shown.
     * @param  int   $count  Total number of ratings.
     * @return string
     */
    function wc_get_star_rating_html($rating, $count = 0)
    {
    }
    /**
     * Returns a 'from' prefix if you want to show where prices start at.
     *
     * @since  3.0.0
     * @return string
     */
    function wc_get_price_html_from_text()
    {
    }
    /**
     * Get logout endpoint.
     *
     * @since  2.6.9
     *
     * @param string $redirect Redirect URL.
     *
     * @return string
     */
    function wc_logout_url($redirect = '')
    {
    }
    /**
     * Show notice if cart is empty.
     *
     * @since 3.1.0
     */
    function wc_empty_cart_message()
    {
    }
    /**
     * Disable search engines indexing core, dynamic, cart/checkout pages.
     *
     * @since 3.2.0
     */
    function wc_page_noindex()
    {
    }
    /**
     * Get a slug identifying the current theme.
     *
     * @since 3.3.0
     * @return string
     */
    function wc_get_theme_slug_for_templates()
    {
    }
    /**
     * Gets and formats a list of cart item data + variations for display on the frontend.
     *
     * @since 3.3.0
     * @param array $cart_item Cart item object.
     * @param bool  $flat Should the data be returned flat or in a list.
     * @return string
     */
    function wc_get_formatted_cart_item_data($cart_item, $flat = \false)
    {
    }
    /**
     * Gets the url to remove an item from the cart.
     *
     * @since 3.3.0
     * @param string $cart_item_key contains the id of the cart item.
     * @return string url to page
     */
    function wc_get_cart_remove_url($cart_item_key)
    {
    }
    /**
     * Gets the url to re-add an item into the cart.
     *
     * @since 3.3.0
     * @param  string $cart_item_key Cart item key to undo.
     * @return string url to page
     */
    function wc_get_cart_undo_url($cart_item_key)
    {
    }
    /**
     * Outputs all queued notices on WC pages.
     *
     * @since 3.5.0
     */
    function woocommerce_output_all_notices()
    {
    }
    /**
     * Products RSS Feed.
     *
     * @deprecated 2.6
     */
    function wc_products_rss_feed()
    {
    }
    /**
     * Reset the loop's index and columns when we're done outputting a product loop.
     *
     * @deprecated 3.3
     */
    function woocommerce_reset_loop()
    {
    }
    /**
     * Output the reviews tab content.
     *
     * @deprecated 2.4.0 Unused.
     */
    function woocommerce_product_reviews_tab()
    {
    }
    /**
     * Parses and formats a date for ISO8601/RFC3339.
     *
     * Required WP 4.4 or later.
     * See https://developer.wordpress.org/reference/functions/mysql_to_rfc3339/
     *
     * @since  2.6.0
     * @param  string|null|WC_DateTime $date Date.
     * @param  bool                    $utc  Send false to get local/offset time.
     * @return string|null ISO8601/RFC3339 formatted datetime.
     */
    function wc_rest_prepare_date_response($date, $utc = \true)
    {
    }
    /**
     * Returns image mime types users are allowed to upload via the API.
     *
     * @since  2.6.4
     * @return array
     */
    function wc_rest_allowed_image_mime_types()
    {
    }
    /**
     * Upload image from URL.
     *
     * @since 2.6.0
     * @param string $image_url Image URL.
     * @return array|WP_Error Attachment data or error message.
     */
    function wc_rest_upload_image_from_url($image_url)
    {
    }
    /**
     * Set uploaded image as attachment.
     *
     * @since 2.6.0
     * @param array $upload Upload information from wp_upload_bits.
     * @param int   $id Post ID. Default to 0.
     * @return int Attachment ID
     */
    function wc_rest_set_uploaded_image_as_attachment($upload, $id = 0)
    {
    }
    /**
     * Validate reports request arguments.
     *
     * @since 2.6.0
     * @param mixed           $value   Value to valdate.
     * @param WP_REST_Request $request Request instance.
     * @param string          $param   Param to validate.
     * @return WP_Error|boolean
     */
    function wc_rest_validate_reports_request_arg($value, $request, $param)
    {
    }
    /**
     * Encodes a value according to RFC 3986.
     * Supports multidimensional arrays.
     *
     * @since 2.6.0
     * @param string|array $value The value to encode.
     * @return string|array       Encoded values.
     */
    function wc_rest_urlencode_rfc3986($value)
    {
    }
    /**
     * Check permissions of posts on REST API.
     *
     * @since 2.6.0
     * @param string $post_type Post type.
     * @param string $context   Request context.
     * @param int    $object_id Post ID.
     * @return bool
     */
    function wc_rest_check_post_permissions($post_type, $context = 'read', $object_id = 0)
    {
    }
    /**
     * Check permissions of users on REST API.
     *
     * @since 2.6.0
     * @param string $context   Request context.
     * @param int    $object_id Post ID.
     * @return bool
     */
    function wc_rest_check_user_permissions($context = 'read', $object_id = 0)
    {
    }
    /**
     * Check permissions of product terms on REST API.
     *
     * @since 2.6.0
     * @param string $taxonomy  Taxonomy.
     * @param string $context   Request context.
     * @param int    $object_id Post ID.
     * @return bool
     */
    function wc_rest_check_product_term_permissions($taxonomy, $context = 'read', $object_id = 0)
    {
    }
    /**
     * Check manager permissions on REST API.
     *
     * @since 2.6.0
     * @param string $object  Object.
     * @param string $context Request context.
     * @return bool
     */
    function wc_rest_check_manager_permissions($object, $context = 'read')
    {
    }
    /**
     * Check product reviews permissions on REST API.
     *
     * @since 3.5.0
     * @param string $context   Request context.
     * @param string $object_id Object ID.
     * @return bool
     */
    function wc_rest_check_product_reviews_permissions($context = 'read', $object_id = 0)
    {
    }
    /**
     * Returns the main instance of WC.
     *
     * @since  2.1
     * @return WooCommerce
     */
    function WC()
    {
    }
}