<?php
/**
 * Generated stub declarations for WooCommerce.
 * @see https://woocommerce.com
 * @see https://github.com/php-stubs/woocommerce-stubs
 */

namespace {
    /**
     * 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;
        /**
         * List of properties that were earlier managed by data store. However, since DataStore is a not a stored entity in itself, they used to store data in metadata of the data object.
         * With custom tables, some of these are moved from metadata to their own columns, but existing code will still try to add them to metadata. This array is used to keep track of such properties.
         *
         * Only reason to add a property here is that you are moving properties from DataStore instance to data object. If you are adding a new property, consider adding it to to $data array instead.
         *
         * @var array
         */
        protected $legacy_datastore_props = array();
        /**
         * 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 with a matching value.
         *
         * @since 7.7.0
         * @param string $key   Meta key.
         * @param mixed  $value Meta value. Entries will only be removed that match the value.
         */
        public function delete_meta_data_value($key, $value)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Helper method to compute meta cache key. Different from WP Meta cache key in that meta data cached using this key also contains meta_id column.
         *
         * @since 4.7.0
         *
         * @return string
         */
        public function get_meta_cache_key()
        {
        }
        /**
         * Generate cache key from id and group.
         *
         * @since 4.7.0
         *
         * @param int|string $id          Object ID.
         * @param string     $cache_group Group name use to store cache. Whole group cache can be invalidated in one go.
         *
         * @return string Meta cache key.
         */
        public static function generate_meta_cache_key($id, $cache_group)
        {
        }
        /**
         * Prime caches for raw meta data. This includes meta_id column as well, which is not included by default in WP meta data.
         *
         * @since 4.7.0
         *
         * @param array  $raw_meta_data_collection Array of objects of { object_id => array( meta_row_1, meta_row_2, ... }.
         * @param string $cache_group              Name of cache group.
         */
        public static function prime_raw_meta_data_cache($raw_meta_data_collection, $cache_group)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Helper function to initialize metadata entries from filtered raw meta data.
         *
         * @param array $filtered_meta_data Filtered metadata fetched from DB.
         */
        public function init_meta_data(array $filtered_meta_data = array())
        {
        }
        /**
         * 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 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())
        {
        }
    }
    /**
     * 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);
    }
    /**
     * 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)
        {
        }
        /**
         * Generates HTML for the 'safe_text' input type (mostly used for gateway-related settings).
         *
         * @param string $key Field key.
         * @param array  $data Field data.
         * @return string
         *
         * @since 7.6.0
         */
        public function generate_safe_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)
        {
        }
        /**
         * Sanitize 'Safe Text' fields.
         *
         * These fields are similar to regular text fields, but a much  smaller set of HTML tags are allowed. By default,
         * this means `<br>`, `<img>`, `<p>` and `<span>` tags.
         *
         * Note: this is a sanitization method, rather than a validation method (the name is due to some historic naming
         * choices).
         *
         * @param  string $key   Field key (currently unused).
         * @param  string $value Posted Value.
         *
         * @return string
         */
        public function validate_safe_text_field(string $key, ?string $value) : string
        {
        }
        /**
         * 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.
         *
         * @since 9.0.0 No longer allows storing IFRAME, which was allowed for "ShareThis" integration no longer found in core.
         * @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)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * Log Handler Interface
     *
     * @version 3.3.0
     * @package WooCommerce\Interface
     */
    /**
     * 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);
    }
    /**
     * 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)
        {
        }
        /**
         * Get a backtrace that shows where the logging function was called.
         *
         * @return array
         */
        protected static function get_backtrace()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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 4.4.0
         * @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 Type of address; '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 3.0
         *
         * @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()
        {
        }
    }
    /**
     * Trait WC_Item_Totals.
     *
     * Right now this do not have much, but plan is to eventually move all shared calculation logic between Orders and Cart in this file.
     *
     * @since 3.9.0
     */
    trait WC_Item_Totals
    {
        /**
         * Line items to calculate. Define in child class.
         *
         * @since 3.9.0
         * @param string $field Field name to calculate upon.
         *
         * @return array having `total`|`subtotal` property.
         */
        protected abstract function get_values_for_total($field);
        /**
         * Return rounded total based on settings. Will be used by Cart and Orders.
         *
         * @since 3.9.0
         *
         * @param array $values Values to round. Should be with precision.
         *
         * @return float|int Appropriately rounded value.
         */
        public static function get_rounded_items_total($values)
        {
        }
        /**
         * Apply rounding to item subtotal before summing.
         *
         * @since 3.9.0
         * @param float $value Item subtotal value.
         * @return float
         */
        public static function round_item_subtotal($value)
        {
        }
        /**
         * Should always round at subtotal?
         *
         * @since 3.9.0
         * @return bool
         */
        protected static function round_at_subtotal()
        {
        }
        /**
         * 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.
         * @param  bool  $in_cents Whether precision of value is in cents.
         * @return float
         */
        protected static function round_line_tax($value, $in_cents = \true)
        {
        }
    }
}
namespace Automattic\WooCommerce\Internal\CostOfGoodsSold {
    /**
     * Trait with general Cost of Goods Sold related functionality shared by the entire codebase.
     */
    trait CogsAwareTrait
    {
        /**
         * Check if the Cost of Goods Sold feature is enabled.
         *
         * @param string|null $doing_it_wrong_function_name If not null, a "doing it wrong" error will be thrown with this function name if the deature is disabled.
         *
         * @return bool True if the feature is enabled.
         */
        protected function cogs_is_enabled(?string $doing_it_wrong_function_name = null) : bool
        {
        }
    }
}
namespace {
    /**
     * WC_Abstract_Order class.
     */
    abstract class WC_Abstract_Order extends \WC_Abstract_Legacy_Order
    {
        use \WC_Item_Totals;
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * 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);
        /**
         * List of properties that were earlier managed by data store. However, since DataStore is a not a stored entity in itself, they used to store data in metadata of the data object.
         * With custom tables, some of these are moved from metadata to their own columns, but existing code will still try to add them to metadata. This array is used to keep track of such properties.
         *
         * Only reason to add a property here is that you are moving properties from DataStore instance to data object. If you are adding a new property, consider adding it to to $data array instead.
         *
         * @var array
         */
        protected $legacy_datastore_props = array('_recorded_coupon_usage_counts');
        /**
         * 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 wc_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)
        {
        }
        /**
         * This method overwrites the base class's clone method to make it a no-op. In base class WC_Data, we are unsetting the meta_id to clone.
         * It seems like this was done to avoid conflicting the metadata when duplicating products. However, doing that does not seems necessary for orders.
         * In-fact, when we do that for orders, we lose the capability to clone orders with custom meta data by caching plugins. This is because, when we clone an order object for caching, it will clone the metadata without the ID. Unfortunately, when this cached object with nulled meta ID is retrieved, WC_Data will consider it as a new meta and will insert it as a new meta-data causing duplicates.
         *
         * Eventually, we should move away from overwriting the __clone method in base class itself, since it's easily possible to still duplicate the product without having to hook into the __clone method.
         *
         * @since 7.6.0
         */
        public function __clone()
        {
        }
        /**
         * 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')
        {
        }
        /**
         * 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_paid($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_completed($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 including taxes, shipping cost, fees, and coupon discounts. 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. Order subtotal is the price of all items excluding taxes, fees, shipping cost, and coupon discounts.
         * If sale price is set on an item, the subtotal will include this sale discount. E.g. a product with a regular
         * price of $100 bought at a 50% discount will represent $50 of the subtotal for the order.
         *
         * @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()
        {
        }
        /**
         * Gets information about whether coupon counts were updated.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         *
         * @return bool True if coupon counts were updated, false otherwise.
         */
        public function get_recorded_coupon_usage_counts($context = 'view')
        {
        }
        /**
         * Get basic order data in array format.
         *
         * @return array
         */
        public function get_base_data()
        {
        }
        /**
         * Get info about the card used for payment in the order.
         *
         * @return array
         */
        public function get_payment_card_info()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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 = '')
        {
        }
        /**
         * Stores information about whether the coupon usage were counted.
         *
         * @param bool|string $value True if counted, false if not.
         *
         * @return void
         */
        public function set_recorded_coupon_usage_counts($value)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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)
        {
        }
        /**
         * Mappings of order item types to groups.
         *
         * @var array
         */
        protected array $item_types_to_group = array('line_item' => 'line_items', 'tax' => 'tax_lines', 'shipping' => 'shipping_lines', 'fee' => 'fee_lines', 'coupon' => 'coupon_lines');
        /**
         * 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 array of values for calculations.
         *
         * @param string $field Field name to return.
         *
         * @return array Array of values.
         */
        protected function get_values_for_total($field)
        {
        }
        /**
         * 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 compatibility 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)
        {
        }
        /**
         * Check and records coupon usage tentatively so that counts validation is correct. Display an error if coupon usage limit has been reached.
         *
         * If you are using this method, make sure to `release_held_coupons` in case an Exception is thrown.
         *
         * @throws Exception When not able to apply coupon.
         *
         * @param string $billing_email Billing email of order.
         */
        public function hold_applied_coupons($billing_email)
        {
        }
        /**
         * Hold coupon if a global usage limit is defined.
         *
         * @param WC_Coupon $coupon Coupon object.
         *
         * @return string    Meta key which indicates held coupon.
         * @throws Exception When can't be held.
         */
        private function hold_coupon($coupon)
        {
        }
        /**
         * Hold coupon if usage limit per customer is defined.
         *
         * @param WC_Coupon $coupon              Coupon object.
         * @param array     $user_ids_and_emails Array of user Id and emails to check for usage limit.
         * @param string    $user_alias          User ID or email to use to record current usage.
         *
         * @return string    Meta key which indicates held coupon.
         * @throws Exception When coupon can't be held.
         */
        private function hold_coupon_for_users($coupon, $user_ids_and_emails, $user_alias)
        {
        }
        /**
         * Helper method to get all aliases for current user and provide billing email.
         *
         * @param string $billing_email Billing email provided in form.
         *
         * @return array     Array of all aliases.
         * @throws Exception When validation fails.
         */
        private function get_billing_and_current_user_aliases($billing_email)
        {
        }
        /**
         * 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
         * @since 7.6.0 Returns a boolean indicating success.
         *
         * @param  string $code Coupon code.
         * @return bool TRUE if coupon was removed, FALSE otherwise.
         */
        public function remove_coupon($code)
        {
        }
        /**
         * Apply all coupons in this order again to all line items.
         * This method is public since WooCommerce 3.8.0.
         *
         * @since 3.2.0
         */
        public function recalculate_coupons()
        {
        }
        /**
         * Get a coupon object populated from order line item metadata, to be used when reapplying coupons
         * if the original coupon no longer exists.
         *
         * @since 8.7.0
         *
         * @param WC_Order_Item_Coupon $coupon_item The order item corresponding to the coupon to reapply.
         * @returns WC_Coupon Coupon object populated from order line item metadata, or empty if no such metadata exists (should never happen).
         */
        private function get_temporary_coupon(\WC_Order_Item_Coupon $coupon_item) : \WC_Coupon
        {
        }
        /**
         * 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
         */
        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())
        {
        }
        /**
         * Public wrapper for exposing get_tax_location() method, enabling 3rd parties to get the tax location for an order.
         *
         * @since 7.6.0
         * @param array $args array Override the location.
         * @return array
         */
        public function get_taxable_location($args = array())
        {
        }
        /**
         * Get tax rates for an order. Use order's shipping or billing address, defaults to base location.
         *
         * @param string $tax_class     Tax class to get rates for.
         * @param array  $location_args Location to compute rates for. Should be in form: array( country, state, postcode, city).
         * @param object $customer      Only used to maintain backward compatibility for filter `woocommerce-matched_rates`.
         *
         * @return mixed|void Tax rates.
         */
        protected function get_tax_rates($tax_class, $location_args = array(), $customer = \null)
        {
        }
        /**
         * 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())
        {
        }
        /**
         * Calculate fees for all line items.
         *
         * @return float Fee total.
         */
        public function get_total_fees()
        {
        }
        /**
         * Update tax lines for the order based on the line item taxes themselves.
         */
        public function update_taxes()
        {
        }
        /**
         * Helper function.
         * If you add all items in this order in cart again, this would be the cart subtotal (assuming all other settings are same).
         *
         * @return float Cart subtotal.
         */
        protected function get_cart_subtotal_for_order()
        {
        }
        /**
         * Helper function.
         * If you add all items in this order in cart again, this would be the cart total (assuming all other settings are same).
         *
         * @return float Cart total.
         */
        protected function get_cart_total_for_order()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get order title.
         *
         * @return string Order title.
         */
        public function get_title() : string
        {
        }
        /**
         * Indicates if the current order has an associated Cost of Goods Sold value.
         *
         * Derived classes representing orders that have a COGS value should override this method to return "true".
         *
         * @since 9.5.0
         *
         * @return bool True if this order has an associated Cost of Goods Sold value.
         */
        public function has_cogs()
        {
        }
        /**
         * Calculate the Cost of Goods Sold value and set it as the actual value for this order.
         *
         * @since 9.5.0
         *
         * @return float The calculated value.
         */
        public function calculate_cogs_total_value() : float
        {
        }
        /**
         * Core method to calculate the Cost of Goods Sold value for this order:
         * it doesn't check if COGS is enabled at class or system level, doesn't fire hooks, and doesn't set the value as the current one for the order.
         *
         * @return float The calculated value.
         */
        protected function calculate_cogs_total_value_core() : float
        {
        }
        /**
         * Get the value of the Cost of Goods Sold for this order.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will always return zero.
         *
         * @return float The current value for this order.
         */
        public function get_cogs_total_value() : float
        {
        }
        /**
         * Set the value of the Cost of Goods Sold for this order.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will have no effect.
         *
         * @param float $value The value to set for this order.
         *
         * @internal This method is intended for data store usage only, the value set here will be overridden by calculate_cogs_total_value.
         */
        public function set_cogs_total_value(float $value)
        {
        }
    }
    /**
     * 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 = '';
        /**
         * Pay button ID if supported.
         *
         * @var string
         */
        public $pay_button_id = '';
        /**
         * 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|null $order Order object.
         * @return string
         */
        public function get_return_url($order = \null)
        {
        }
        /**
         * Get a link to the transaction on the 3rd party gateway site (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()
        {
        }
        /**
         * Return the gateway's pay button ID.
         *
         * @since 3.9.0
         * @return string
         */
        public function get_pay_button_id()
        {
        }
        /**
         * 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|null $amount Refund amount.
         * @param  string     $reason Refund reason.
         * @return bool|\WP_Error 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()
        {
        }
        /**
         * Default payment fields display. Override this in your gateway to customize displayed fields.
         *
         * By default this renders the payment gateway description.
         *
         * @since 1.5.7
         */
        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 use 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()
        {
        }
    }
    /**
     * 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 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)
        {
        }
    }
    /**
     * 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
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * 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' => '', 'global_unique_id' => '', '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, 'cogs_value' => 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).
         *
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_sku($context = 'view')
        {
        }
        /**
         * Get Unique ID.
         *
         * @since 9.1.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_global_unique_id($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 global_unique_id
         *
         * @since 9.1.0
         * @param string $global_unique_id Unique ID.
         */
        public function set_global_unique_id($global_unique_id)
        {
        }
        /**
         * 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 unique 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.
         *
         * @throws WC_Data_Exception If an error relating to one of the downloads is encountered.
         *
         * @param array $downloads_array Array of WC_Product_Download objects or arrays.
         *
         * @since 3.0.0
         */
        public function set_downloads($downloads_array)
        {
        }
        /**
         * Takes an array of downloadable file representations and converts it into an array of
         * WC_Product_Download objects, indexed by download ID.
         *
         * @param array[]|WC_Product_Download[] $downloads Download data to be re-mapped.
         *
         * @return WC_Product_Download[]
         */
        private function build_downloads_map(array $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()
        {
        }
        /**
         * Do any extra processing needed before the actual product save
         * (but after triggering the 'woocommerce_before_..._object_save' action)
         *
         * @return mixed A state value that will be passed to after_data_store_save_or_update.
         */
        protected function before_data_store_save_or_update()
        {
        }
        /**
         * Do any extra processing needed after the actual product save
         * (but before triggering the 'woocommerce_after_..._object_save' action)
         *
         * @param mixed $state The state object that was returned by before_data_store_save_or_update.
         */
        protected function after_data_store_save_or_update($state)
        {
        }
        /**
         * Delete the product, set its ID to 0, and return result.
         *
         * @param  bool $force_delete Should the product be deleted permanently.
         * @return bool result
         */
        public function delete($force_delete = \false)
        {
        }
        /**
         * If this is a child product, queue its parent for syncing at the end of the request.
         */
        protected function maybe_defer_product_sync()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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 whether or not the product is visible in the catalog (doesn't trigger filters).
         *
         * @return bool
         */
        protected function is_visible_core()
        {
        }
        /**
         * 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 aria-describedby description for the add to cart button.
         *
         * @return string
         */
        public function add_to_cart_aria_describedby()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Set the defined value of the Cost of Goods Sold for this product.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will have no effect.
         *
         * @param float $value The value to set for this product.
         */
        public function set_cogs_value(float $value) : void
        {
        }
        /**
         * Get the defined value of the Cost of Goods Sold for this product.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will always return zero.
         *
         * @return float The current value for this product.
         */
        public function get_cogs_value() : float
        {
        }
        /**
         * Get the effective value of the Cost of Goods Sold for this product.
         * (the final, actual monetary value).
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will always return zero.
         *
         * @return float The effective value for this product.
         */
        public function get_cogs_effective_value() : float
        {
        }
        /**
         * Core method to get the effective value of the Cost of Goods Sold for this product.
         * (the final, actual monetary value).
         *
         * Derived classes can override this method to provide an alternative way
         * of calculating the effective value from the defined value,
         * see for example the WC_Product_Variation class.
         *
         * @return float The effective value for this product.
         */
        protected function get_cogs_effective_value_core() : float
        {
        }
        /**
         * Get the effective total value of the Cost of Goods Sold for this product
         * (the monetary value that will be applied to orders and used for analytics purposes).
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will always return zero.
         *
         * @return float The effective total value for this product.
         */
        public function get_cogs_total_value() : float
        {
        }
        /**
         * Core function to get the effective total value of the Cost of Goods Sold for this product.
         *
         * Derived classes can override this method to provide an alternative way
         * of calculating the total effective value from the single effective value
         * and/or the defined value.
         *
         * @return float The effective total value for this product.
         */
        protected function get_cogs_total_value_core() : float
        {
        }
    }
    /**
     * 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 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();
        /**
         * Shipping method order.
         *
         * @var int
         */
        public $method_order;
        /**
         * Whether the shipping method has settings or not. Preferably, use {@see has_settings()} instead.
         *
         * @var bool
         */
        public $has_settings;
        /**
         * When the method supports the settings modal, this is the admin settings HTML.
         * Preferably, use {@see get_admin_options_html()} instead.
         *
         * @var string|bool
         */
        public $settings_html;
        /**
         * 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()
        {
        }
    }
    /**
     * 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 = '')
        {
        }
    }
    /**
     * 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 array|WP_Error
         */
        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()
        {
        }
    }
    /**
     * WC_Admin_Addons Class.
     */
    class WC_Admin_Addons
    {
        /**
         * Fetch featured products from WCCOM's the Featured 3.0 Endpoint and cache the data for a day.
         *
         * @return array|WP_Error
         */
        public static function fetch_featured()
        {
        }
        /**
         * Check if the error is due to an SSL error
         *
         * @param string $error_message Error message.
         *
         * @return bool True if SSL error, false otherwise
         */
        public static function is_ssl_error($error_message)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * 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 = '')
        {
        }
        /**
         * Process requests to legacy marketplace menu and redirect to correct in-app pages.
         *
         * @return void
         */
        public static function handle_legacy_marketplace_redirects()
        {
        }
        /**
         * We're displaying page=wc-addons and page=wc-addons&section=helper as two separate pages.
         * When we're on those pages, add body classes to distinguishe them.
         *
         * @param string $admin_body_class Unfiltered body class.
         *
         * @return string Body class with added class for Marketplace or My Subscriptions page.
         */
        public static function filter_admin_body_classes(string $admin_body_class = '') : string
        {
        }
        /**
         * Take an action object and return the URL based on properties of the action.
         *
         * @param object $action Action object.
         * @return string URL.
         */
        public static function get_action_url($action) : string
        {
        }
        /**
         * Retrieves the locale data from a transient.
         *
         * Transient value is an array of locale data in the following format:
         * array(
         *    'en_US' => ...,
         *    'fr_FR' => ...,
         * )
         *
         * If the transient does not exist, does not have a value, or has expired,
         * then the return value will be false.
         *
         * @param string $transient Transient name. Expected to not be SQL-escaped.
         * @param string $locale  Locale to retrieve.
         * @return mixed Value of transient.
         */
        private static function get_locale_data_from_transient($transient, $locale)
        {
        }
        /**
         * Sets the locale data in a transient.
         *
         * Transient value is an array of locale data in the following format:
         * array(
         *    'en_US' => ...,
         *    'fr_FR' => ...,
         * )
         *
         * @param string $transient  Transient name. Expected to not be SQL-escaped.
         *                           Must be 172 characters or fewer in length.
         * @param mixed  $value      Transient value. Must be serializable if non-scalar.
         *                           Expected to not be SQL-escaped.
         * @param string $locale  Locale to set.
         * @param int    $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
         * @return bool True if the value was set, false otherwise.
         */
        private static function set_locale_data_in_transient($transient, $value, $locale, $expiration = 0)
        {
        }
        /**
         * Make wp_safe_remote_get request to WooCommerce.com endpoint.
         * Optionally pass user auth token, locale or country.
         *
         * @param string $url     URL to request.
         * @param ?array $options Options for the request. For example, to pass auth token, locale and country,
         *                        pass array( 'auth' => true, 'locale' => true, 'country' => true, ).
         *
         * @return array|WP_Error
         */
        public static function fetch($url, $options = array())
        {
        }
    }
    /**
     * 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_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_Assets Class.
     */
    class WC_Admin_Assets
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Enqueue styles.
         */
        public function admin_styles()
        {
        }
        /**
         * Enqueue scripts.
         */
        public function admin_scripts()
        {
        }
        /**
         * Enqueue a script in the block editor.
         * Similar to `WCAdminAssets::register_script()` but without enqueuing unnecessary dependencies.
         *
         * @return void
         */
        private function enqueue_block_editor_script($script_path_name, $script_name)
        {
        }
        /**
         * Enqueue block editor assets.
         *
         * @return void
         */
        public function enqueue_block_editor_assets()
        {
        }
        /**
         * Helper function to determine whether the current screen is an order edit screen.
         *
         * @param string $screen_id Screen ID.
         *
         * @return bool Whether the current screen is an order edit screen.
         */
        private function is_order_meta_box_screen($screen_id)
        {
        }
    }
    /**
     * WC_Admin_Attributes Class.
     */
    class WC_Admin_Attributes
    {
        /**
         * Edited attribute ID.
         *
         * @var int
         */
        private static $edited_attribute_id;
        /**
         * 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_Brands_Admin class.
     */
    class WC_Brands_Admin
    {
        /**
         * Settings array (Deprecated).
         *
         * @var array
         */
        public $settings_tabs;
        /**
         * Settings form fields (Deprecated).
         *
         * @var array
         */
        private $settings;
        /**
         * Admin fields.
         *
         * @var array
         */
        public $fields = array();
        /**
         * __construct function.
         */
        public function __construct()
        {
        }
        /**
         * Add the settings for the new "Brands" subtab.
         *
         * @since  9.4.0
         *
         * @param array $settings Settings.
         * @param array $current_section Current section.
         */
        public function add_settings_section($settings, $current_section)
        {
        }
        /**
         * Add a new "Brands" subtab to the "Products" tab.
         *
         * @since  9.4.0
         * @param array $sections Sections.
         */
        public function add_settings_tab($sections)
        {
        }
        /**
         * Display coupon filter fields relating to brands.
         *
         * @since  9.4.0
         * @return  void
         */
        public function add_coupon_brands_fields()
        {
        }
        /**
         * Save coupon filter fields relating to brands.
         *
         * @since  9.4.0
         * @param int $post_id Post ID.
         * @return  void
         */
        public function save_coupon_brands($post_id)
        {
        }
        /**
         * Prepare form fields to be used in the various tabs.
         */
        public function init_form_fields()
        {
        }
        /**
         * Enqueue scripts.
         *
         * @return void
         */
        public function scripts()
        {
        }
        /**
         * Enqueue styles.
         *
         * @return void
         */
        public function styles()
        {
        }
        /**
         * Admin settings function.
         */
        public function admin_settings()
        {
        }
        /**
         * Save admin settings function.
         */
        public function save_admin_settings()
        {
        }
        /**
         * Category thumbnails.
         */
        public function add_thumbnail_field()
        {
        }
        /**
         * Edit thumbnail field row.
         *
         * @param WP_Term $term     Current taxonomy term object.
         */
        public function edit_thumbnail_field($term)
        {
        }
        /**
         * Saves thumbnail field.
         *
         * @param int $term_id Term ID.
         *
         * @return void
         */
        public function thumbnail_field_save($term_id)
        {
        }
        /**
         * Description for brand page.
         */
        public function taxonomy_description()
        {
        }
        /**
         * Sort brands function.
         *
         * @param array $sortable Sortable array.
         */
        public function sort_brands($sortable)
        {
        }
        /**
         * Add brands column in second-to-last position.
         *
         * @since 9.4.0
         * @param mixed $columns Columns.
         * @return array
         */
        public function product_columns($columns)
        {
        }
        /**
         * Columns function.
         *
         * @param mixed $columns Columns.
         */
        public function columns($columns)
        {
        }
        /**
         * Column function.
         *
         * @param mixed $columns Columns.
         * @param mixed $column Column.
         * @param mixed $id ID.
         */
        public function column($columns, $column, $id)
        {
        }
        /**
         * Renders either dropdown or a search field for brands depending on the threshold value of
         * woocommerce_product_brand_filter_threshold filter.
         */
        public function render_product_brand_filter()
        {
        }
        /**
         * Add brand base permalink setting.
         */
        public function add_brand_base_setting()
        {
        }
        /**
         * Add a slug input box.
         */
        public function product_brand_slug_input()
        {
        }
        /**
         * Save permalnks settings.
         *
         * We need to save the options ourselves;
         * settings api does not trigger save for the permalinks page.
         */
        public function save_permalink_settings()
        {
        }
        /**
         * Validate the product base.
         *
         * Must have an additional slug, not just the brand as the base.
         *
         * @param array $value Value.
         */
        public function validate_product_base($value)
        {
        }
        /**
         * Add csv column for importing/exporting.
         *
         * @param  array $options Mapping options.
         * @return array $options
         */
        public function add_column_to_importer_exporter($options)
        {
        }
        /**
         * Add default column mapping.
         *
         * @param  array $mappings Mappings.
         * @return array $mappings
         */
        public function add_default_column_mapping($mappings)
        {
        }
        /**
         * Add brands to newly imported product.
         *
         * @param WC_Product $product Product being imported.
         * @param array      $data    Raw CSV data.
         */
        public function process_import($product, $data)
        {
        }
        /**
         * Parse brands field from a CSV during import.
         *
         * Based on WC_Product_CSV_Importer::parse_categories_field()
         *
         * @param string $value Field value.
         * @return array
         */
        public function parse_brands_field($value)
        {
        }
        /**
         * Get brands column value for csv export.
         *
         * @param string     $value   What will be exported.
         * @param WC_Product $product Product being exported.
         * @return string    Brands separated by commas and child brands as "parent > child".
         */
        public function get_column_value_brand_ids($value, $product)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * WC_Admin_Dashboard_Setup Class.
     */
    class WC_Admin_Dashboard_Setup
    {
        /**
         * Check for task list initialization.
         */
        private $initalized = \false;
        /**
         * The task list.
         */
        private $task_list = \null;
        /**
         * The tasks.
         */
        private $tasks = \null;
        /**
         * # of completed tasks.
         *
         * @var int
         */
        private $completed_tasks_count = 0;
        /**
         * WC_Admin_Dashboard_Setup constructor.
         */
        public function __construct()
        {
        }
        /**
         * Render meta box output.
         */
        public function render()
        {
        }
        /**
         * Get the button link for a given task.
         *
         * @param Task $task Task.
         * @return string
         */
        public function get_button_link($task)
        {
        }
        /**
         * Get the task list.
         *
         * @return array
         */
        public function get_task_list()
        {
        }
        /**
         * Set the task list.
         */
        public function set_task_list($task_list)
        {
        }
        /**
         * Get the tasks.
         *
         * @return array
         */
        public function get_tasks()
        {
        }
        /**
         * Return # of completed tasks
         *
         * @return integer
         */
        public function get_completed_tasks_count()
        {
        }
        /**
         * Get the next task.
         *
         * @return array|null
         */
        private function get_next_task()
        {
        }
        /**
         * Check to see if we should display the widget
         *
         * @return bool
         */
        public function should_display_widget()
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Check to see if we should display the widget.
         *
         * @return bool
         */
        private function should_display_widget()
        {
        }
        /**
         * Get top seller from DB.
         *
         * @return object
         */
        private function get_top_seller()
        {
        }
        /**
         * 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.
         *
         * @param string $lowstock_link Low stock link.
         * @param string $outofstock_link Out of stock link.
         */
        private function status_widget_stock_rows($lowstock_link, $outofstock_link)
        {
        }
        /**
         * Recent reviews widget.
         */
        public function recent_reviews()
        {
        }
        /**
         * Network orders widget.
         */
        public function network_orders()
        {
        }
        /**
         * Gets the sales performance data from the new WooAdmin store.
         *
         * @return stdClass|WP_Error|WP_REST_Response
         */
        private function get_wc_admin_performance_data()
        {
        }
        /**
         * Prepares the data for 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. Default to 7 days.
         * @param  string $type Type of sparkline to get. Ignored if ID is not set.
         * @return array
         */
        private function get_sales_sparkline($id = '', $days = 7, $type = 'sales')
        {
        }
        /**
         * Prepares the markup for a sparkline to show sales in the last X days with the given data.
         *
         * @param  string $type Type of sparkline to form the markup.
         * @param  int    $days Days of stats to form the markup.
         * @param  int    $total Total income or items sold to form the markup.
         * @param  array  $sparkline_data Sparkline data to form the markup.
         * @return string
         */
        private function sales_sparkline_markup($type, $days, $total, $sparkline_data)
        {
        }
    }
    /**
     * 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 The product to duplicate.
         * @return WC_Product The duplicate.
         */
        public function product_duplicate($product)
        {
        }
        /**
         * Get a product from the database to duplicate.
         *
         * @deprecated 3.0.0
         * @param mixed $id The ID of the product to duplicate.
         * @return object|bool
         * @see duplicate_product
         */
        private function get_product_to_duplicate($id)
        {
        }
        /**
         * Generates a unique slug for a given product. We do this so that we can override the
         * behavior of wp_unique_post_slug(). The normal slug generation will run single
         * select queries on every non-unique slug, resulting in very bad performance.
         *
         * @param WC_Product $product The product to generate a slug for.
         * @since 3.9.0
         */
        private function generate_unique_slug($product)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Gets the product types that can be exported.
         *
         * @since 5.1.0
         * @return array The product types keys and labels.
         */
        public static function get_product_types()
        {
        }
    }
    /**
     * WC_Admin_Help Class.
     */
    class WC_Admin_Help
    {
        /**
         * Hook in tabs.
         */
        public function __construct()
        {
        }
        /**
         * Add help tabs.
         */
        public function add_tabs()
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Track importer/exporter view.
         *
         * @return void
         */
        public function track_importer_exporter_view()
        {
        }
    }
    class WC_Admin_Log_Table_List extends \WP_List_Table
    {
        /**
         * The key for the user option of how many list table items to display per page.
         *
         * @const string
         */
        public const PER_PAGE_USER_OPTION_KEY = 'woocommerce_status_log_items_per_page';
        /**
         * Initialize the log table list.
         */
        public function __construct()
        {
        }
        /**
         * Display level dropdown
         *
         * @global wpdb $wpdb
         */
        public function level_dropdown()
        {
        }
        /**
         * Generates the table rows.
         *
         * @return void
         */
        public function display_rows()
        {
        }
        /**
         * Render the additional table row that contains extra log context data.
         *
         * @param array $log Log entry data.
         *
         * @return void
         */
        protected function context_row($log)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Context column.
         *
         * @param array $log Log entry data.
         *
         * @return string
         */
        public function column_context($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()
        {
        }
        /**
         * Helper to get the default value for the per_page arg.
         *
         * @return int
         */
        public function get_per_page_default() : int
        {
        }
    }
    /**
     * WC_Admin_Marketplace_Promotions class.
     */
    class WC_Admin_Marketplace_Promotions
    {
        const CRON_NAME = 'woocommerce_marketplace_cron_fetch_promotions';
        const TRANSIENT_NAME = 'woocommerce_marketplace_promotions_v2';
        const TRANSIENT_LIFE_SPAN = \DAY_IN_SECONDS;
        const PROMOTIONS_API_URL = 'https://woocommerce.com/wp-json/wccom-extensions/3.0/promotions';
        /**
         * The user's locale, for example en_US.
         *
         * @var string
         */
        public static string $locale;
        /**
         * On all admin pages, try go get Marketplace promotions every day.
         * Shows notice and adds menu badge to WooCommerce Extensions item
         * if the promotions API requests them.
         *
         * WC_Admin calls this method when it is instantiated during
         * is_admin requests.
         *
         * @return void
         */
        public static function init()
        {
        }
        /**
         * Schedule a daily cron event to fetch promotions.
         *
         * @version 9.5.0
         *
         * @return void
         */
        private static function schedule_cron_event()
        {
        }
        /**
         * Fetch promotions from the API and store them in a transient.
         *
         * @return void
         */
        public static function update_promotions()
        {
        }
        /**
         * Get active Marketplace promotions from the transient.
         * Use `woocommerce_marketplace_suppress_promotions` filter to suppress promotions.
         *
         * @since 9.0
         */
        public static function get_active_promotions()
        {
        }
        /**
         * Get promotions to show in the Woo in-app marketplace and load them into a transient
         * with a 12-hour life. Run as a recurring scheduled action.
         *
         * @return array
         */
        private static function fetch_marketplace_promotions()
        {
        }
        /**
         * If there's an active promotion of the format `menu_bubble`,
         * add a filter to show a bubble on the Extensions item in the
         * WooCommerce menu.
         *
         * Use `woocommerce_marketplace_suppress_promotions` filter to suppress the bubble.
         *
         * @return void
         * @throws Exception  If we are unable to create a DateTime from the date_to_gmt.
         */
        private static function maybe_show_bubble_promotions()
        {
        }
        /**
         * From the array of promotions, select those of a given format.
         *
         * @param ?array  $promotions  Array of data about promotions of all formats.
         * @param ?string $format      Format we want to filter for.
         *
         * @return array
         */
        private static function get_promotions_of_format($promotions = array(), $format = '') : array
        {
        }
        /**
         * Find promotions that are still active – they have a date range that
         * includes the current date.
         *
         * @param ?array $promotions  Data about current promotions.
         *
         * @return array
         */
        private static function filter_out_inactive_promotions($promotions = array())
        {
        }
        /**
         * Promos arrive in the array of promotions as an array of arrays with the key 'promos'.
         * We merge them into the main array.
         *
         * @param ?array $promotions  Promotions data received from WCCOM.
         *                            May have an element with the key 'promos', which contains an array.
         *
         * @return array
         * */
        private static function merge_promos(?array $promotions = array()) : array
        {
        }
        /**
         * Callback for the `woocommerce_marketplace_menu_items` filter
         * in `Automattic\WooCommerce\Internal\Admin\Marketplace::get_marketplace_pages`.
         * At the moment, the Extensions page is the only page in `$menu_items`.
         * Adds a bubble to the menu item.
         *
         * @param array  $menu_items  Arrays representing items in nav menu.
         * @param ?array $promotion   Data about a promotion from the WooCommerce.com API.
         *
         * @return array
         */
        public static function filter_marketplace_menu_items($menu_items, $promotion = array()) : array
        {
        }
        /**
         * Return the markup for a menu item bubble with a given text.
         *
         * @param string $menu_item_text Text of menu item we want to change.
         * @param string $bubble_text    Text of bubble.
         *
         * @return string
         */
        private static function append_bubble(string $menu_item_text, string $bubble_text) : string
        {
        }
        /**
         * When WooCommerce is disabled, clear the WP Cron event we use to fetch promotions.
         *
         * @version 9.5.0
         *
         * @return void
         */
        public static function clear_cron_event()
        {
        }
        /**
         * Clear deprecated scheduled action that was used to fetch promotions in WooCommerce 8.8.
         * Replaced with a transient in WooCommerce 9.0.
         *
         * @return void
         */
        public static function clear_deprecated_scheduled_event()
        {
        }
        /**
         * We can't clear deprecated action from AS when it's running,
         * so we schedule a new single action to clear the deprecated
         * `woocommerce_marketplace_fetch_promotions` action.
         */
        public static function clear_deprecated_action()
        {
        }
    }
    /**
     * WC_Admin_Menus Class.
     */
    class WC_Admin_Menus
    {
        /**
         * The CSS classes used to hide the submenu items in navigation.
         *
         * @var string
         */
        const HIDE_CSS_CLASS = 'hide-if-js';
        /**
         * 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()
        {
        }
        /**
         * Check if the user can access the top-level WooCommerce item.
         */
        public static function can_view_woocommerce_menu_item()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Registers the wc-addons page within the WooCommerce menu.
         * Temporary measure till we convert the whole page to React.
         *
         * @return void
         */
        public function addons_my_subscriptions()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Link to the order admin list table from the main WooCommerce menu.
         *
         * @return void
         */
        public function orders_menu() : void
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Maybe add new management product experience.
         */
        public function maybe_add_new_product_management_experience()
        {
        }
        /**
         * Hide the submenu page based on slug and return the item that was hidden.
         *
         * Borrowed from Jetpack's Base_Admin_Menu class.
         *
         * Instead of actually removing the submenu item, a safer approach is to hide it and filter it in the API response.
         * In this manner we'll avoid breaking third-party plugins depending on items that no longer exist.
         *
         * A false|array value is returned to be consistent with remove_submenu_page() function
         *
         * @param string $menu_slug The parent menu slug.
         * @param string $submenu_slug The submenu slug that should be hidden.
         * @return false|array
         */
        public function hide_submenu_page($menu_slug, $submenu_slug)
        {
        }
        /**
         * Apply the hide-if-js CSS class to a submenu item.
         *
         * Borrowed from Jetpack's Base_Admin_Menu class.
         *
         * @param int    $index The position of a submenu item in the submenu array.
         * @param string $parent_slug The parent slug.
         * @param array  $item The submenu item.
         */
        public function hide_submenu_element($index, $parent_slug, $item)
        {
        }
    }
    /**
     * WC_Admin_Meta_Boxes.
     */
    class WC_Admin_Meta_Boxes
    {
        /**
         * Name of the option used to store errors to be displayed at the next suitable opportunity.
         *
         * @since 6.5.0
         */
        public const ERROR_STORE = 'woocommerce_meta_box_errors';
        /**
         * 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.
         *
         * Note that calling this will overwrite any errors that have already been stored via the Options API.
         * Unless you are sure you want this, consider using the append_to_error_store() method instead.
         */
        public function save_errors()
        {
        }
        /**
         * If additional errors have been added in the current request (ie, via the add_error() method) then they
         * will be added to the persistent error store via the Options API.
         *
         * @since 6.5.0
         */
        public function append_to_error_store()
        {
        }
        /**
         * Show any stored error messages.
         */
        public function output_errors()
        {
        }
        /**
         * Add WC Meta boxes.
         */
        public function add_meta_boxes()
        {
        }
        /**
         * Add default sort order for meta boxes on product page.
         */
        public function add_product_boxes_sort_order()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Remove irrelevant block templates from the list of available templates for products.
         * This will also remove custom created templates.
         *
         * @param string[] $templates Array of template header names keyed by the template file name.
         *
         * @return string[] Templates array excluding block-based templates.
         */
        public function remove_block_templates($templates)
        {
        }
    }
}
namespace Automattic\WooCommerce\Internal\Traits {
    /**
     * This trait allows making private methods of a class accessible from outside.
     * This is useful to define hook handlers with the [$this, 'method'] or [__CLASS__, 'method'] syntax
     * without having to make the method public (and thus having to keep it forever for backwards compatibility).
     *
     * Example:
     *
     * class Foobar {
     *   use AccessiblePrivateMethods;
     *
     *   public function __construct() {
     *     self::add_action('some_action', [$this, 'handle_some_action']);
     *   }
     *
     *   public static function init() {
     *     self::add_filter('some_filter', [__CLASS__, 'handle_some_filter']);
     *   }
     *
     *   private function handle_some_action() {
     *   }
     *
     *   private static function handle_some_filter() {
     *   }
     * }
     *
     * For this to work the callback must be an array and the first element of the array must be either '$this', '__CLASS__',
     * or another instance of the same class; otherwise the method won't be marked as accessible
     * (but the corresponding WordPress 'add_action' and 'add_filter' functions will still be called).
     *
     * No special procedure is needed to remove hooks set up with these methods, the regular 'remove_action'
     * and 'remove_filter' functions provided by WordPress can be used as usual.
     */
    trait AccessiblePrivateMethods
    {
        //phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
        /**
         * List of instance methods marked as externally accessible.
         *
         * @var array
         */
        private $_accessible_private_methods = array();
        /**
         * List of static methods marked as externally accessible.
         *
         * @var array
         */
        private static $_accessible_static_private_methods = array();
        //phpcs:enable PSR2.Classes.PropertyDeclaration.Underscore
        /**
         * Register a WordPress action.
         * If the callback refers to a private or protected instance method in this class, the method is marked as externally accessible.
         *
         * $callback can be a standard callable, or a string representing the name of a method in this class.
         *
         * @param string          $hook_name       The name of the action to add the callback to.
         * @param callable|string $callback        The callback to be run when the action is called.
         * @param int             $priority        Optional. Used to specify the order in which the functions
         *                                         associated with a particular action are executed.
         *                                         Lower numbers correspond with earlier execution,
         *                                         and functions with the same priority are executed
         *                                         in the order in which they were added to the action. Default 10.
         * @param int             $accepted_args   Optional. The number of arguments the function accepts. Default 1.
         */
        protected static function add_action(string $hook_name, $callback, int $priority = 10, int $accepted_args = 1) : void
        {
        }
        /**
         * Register a WordPress filter.
         * If the callback refers to a private or protected instance method in this class, the method is marked as externally accessible.
         *
         * $callback can be a standard callable, or a string representing the name of a method in this class.
         *
         * @param string          $hook_name       The name of the filter to add the callback to.
         * @param callable|string $callback        The callback to be run when the filter is called.
         * @param int             $priority        Optional. Used to specify the order in which the functions
         *                                         associated with a particular filter are executed.
         *                                         Lower numbers correspond with earlier execution,
         *                                         and functions with the same priority are executed
         *                                         in the order in which they were added to the filter. Default 10.
         * @param int             $accepted_args   Optional. The number of arguments the function accepts. Default 1.
         */
        protected static function add_filter(string $hook_name, $callback, int $priority = 10, int $accepted_args = 1) : void
        {
        }
        /**
         * Do the required processing to a callback before invoking the WordPress 'add_action' or 'add_filter' function.
         *
         * @param callable $callback The callback to process.
         * @return void
         */
        protected static function process_callback_before_hooking($callback) : void
        {
        }
        /**
         * Register a private or protected instance method of this class as externally accessible.
         *
         * @param string $method_name Method name.
         * @return bool True if the method has been marked as externally accessible, false if the method doesn't exist.
         */
        protected function mark_method_as_accessible(string $method_name) : bool
        {
        }
        /**
         * Register a private or protected static method of this class as externally accessible.
         *
         * @param string $method_name Method name.
         * @return bool True if the method has been marked as externally accessible, false if the method doesn't exist.
         */
        protected static function mark_static_method_as_accessible(string $method_name) : bool
        {
        }
        /**
         * Undefined/inaccessible instance method call handler.
         *
         * @param string $name Called method name.
         * @param array  $arguments Called method arguments.
         * @return mixed
         * @throws \Error The called instance method doesn't exist or is private/protected and not marked as externally accessible.
         */
        public function __call($name, $arguments)
        {
        }
        /**
         * Undefined/inaccessible static method call handler.
         *
         * @param string $name Called method name.
         * @param array  $arguments Called method arguments.
         * @return mixed
         * @throws \Error The called static method doesn't exist or is private/protected and not marked as externally accessible.
         */
        public static function __callStatic($name, $arguments)
        {
        }
    }
}
namespace {
    /**
     * WC_Admin_Notices Class.
     */
    class WC_Admin_Notices
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * Local notices cache.
         *
         * DON'T manipulate this field directly!
         * Always use get_notices and set_notices instead.
         *
         * @var array
         */
        private static $notices = array();
        /**
         * Array of notices - name => callback.
         *
         * @var array
         */
        private static $core_notices = array('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', 'maxmind_license_key' => 'maxmind_missing_license_key_notice', 'redirect_download_method' => 'redirect_download_method_notice', 'uploads_directory_is_unprotected' => 'uploads_directory_is_unprotected_notice', 'base_tables_missing' => 'base_tables_missing_notice', 'download_directories_sync_complete' => 'download_directories_sync_complete');
        /**
         * Stores a flag indicating if the code is running in a multisite setup.
         *
         * @var bool
         */
        private static bool $is_multisite;
        /**
         * Initializes the class.
         */
        public static function init()
        {
        }
        /**
         * Parses query to create nonces when available.
         *
         * @deprecated 5.4.0
         * @param object $response The WP_REST_Response we're working with.
         * @return object $response The prepared WP_REST_Response object.
         */
        public static function prepare_note_with_nonce($response)
        {
        }
        /**
         * Store the locally cached notices to DB.
         */
        public static function store_notices()
        {
        }
        /**
         * Get the value of the locally cached notices array for the current site.
         *
         * @return array
         */
        public static function get_notices()
        {
        }
        /**
         * Set the locally cached notices array for the current site.
         *
         * @param array $notices New value for the locally cached notices array.
         */
        private static function set_notices(array $notices)
        {
        }
        /**
         * Remove all notices from the locally cached notices array.
         */
        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()
        {
        }
        /**
         * Add an admin notice about unsupported webhooks with Legacy API payload if at least one of these exist
         * and the Legacy REST API plugin is not installed.
         */
        private static function maybe_add_legacy_api_removal_notice()
        {
        }
        /**
         * Remove the admin notice about the unsupported webhooks if the Legacy REST API plugin is installed.
         */
        private static function maybe_remove_legacy_api_removal_notice()
        {
        }
        /**
         * Show a notice.
         *
         * @param string $name Notice name.
         * @param bool   $force_save Force saving inside this method instead of at the 'shutdown'.
         */
        public static function add_notice($name, $force_save = \false)
        {
        }
        /**
         * Remove a notice from being displayed.
         *
         * @param string $name Notice name.
         * @param bool   $force_save Force saving inside this method instead of at the 'shutdown'.
         */
        public static function remove_notice($name, $force_save = \false)
        {
        }
        /**
         * Remove a given set of notices.
         *
         * An array of notice names or a regular expression string can be passed, in the later case
         * all the notices whose name matches the regular expression will be removed.
         *
         * @param array|string $names_array_or_regex An array of notice names, or a string representing a regular expression.
         * @param bool         $force_save Force saving inside this method instead of at the 'shutdown'.
         * @return void
         */
        public static function remove_notices($names_array_or_regex, $force_save = \false)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Hide a single notice.
         *
         * @param string $name Notice name.
         */
        private static function hide_notice($name)
        {
        }
        /**
         * Check if a given user has dismissed a given admin notice.
         *
         * @since 8.5.0
         *
         * @param string   $name The name of the admin notice to check.
         * @param int|null $user_id User id, or null for the current user.
         * @return bool True if the user has dismissed the notice.
         */
        public static function user_has_dismissed_notice(string $name, ?int $user_id = \null) : bool
        {
        }
        /**
         * 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 the database, include a message with the DB update button.
         */
        public static function update_notice()
        {
        }
        /**
         * If we have just installed, show a message with the install pages button.
         *
         * @deprecated 4.6.0
         */
        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()
        {
        }
        /**
         * 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.
         *
         * @deprecated 8.2.0 WordPress and PHP minimum requirements notices are no longer shown.
         *
         * @since 3.6.5
         * @return void
         */
        public static function wp_php_min_requirements_notice()
        {
        }
        /**
         * Add MaxMind missing license key notice.
         *
         * @since 3.9.0
         */
        public static function add_maxmind_missing_license_key_notice()
        {
        }
        /**
         *  Add notice about Redirect-only download method, nudging user to switch to a different method instead.
         */
        public static function add_redirect_download_method_notice()
        {
        }
        /**
         * Notice about the completion of the product downloads sync, with further advice for the site operator.
         */
        public static function download_directories_sync_complete()
        {
        }
        /**
         * Display MaxMind missing license key notice.
         *
         * @since 3.9.0
         */
        public static function maxmind_missing_license_key_notice()
        {
        }
        /**
         * Notice about Redirect-Only download method.
         *
         * @since 4.0
         */
        public static function redirect_download_method_notice()
        {
        }
        /**
         * Notice about uploads directory begin unprotected.
         *
         * @since 4.2.0
         */
        public static function uploads_directory_is_unprotected_notice()
        {
        }
        /**
         * Notice about base tables missing.
         */
        public static function base_tables_missing_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()
        {
        }
        /**
         * Check if uploads directory is protected.
         *
         * @since 4.2.0
         * @return bool
         */
        protected static function is_uploads_directory_protected()
        {
        }
    }
    /**
     * 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_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()
        {
        }
        /**
         * Pointers for creating a variable product.
         */
        public function create_variable_product_tutorial()
        {
        }
        /**
         * Pointers for accessing In-App Marketplace.
         */
        public function create_wc_addons_tutorial()
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Add messages when an order is updated.
         *
         * @param array $messages Array of messages.
         *
         * @return array
         */
        public function order_updated_messages(array $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)
        {
        }
        /**
         * Shows a warning when editing a password-protected coupon.
         *
         * @since 9.2.0
         */
        private function maybe_display_warning_for_password_protected_coupon()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * 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 3.3.0 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)
        {
        }
        /**
         * Apply product type constraints to stock status.
         *
         * @param WC_Product  $product The product whose stock status will be adjusted.
         * @param string|null $stock_status The stock status to use for adjustment, or null if no new stock status has been supplied in the request.
         * @return WC_Product The supplied product, or the synced product if it was a variable product.
         */
        private function maybe_update_stock_status($product, $stock_status)
        {
        }
        /**
         * Set the new regular or sale price if requested.
         *
         * @param WC_Product $product The product to set the new price for.
         * @param string     $price_type 'regular' or 'sale'.
         * @return bool true if a new price has been set, false otherwise.
         */
        private function set_new_price($product, $price_type)
        {
        }
        /**
         * Get the current request data ($_REQUEST superglobal).
         * This method is added to ease unit testing.
         *
         * @return array The $_REQUEST superglobal.
         */
        protected function request_data()
        {
        }
    }
    /**
     * 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_Admin_Reports Class.
     */
    class WC_Admin_Reports
    {
        /**
         * Register the proper hook handlers.
         */
        public static function register_hook_handlers()
        {
        }
        /**
         * Get an instance of WC_Admin_Report.
         *
         * @return WC_Admin_Report
         */
        public static function get_report_instance()
        {
        }
        /**
         * Filter handler for replacing the data of the status widget on the Dashboard page.
         *
         * @param array $status_widget_reports The data to display in the status widget.
         */
        public static function replace_dashboard_status_widget_reports($status_widget_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_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 through 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 through 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_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!');
        /**
         * The version of WordPress required to run the WooCommerce Admin plugin
         *
         * @var string
         */
        private $wc_admin_plugin_minimum_wordpress_version = '5.3';
        /**
         * Hook in tabs.
         *
         * @deprecated 4.6.0
         */
        public function __construct()
        {
        }
        /**
         * Add admin menus/screens.
         *
         * @deprecated 4.6.0
         */
        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.
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        protected function should_show_theme()
        {
        }
        /**
         * The "automated tax" extra should only be shown if the current user can
         * install plugins and the store is in a supported country.
         *
         * @deprecated 4.6.0
         */
        protected function should_show_automated_tax()
        {
        }
        /**
         * Should we show the MailChimp install option?
         * True only if the user can install plugins.
         *
         * @deprecated 4.6.0
         * @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.
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        protected function should_show_facebook()
        {
        }
        /**
         * Is the WooCommerce Admin actively included in the WooCommerce core?
         * Based on presence of a basic WC Admin function.
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        protected function is_wc_admin_active()
        {
        }
        /**
         * Should we show the WooCommerce Admin install option?
         * True only if the user can install plugins,
         * and is running the correct version of WordPress.
         *
         * @see WC_Admin_Setup_Wizard::$wc_admin_plugin_minimum_wordpress_version
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        protected function should_show_wc_admin()
        {
        }
        /**
         * Should we show the new WooCommerce Admin onboarding experience?
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        protected function should_show_wc_admin_onboarding()
        {
        }
        /**
         * Should we display the 'Recommended' step?
         * True if at least one of the recommendations will be displayed.
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        protected function should_show_recommended_step()
        {
        }
        /**
         * Register/enqueue scripts and styles for the Setup Wizard.
         *
         * Hooked onto 'admin_enqueue_scripts'.
         *
         * @deprecated 4.6.0
         */
        public function enqueue_scripts()
        {
        }
        /**
         * Show the setup wizard.
         *
         * @deprecated 4.6.0
         */
        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.
         *
         * @deprecated 4.6.0
         * @since 3.0.0
         */
        public function get_next_step_link($step = '')
        {
        }
        /**
         * Setup Wizard Header.
         *
         * @deprecated 4.6.0
         */
        public function setup_wizard_header()
        {
        }
        /**
         * Setup Wizard Footer.
         *
         * @deprecated 4.6.0
         */
        public function setup_wizard_footer()
        {
        }
        /**
         * Output the steps.
         *
         * @deprecated 4.6.0
         */
        public function setup_wizard_steps()
        {
        }
        /**
         * Output the content for the current step.
         *
         * @deprecated 4.6.0
         */
        public function setup_wizard_content()
        {
        }
        /**
         * Display's a prompt for users to try out the new improved WooCommerce onboarding experience in WooCommerce Admin.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_new_onboarding()
        {
        }
        /**
         * Installs WooCommerce admin and redirects to the new onboarding experience.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_new_onboarding_save()
        {
        }
        /**
         * Initial "store setup" step.
         * Location, product type, page setup, and tracking opt-in.
         */
        public function wc_setup_store_setup()
        {
        }
        /**
         * Template for the usage tracking modal.
         *
         * @deprecated 4.6.0
         */
        public function tracking_modal()
        {
        }
        /**
         * Save initial store settings.
         *
         * @deprecated 4.6.0
         */
        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
         *
         * @deprecated 4.6.0
         */
        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.
         *
         * @deprecated 4.6.0
         */
        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.
         *
         * @deprecated 4.6.0
         */
        protected function install_theme($theme_id)
        {
        }
        /**
         * Helper method to install Jetpack.
         *
         * @deprecated 4.6.0
         */
        protected function install_jetpack()
        {
        }
        /**
         * Helper method to install WooCommerce Services and its Jetpack dependency.
         *
         * @deprecated 4.6.0
         */
        protected function install_woocommerce_services()
        {
        }
        /**
         * Retrieve info for missing WooCommerce Services and/or Jetpack plugin.
         *
         * @deprecated 4.6.0
         * @return array
         */
        protected function get_wcs_requisite_plugins()
        {
        }
        /**
         * Plugin install info message markup with heading.
         *
         * @deprecated 4.6.0
         */
        public function plugin_install_info()
        {
        }
        /**
         * Get shipping methods based on country code.
         *
         * @param string $country_code Country code.
         * @param string $currency_code Currency code.
         *
         * @deprecated 4.6.0
         * @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.
         *
         * @deprecated 4.6.0
         */
        protected function shipping_method_selection_form($country_code, $currency_code, $input_prefix)
        {
        }
        /**
         * Render a product weight unit dropdown.
         *
         * @deprecated 4.6.0
         * @return string
         */
        protected function get_product_weight_selection()
        {
        }
        /**
         * Render a product dimension unit dropdown.
         *
         * @deprecated 4.6.0
         * @return string
         */
        protected function get_product_dimension_selection()
        {
        }
        /**
         * Shipping.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_shipping()
        {
        }
        /**
         * Save shipping options.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_shipping_save()
        {
        }
        /**
         * Is Stripe country supported
         * https://stripe.com/global .
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_stripe_supported_country($country_code)
        {
        }
        /**
         * Is PayPal currency supported.
         *
         * @param string $currency Currency code.
         * @return boolean
         *
         * @deprecated 4.6.0
         */
        protected function is_paypal_supported_currency($currency)
        {
        }
        /**
         * Is Klarna Checkout country supported.
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_klarna_checkout_supported_country($country_code)
        {
        }
        /**
         * Is Klarna Payments country supported.
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_klarna_payments_supported_country($country_code)
        {
        }
        /**
         * Is Square country supported
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_square_supported_country($country_code)
        {
        }
        /**
         * Is eWAY Payments country supported
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_eway_payments_supported_country($country_code)
        {
        }
        /**
         * Is ShipStation country supported
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_shipstation_supported_country($country_code)
        {
        }
        /**
         * Is WooCommerce Services shipping label country supported
         *
         * @param string $country_code Country code.
         *
         * @deprecated 4.6.0
         */
        protected function is_wcs_shipping_labels_supported_country($country_code)
        {
        }
        /**
         * Helper method to retrieve the current user's email address.
         *
         * @deprecated 4.6.0
         * @return string Email address
         */
        protected function get_current_user_email()
        {
        }
        /**
         * Array of all possible "in cart" gateways that can be offered.
         *
         * @deprecated 4.6.0
         * @return array
         */
        protected function get_wizard_available_in_cart_payment_gateways()
        {
        }
        /**
         * Simple array of "in cart" gateways to show in wizard.
         *
         * @deprecated 4.6.0
         * @return array
         */
        public function get_wizard_in_cart_payment_gateways()
        {
        }
        /**
         * Simple array of "manual" gateways to show in wizard.
         *
         * @deprecated 4.6.0
         * @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.
         *
         * @deprecated 4.6.0
         */
        public function display_service_item($item_id, $item_info)
        {
        }
        /**
         * Is it a featured service?
         *
         * @param array $service Service info array.
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        public function is_featured_service($service)
        {
        }
        /**
         * Is this a non featured service?
         *
         * @param array $service Service info array.
         *
         * @deprecated 4.6.0
         * @return boolean
         */
        public function is_not_featured_service($service)
        {
        }
        /**
         * Payment Step.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_payment()
        {
        }
        /**
         * Payment Step save.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_payment_save()
        {
        }
        protected function display_recommended_item($item_info)
        {
        }
        /**
         * Recommended step
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_recommended()
        {
        }
        /**
         * Recommended step save.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_recommended_save()
        {
        }
        /**
         * Go to the next step if Jetpack was connected.
         */
        protected function wc_setup_activate_actions()
        {
        }
        /**
         *
         * @deprecated 4.6.0
         */
        protected function wc_setup_activate_get_feature_list()
        {
        }
        /**
         *
         * @deprecated 4.6.0
         */
        protected function wc_setup_activate_get_feature_list_str()
        {
        }
        /**
         * Activate step.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_activate()
        {
        }
        /**
         *
         * @deprecated 4.6.0
         */
        protected function get_all_activate_errors()
        {
        }
        /**
         *
         * @deprecated 4.6.0
         */
        protected function get_activate_error_message($code = '')
        {
        }
        /**
         * Activate step save.
         *
         * Install, activate, and launch connection flow for Jetpack.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_activate_save()
        {
        }
        /**
         * Final step.
         *
         * @deprecated 4.6.0
         */
        public function wc_setup_ready()
        {
        }
    }
    /**
     * WC_Admin_Status Class.
     */
    class WC_Admin_Status
    {
        /**
         * An instance of the DB log handler list table.
         *
         * @var WC_Admin_Log_Table_List
         */
        private static $db_log_list_table;
        /**
         * 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()
        {
        }
        /**
         * Return a stored instance of the DB log list table class.
         *
         * @return WC_Admin_Log_Table_List
         */
        public static function get_db_log_list_table()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Prints table info if a base table is not present.
         */
        private static function output_tables_info()
        {
        }
        /**
         * Prints the information about plugins for the system status report.
         * Used for both active and inactive plugins sections.
         *
         * @param array $plugins List of plugins to display.
         * @param array $untested_plugins List of plugins that haven't been tested with the current WooCommerce version.
         * @return void
         */
        private static function output_plugins_info($plugins, $untested_plugins)
        {
        }
    }
    /**
     * 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, $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_Upload_Downloadable_Product Class.
     */
    class WC_Admin_Upload_Downloadable_Product
    {
        /**
         * Add hooks.
         */
        public function __construct()
        {
        }
        /**
         * Change upload dir for downloadable files.
         *
         * @param array $pathdata Array of paths.
         * @return array
         */
        public function upload_dir($pathdata)
        {
        }
        /**
         * Change filename for WooCommerce uploads and prepend unique chars for security.
         *
         * @param string $full_filename Original filename.
         * @param string $ext           Extension of file.
         * @param string $dir           Directory path.
         *
         * @return string New filename with unique hash.
         * @since 4.0
         */
        public function update_filename($full_filename, $ext, $dir)
        {
        }
        /**
         * Change filename to append random text.
         *
         * @param string $full_filename Original filename with extension.
         * @param string $ext           Extension.
         *
         * @return string Modified filename.
         */
        public function unique_filename($full_filename, $ext)
        {
        }
        /**
         * Run a filter when uploading a downloadable product.
         */
        public function woocommerce_media_upload_downloadable_product()
        {
        }
    }
    /**
     * Webhooks 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()
        {
        }
        /**
         * Get how many of the existing webhooks are configured to use the legacy payload format.
         *
         * @since 9.0.0
         *
         * @return int Count of existing webhooks are configured to use the legacy payload format.
         */
        public function get_legacy_api_webhooks_count()
        {
        }
        /**
         * Check if a given webhook is configured to use the legacy payload format.
         *
         * @param WC_Webhook $webhook Webhook object.
         * @return bool True if the webhook is configured to use the legacy payload format.
         */
        private function uses_legacy_rest_api($webhook)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Display a warning message if the Legacy REST API extension is not installed
         * and there are webhooks configured to use the legacy payload format.
         */
        private static function maybe_display_legacy_rest_api_warning()
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * 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.
         *
         * 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 Scheduled action post type registration args.
         *
         * @return array
         */
        public function disable_webhook_post_export($args)
        {
        }
        /**
         * Include admin classes.
         *
         * @since 4.2.0
         * @param string $classes Body classes string.
         * @return string
         */
        public function include_admin_body_class($classes)
        {
        }
    }
    /**
     * WC_Helper Class
     *
     * The main entry-point for all things related to the Helper.
     * The Helper manages the connection between the store and
     * an account on WooCommerce.com.
     */
    class WC_Helper_Admin
    {
        /**
         * Loads the class, runs on init
         *
         * @return void
         */
        public static function load()
        {
        }
        /**
         * Pushes settings onto the WooCommerce Admin global settings object (wcSettings).
         *
         * @param mixed $settings The settings object we're amending.
         *
         * @return mixed $settings
         */
        public static function add_marketplace_settings($settings)
        {
        }
        /**
         * Generates the URL for connecting or disconnecting the store to/from WooCommerce.com.
         * Approach taken from existing helper code that isn't exposed.
         *
         * @return string
         */
        public static function get_connection_url()
        {
        }
        /**
         * Registers the REST routes for the featured products endpoint.
         * This endpoint is used by the WooCommerce > Extensions > Discover
         * page.
         */
        public static function register_rest_routes()
        {
        }
        /**
         * The Extensions page can only be accessed by users with the manage_woocommerce
         * capability. So the API mimics that behavior.
         */
        public static function get_permission()
        {
        }
        /**
         * Fetch featured products from WooCommerce.com and serve them
         * as JSON.
         */
        public static function get_featured()
        {
        }
    }
    /**
     * WC_Helper_API Class
     *
     * Provides a communication interface with the WooCommerce.com Helper API.
     */
    class WC_Helper_API
    {
        /**
         * Base path for API routes.
         *
         * @var $api_base
         */
        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())
        {
        }
        /**
         * Create signature for a request.
         *
         * @param string $access_token_secret The access token secret.
         * @param string $url The URL to add the access token and signature to.
         * @param string $method The request method.
         * @param array  $body The body of the request.
         * @return string The signature.
         */
        private static function create_request_signature(string $access_token_secret, string $url, string $method, $body = \null) : string
        {
        }
        /**
         * Add the access token and signature to the provided URL.
         *
         * @param string $url The URL to add the access token and signature to.
         * @return string
         */
        public static function add_auth_parameters(string $url) : string
        {
        }
        /**
         * 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())
        {
        }
        /**
         * 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 put($endpoint, $args = array())
        {
        }
        /**
         * Using the API base, form a request URL from a given endpoint.
         *
         * @param string $endpoint The endpoint to request.
         * @param string $query_string Optional query string to append to the URL.
         *
         * @return string The absolute endpoint URL.
         */
        public static function url($endpoint, $query_string = '')
        {
        }
    }
    /**
     * 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_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_Orders_API
     *
     * Pings WooCommerce.com to create an order and pull in the necessary data to start the installation process.
     */
    class WC_Helper_Orders_API
    {
        /**
         * Loads the class, runs on init
         *
         * @return void
         */
        public static function load()
        {
        }
        /**
         * Registers the REST routes for the Marketplace Orders API.
         * These endpoints are used by the Marketplace Subscriptions React UI.
         */
        public static function register_rest_routes()
        {
        }
        /**
         * The Extensions page can only be accessed by users with the manage_woocommerce
         * capability. So the API mimics that behavior.
         *
         * @return bool
         */
        public static function get_permission()
        {
        }
        /**
         * Core function to create an order on WooCommerce.com. Pings the API and catches the exceptions if any.
         *
         * @param WP_REST_Request $request Request object.
         *
         * @return WP_REST_Response
         */
        public static function create_order($request)
        {
        }
    }
    /**
     * WC_Helper_Subscriptions_API
     *
     * The main entry-point for all things related to the Marketplace Subscriptions API.
     * The Subscriptions API manages WooCommerce.com Subscriptions.
     */
    class WC_Helper_Subscriptions_API
    {
        /**
         * Loads the class, runs on init
         *
         * @return void
         */
        public static function load()
        {
        }
        /**
         * Registers the REST routes for the Marketplace Subscriptions API.
         * These endpoints are used by the Marketplace Subscriptions React UI.
         */
        public static function register_rest_routes()
        {
        }
        /**
         * The Extensions page can only be accessed by users with the manage_woocommerce
         * capability. So the API mimics that behavior.
         */
        public static function get_permission()
        {
        }
        /**
         * Fetch subscriptions from WooCommerce.com and serve them
         * as JSON.
         */
        public static function get_subscriptions()
        {
        }
        /**
         * Refresh account and subscriptions from WooCommerce.com and serve subscriptions
         * as JSON.
         */
        public static function refresh()
        {
        }
        /**
         * Connect a WooCommerce.com subscription.
         *
         * @param WP_REST_Request $request Request object.
         */
        public static function connect($request)
        {
        }
        /**
         * Disconnect a WooCommerce.com subscription.
         *
         * @param WP_REST_Request $request Request object.
         */
        public static function disconnect($request)
        {
        }
        /**
         * Activate a WooCommerce.com product.
         * This activates the plugin/theme on the site.
         *
         * @param WP_REST_Request $request Request object.
         */
        public static function activate($request)
        {
        }
        /**
         * Get the install URL for a WooCommerce.com product.
         *
         * @param WP_REST_Request $request Request object.
         */
        public static function install_url($request)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Add the hook for modifying default WPCore update notices on the plugins management page.
         */
        public static function add_hook_for_modifying_update_notices()
        {
        }
        /**
         * Add the hook for modifying default WPCore update notices on the plugins management page.
         * This is for plugins with expired or expiring subscriptions.
         */
        public static function setup_message_for_expired_and_expiring_subscriptions()
        {
        }
        /**
         * Add the hook for modifying default WPCore update notices on the plugins management page.
         * This is for plugins without a subscription.
         */
        public static function setup_message_for_plugins_without_subscription()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Runs on load-plugins.php, adds a hook to show a custom plugin update message for WooCommerce.com hosted plugins.
         *
         * @return void.
         */
        public static function setup_update_plugins_messages()
        {
        }
        /**
         * Runs on in_plugin_update_message-{file-name}, show a message to connect to woocommerce.com for unconnected stores
         *
         * @return void.
         */
        public static function add_connect_woocom_plugin_message()
        {
        }
        /**
         * Runs on in_plugin_update_message-{file-name}, show a message to install the Woo Marketplace plugin, on plugin update notification,
         * if the Woo Marketplace plugin isn't already installed.
         *
         * @param object $plugin_data TAn array of plugin metadata.
         * @param object $response  An object of metadata about the available plugin update.
         *
         * @return void.
         */
        public static function add_install_marketplace_plugin_message($plugin_data, $response)
        {
        }
        /**
         * Runs on in_plugin_update_message-{file-name}, show a message if plugins subscription expired or expiring soon.
         *
         * @param object $plugin_data An array of plugin metadata.
         * @param object $response  An object of metadata about the available plugin update.
         *
         * @return void.
         */
        public static function display_notice_for_expired_and_expiring_subscriptions($plugin_data, $response)
        {
        }
        /**
         * Runs on in_plugin_update_message-{file-name}, show a message if plugin is without a subscription.
         * Only Woo local plugins are passed to this function.
         *
         * @see setup_message_for_plugins_without_subscription
         * @param object $plugin_data An array of plugin metadata.
         * @param object $response  An object of metadata about the available plugin update.
         *
         * @return void.
         */
        public static function display_notice_for_plugins_without_subscription($plugin_data, $response)
        {
        }
        /**
         * Get update data for all plugins.
         *
         * @return array Update data {product_id => data}
         * @see get_update_data
         */
        public static function get_available_extensions_downloads_data()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get translations updates information.
         *
         * 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_translations_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.
         *
         * @param array $payload Information about the plugin to update.
         * @return array Update data for each requested product.
         */
        private static function _update_check($payload)
        {
        }
        /**
         * Get the number of products that have updates.
         *
         * @return int The number of products with updates.
         */
        public static function get_updates_count()
        {
        }
        /**
         * Get the update count to based on the status of the site.
         *
         * @return int
         */
        public static function get_updates_count_based_on_site_status()
        {
        }
        /**
         * Get the type of woo connect notice to be shown in the WC Settings and Marketplace pages.
         * - If a store is connected to woocommerce.com or has no installed woo plugins, return 'none'.
         * - If a store has installed woo plugins but no updates, return 'short'.
         * - If a store has an installed woo plugin with update, return 'long'.
         *
         * @return string The notice type, 'none', 'short', or 'long'.
         */
        public static function get_woo_connect_notice_type()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Hooked into the upgrader_pre_download filter in order to better handle error messaging around expired
         * plugin updates. Initially we were using an empty string, but the error message that no_package
         * results in does not fit the cause.
         *
         * @since 4.1.0
         * @param bool   $reply Holds the current filtered response.
         * @param string $package The path to the package file for the update.
         * @return false|WP_Error False to proceed with the update as normal, anything else to be returned instead of updating.
         */
        public static function block_expired_updates($reply, $package)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Add tracking parameters to buttons (Renew, Purchase, etc.) on subscriptions page
         *
         * @param string $url URL to product page or to https://woocommerce.com/my-account/my-subscriptions/.
         * @param string $utm_content value of utm_content query parameter used for tracking
         *
         * @return string URL including utm parameters for tracking
         */
        public static function add_utm_params_to_url_for_subscription_link($url, $utm_content)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Maybe redirect to the new Marketplace installer.
         */
        private static function maybe_redirect_to_new_marketplace_installer()
        {
        }
        /**
         * Get helper redirect URL.
         *
         * @param array $args Query args.
         * @return string
         */
        private static function get_helper_redirect_url($args = array())
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Flush helper authentication cache.
         */
        public static function refresh_helper_subscriptions()
        {
        }
        /**
         * Active a product subscription.
         */
        private static function _helper_subscription_activate()
        {
        }
        /**
         * Activate helper subscription.
         *
         * @throws Exception If the subscription could not be activated or found.
         * @param string $product_key Subscription product key.
         * @return bool True if activated, false otherwise.
         */
        public static function activate_helper_subscription($product_key)
        {
        }
        /**
         * Deactivate a product subscription.
         */
        private static function helper_subscription_deactivate()
        {
        }
        /**
         * Deactivate a product subscription.
         *
         * @throws Exception If the subscription could not be deactivated or found.
         * @param string $product_key Subscription product key.
         * @return bool True if deactivated, false otherwise.
         */
        public static function deactivate_helper_subscription($product_key)
        {
        }
        /**
         * Get a subscriptions install URL.
         *
         * @param string $product_key Subscription product key.
         * @param string $product_slug Subscription product slug.
         * @return string
         */
        public static function get_subscription_install_url($product_key, $product_slug)
        {
        }
        /**
         * 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 the user's connected subscriptions that are installed on the current
         * site.
         *
         * @return array
         */
        public static function get_installed_subscriptions()
        {
        }
        /**
         * Get the user's unconnected subscriptions.
         *
         * @return array
         */
        public static function get_unconnected_subscriptions()
        {
        }
        /**
         * Get subscription state of a given product ID.
         *
         * @since TBD
         *
         * @param int $product_id The product id.
         *
         * @return array Array of state_name => (bool) state
         */
        public static function get_product_subscription_state($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)
        {
        }
        /**
         * Get locally installed plugins
         *
         * @return array
         */
        public static function get_local_plugins()
        {
        }
        /**
         * Get locally installed themes.
         *
         * @return array
         */
        public static function get_local_themes()
        {
        }
        /**
         * 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 rules for displaying notice regarding marketplace product usage.
         *
         * @return array
         */
        public static function get_product_usage_notice_rules()
        {
        }
        /**
         * Get the connected user's subscriptions.
         *
         * @return array
         */
        public static function get_subscriptions()
        {
        }
        /**
         * Get subscription data for a given product key.
         *
         * @param string $product_key Subscription product key.
         * @return array|bool The array containing sub data or false.
         */
        public static function get_subscription($product_key)
        {
        }
        /**
         * Get the connected user's subscription list data. Here, we merge connected
         * subscriptions with locally installed Woo plugins and themes. We also
         * add in information about available updates.
         *
         * Used by the My Subscriptions page.
         *
         * @return array
         */
        public static function get_subscription_list_data()
        {
        }
        /**
         * Check if a subscription is available to use.
         * That is, is not already active and hasn't expired, and there are no other subscriptions
         * for this product already active on this site.
         *
         * @param array $subscription The subscription we're checking.
         * @param array $subscriptions The list of all the user's subscriptions.
         * @return bool True if multiple licenses exist, false otherwise.
         */
        public static function is_subscription_available($subscription, $subscriptions)
        {
        }
        /**
         * Check if product relating to a subscription is installed.
         * This method will return true if the product is installed, but will exclude subscriptions for the same product that are not in use.
         * If a product is installed and inactive, this will ensure that one subscription is marked as installed.
         *
         * @param array $subscription The subscription we're checking.
         * @param array $subscriptions The list of all the user's subscriptions.
         * @return bool True if installed, false otherwise.
         */
        public static function is_subscription_installed($subscription, $subscriptions)
        {
        }
        /**
         * Add local data to a subscription.
         *
         * @param array $subscription The subscription data.
         * @return array The subscription data with local data added.
         */
        public static function get_subscription_local_data(array $subscription)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * 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.
         */
        public static function _flush_subscriptions_cache()
        {
        }
        /**
         * Flush product-usage-notice-rules cache.
         */
        public static function flush_product_usage_notice_rules_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')
        {
        }
        /**
         * Handles WC Helper disconnect tasks.
         *
         * @return void
         */
        public static function disconnect()
        {
        }
        /**
         * Checks if `access_token` exists in `auth` option.
         *
         * @return bool
         */
        public static function is_site_connected() : bool
        {
        }
        /**
         * Allows to connect with WCCOM using application password. used it to connect via CLI
         *
         * @param string $password The application password.
         *
         * @return void|WP_Error
         */
        public static function connect_with_password(string $password)
        {
        }
        /**
         * Updates auth options and flushes cache
         *
         * @param string $access_token The access token.
         * @param string $access_token_secret The secret access token.
         * @param int    $site_id The site id returned by the API.
         *
         * @return void
         */
        public static function update_auth_option(string $access_token, string $access_token_secret, int $site_id) : void
        {
        }
        /**
         * Get WooCommerce.com base URL.
         *
         * @return string
         */
        public static function get_woocommerce_com_base_url()
        {
        }
        /**
         * Get base URL for plugin auto installer.
         *
         * @return string
         */
        public static function get_install_base_url()
        {
        }
        /**
         * Retrieve notice for connected store.
         *
         * @return array An array containing notice data.
         */
        public static function get_notices()
        {
        }
    }
    /**
     * Class WC_Plugin_Api_Updater
     */
    class WC_Plugin_Api_Updater
    {
        /**
         * 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)
        {
        }
        /**
         * Theme information callback for Woo themes.
         *
         * @param object $response The response core needs to display the modal.
         * @param string $action The requested themes_api() action.
         * @param object $args Arguments passed to themes_api().
         */
        public static function themes_api($response, $action, $args)
        {
        }
        /**
         * Override the products API to fetch data from the Helper API if it's a Woo product.
         *
         * @param object $response The response core needs to display the modal.
         * @param string $action The requested action.
         * @param object $args Arguments passed to the API.
         */
        public static function override_products_api_response($response, $action, $args)
        {
        }
    }
    /**
     * Product usage notice class.
     */
    class WC_Product_Usage_Notice
    {
        /**
         * User meta key prefix to store dismiss counts per product. Product ID is
         * the suffix part.
         *
         * @var string
         */
        const DISMISSED_COUNT_META_PREFIX = '_woocommerce_product_usage_notice_dismissed_count_';
        /**
         * User meta key prefix to store timestamp of last dismissed product usage notice.
         * Product ID is the suffix part.
         *
         * @var string
         */
        const DISMISSED_TIMESTAMP_META_PREFIX = '_woocommerce_product_usage_notice_dismissed_timestamp_';
        /**
         * User meta key prefix to store timestamp of last clicked remind later from
         * product usage notice. Product ID is the suffix part.
         *
         * @var string
         */
        const REMIND_LATER_TIMESTAMP_META_PREFIX = '_woocommerce_product_usage_notice_remind_later_timestamp_';
        /**
         * User meta key to store timestamp of last dismissed of any product usage
         * notices. There's no product ID in the meta key.
         *
         * @var string
         */
        const LAST_DISMISSED_TIMESTAMP_META = '_woocommerce_product_usage_notice_last_dismissed_timestamp';
        /**
         * Array of product usage notice rules from helper API.
         *
         * @var array
         */
        private static $product_usage_notice_rules = array();
        /**
         * Current product usage notice rule applied to the current admin screen.
         *
         * @var array
         */
        private static $current_notice_rule = array();
        /**
         * Loads the class, runs on init.
         *
         * @return void
         */
        public static function load()
        {
        }
        /**
         * Maybe show product usage notice in a given screen object.
         *
         * @param \WP_Screen $screen Current \WP_Screen object.
         */
        public static function maybe_show_product_usage_notice($screen)
        {
        }
        /**
         * Check whether the user clicked "remind later" recently.
         *
         * @param int $user_id    User ID.
         * @param int $product_id Product ID.
         *
         * @return bool
         */
        private static function is_remind_later_clicked_recently(int $user_id, int $product_id) : bool
        {
        }
        /**
         * Check whether the user has reached max dismissals of product usage notice.
         *
         * @param int $user_id    User ID.
         * @param int $product_id Product ID.
         *
         * @return bool
         */
        private static function has_reached_max_dismissals(int $user_id, int $product_id) : bool
        {
        }
        /**
         * Check whether the user dismissed any product usage notices recently.
         *
         * @param int $user_id User ID.
         *
         * @return bool
         */
        private static function is_any_notices_dismissed_recently(int $user_id) : bool
        {
        }
        /**
         * Check whether the user dismissed given product usage notice recently.
         *
         * @param int $user_id    User ID.
         * @param int $product_id Product ID.
         *
         * @return bool
         */
        private static function is_product_notice_dismissed_recently(int $user_id, int $product_id) : bool
        {
        }
        /**
         * Check whether current notice is throttled for the user and product.
         *
         * @param int $user_id    User ID.
         * @param int $product_id Product ID.
         *
         * @return bool
         */
        private static function is_notice_throttled(int $user_id, int $product_id) : bool
        {
        }
        /**
         * Enqueue scripts needed to display product usage notice (or modal).
         */
        public static function enqueue_product_usage_notice_scripts()
        {
        }
        /**
         * Get product usage notice rule from a given WP_Screen object.
         *
         * @param \WP_Screen $screen Current \WP_Screen object.
         *
         * @return array
         */
        private static function get_current_notice_rule($screen)
        {
        }
        /**
         * Check whether the screen and GET parameter matches a given rule.
         *
         * @param \WP_Screen $screen Current \WP_Screen object.
         * @param array      $rule   Product usage notice rule.
         *
         * @return bool
         */
        private static function query_string_matches($screen, $rule)
        {
        }
        /**
         * AJAX handler for dismiss action of product usage notice.
         */
        public static function ajax_dismiss()
        {
        }
        /**
         * AJAX handler for "remind later" action of product usage notice.
         */
        public static function ajax_remind_later()
        {
        }
    }
    /**
     * WC_Helper_Plugin Class
     *
     * Contains the logic to manage the Woo Update Manager plugin.
     */
    class WC_Woo_Update_Manager_Plugin
    {
        const WOO_UPDATE_MANAGER_PLUGIN_MAIN_FILE = 'woo-update-manager/woo-update-manager.php';
        const WOO_UPDATE_MANAGER_DOWNLOAD_URL = 'https://woocommerce.com/product-download/woo-update-manager';
        const WOO_UPDATE_MANAGER_SLUG = 'woo-update-manager';
        /**
         * Loads the class, runs on init.
         *
         * @return void
         */
        public static function load() : void
        {
        }
        /**
         * Check if the Woo Update Manager plugin is active.
         *
         * @return bool
         */
        public static function is_plugin_active() : bool
        {
        }
        /**
         * Check if the Woo Update Manager plugin is installed.
         *
         * @return bool
         */
        public static function is_plugin_installed() : bool
        {
        }
        /**
         * Generate the URL to install the Woo Update Manager plugin.
         *
         * @return string
         */
        public static function generate_install_url() : string
        {
        }
        /**
         * Get the id of the Woo Update Manager plugin.
         *
         * @return int
         */
        public static function get_plugin_slug() : string
        {
        }
        /**
         * Show a notice on the WC admin pages to install or activate the Woo Update Manager plugin.
         *
         * @return void
         */
        public static function show_woo_update_manager_install_notice() : void
        {
        }
        /**
         * Check if the installation notice has been dismissed.
         *
         * @return bool
         */
        protected static function install_admin_notice_dismissed() : bool
        {
        }
        /**
         * Check if the activation notice has been dismissed.
         *
         * @return bool
         */
        protected static function activate_admin_notice_dismissed() : bool
        {
        }
    }
    /**
     * 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;
        /**
         * The character encoding to use to interpret the input file, or empty string for autodetect.
         *
         * @var string
         */
        protected $character_encoding = 'UTF-8';
        /**
         * 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.
         *
         * @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)
        {
        }
        /**
         * Runs before controller actions to check that the file used during the import is valid.
         *
         * @since 9.3.0
         *
         * @param string $path Path to test.
         *
         * @throws \Exception When file validation fails.
         */
        protected static function check_file_path(string $path) : void
        {
        }
        /**
         * Check if a given file is inside a given directory.
         *
         * @param string $file_path The full path of the file to check.
         * @param string $directory The path of the directory to check.
         * @return bool True if the file is inside the directory.
         */
        private static function file_is_in_directory(string $file_path, string $directory) : bool
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Processes AJAX requests related to a product CSV import.
         *
         * @since 9.3.0
         */
        public static function dispatch_ajax()
        {
        }
        /**
         * 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 latest 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;
        /**
         * Error message for import.
         *
         * @var string
         */
        public $import_error_message;
        /**
         * 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()
        {
        }
        /**
         * Set the import error message.
         *
         * @param string $message Error message.
         */
        protected function set_import_error_message($message)
        {
        }
        /**
         * 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_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 column: coupon_code.
         */
        protected function render_coupon_code_column()
        {
        }
        /**
         * Render column: type.
         */
        protected function render_type_column()
        {
        }
        /**
         * Render column: amount.
         */
        protected function render_amount_column()
        {
        }
        /**
         * Render column: products.
         */
        protected function render_products_column()
        {
        }
        /**
         * Render column: usage_limit.
         */
        protected function render_usage_limit_column()
        {
        }
        /**
         * Render column: usage.
         */
        protected function render_usage_column()
        {
        }
        /**
         * Render column: expiry_date.
         */
        protected function render_expiry_date_column()
        {
        }
        /**
         * Render column: 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_Orders Class.
     */
    class WC_Admin_List_Table_Orders extends \WC_Admin_List_Table
    {
        /**
         * Post type.
         *
         * @var string
         */
        protected $list_table_type = 'shop_order';
        /**
         * The data store-agnostic list table implementation (introduced to support custom order tables),
         * which we use here to render columns.
         *
         * @var ListTable $orders_list_table
         */
        private $orders_list_table;
        /**
         * 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 column: order_number.
         */
        protected function render_order_number_column()
        {
        }
        /**
         * Render column: order_status.
         */
        protected function render_order_status_column()
        {
        }
        /**
         * Render column: order_date.
         */
        protected function render_order_date_column()
        {
        }
        /**
         * Render column: order_total.
         */
        protected function render_order_total_column()
        {
        }
        /**
         * Render column: wc_actions.
         */
        protected function render_wc_actions_column()
        {
        }
        /**
         * Render column: billing_address.
         */
        protected function render_billing_address_column()
        {
        }
        /**
         * Render column: 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_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 column: thumb.
         */
        protected function render_thumb_column()
        {
        }
        /**
         * Render column: name.
         */
        protected function render_name_column()
        {
        }
        /**
         * Render column: sku.
         */
        protected function render_sku_column()
        {
        }
        /**
         * Render column: price.
         */
        protected function render_price_column()
        {
        }
        /**
         * Render column: product_cat.
         */
        protected function render_product_cat_column()
        {
        }
        /**
         * Render column: product_tag.
         */
        protected function render_product_tag_column()
        {
        }
        /**
         * Render column: featured.
         */
        protected function render_featured_column()
        {
        }
        /**
         * Render column: 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 4.4.0 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)
        {
        }
        /**
         * Add a sample product badge to the product list table.
         *
         * @param string $column_name Column name.
         * @param int    $post_id     Post ID.
         *
         * @since 8.8.0
         */
        public function add_sample_product_badge($column_name, $post_id)
        {
        }
    }
    /**
     * 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 product 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()
        {
        }
    }
    /**
     * 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 occurred when fetching suggestions.
         * Re-schedules the job earlier than the main weekly one.
         */
        public static function retry()
        {
        }
    }
    /**
     * 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_Order_Actions Class.
     */
    class WC_Meta_Box_Order_Actions
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post|WC_Order $post Post or order object.
         */
        public static function output($post)
        {
        }
        /**
         * Forms a trash/delete order URL.
         *
         * @param int $order_id The order ID for which we want a trash/delete URL.
         *
         * @return string
         */
        private static function get_trash_or_delete_order_link(int $order_id) : string
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Get the available order actions for a given order.
         *
         * @since 5.8.0
         *
         * @param WC_Order|null $order The order object or null if no order is available.
         *
         * @return array
         */
        private static function get_available_order_actions_for_order($order)
        {
        }
    }
    /**
     * 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();
        /**
         * Get billing fields for the meta box.
         *
         * @param \WC_Order $order Order object.
         * @param string    $context Context of fields (view or edit).
         * @return array
         */
        protected static function get_billing_fields($order = \false, $context = 'edit')
        {
        }
        /**
         * Get shipping fields for the meta box.
         *
         * @param \WC_Order $order Order object.
         * @param string    $context Context of fields (view or edit).
         * @return array
         */
        protected static function get_shipping_fields($order = \false, $context = 'edit')
        {
        }
        /**
         * Init billing and shipping fields we display + save. Maintained for backwards compat.
         */
        public static function init_address_fields()
        {
        }
        /**
         * Output the metabox.
         *
         * @param WP_Post|WC_Order $post Post or order object.
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int $order_id Order ID.
         * @throws Exception Required request data is missing.
         */
        public static function save($order_id)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Downloads Class.
     */
    class WC_Meta_Box_Order_Downloads
    {
        /**
         * Output the metabox.
         *
         * @param WC_Order|WP_Post $post Post or order 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)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Items Class.
     */
    class WC_Meta_Box_Order_Items
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post|WC_Order $post Post or order object.
         */
        public static function output($post)
        {
        }
        /**
         * Save meta box data.
         *
         * @param int $post_id
         */
        public static function save($post_id)
        {
        }
    }
    /**
     * WC_Meta_Box_Order_Notes Class.
     */
    class WC_Meta_Box_Order_Notes
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post|WC_Order $post Post or order object.
         */
        public static function output($post)
        {
        }
    }
    /**
     * WC_Meta_Box_Product_Categories Class.
     */
    class WC_Meta_Box_Product_Categories
    {
        /**
         * Output the metabox.
         *
         * @param WP_Post $post Current post object.
         * @param array   $box {
         *     Categories meta box arguments.
         *
         *     @type string   $id       Meta box 'id' attribute.
         *     @type string   $title    Meta box title.
         *     @type callable $callback Meta box display callback.
         *     @type array    $args {
         *         Extra meta box arguments.
         *
         *         @type string $taxonomy Taxonomy. Default 'category'.
         *     }
         * }
         */
        public static function output($post, $box)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Filter callback for finding non-variation attributes.
         *
         * @param  WC_Product_Attribute $attribute Product attribute.
         * @return bool
         */
        private static function filter_non_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_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_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_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_Notes_Refund_Returns.
     */
    class WC_Notes_Refund_Returns
    {
        /**
         * Name of the note for use in the database.
         */
        const NOTE_NAME = 'wc-refund-returns-page';
        /**
         * Attach hooks.
         */
        public static function init()
        {
        }
        /**
         * Maybe add a note to the inbox.
         *
         * @param int $page_id The ID of the page.
         */
        public static function possibly_add_note($page_id)
        {
        }
        /**
         * Get the note.
         *
         * @param int $page_id The ID of the page.
         * @return object $note The note object.
         */
        public static function get_note($page_id)
        {
        }
        /**
         * Get the note.
         *
         * @param Note $note_from_db The note object from the database.
         * @return Note $note The note object.
         */
        public static function get_note_from_db($note_from_db)
        {
        }
    }
    /**
     * WC_Notes_Run_Db_Update.
     */
    class WC_Notes_Run_Db_Update
    {
        const NOTE_NAME = 'wc-update-db-reminder';
        /**
         * Attach hooks.
         */
        public function __construct()
        {
        }
        /**
         * Get current notice id from the database.
         *
         * Retrieves the first notice of this type.
         *
         * @return int|void Note id or null in case no note was found.
         */
        private static function get_current_notice()
        {
        }
        /**
         * Set this notice to an actioned one, so that it's no longer displayed.
         */
        public static function set_notice_actioned()
        {
        }
        /**
         * Check whether the note is up to date for a fresh display.
         *
         * The check tests if
         *  - actions are set up for the first 'Update database' notice, and
         *  - URL for note's action is equal to the given URL (to check for potential nonce update).
         *
         * @param Note               $note            Note to check.
         * @param string             $update_url      URL to check the note against.
         * @param array<int, string> $current_actions List of actions to check for.
         * @return bool
         */
        private static function note_up_to_date($note, $update_url, $current_actions)
        {
        }
        /**
         * Create and set up the first (out of 3) 'Database update needed' notice and store it in the database.
         *
         * If a $note_id is given, the method updates the note instead of creating a new one.
         *
         * @param integer $note_id Note db record to update.
         * @return int Created/Updated note id
         */
        private static function update_needed_notice($note_id = \null)
        {
        }
        /**
         * Update the existing note with $note_id with information about the db upgrade being in progress.
         *
         * This is the second out of 3 notices displayed to the user.
         *
         * @param int $note_id Note id to update.
         */
        private static function update_in_progress_notice($note_id)
        {
        }
        /**
         * Update the existing note with $note_id with information that db upgrade is done.
         *
         * This is the last notice (3 out of 3 notices) displayed to the user.
         *
         * @param int $note_id Note id to update.
         */
        private static function update_done_notice($note_id)
        {
        }
        /**
         * Prepare the correct content of the db update note to be displayed by WC Admin.
         *
         * This one gets called on each page load, so try to bail quickly.
         *
         * If the db needs an update, the notice should be always shown.
         * If the db does not need an update, but the notice has *not* been actioned (i.e. after the db update, when
         * store owner hasn't acknowledged the successful db update), still show the Thanks notice.
         * If the db does not need an update, and the notice has been actioned, then notice should *not* be shown.
         * The notice should also be hidden if the db does not need an update and the notice does not exist.
         */
        public static function show_reminder()
        {
        }
    }
    /**
     * 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();
        /**
         * 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 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 installed plugins that have a tested version lower than the input version.
         *
         * In case of testing major version compatibility and if current WC version is >= major version part
         * of the $new_version, no plugins are returned, even if they don't explicitly declare compatibility
         * with the $new_version.
         *
         * @param string $new_version WooCommerce version to test against.
         * @param string $release 'major', 'minor', or 'none'.
         * @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_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()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * Admin Report.
     *
     * Extended by reports to show charts and stats in admin.
     *
     * @package     WooCommerce\Admin\Reports
     * @version     2.1.0
     */
    class WC_Admin_Report
    {
        /**
         * List of transients name that have been updated and need persisting.
         *
         * @var array
         */
        protected static $transients_to_update = array();
        /**
         * The list of transients.
         *
         * @var array
         */
        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 arguments for the report.
         * @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 interval to use.
         * @param  string $start_date start date.
         * @param  string $group_by group by.
         * @return array
         */
        public function prepare_chart_data($data, $date_key, $data_key, $interval, $start_date, $group_by)
        {
        }
        /**
         * Prepares the data for 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. Default to 7 days.
         * @param  string $type Type of sparkline to get. Ignored if ID is not set.
         * @return array
         */
        public function get_sales_sparkline($id = '', $days = 7, $type = 'sales')
        {
        }
        /**
         * Prepares the markup for 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. Default to 7 days.
         * @param  string $type Type of sparkline to get.
         * @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 Type of 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_Coupon_Usage
     *
     * @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()
        {
        }
    }
    /**
     * 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_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_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)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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_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_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_Sales_By_Category
     *
     * @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_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_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_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_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_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()
        {
        }
        /**
         * Creates the React mount point for settings slot.
         */
        public function add_settings_slot()
        {
        }
        /**
         * Add this page to settings.
         *
         * @param array $pages The settings array where we'll add ourselves.
         *
         * @return mixed
         */
        public function add_settings_page($pages)
        {
        }
        /**
         * Get page settings data to populate the settings editor.
         *
         * @param array $pages The settings array where we'll add data.
         *
         * @return array
         */
        public function add_settings_page_data($pages)
        {
        }
        /**
         * Get settings array for the default section.
         *
         * External settings classes (registered via 'woocommerce_get_settings_pages' filter)
         * might have redefined this method as "get_settings($section_id='')", thus we need
         * to use this method internally instead of 'get_settings_for_section' to register settings
         * and render settings pages.
         *
         * *But* we can't just redefine the method as "get_settings($section_id='')" here, since this
         * will break on PHP 8 if any external setting class have it as 'get_settings()'.
         *
         * Thus we leave the method signature as is and use 'func_get_arg' to get the setting id
         * if it's supplied, and we use this method internally; but it's deprecated and should
         * otherwise never be used.
         *
         * @deprecated 5.4.0 Use 'get_settings_for_section' (passing an empty string for default section)
         *
         * @return array Settings array, each item being an associative array representing a setting.
         */
        public function get_settings()
        {
        }
        /**
         * Get settings array.
         *
         * The strategy for getting the settings is as follows:
         *
         * - If a method named 'get_settings_for_{section_id}_section' exists in the class
         *   it will be invoked (for the default '' section, the method name is 'get_settings_for_default_section').
         *   Derived classes can implement these methods as required.
         *
         * - Otherwise, 'get_settings_for_section_core' will be invoked. Derived classes can override it
         *   as an alternative to implementing 'get_settings_for_{section_id}_section' methods.
         *
         * @param string $section_id The id of the section to return settings for, an empty string for the default section.
         *
         * @return array Settings array, each item being an associative array representing a setting.
         */
        public final function get_settings_for_section($section_id)
        {
        }
        /**
         * Get the settings for a given section.
         * This method is invoked from 'get_settings_for_section' when no 'get_settings_for_{current_section}_section'
         * method exists in the class.
         *
         * When overriding, note that the 'woocommerce_get_settings_' filter must NOT be triggered,
         * as this is already done by 'get_settings_for_section'.
         *
         * @param string $section_id The section name to get the settings for.
         *
         * @return array Settings array, each item being an associative array representing a setting.
         */
        protected function get_settings_for_section_core($section_id)
        {
        }
        /**
         * Get all sections for this page, both the own ones and the ones defined via filters.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Get own sections for this page.
         * Derived classes should override this method if they define sections.
         * There should always be one default section with an empty string as identifier.
         *
         * Example:
         * return array(
         *   ''        => __( 'General', 'woocommerce' ),
         *   'foobars' => __( 'Foos & Bars', 'woocommerce' ),
         * );
         *
         * @return array An associative array where keys are section identifiers and the values are translated section names.
         */
        protected function get_own_sections()
        {
        }
        /**
         * Output sections.
         */
        public function output_sections()
        {
        }
        /**
         * Output the HTML for the settings.
         */
        public function output()
        {
        }
        /**
         * Save settings and trigger the 'woocommerce_update_options_'.id action.
         */
        public function save()
        {
        }
        /**
         * Save settings for current section.
         */
        protected function save_settings_for_current_section()
        {
        }
        /**
         * Trigger the 'woocommerce_update_options_'.id action.
         *
         * @param string $section_id Section to trigger the action for, or null for current section.
         */
        protected function do_update_options_action($section_id = \null)
        {
        }
    }
    /**
     * WC_Settings_Accounts.
     */
    class WC_Settings_Accounts extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * Output the HTML for the settings.
         */
        public function output()
        {
        }
    }
    /**
     * WC_Settings_Advanced.
     */
    class WC_Settings_Advanced extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Get settings for the default section.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * Get settings for the WooCommerce.com section.
         *
         * @return array
         */
        protected function get_settings_for_woocommerce_com_section()
        {
        }
        /**
         * Get settings for the legacy API section.
         *
         * @return array
         */
        protected function get_settings_for_legacy_api_section()
        {
        }
        /**
         * Get settings for the Blueprint section.
         *
         * @return array
         */
        protected function get_settings_for_blueprint_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()
        {
        }
    }
    // phpcs:disable Generic.Files.OneObjectStructurePerFile.MultipleFound, Generic.Commenting.Todo.CommentFound
    /**
     * WC_Settings_Rest_API class.
     *
     * @deprecated 3.4 in favour of WC_Settings_Advanced.
     */
    class WC_Settings_Rest_API extends \WC_Settings_Advanced
    {
    }
    /**
     * WC_Settings_Emails.
     */
    class WC_Settings_Emails extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Run the 'admin_options' method on a given email.
         * This method exists to easy unit testing.
         *
         * @param object $email The email object to run the method on.
         */
        protected function run_email_admin_options($email)
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
        /**
         * Output email notification settings.
         */
        public function email_notification_setting()
        {
        }
    }
    /**
     * WC_Admin_Settings_General.
     */
    class WC_Settings_General extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get settings or the default section.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * 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 = '')
        {
        }
    }
    /**
     * WC_Settings_Integrations.
     */
    class WC_Settings_Integrations extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Is WC_INSTALLING constant defined?
         * This method exists to ease unit testing.
         *
         * @return bool True is the WC_INSTALLING constant is defined.
         */
        protected function wc_is_installing()
        {
        }
        /**
         * Get the currently available integrations.
         * This method exists to ease unit testing.
         *
         * @return array Currently available integrations.
         */
        protected function get_integrations()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
    }
    /**
     * WC_Settings_Payment_Gateways_React.
     */
    class WC_Settings_Payment_Gateways_React extends \WC_Settings_Page
    {
        /**
         * Get the whitelist of sections to render using React.
         *
         * @return array List of section identifiers.
         */
        private function get_reactify_render_sections()
        {
        }
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Check if the given section should be rendered using React.
         *
         * @param string $section The section to check.
         * @return bool Whether the section should be rendered using React.
         */
        private function should_render_react_section($section)
        {
        }
        /**
         * Render the React section.
         *
         * @param string $section The section to render.
         */
        private function render_react_section($section)
        {
        }
        /**
         * Render the classic gateway settings page.
         *
         * @param array  $payment_gateways The payment gateways.
         * @param string $current_section The current section.
         */
        private function render_classic_gateway_settings_page($payment_gateways, $current_section)
        {
        }
        /**
         * Run the 'admin_options' method on a given gateway.
         * This method exists to easy unit testing.
         *
         * @param object $gateway The gateway object to run the method on.
         */
        protected function run_gateway_admin_options($gateway)
        {
        }
        /**
         * Don't show any section links.
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
    }
    /**
     * WC_Settings_Payment_Gateways.
     */
    class WC_Settings_Payment_Gateways extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * Output the settings.
         */
        public function output()
        {
        }
        /**
         * Run the 'admin_options' method on a given gateway.
         * This method exists to easy unit testing.
         *
         * @param object $gateway The gateway object to run the method on.
         */
        protected function run_gateway_admin_options($gateway)
        {
        }
        /**
         * Creates the React mount point for the embedded banner.
         */
        public function payment_gateways_banner()
        {
        }
        /**
         * Output payment gateway settings.
         */
        public function payment_gateways_setting()
        {
        }
        /**
         * Save settings.
         */
        public function save()
        {
        }
    }
    /**
     * WC_Settings_Products.
     */
    class WC_Settings_Products extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Get settings for the default section.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * Get settings for the inventory section.
         *
         * @return array
         */
        protected function get_settings_for_inventory_section()
        {
        }
        /**
         * Get settings for the downloadable section.
         *
         * @return array
         */
        protected function get_settings_for_downloadable_section()
        {
        }
        /**
         * Save settings and trigger the 'woocommerce_update_options_'.id action.
         */
        public function save()
        {
        }
    }
    /**
     * 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 own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Is WC_INSTALLING constant defined?
         * This method exists to ease unit testing.
         *
         * @return bool True is the WC_INSTALLING constant is defined.
         */
        protected function wc_is_installing()
        {
        }
        /**
         * Get the currently available shipping methods.
         * This method exists to ease unit testing.
         *
         * @return array Currently available shipping methods.
         */
        protected function get_shipping_methods()
        {
        }
        /**
         * Get settings for the default section.
         *
         * The original implementation of 'get_settings' was returning the settings for the "Options" section
         * when the supplied value for $current_section was ''.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
        /**
         * Get settings for the options section.
         *
         * @return array
         */
        protected function get_settings_for_options_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()
        {
        }
        /**
         * Get all available regions.
         *
         * @param int $allowed_countries Zone ID.
         * @param int $shipping_continents Zone ID.
         */
        protected function get_region_options($allowed_countries, $shipping_continents)
        {
        }
        /**
         * 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_Advanced.
     */
    class WC_Settings_Site_Visibility extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get settings for the default section.
         *
         * @return array
         */
        protected function get_settings_for_default_section()
        {
        }
    }
    /**
     * WC_Settings_Tax.
     */
    class WC_Settings_Tax extends \WC_Settings_Page
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Creates the React mount point for the embedded banner.
         */
        public function conflict_error()
        {
        }
        /**
         * Add this page to settings.
         *
         * @param array $pages Existing pages.
         * @return array|mixed
         */
        public function add_settings_page($pages)
        {
        }
        /**
         * Get own sections.
         *
         * @return array
         */
        protected function get_own_sections()
        {
        }
        /**
         * Get settings array.
         *
         * @return array
         */
        public function get_settings_for_default_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()
        {
        }
    }
    /**
     * Blocks Utility class.
     */
    class WC_Blocks_Utils
    {
        /**
         * Get blocks from a woocommerce page.
         *
         * @param string $woo_page_name A woocommerce page e.g. `checkout` or `cart`.
         * @return array Array of blocks as returned by parse_blocks().
         */
        private static function get_all_blocks_from_page($woo_page_name)
        {
        }
        /**
         * Get all instances of the specified block on a specific woo page
         * (e.g. `cart` or `checkout` page).
         *
         * @param string $block_name The name (id) of a block, e.g. `woocommerce/cart`.
         * @param string $woo_page_name The woo page to search, e.g. `cart`.
         * @return array Array of blocks as returned by parse_blocks().
         */
        public static function get_blocks_from_page($block_name, $woo_page_name)
        {
        }
        /**
         * Check if a given page contains a particular block.
         *
         * @param int|WP_Post $page Page post ID or post object.
         * @param string      $block_name The name (id) of a block, e.g. `woocommerce/cart`.
         * @return bool Boolean value if the page contains the block or not. Null in case the page does not exist.
         */
        public static function has_block_in_page($page, $block_name)
        {
        }
    }
    //phpcs:disable Squiz.Classes.ClassFileName.NoMatch
    /**
     * BlockTemplateUtils class used for serving block templates from Woo Blocks.
     * IMPORTANT: These methods have been duplicated from Gutenberg/lib/full-site-editing/block-templates.php as those functions are not for public usage.
     *
     * For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @version 9.4.0
     */
    class BlockTemplateUtilsDuplicated
    {
        /**
         * Directory names for block templates
         *
         * Directory names conventions for block templates have changed with Gutenberg 12.1.0,
         * however, for backwards-compatibility, we also keep the older conventions, prefixed
         * with `DEPRECATED_`.
         *
         * @var array {
         *     @var string DEPRECATED_TEMPLATES  Old directory name of the block templates directory.
         *     @var string DEPRECATED_TEMPLATE_PARTS  Old directory name of the block template parts directory.
         *     @var string TEMPLATES_DIR_NAME  Directory name of the block templates directory.
         *     @var string TEMPLATE_PARTS_DIR_NAME  Directory name of the block template parts directory.
         * }
         */
        protected const DIRECTORY_NAMES = array('DEPRECATED_TEMPLATES' => 'block-templates', 'DEPRECATED_TEMPLATE_PARTS' => 'block-template-parts', 'TEMPLATES' => 'templates', 'TEMPLATE_PARTS' => 'parts');
        /**
         * WooCommerce plugin slug
         *
         * This is used to save templates to the DB which are stored against this value in the wp_terms table.
         *
         * @var string
         */
        protected const PLUGIN_SLUG = 'woocommerce/woocommerce';
        /**
         * Returns an array containing the references of
         * the passed blocks and their inner blocks.
         *
         * @param array $blocks array of blocks.
         *
         * @return array block references to the passed blocks and their inner blocks.
         */
        public static function gutenberg_flatten_blocks(&$blocks)
        {
        }
        /**
         * Parses wp_template content and injects the current theme's
         * stylesheet as a theme attribute into each wp_template_part
         *
         * @param string $template_content serialized wp_template content.
         *
         * @return string Updated wp_template content.
         */
        public static function gutenberg_inject_theme_attribute_in_content($template_content)
        {
        }
        /**
         * Build a unified template object based a post Object.
         *
         * @param \WP_Post $post Template post.
         *
         * @return \WP_Block_Template|\WP_Error Template.
         */
        public static function gutenberg_build_template_result_from_post($post)
        {
        }
        /**
         * Build a unified template object based on a theme file.
         *
         * @param array|object $template_file Theme file.
         * @param string       $template_type wp_template or wp_template_part.
         *
         * @return \WP_Block_Template Template.
         */
        public static function gutenberg_build_template_result_from_file($template_file, $template_type)
        {
        }
        /**
         * Build a new template object so that we can make Woo Blocks default templates available in the current theme should they not have any.
         *
         * @param string $template_file Block template file path.
         * @param string $template_type wp_template or wp_template_part.
         * @param string $template_slug Block template slug e.g. single-product.
         * @param bool   $template_is_from_theme If the block template file is being loaded from the current theme instead of Woo Blocks.
         *
         * @return object Block template object.
         */
        public static function create_new_block_template_object($template_file, $template_type, $template_slug, $template_is_from_theme = \false)
        {
        }
        /**
         * Converts template slugs into readable titles.
         *
         * @param string $template_slug The templates slug (e.g. single-product).
         * @return string Human friendly title converted from the slug.
         */
        public static function convert_slug_to_title($template_slug)
        {
        }
        /**
         * Gets the first matching template part within themes directories
         *
         * Since [Gutenberg 12.1.0](https://github.com/WordPress/gutenberg/releases/tag/v12.1.0), the conventions for
         * block templates and parts directory has changed from `block-templates` and `block-templates-parts`
         * to `templates` and `parts` respectively.
         *
         * This function traverses all possible combinations of directory paths where a template or part
         * could be located and returns the first one which is readable, prioritizing the new convention
         * over the deprecated one, but maintaining that one for backwards compatibility.
         *
         * @param string $template_slug  The slug of the template (i.e. without the file extension).
         * @param string $template_type  Either `wp_template` or `wp_template_part`.
         *
         * @return string|null  The matched path or `null` if no match was found.
         */
        public static function get_theme_template_path($template_slug, $template_type = 'wp_template')
        {
        }
        /**
         * Check if the theme has a template. So we know if to load our own in or not.
         *
         * @param string $template_name name of the template file without .html extension e.g. 'single-product'.
         * @return boolean
         */
        public static function theme_has_template($template_name)
        {
        }
        /**
         * Check if the theme has a template. So we know if to load our own in or not.
         *
         * @param string $template_name name of the template file without .html extension e.g. 'single-product'.
         * @return boolean
         */
        public static function theme_has_template_part($template_name)
        {
        }
        /**
         * Checks to see if they are using a compatible version of WP, or if not they have a compatible version of the Gutenberg plugin installed.
         *
         * @return boolean
         */
        public static function supports_block_templates()
        {
        }
        /**
         * Returns whether the blockified templates should be used or not.
         *
         * First, we need to make sure WordPress version is higher than 6.1 (lowest that supports Products block).
         * Then, if the option is not stored on the db, we need to check if the current theme is a block one or not.
         *
         * @return boolean
         */
        public static function should_use_blockified_product_grid_templates()
        {
        }
    }
    //phpcs:disable Squiz.Classes.ClassFileName.NoMatch, Squiz.Classes.ValidClassName.NotCamelCaps
    /**
     * Utils for compatibility with WooCommerce Full Site Editor Blocks
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @version 9.4.0
     */
    class WC_Brands_Block_Templates
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get the taxonomy-product_brand template from DB in case a user customized it in FSE
         *
         * @return WP_Post|null The taxonomy-product_brand
         */
        private function get_product_brand_template_db()
        {
        }
        /**
         * Fixes a bug regarding taxonomies and FSE.
         * Without this, the system will always load archive-product.php version instead of taxonomy_product_brand.html
         * it will show a deprecation error if that happens.
         *
         * Triggered by woocommerce_has_block_template filter
         *
         * @param bool   $has_template  True if the template is available.
         * @param string $template_name The name of the template.
         *
         * @return bool True if the system is checking archive-product
         */
        public function has_block_template($has_template, $template_name)
        {
        }
        /**
         * Get the block template for Taxonomy Product Brand. First it attempts to load the last version from DB
         * Otherwise it loads the file based template.
         *
         * @param string $template_type The post_type for the template. Normally wp_template or wp_template_part.
         *
         * @return WP_Block_Template The taxonomy-product_brand template.
         */
        private function get_product_brands_template($template_type)
        {
        }
        /**
         * Function to check if a template name is woocommerce/taxonomy-product_brand
         *
         * Notice depending on the version of WooCommerce this could be:
         *
         * woocommerce//taxonomy-product_brand
         * woocommerce/woocommerce//taxonomy-product_brand
         *
         * @param  String $id The string to check if contains the template name.
         *
         * @return bool True if the template is woocommerce/taxonomy-product_brand
         */
        private function is_taxonomy_product_brand_template($id)
        {
        }
        /**
         * Get the block template for Taxonomy Product Brand if requested.
         * Triggered by get_block_file_template action
         *
         * @param WP_Block_Template|null $block_template The current Block Template loaded, if any.
         * @param string                 $id The template id normally in the format theme-slug//template-slug.
         * @param string                 $template_type The post_type for the template. Normally wp_template or wp_template_part.
         *
         * @return WP_Block_Template|null The taxonomy-product_brand template.
         */
        public function get_block_file_template($block_template, $id, $template_type)
        {
        }
        /**
         * Add the Block template in the template query results needed by FSE
         * Triggered by get_block_templates action
         *
         * @param array  $query_result The list of templates to render in the query.
         * @param array  $query The current query parameters.
         * @param string $template_type The post_type for the template. Normally wp_template or wp_template_part.
         *
         * @return WP_Block_Template[] Array of the matched Block Templates to render.
         */
        public function get_block_templates($query_result, $query, $template_type)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Save attributes and variations via ajax.
         */
        public static function add_attributes_and_variations()
        {
        }
        /**
         * Create product with attributes from POST data.
         *
         * @param  array $data Attribute data.
         * @return mixed Product class.
         */
        private static function create_product_with_attributes($data)
        {
        }
        /**
         * Create all product variations from existing attributes.
         *
         * @param mixed $product Product class.
         * @returns int Number of variations created.
         */
        private static function create_all_product_variations($product)
        {
        }
        /**
         * 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 item via AJAX. This is refactored for better unit testing.
         *
         * @param int          $order_id     ID of order to add items to.
         * @param string|array $items        Existing items in order. Empty string if no items to add.
         * @param array        $items_to_add Array of items to add.
         *
         * @return array     Fragments to render and notes HTML.
         * @throws Exception When unable to add item.
         */
        private static function maybe_add_order_item($order_id, $items, $items_to_add)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Search for categories and return json.
         */
        public static function json_search_categories_tree()
        {
        }
        /**
         * Search for taxonomy terms and return json.
         */
        public static function json_search_taxonomy_terms()
        {
        }
        /**
         * Search for product attributes and return json.
         */
        public static function json_search_product_attributes()
        {
        }
        /**
         * Ajax request handling for page searching.
         */
        public static function json_search_pages()
        {
        }
        /**
         * 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 Low Stock Amount.
         *
         * @param array $variations List of variations.
         * @param array $data Data to set.
         *
         * @used-by bulk_edit_variations
         */
        private static function variation_bulk_action_variable_low_stock_amount($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
         * @uses WC_AJAX::variation_bulk_action_variable_low_stock_amount()
         */
        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_remove_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()
        {
        }
        /**
         * Reimplementation of WP core's `wp_ajax_add_meta` method to support order custom meta updates with custom tables.
         */
        private static function order_add_meta()
        {
        }
        /**
         * Reimplementation of WP core's `wp_ajax_delete_meta` method to support order custom meta updates with custom tables.
         *
         * @return void
         */
        private static function order_delete_meta() : void
        {
        }
        /**
         * Hooked to 'heartbeat_received' on the edit order page to refresh the lock on an order being edited by the current user.
         *
         * @param array $response The heartbeat response to be sent.
         * @param array $data     Data sent through the heartbeat.
         * @return array Response to be sent.
         */
        private static function order_refresh_lock($response, $data)
        {
        }
        /**
         * Hooked to 'heartbeat_received' on the orders screen to refresh the locked status of orders in the list table.
         *
         * @since 7.8.0
         *
         * @param array $response The heartbeat response to be sent.
         * @param array $data     Data sent through the heartbeat.
         * @return array Response to be sent.
         */
        private static function check_locked_orders($response, $data)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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_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()
        {
        }
    }
    /**
     * Brand settings manager.
     *
     * This class is responsible for setting and getting brand settings for a coupon.
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @version 9.4.0
     */
    class WC_Brands_Brand_Settings_Manager
    {
        /**
         * Brand settings for a coupon.
         *
         * @var array
         */
        private static $brand_settings = array();
        /**
         * Set brand settings for a coupon.
         *
         * @param WC_Coupon $coupon Coupon object.
         */
        public static function set_brand_settings_on_coupon($coupon)
        {
        }
        /**
         * Get brand settings for a coupon.
         *
         * @param WC_Coupon $coupon Coupon object.
         * @return array Brand settings (included and excluded brands).
         */
        public static function get_brand_settings_on_coupon($coupon)
        {
        }
    }
    /**
     * WC_Brands_Coupons class.
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @version 9.4.0
     */
    class WC_Brands_Coupons
    {
        const E_WC_COUPON_EXCLUDED_BRANDS = 301;
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Validate the coupon based on included and/or excluded product brands.
         *
         * If one of the following conditions are met, an exception will be thrown and
         * displayed as an error notice on the cart page:
         *
         * 1) Coupon has a brand requirement but no products in the cart have the brand.
         * 2) All products in the cart match the brand exclusion rule.
         * 3) For a cart discount, there is at least one product in cart that matches exclusion rule.
         *
         * @throws Exception Throws Exception for invalid coupons.
         * @param  bool         $valid  Whether the coupon is valid.
         * @param  WC_Coupon    $coupon Coupon object.
         * @param  WC_Discounts $discounts Discounts object.
         * @return bool         $valid  True if coupon is valid, otherwise Exception will be thrown.
         */
        public function is_coupon_valid($valid, $coupon, $discounts = \null)
        {
        }
        /**
         * Check if a coupon is valid for a product.
         *
         * This allows percentage and product discounts to apply to only
         * the correct products in the cart.
         *
         * @param  bool       $valid   Whether the product should get the coupon's discounts.
         * @param  WC_Product $product WC Product Object.
         * @param  WC_Coupon  $coupon  Coupon object.
         * @return bool       $valid
         */
        public function is_valid_for_product($valid, $product, $coupon)
        {
        }
        /**
         * Display a custom error message when a cart discount coupon does not validate
         * because an excluded brand was found in the cart.
         *
         * @param  string $err      The error message.
         * @param  string $err_code The error code.
         * @return string
         */
        public function brand_exclusion_error($err, $err_code)
        {
        }
        /**
         * Get a list of brands that are assigned to a specific product
         *
         * @param  int $product_id Product id.
         * @return array brands
         */
        private function get_product_brands($product_id)
        {
        }
        /**
         * Set brand settings as properties on coupon object. These properties are
         * lists of included product brand IDs and list of excluded brand IDs.
         *
         * @param WC_Coupon $coupon Coupon object.
         *
         * @return void
         */
        private function set_brand_settings_on_coupon($coupon)
        {
        }
        /**
         * Returns the product (or variant) ID.
         *
         * @param  WC_Product $product WC Product Object.
         * @return int Product ID
         */
        private function get_product_id($product)
        {
        }
    }
    /**
     * WC_Brands class.
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @version 9.5.0
     */
    class WC_Brands
    {
        /**
         * Template URL -- filterable.
         *
         * @var mixed|null
         */
        public $template_url;
        /**
         * __construct function.
         */
        public function __construct()
        {
        }
        /**
         * Register our hooks
         */
        public function register_hooks()
        {
        }
        /**
         * Add product_brand to the taxonomies overridden for the original term count.
         *
         * @param array $taxonomies List of taxonomies.
         *
         * @return array
         */
        public function add_brands_to_terms($taxonomies)
        {
        }
        /**
         * Recount the brands after the stock amount changes.
         *
         * @param int $product_id Product ID.
         */
        public function recount_after_stock_change($product_id)
        {
        }
        /**
         * Recount all brands.
         */
        public function recount_all_brands()
        {
        }
        /**
         * Update the main product fetch query to filter by selected brands.
         *
         * @param array $tax_query array of current taxonomy filters.
         *
         * @return array
         */
        public function update_product_query_tax_query(array $tax_query)
        {
        }
        /**
         * Filter to allow product_brand in the permalinks for products.
         *
         * @param string  $permalink The existing permalink URL.
         * @param WP_Post $post The post.
         * @return string
         */
        public function post_type_link($permalink, $post)
        {
        }
        /**
         * Adds filter for introducing CSS classes.
         */
        public function body_class()
        {
        }
        /**
         * Adds classes to brand taxonomy pages.
         *
         * @param array $classes Classes array.
         */
        public function add_body_class($classes)
        {
        }
        /**
         * Enqueues styles.
         */
        public function styles()
        {
        }
        /**
         * Initializes brand taxonomy.
         */
        public static function init_taxonomy()
        {
        }
        /**
         * Initializes brand widgets.
         */
        public function init_widgets()
        {
        }
        /**
         *
         * Handles template usage so that we can use our own templates instead of the themes.
         *
         * Templates are in the 'templates' folder. woocommerce looks for theme
         * overides 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.
         */
        public function template_loader($template)
        {
        }
        /**
         * Displays brand description.
         */
        public function brand_description()
        {
        }
        /**
         * Displays brand.
         */
        public function show_brand()
        {
        }
        /**
         * Add structured data to product page.
         *
         * @param  array $markup Markup.
         * @return array $markup
         */
        public function add_structured_data($markup)
        {
        }
        /**
         * Registers shortcodes.
         */
        public function register_shortcodes()
        {
        }
        /**
         * Displays product brand.
         *
         * @param array $atts Attributes from the shortcode.
         * @return string The generated output.
         */
        public function output_product_brand($atts)
        {
        }
        /**
         * Displays product brand list.
         *
         * @param array $atts Attributes from the shortcode.
         * @return string
         */
        public function output_product_brand_list($atts)
        {
        }
        /**
         * Get the first letter of the brand name, returning lowercase and without accents.
         *
         * @param string $name
         *
         * @return string
         * @since  9.4.0
         */
        private function get_brand_name_first_character($name)
        {
        }
        /**
         * Displays brand thumbnails.
         *
         * @param mixed $atts
         * @return void
         */
        public function output_product_brand_thumbnails($atts)
        {
        }
        /**
         * Displays brand thumbnails description.
         *
         * @param mixed $atts
         * @return void
         */
        public function output_product_brand_thumbnails_description($atts)
        {
        }
        /**
         * Displays brand products.
         *
         * @param array $atts
         * @return string
         */
        public function output_brand_products($atts)
        {
        }
        /**
         * Adds the taxonomy query to the WooCommerce products shortcode query arguments.
         *
         * @param array  $query_args
         * @param array  $attributes
         * @param string $type
         *
         * @return array
         */
        public static function get_brand_products_query_args($query_args, $attributes, $type)
        {
        }
        /**
         * Adds the "brand" attribute to the list of WooCommerce products shortcode attributes.
         *
         * @param array  $out       The output array of shortcode attributes.
         * @param array  $pairs     The supported attributes and their defaults.
         * @param array  $atts      The user defined shortcode attributes.
         * @param string $shortcode The shortcode name.
         *
         * @return array The output array of shortcode attributes.
         */
        public static function add_brand_products_shortcode_atts($out, $pairs, $atts, $shortcode)
        {
        }
        /**
         * Register REST API route for /products/brands.
         *
         * @since 9.4.0
         *
         * @return void
         */
        public function rest_api_register_routes()
        {
        }
        /**
         * Maybe set brands when requesting PUT /products/<id>.
         *
         * @since 9.4.0
         *
         * @param WP_Post         $post    Post object
         * @param WP_REST_Request $request Request object
         *
         * @return void
         */
        public function rest_api_maybe_set_brands($post, $request)
        {
        }
        /**
         * Prepare brands in product response.
         *
         * @param WP_REST_Response $response   The response object.
         * @param WP_Post|WC_Data  $post       Post object or WC object.
         * @version 9.4.0
         * @return WP_REST_Response
         */
        public function rest_api_prepare_brands_to_product($response, $post)
        {
        }
        /**
         * Add brands in product response.
         *
         * @param WC_Data         $product   Inserted product object.
         * @param WP_REST_Request $request   Request object.
         * @param boolean         $creating  True when creating object, false when updating.
         * @version 9.4.0
         */
        public function rest_api_add_brands_to_product($product, $request, $creating = \true)
        {
        }
        /**
         * Filters products by taxonomy product_brand.
         *
         * @param array           $args    Request args.
         * @param WP_REST_Request $request Request data.
         * @return array Request args.
         * @version 9.4.0
         */
        public function rest_api_filter_products_by_brand($args, $request)
        {
        }
        /**
         * Documents additional query params for collections of products.
         *
         * @param array        $params JSON Schema-formatted collection parameters.
         * @param WP_Post_Type $post_type   Post type object.
         * @return array JSON Schema-formatted collection parameters.
         * @version 9.4.0
         */
        public function rest_api_product_collection_params($params, $post_type)
        {
        }
        /**
         * Injects Brands filters into layered nav links.
         *
         * @param  string $term_html Original link html.
         * @param  mixed  $term      Term that is currently added.
         * @param  string $link      Original layered nav item link.
         * @param  number $count     Number of items in that filter.
         * @return string            Term html.
         * @version 9.4.0
         */
        public function woocommerce_brands_update_layered_nav_link($term_html, $term, $link, $count)
        {
        }
        /**
         * Temporarily tag a post with meta before it is saved in order
         * to allow us to be able to use the meta when the product is saved to add
         * the brands when an ID has been generated.
         *
         *
         * @param WC_Product $duplicate
         * @return WC_Product $original
         */
        public function duplicate_store_temporary_brands($duplicate, $original)
        {
        }
        /**
         * After product was added check if there are temporary brands and
         * add them officially and remove the temporary brands.
         *
         * @since 9.4.0
         *
         * @param int $product_id
         */
        public function duplicate_add_product_brand_terms($product_id)
        {
        }
        /**
         * Remove terms with empty products.
         *
         * @param WP_Term[] $terms The terms array that needs to be removed of empty products.
         *
         * @return WP_Term[]
         */
        private function remove_terms_with_empty_products($terms)
        {
        }
        /**
         * Invalidates the layered nav counts cache.
         *
         * @return void
         */
        public function invalidate_wc_layered_nav_counts_cache()
        {
        }
        /**
         * Reset Layered Nav cached counts on product status change.
         *
         * @param $new_status
         * @param $old_status
         * @param $post
         *
         * @return void
         */
        function reset_layered_nav_counts_on_status_change($new_status, $old_status, $post)
        {
        }
        /**
         * Add a new block to the template.
         *
         * @param string                 $template_id Template ID.
         * @param string                 $template_area Template area.
         * @param BlockTemplateInterface $template Template instance.
         */
        public function wc_brands_on_block_template_register($template_id, $template_area, $template)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
}
namespace Automattic\WooCommerce\Caching {
    /**
     * Implements namespacing algorithm to simulate grouping and namespacing for wp_cache, memcache and other caching engines that don't support grouping natively.
     *
     * See the algorithm details here: https://github.com/memcached/memcached/wiki/ProgrammingTricks#namespacing.
     *
     * To use the namespacing algorithm in the CacheEngine class:
     * 1. Use a group string to identify all objects of a type.
     * 2. Before setting cache, prefix the cache key by using the `get_cache_prefix`.
     * 3. Use `invalidate_cache_group` function to invalidate all caches in entire group at once.
     */
    trait CacheNameSpaceTrait
    {
        /**
         * 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 Prefix.
         */
        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)
        {
        }
        /**
         * Invalidate cache group.
         *
         * @param string $group Group of cache to clear.
         * @since 3.9.0
         */
        public static function invalidate_cache_group($group)
        {
        }
        /**
         * Helper method to get prefixed key.
         *
         * @param  string $key   Key to prefix.
         * @param  string $group Group of cache to get.
         *
         * @return string Prefixed key.
         */
        public static function get_prefixed_key($key, $group)
        {
        }
    }
}
namespace {
    /**
     * WC_Cache_Helper.
     */
    class WC_Cache_Helper
    {
        use \Automattic\WooCommerce\Caching\CacheNameSpaceTrait;
        /**
         * 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 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()
        {
        }
        /**
         * Updates the `woocommerce_geo_hash` cookie, which is used to help ensure we display
         * the correct pricing etc to customers, according to their billing country.
         *
         * Note that:
         *
         * A) This only sets the cookie if the default customer address is set to "Geolocate (with
         *    Page Caching Support)".
         *
         * B) It is hooked into the `wc_ajax_update_order_review` action, which has the benefit of
         *    ensuring we update the cookie any time the billing country is changed.
         */
        public static function update_geolocation_hash()
        {
        }
        /**
         * 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 = '')
        {
        }
    }
    /**
     * WC_Cart_Fees class.
     *
     * @since 3.2.0
     */
    final class WC_Cart_Fees
    {
        /**
         * An array of fee objects.
         *
         * @var object[]
         */
        private $fees = array();
        /**
         * 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.
         *
         * @param null $deprecated Deprecated since WooCommerce 8.2.0.
         *
         * @since 3.2.0
         */
        public function __construct($deprecated = \null)
        {
        }
        /**
         * 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 stdClass $a Fee object.
         * @param stdClass $b Fee 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)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Sets the cart instance.
         *
         * @param WC_Cart $cart Cart object.
         */
        public function set_cart(\WC_Cart $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.
         *
         * Headers are only updated if headers have not yet been sent.
         *
         * @since 3.2.0
         */
        public function maybe_set_cart_cookies()
        {
        }
        /**
         * Remove duplicate cookies from the response.
         */
        private function dedupe_cookies()
        {
        }
        /**
         * Find a cookie by name in an array of cookies.
         *
         * @param  string $cookie_name Name of the cookie to find.
         * @param  array  $cookies     Array of cookies to search.
         * @return mixed               Key of the cookie if found, false if not.
         */
        private function find_cookie_by_name($cookie_name, $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)
        {
        }
    }
    /**
     * WC_Cart_Totals class.
     *
     * @since 3.2.0
     */
    final class WC_Cart_Totals
    {
        use \WC_Item_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);
        /**
         * Cache of tax rates for a given tax class.
         *
         * @var array
         */
        protected $item_tax_rates;
        /**
         * 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 calculation 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()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Returns array of values for totals calculation.
         *
         * @param string $field Field name. Will probably be `total` or `subtotal`.
         * @return array Items object
         */
        protected function get_values_for_total($field)
        {
        }
        /**
         * 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.
         *
         * @deprecated 3.9.0 `calculate_item_subtotals` should already appropriately round the tax values.
         * @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()
        {
        }
    }
    /**
     * Legacy cart class.
     */
    #[\AllowDynamicProperties]
    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.
         *
         * If you add/remove cases here please update $legacy_keys in __isset accordingly.
         *
         * @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 3.2.0 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
         * @return bool
         */
        public function coupons_enabled()
        {
        }
        /**
         * Gets the total (product) discount amount - these are applied before tax.
         *
         * @deprecated 2.3.0 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 2.3.0 Order discounts (after tax) removed in 2.3.
         * @return int
         */
        public function get_order_discount_total()
        {
        }
        /**
         * Function to apply cart discounts after tax.
         *
         * @deprecated 2.3.0 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 2.3.0 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 2.3.0 Coupons can not be applied after tax.
         */
        public function get_discounts_after_tax()
        {
        }
    }
    /**
     * 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();
        /**
         * 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_tax.
         *
         * @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|string
         */
        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 persistent 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 float
         */
        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
         * @deprecated 9.0.0 In favor of static method Automattic\WooCommerce\Utilities\DiscountsUtil::is_coupon_emails_allowed.
         */
        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
         */
        public function get_tax_price_display_mode()
        {
        }
        /**
         * Returns the hash based on cart contents.
         *
         * @since 3.6.0
         * @return string hash for cart content
         */
        public function get_cart_hash()
        {
        }
    }
    /**
     * Checkout class.
     */
    class WC_Checkout
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * 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()
        {
        }
        /**
         * Initialize the checkout fields.
         */
        protected function initialize_checkout_fields()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Copy line items, tax, totals data from cart to order.
         *
         * @param WC_Order $order Order object.
         *
         * @throws Exception When unable to create order.
         */
        public function set_data_from_cart(&$order)
        {
        }
        /**
         * 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; '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)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Include Blueprint CLI if it's available.
         */
        private function maybe_include_blueprint_cli()
        {
        }
    }
    /**
     * 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, webhook delivery logs, and product reviews 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)
        {
        }
        /**
         * Add Product Reviews filter for `review` comment type.
         *
         * @since 6.0.0
         *
         * @param array $comment_types Array of comment type labels keyed by their name.
         *
         * @return array
         */
        public static function add_review_comment_filter(array $comment_types) : array
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Utility function for getting review counts for multiple products in one query. This is not cached.
         *
         * @since 5.0.0
         *
         * @param array $product_ids Array of product IDs.
         *
         * @return array
         */
        public static function get_review_counts_for_product_ids($product_ids)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Validate product reviews if requires a verified owner.
         *
         * @param int $comment_post_id Post ID.
         */
        public static function validate_product_review_verified_owners($comment_post_id)
        {
        }
        /**
         * Determines if a comment is of the default type.
         *
         * Prior to WordPress 5.5, '' was the default comment type.
         * As of 5.5, the default type is 'comment'.
         *
         * @since 4.3.0
         * @param string $comment_type Comment type.
         * @return bool
         */
        private static function is_default_comment_type($comment_type)
        {
        }
    }
    /**
     * 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();
        /**
         * Cache of geographical regions.
         *
         * Only to be used by the get_* and load_* methods, as other methods may expect the regions to be
         * loaded on demand.
         *
         * @var array
         */
        private $geo_cache = 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()
        {
        }
        /**
         * Check if a given code represents a valid ISO 3166-1 alpha-2 code for a country known to us.
         *
         * @since 5.1.0
         * @param string $country_code The country code to check as a ISO 3166-1 alpha-2 code.
         * @return bool True if the country is known to us, false otherwise.
         */
        public function country_exists($country_code)
        {
        }
        /**
         * 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.
         *
         * @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 an array of Non-EU countries that use VAT as the Local name for their taxes based on this list - https://en.wikipedia.org/wiki/Value-added_tax#Non-European_Union_countries
         *
         * @deprecated 4.0.0
         * @since 3.9.0
         * @return string[]
         */
        public function countries_using_vat()
        {
        }
        /**
         * Gets an array of countries using VAT.
         *
         * @since 4.0.0
         * @return string[] of country codes.
         */
        public function get_vat_countries()
        {
        }
        /**
         * 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_')
        {
        }
    }
    /**
     * 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 = '')
        {
        }
    }
    /**
     * 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, 'status' => \null, '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 E_WC_COUPON_USAGE_LIMIT_COUPON_STUCK = 115;
        const E_WC_COUPON_USAGE_LIMIT_COUPON_STUCK_GUEST = 116;
        const WC_COUPON_SUCCESS = 200;
        const WC_COUPON_REMOVED = 201;
        /**
         * Cache group.
         *
         * @var string
         */
        protected $cache_group = 'coupons';
        /**
         * Error message.
         *
         * This property should not be considered public API, and should not be accessed directly.
         * It is being added to suppress PHP > 8.0 warnings against dynamic property creation, and all access
         * should be through the getter and setter methods, namely `get_error_message()` and `set_error_message()`.
         * In the future, the access modifier may be changed back to protected.
         *
         * @var string
         */
        public $error_message;
        /**
         * Sorting.
         *
         * Used by `get_coupons_from_cart` to sort coupons.
         *
         * @var int
         */
        public $sort = 0;
        /**
         * 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|array $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 coupon status.
         *
         * @since  6.2.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_status($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 string
         */
        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 "individual 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 coupon status.
         *
         * @since 3.0.0
         * @param string $status Status.
         */
        public function set_status($status)
        {
        }
        /**
         * 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 Minimum 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.
         * @param WC_Order $order  If provided, will clear the coupons held by this order.
         */
        public function increase_usage_count($used_by = '', $order = \null)
        {
        }
        /**
         * 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.
         * @return string
         */
        public function get_error_message()
        {
        }
        /**
         * Sets the error_message string.
         *
         * @param string $message Message string.
         *
         * @return void
         */
        public function set_error_message(string $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.
         * @param string $notice_type Notice type.
         */
        public function add_coupon_message($msg_code, $notice_type = 'success')
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Get the coupon information that is needed to reapply the coupon to an existing order.
         * This information is intended to be stored as a meta value in the order line item corresponding to the coupon
         * and should NOT be modified or extended (additional/custom data should go in a separate metadata entry).
         *
         * The information returned is a JSON-encoded string of an array with the following coupon information:
         *
         * 0: Id
         * 1: Code
         * 2: Type, null is equivalent to 'fixed_cart'
         * 3: Nominal amount (either a fixed amount or a percent, depending on the coupon type)
         * 4: The coupon grants free shipping? (present only if true)
         *
         * @return string A JSON string with information that allows the coupon to be reapplied to an existing order.
         */
        public function get_short_info() : string
        {
        }
        /**
         * Sets the coupon parameters from a reapply information set generated with 'get_short_info'.
         *
         * @param string $info JSON string with reapply information as returned by 'get_short_info'.
         */
        public function set_short_info(string $info)
        {
        }
        /**
         * Returns alternate error messages based on context (eg. Cart and Checkout).
         *
         * @param int $err_code Message/error code.
         *
         * @return array Context based alternate error messages.
         */
        public function get_context_based_coupon_errors($err_code = \null)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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 mixed $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet.
         *
         * @param mixed $offset Offset.
         * @param mixed $value  Value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset
         *
         * @param mixed $offset Offset.
         */
        #[\ReturnTypeWillChange]
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists.
         *
         * @param mixed $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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' => '', 'phone' => ''), '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;
        /**
         * This is the name of this object type.
         *
         * @since 5.6.0
         * @var string
         */
        protected $object_type = 'customer';
        /**
         * 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)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Indicates if the customer has a non-empty shipping address.
         *
         * Note that this does not indicate if the customer's shipping address
         * is complete, only that one or more fields are populated.
         *
         * @since 5.3.0
         *
         * @return bool
         */
        public function has_shipping_address()
        {
        }
        /**
         * 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_type Type of 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_type = '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')
        {
        }
        /**
         * Get shipping phone.
         *
         * @since 5.6.0
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_shipping_phone($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_type Type of address; 'billing' or 'shipping'.
         * @param mixed  $value        Value of the prop.
         */
        protected function set_address_prop($prop, $address_type, $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 shipping phone.
         *
         * @since 5.6.0
         * @param string $value Shipping phone.
         */
        public function set_shipping_phone($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)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Reads multiple objects from the data store.
         *
         * @since 6.9.0
         * @param array[WC_Data] $objects Array of object instances to read.
         */
        public function read_multiple(&$objects = array())
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Check if the data store we are working with has a callable method.
         *
         * @param string $method Method name.
         *
         * @return bool Whether the passed method is callable.
         */
        public function has_callable(string $method) : bool
        {
        }
    }
    /**
     * 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.
         */
        #[\ReturnTypeWillChange]
        public function getOffset()
        {
        }
        /**
         * Set timezone.
         *
         * @param DateTimeZone $timezone DateTimeZone instance.
         * @return DateTime
         */
        #[\ReturnTypeWillChange]
        public function setTimezone($timezone)
        {
        }
        /**
         * Missing in PHP 5.2 so just here so it can be supported consistently.
         *
         * @since  3.0.0
         * @return int
         */
        #[\ReturnTypeWillChange]
        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')
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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_account_orders_columns' => 'woocommerce_my_account_my_orders_columns', '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', 'woocommerce_csv_importer_check_import_file_path' => 'woocommerce_product_csv_importer_check_import_file_path');
        /**
         * Array of versions on each hook has been deprecated.
         *
         * @var array
         */
        protected $deprecated_version = array('woocommerce_my_account_my_orders_columns' => '2.6.0', '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', 'woocommerce_product_csv_importer_check_import_file_path' => '6.5.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)
        {
        }
    }
    /**
     * 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 float
         */
        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 applicable. 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.
         *
         * A coupon is also considered to no longer exist if it has been placed in the trash, even if the trash has not yet
         * been emptied.
         *
         * @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)
        {
        }
        /**
         * Ensure coupon is valid for allowed emails or throw exception.
         *
         * @since  8.6.0
         * @throws Exception Error message.
         * @param  WC_Coupon $coupon Coupon data.
         * @return bool
         */
        protected function validate_coupon_allowed_emails($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.
         *
         * @param WC_Coupon $coupon Coupon data.
         *
         * @return bool|WP_Error
         * @throws Exception Error message.
         * @since  3.2.0
         */
        public function is_coupon_valid($coupon)
        {
        }
    }
    /**
     * Download handler class.
     */
    class WC_Download_Handler
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * The hook used for deferred tracking of partial download attempts.
         */
        public const TRACK_DOWNLOAD_CALLBACK = 'track_partial_download';
        /**
         * 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 4.4.0
         * @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()
        {
        }
        /**
         *
         * Get selected content disposition
         *
         * Defaults to attachment if `woocommerce_downloads_deliver_inline` setting is not selected.
         *
         * @return string Content disposition value.
         */
        private static function get_content_disposition() : string
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Takes care of tracking download requests, with support for deferring tracking in the case of
         * partial (ranged request) downloads.
         *
         * @param WC_Customer_Download|int $download        The download to be tracked.
         * @param int|null                 $user_id         The user ID, if known.
         * @param string|null              $user_ip_address The download IP address, if known.
         * @param bool                     $defer           If tracking the download should be deferred.
         *
         * @return void
         * @throws Exception If the active version of Action Scheduler is less than 3.6.0.
         */
        private static function track_download($download, $user_id = \null, $user_ip_address = \null, bool $defer = \false) : void
        {
        }
    }
    /**
     * 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.
         *
         * @param mixed ...$args Optional arguments.
         */
        public static function queue_transactional_email(...$args)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Renders any additional fields captured during block-based checkout.
         *
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If email is sent to admin.
         * @param bool     $plain_text    If this is a plain text email.
         */
        public function additional_checkout_fields($order, $sent_to_admin = \false, $plain_text = \false)
        {
        }
        /**
         * Renders any additional address fields captured during block-based checkout.
         *
         * @param string   $address_type Address type.
         * @param WC_Order $order         Order instance.
         * @param bool     $sent_to_admin If email is sent to admin.
         * @param bool     $plain_text    If this is a plain text email.
         */
        public function additional_address_fields($address_type, $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)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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 = array('strategy' => 'defer'))
        {
        }
        /**
         * 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 = array('strategy' => 'defer'))
        {
        }
        /**
         * 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 styles.
         */
        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()
        {
        }
    }
    /**
     * 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');
        /**
         * Country 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', 'Eswatini', '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;
    }
    /**
     * Geolite integration class.
     *
     * @deprecated 3.9.0
     */
    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
         * @deprecated 3.9.0
         */
        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')
        {
        }
    }
    /**
     * 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
         * @deprecated 3.9.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', 'tnedi' => 'http://tnedi.me');
        /**
         * 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 geolocation is enabled.
         *
         * @since 3.4.0
         * @param string $current_settings Current geolocation settings.
         * @return bool
         */
        private static function is_geolocation_enabled($current_settings)
        {
        }
        /**
         * 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.
         *
         * @deprecated 3.9.0
         * @param  string $deprecated Deprecated since 3.4.0.
         * @return string
         */
        public static function get_local_database_path($deprecated = '2')
        {
        }
        /**
         * Update geoip database.
         *
         * @deprecated 3.9.0
         * Extract files with PharData. Tool built into PHP since 5.3.
         */
        public static function update_database()
        {
        }
        /**
         * Fetches the country code from the request headers, if one is available.
         *
         * @since 3.9.0
         * @return string The country code pulled from the headers, or empty string if one was not found.
         */
        private static function get_country_code_from_headers()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Hook in geolocation functionality.
         *
         * @deprecated 3.9.0
         * @return null
         */
        public static function init()
        {
        }
        /**
         * Prevent geolocation via MaxMind when using legacy versions of php.
         *
         * @deprecated 3.9.0
         * @since 3.4.0
         * @param string $default_customer_address current value.
         * @return string
         */
        public static function disable_geolocation_on_legacy_php($default_customer_address)
        {
        }
        /**
         * Maybe trigger a DB update for the first time.
         *
         * @deprecated 3.9.0
         * @param  string $new_value New value.
         * @param  string $old_value Old value.
         * @return string
         */
        public static function maybe_update_database($new_value, $old_value)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * WC_Install Class.
     */
    class WC_Install
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * DB updates and callbacks that need to be run per version.
         *
         * Please note that these functions are invoked when WooCommerce is updated from a previous version,
         * but NOT when WooCommerce is newly installed.
         *
         * Database schema changes must be incorporated to the SQL returned by get_schema, which is applied
         * via dbDelta at both install and update time. If any other kind of database change is required
         * at install time (e.g. populating tables), use the 'woocommerce_installed' hook.
         *
         * @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'), '3.9.0' => array('wc_update_390_move_maxmind_database', 'wc_update_390_change_geolocation_database_update_cron', 'wc_update_390_db_version'), '4.0.0' => array('wc_update_product_lookup_tables', 'wc_update_400_increase_size_of_column', 'wc_update_400_reset_action_scheduler_migration_status', 'wc_admin_update_0201_order_status_index', 'wc_admin_update_0230_rename_gross_total', 'wc_admin_update_0251_remove_unsnooze_action', 'wc_update_400_db_version'), '4.4.0' => array('wc_update_440_insert_attribute_terms_for_variable_products', 'wc_admin_update_110_remove_facebook_note', 'wc_admin_update_130_remove_dismiss_action_from_tracking_opt_in_note', 'wc_update_440_db_version'), '4.5.0' => array('wc_update_450_sanitize_coupons_code', 'wc_update_450_db_version'), '5.0.0' => array('wc_update_500_fix_product_review_count', 'wc_admin_update_160_remove_facebook_note', 'wc_admin_update_170_homescreen_layout', 'wc_update_500_db_version'), '5.6.0' => array('wc_update_560_create_refund_returns_page', 'wc_update_560_db_version'), '6.0.0' => array('wc_update_600_migrate_rate_limit_options', 'wc_admin_update_270_delete_report_downloads', 'wc_admin_update_271_update_task_list_options', 'wc_admin_update_280_order_status', 'wc_admin_update_290_update_apperance_task_option', 'wc_admin_update_290_delete_default_homepage_layout_option', 'wc_update_600_db_version'), '6.3.0' => array('wc_update_630_create_product_attributes_lookup_table', 'wc_admin_update_300_update_is_read_from_last_read', 'wc_update_630_db_version'), '6.4.0' => array('wc_update_640_add_primary_key_to_product_attributes_lookup_table', 'wc_admin_update_340_remove_is_primary_from_note_action', 'wc_update_640_db_version'), '6.5.0' => array('wc_update_650_approved_download_directories'), '6.5.1' => array('wc_update_651_approved_download_directories'), '6.7.0' => array('wc_update_670_purge_comments_count_cache', 'wc_update_670_delete_deprecated_remote_inbox_notifications_option'), '7.0.0' => array('wc_update_700_remove_download_log_fk', 'wc_update_700_remove_recommended_marketing_plugins_transient'), '7.2.1' => array('wc_update_721_adjust_new_zealand_states', 'wc_update_721_adjust_ukraine_states'), '7.2.2' => array('wc_update_722_adjust_new_zealand_states', 'wc_update_722_adjust_ukraine_states'), '7.5.0' => array('wc_update_750_add_columns_to_order_stats_table', 'wc_update_750_disable_new_product_management_experience'), '7.7.0' => array('wc_update_770_remove_multichannel_marketing_feature_options'), '8.1.0' => array('wc_update_810_migrate_transactional_metadata_for_hpos'), '8.6.0' => array('wc_update_860_remove_recommended_marketing_plugins_transient'), '8.7.0' => array('wc_update_870_prevent_listing_of_transient_files_directory'), '8.9.0' => array('wc_update_890_update_connect_to_woocommerce_note', 'wc_update_890_update_paypal_standard_load_eligibility'), '8.9.1' => array('wc_update_891_create_plugin_autoinstall_history_option'), '9.1.0' => array('wc_update_910_add_launch_your_store_tour_option', 'wc_update_910_remove_obsolete_user_meta'), '9.2.0' => array('wc_update_920_add_wc_hooked_blocks_version_option'), '9.3.0' => array('wc_update_930_add_woocommerce_coming_soon_option', 'wc_update_930_migrate_user_meta_for_launch_your_store_tour'), '9.4.0' => array('wc_update_940_add_phone_to_order_address_fts_index', 'wc_update_940_remove_help_panel_highlight_shown'), '9.5.0' => array('wc_update_950_tracking_option_autoload'));
        /**
         * Option name used to track new installations of WooCommerce.
         *
         * @var string
         */
        const NEWLY_INSTALLED_OPTION = 'woocommerce_newly_installed';
        /**
         * Option name used to track new installation versions of WooCommerce.
         *
         * @var string
         */
        const INITIAL_INSTALLED_VERSION = 'woocommerce_initial_installed_version';
        /**
         * Option name used to uniquely identify installations of WooCommerce.
         *
         * @var string
         */
        const STORE_ID_OPTION = 'woocommerce_store_id';
        /**
         * Hook in tabs.
         */
        public static function init()
        {
        }
        /**
         * Trigger `woocommerce_newly_installed` action for new installations.
         *
         * @since 8.0.0
         */
        private static function newly_installed()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Add WC Admin based db update notice.
         *
         * @since 4.0.0
         */
        public static function wc_admin_db_update_notice()
        {
        }
        /**
         * Run manual database update.
         */
        public static function run_manual_database_update()
        {
        }
        /**
         * Run an update callback when triggered by ActionScheduler.
         *
         * @param string $update_callback Callback name.
         *
         * @since 3.6.0
         */
        public static function run_update_callback($update_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()
        {
        }
        /**
         * Core function that performs the WooCommerce install.
         */
        private static function install_core()
        {
        }
        /**
         * Returns true if we're installing.
         *
         * @return bool
         */
        private static function is_installing()
        {
        }
        /**
         * Check if all the base tables are present.
         *
         * @param bool $modify_notice Whether to modify notice based on if all tables are present.
         * @param bool $execute       Whether to execute get_schema queries as well.
         *
         * @return array List of queries.
         */
        public static function verify_base_tables($modify_notice = \true, $execute = \false)
        {
        }
        /**
         * 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
         */
        public 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 to set redirect transients for activation or not.
         *
         * @since 4.6.0
         */
        private static function maybe_set_activation_transients()
        {
        }
        /**
         * See if we need to show or run database updates during install.
         *
         * @since 3.2.0
         */
        private static function maybe_update_db_version()
        {
        }
        /**
         * Set the Store ID if not already present.
         *
         * @since 8.4.0
         */
        public static function maybe_set_store_id()
        {
        }
        /**
         * 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 on installation.
         */
        public static function maybe_create_pages()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Enable HPOS by default for new shops.
         *
         * @since 8.2.0
         */
        public static function maybe_enable_hpos()
        {
        }
        /**
         * Add the woocommerce_coming_soon option for new shops.
         *
         * Ensure that the option is set for all shops, even if core profiler is disabled on the host.
         *
         * @since 9.3.0
         */
        public static function add_coming_soon_option()
        {
        }
        /**
         * Checks whether HPOS should be enabled for new shops.
         *
         * @return bool
         */
        private static function should_enable_hpos_for_new_shop()
        {
        }
        /**
         * Delete obsolete notes.
         */
        public static function delete_obsolete_notes()
        {
        }
        /**
         * Migrate option values to their new keys/names.
         */
        public static function migrate_options()
        {
        }
        /**
         * Add the default terms for WC taxonomies - product types and order statuses. Modify this at your own risk.
         */
        public static function create_terms()
        {
        }
        /**
         * Install and activate the WooCommerce Legacy REST API plugin from the WordPress.org directory if all the following is true:
         *
         * 1. We are in a WooCommerce upgrade process (not a new install).
         * 2. The 'woocommerce_skip_legacy_rest_api_plugin_auto_install' filter returns false (which is the default).
         * 3. The plugin is not installed and active already (but see note about multisite below).
         * 4. The Legacy REST API is enabled in the site OR the site has at least one webhook defined that uses the Legacy REST API payload format (disabled webhooks also count).
         *
         * In multisite setups it could happen that the plugin was installed by an installation process performed in another site.
         * In this case we check if the plugin was autoinstalled in such a way, and if so we activate it if the conditions are fulfilled.
         */
        private static function maybe_install_legacy_api_plugin()
        {
        }
        /**
         * If in a previous version of WooCommerce the Legacy REST API plugin was installed manually but the core Legacy REST API was kept disabled,
         * now the Legacy API is still disabled and can't be manually enabled from settings UI (the plugin, which is now in control, won't allow that),
         * which is weird and confusing. So we detect this case and explicitly enable it.
         */
        private static function maybe_activate_legacy_api_enabled_option()
        {
        }
        /**
         * Set up the database tables which the plugin needs to function.
         * WARNING: If you are modifying this method, make sure that its safe to call regardless of the state of database.
         *
         * This is called from `install` method and is executed in-sync when WC is installed or updated. This can also be called optionally from `verify_base_tables`.
         *
         * TODO: Add all crucial tables that we have created from workers in the past.
         *
         * 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.
         *
         * @return array Strings containing the results of the various update queries as returned by dbDelta.
         */
        public 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
         */
        public 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)
        {
        }
        /**
         * Sets whether PayPal Standard will be loaded on install.
         *
         * @since 5.5.0
         */
        private static function set_paypal_standard_load_eligibility()
        {
        }
        /**
         * Gets the content of the sample refunds and return policy page.
         *
         * @since 5.6.0
         * @return string The content for the page
         */
        private static function get_refunds_return_policy_page_content()
        {
        }
        /**
         * Adds an admin inbox note after a page has been created to notify
         * user. For example to take action to edit the page such as the
         * Refund and returns page.
         *
         * @since 5.6.0
         * @return void
         */
        public static function add_admin_note_after_page_created()
        {
        }
        /**
         * When pages are created, we might want to take some action.
         * In this case we want to set an option when refund and returns
         * page is created.
         *
         * @since 5.6.0
         * @param int   $page_id ID of the page.
         * @param array $page_data The data of the page created.
         * @return void
         */
        public static function page_created($page_id, $page_data)
        {
        }
        /**
         * Get the Cart block content.
         *
         * @since 8.3.0
         * @return string
         */
        protected static function get_cart_block_content()
        {
        }
        /**
         * Get the Checkout block content.
         *
         * @since 8.3.0
         * @return string
         */
        protected static function get_checkout_block_content()
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Return a desired integration.
         *
         * @since 3.9.0
         * @param string $id The id of the integration to get.
         * @return mixed|null The integration if one is found, otherwise null.
         */
        public function get_integration($id)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Get an associative array with `level name => numerical severity` key/value pairs.
         *
         * @return int[]
         */
        public static function get_all_level_severities()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Get an associative array with `numerical severity => level name` key/value pairs.
         *
         * @return string[]
         */
        public static function get_all_severity_levels()
        {
        }
        /**
         * Get the UI label for a log level.
         *
         * @param string $level Log level, options: emergency|alert|critical|error|warning|notice|info|debug.
         *
         * @return string
         */
        public static function get_level_label($level)
        {
        }
        /**
         * Get the UI labels for all log levels.
         *
         * @return string[]
         */
        public static function get_all_level_labels()
        {
        }
    }
    /**
     * Logger Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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_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)
        {
        }
        /**
         * Get an array of log handler instances.
         *
         * @return WC_Log_Handler_Interface[]
         */
        protected function get_handlers()
        {
        }
        /**
         * Get the log threshold as a numerical level severity.
         *
         * @return int
         */
        protected function get_threshold()
        {
        }
        /**
         * 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.
         *
         * @return void
         */
        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.
         *
         * @return void
         */
        public function clear_expired_logs()
        {
        }
    }
    /**
     * 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
         */
        #[\ReturnTypeWillChange]
        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()
        {
        }
    }
    /**
     * 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 multiple orders (by ID).
         *
         * @param array[mixed] $order_ids                     Array of order IDs to get.
         * @param boolean      $skip_invalid (default: false) TRUE if invalid IDs or orders should be ignored.
         * @return array[\WC_Order]
         *
         * @throws \Exception When an invalid order is found.
         */
        public static function get_orders($order_ids = array(), $skip_invalid = \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)
        {
        }
        /**
         * Try to determine the current order ID based on available global state.
         *
         * @return false|int
         */
        private static function get_global_order_id()
        {
        }
        /**
         * Gets the class name bunch of order instances should have based on their IDs.
         *
         * @param array $order_ids Order IDs to get the class name for.
         *
         * @return array Array of order_id => class_name.
         */
        public static function get_class_names_for_order_ids($order_ids)
        {
        }
        /**
         * Gets the class name an order instance should have based on its ID.
         *
         * @since 6.9.0
         * @param int $order_id The order ID.
         * @return string The class name or FALSE if the class does not exist.
         */
        private static function get_class_name_for_order_id($order_id)
        {
        }
    }
    /**
     * Order item class.
     */
    class WC_Order_Item extends \WC_Data implements \ArrayAccess
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * Legacy cart item values.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var array
         */
        public $legacy_values;
        /**
         * Legacy cart item keys.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var string
         */
        public $legacy_cart_item_key;
        /**
         * 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';
        /**
         * Legacy package key.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var string
         */
        public $legacy_package_key;
        /**
         * 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
        |--------------------------------------------------------------------------
        */
        /**
         * Wrapper for get_formatted_meta_data that includes all metadata by default. See https://github.com/woocommerce/woocommerce/pull/30948
         *
         * @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_all_formatted_meta_data($hideprefix = '_', $include_all = \true)
        {
        }
        /**
         * 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.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset for ArrayAccess.
         *
         * @param string $offset Offset.
         */
        #[\ReturnTypeWillChange]
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
        /**
         * OffsetGet for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * Indicates if the current order item has an associated Cost of Goods Sold value.
         *
         * Derived classes representing line items that have a COGS value
         * should override this method to return "true" and also the 'calculate_cogs_value_core' method.
         *
         * @since 9.5.0
         *
         * @return bool True if this line item has an associated Cost of Goods Sold value.
         */
        public function has_cogs() : bool
        {
        }
        /**
         * Calculate the Cost of Goods Sold value and set it as the actual value for this line item.
         *
         * @since 9.5.0
         *
         * @return bool True if the value has been calculated successfully (and set as the actual value), false otherwise (and the value hasn't changed).
         * @throws Exception The class doesn't implement its own version of calculate_cogs_value_core. Derived classes are expected to override that method when has_cogs returns true.
         */
        public function calculate_cogs_value() : bool
        {
        }
        // phpcs:disable Squiz.Commenting.FunctionComment.InvalidNoReturn
        /**
         * Core method to calculate the Cost of Goods Sold value for this line item:
         * it doesn't check if COGS is enabled at class or system level, doesn't fire hooks, and doesn't set the value as the current one for the line item.
         *
         * @return float|null The calculated value, or null if the value can't be calculated for some reason.
         * @throws Exception The class doesn't implement its own version of this method. Derived classes are expected to override this method when has_cogs returns true.
         */
        protected function calculate_cogs_value_core() : ?float
        {
        }
        // phpcs:enable Squiz.Commenting.FunctionComment.InvalidNoReturn
        /**
         * Get the value of the Cost of Goods Sold for this order item.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will always return zero.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         * @return float The current value for this order item.
         */
        public function get_cogs_value($context = 'view') : float
        {
        }
        /**
         * Set the value of the Cost of Goods Sold for this order item.
         * Usually you'll want to use calculate_cogs_value instead.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this method will have no effect.
         *
         * @param float $value The value to set for this order item.
         *
         * @internal This method is intended for data store usage only, the value set here will be overridden by calculate_cogs_value.
         */
        public function set_cogs_value(float $value) : void
        {
        }
    }
    /**
     * 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 4.4.0
         * @param string $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated 4.4.0
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Order item fee.
     */
    class WC_Order_Item_Fee extends \WC_Order_Item
    {
        /**
         * Legacy fee data.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var object
         */
        public $legacy_fee = '';
        /**
         * Legacy fee key.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var string
         */
        public $legacy_fee_key = '';
        /**
         * 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.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated 4.4.0
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
    }
    /**
     * 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 = '_')
        {
        }
    }
    /**
     * Order item product class.
     */
    class WC_Order_Item_Product extends \WC_Order_Item
    {
        /**
         * Legacy values.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var array
         */
        public $legacy_values;
        /**
         * Legacy cart item key.
         *
         * @deprecated 4.4.0 For legacy actions.
         * @var string
         */
        public $legacy_cart_item_key;
        /**
         * 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')
        {
        }
        /**
         * Gets the item subtotal. This is the price of the item times the quantity
         * excluding taxes before coupon discounts.
         *
         * @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')
        {
        }
        /**
         * Gets the item total. This is the price of the item times the quantity
         * excluding taxes after coupon discounts.
         *
         * @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.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated 4.4.0
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
        /**
         * Indicates that product line items have an associated Cost of Goods Sold value.
         * Note that this is true even if the product has np COGS value (in that case the COGS value for the line item will be zero)-
         *
         * @return bool Always true.
         */
        public function has_cogs() : bool
        {
        }
        /**
         * Calculate the Cost of Goods Sold value for this line item.
         *
         * @return float|null The calculated value, null if the product associated to the line item no longer exists.
         */
        public function calculate_cogs_value_core() : ?float
        {
        }
    }
    /**
     * 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.
         *
         * @param string $offset Key.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * Offset set: for ArrayAccess/Backwards compatibility.
         *
         * @deprecated 4.4.0
         * @param string $offset Key.
         * @param mixed  $value Value to set.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * Offset exists: for ArrayAccess.
         *
         * @param string $offset Key.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
    }
    /**
     * 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.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet for ArrayAccess/Backwards compatibility.
         *
         * @deprecated 4.4.0
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetExists for ArrayAccess.
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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);
        /**
         * List of properties that were earlier managed by data store. However, since DataStore is a not a stored entity in itself, they used to store data in metadata of the data object.
         * With custom tables, some of these are moved from metadata to their own columns, but existing code will still try to add them to metadata. This array is used to keep track of such properties.
         *
         * Only reason to add a property here is that you are moving properties from DataStore instance to data object. Otherwise, if you are adding a new property, consider adding it to $data array instead.
         *
         * @var array
         */
        protected $legacy_datastore_props = array('_refund_amount', '_refund_reason', '_refunded_by', '_refunded_payment');
        /**
         * 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 string
         */
        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 string
         */
        public function get_refund_reason()
        {
        }
    }
    /**
     * 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' => '', 'phone' => ''),
            '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' => '',
            // Operational data.
            'order_stock_reduced' => \false,
            'download_permissions_granted' => \false,
            'new_order_email_sent' => \false,
            'recorded_sales' => \false,
            'recorded_coupon_usage_counts' => \false,
        );
        /**
         * List of properties that were earlier managed by data store. However, since DataStore is a not a stored entity in itself, they used to store data in metadata of the data object.
         * With custom tables, some of these are moved from metadata to their own columns, but existing code will still try to add them to metadata. This array is used to keep track of such properties.
         *
         * Only reason to add a property here is that you are moving properties from DataStore instance to data object. Otherwise, if you are adding a new property, consider adding it to $data array instead.
         *
         * @var array
         */
        protected $legacy_datastore_props = array('_recorded_sales', '_recorded_coupon_usage_counts', '_download_permissions_granted', '_order_stock_reduced', '_new_order_email_sent');
        /**
         * Refunds for an order. Use {@see get_refunds()} instead.
         *
         * @deprecated 2.2.0
         * @var stdClass|WC_Order[]
         */
        public $refunds;
        /**
         * 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 self::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 basic order data in array format.
         *
         * @return array
         */
        public function get_base_data()
        {
        }
        /**
         * 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_type Type of 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_type = '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 shipping phone.
         *
         * @since  5.6.0
         * @param  string $context What the value is for. Valid values are view and edit.
         * @return string
         */
        public function get_shipping_phone($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 id.
         *
         * @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 $address_type Type of address; 'billing' or 'shipping'.
         * @return array The stored address after filter.
         */
        public function get_address($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()
        {
        }
        /**
         * Gets information about whether stock was reduced.
         *
         * @since 7.0.0
         * @param string $context What the value is for. Valid values are view and edit.
         * @return bool
         */
        public function get_order_stock_reduced(string $context = 'view')
        {
        }
        /**
         * Gets information about whether permissions were generated yet.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         *
         * @return bool True if permissions were generated, false otherwise.
         */
        public function get_download_permissions_granted(string $context = 'view')
        {
        }
        /**
         * Whether email have been sent for this order.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         *
         * @return bool
         */
        public function get_new_order_email_sent(string $context = 'view')
        {
        }
        /**
         * Gets information about whether sales were recorded.
         *
         * @param string $context What the value is for. Valid values are view and edit.
         *
         * @return bool True if sales were recorded, false otherwise.
         */
        public function get_recorded_sales(string $context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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_type Type of address; 'billing' or 'shipping'.
         * @param mixed  $value Value of the prop.
         */
        protected function set_address_prop($prop, $address_type, $value)
        {
        }
        /**
         * Setter for billing address, expects the $address parameter to be key value pairs for individual address props.
         *
         * @param array $address Address to set.
         *
         * @return void
         */
        public function set_billing_address(array $address)
        {
        }
        /**
         * Shortcut for calling set_billing_address.
         *
         * This is useful in scenarios where set_$prop_name is invoked, and since we store the billing address as 'billing' prop in data, it can be called directly.
         *
         * @param array $address Address to set.
         *
         * @return void
         */
        public function set_billing(array $address)
        {
        }
        /**
         * Setter for shipping address, expects the $address parameter to be key value pairs for individual address props.
         *
         * @param array $address Address to set.
         *
         * @return void
         */
        public function set_shipping_address(array $address)
        {
        }
        /**
         * Shortcut for calling set_shipping_address. This is useful in scenarios where set_$prop_name is invoked, and since we store the shipping address as 'shipping' prop in data, it can be called directly.
         *
         * @param array $address Address to set.
         *
         * @return void
         */
        public function set_shipping(array $address)
        {
        }
        /**
         * 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 shipping phone.
         *
         * @since 5.6.0
         * @param string $value Shipping phone.
         * @throws WC_Data_Exception Throws exception when invalid data is found.
         */
        public function set_shipping_phone($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)
        {
        }
        /**
         * Stores information about whether stock was reduced.
         *
         * @param bool|string $value True if stock was reduced, false if not.
         *
         * @return void
         */
        public function set_order_stock_reduced($value)
        {
        }
        /**
         * Stores information about whether permissions were generated yet.
         *
         * @param bool|string $value True if permissions were generated, false if not.
         *
         * @return void
         */
        public function set_download_permissions_granted($value)
        {
        }
        /**
         * Stores information about whether email was sent.
         *
         * @param bool|string $value True if email was sent, false if not.
         *
         * @return void
         */
        public function set_new_order_email_sent($value)
        {
        }
        /**
         * Stores information about whether sales were recorded.
         *
         * @param bool|string $value True if sales were recorded, false if not.
         *
         * @return void
         */
        public function set_recorded_sales($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)
        {
        }
        /**
         * Add an order note for status transition
         *
         * @since 3.9.0
         * @uses self::add_order_note()
         * @param string $note          Note to be added giving status transition from and to details.
         * @param bool   $transition    Details of the status transition.
         * @return int                  Comment ID.
         */
        private function add_status_transition_note($note, $transition)
        {
        }
        /**
         * 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 = '')
        {
        }
        /**
         * Check if order has been created via admin, checkout, or in another way.
         *
         * @since 4.0.0
         * @param string $modus Way of creating the order to test for.
         * @return bool
         */
        public function is_created_via($modus)
        {
        }
        /**
         * Attempts to restore the specified order back to its original status (after having been trashed).
         *
         * @return bool If the operation was successful.
         */
        public function untrash() : bool
        {
        }
        /**
         * Indicates that regular orders have an associated Cost of Goods Sold value.
         * Note that this is true even if the order has no line items with COGS values (in that case the COGS value for the order will be zero)-
         *
         * @return bool Always true.
         */
        public function has_cogs()
        {
        }
    }
    /**
     * Payment gateways class.
     */
    class WC_Payment_Gateways
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * 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()
        {
        }
        /**
         * Hook into payment gateway settings changes.
         *
         * @param WC_Payment_Gateways $wc_payment_gateways The WC_Payment_Gateways instance.
         * @since 8.5.0
         */
        private function on_payment_gateways_initialized(\WC_Payment_Gateways $wc_payment_gateways)
        {
        }
        /**
         * Callback for when a gateway settings option was added or updated.
         *
         * @param WC_Payment_Gateway $gateway   The gateway for which the option was added or updated.
         * @param mixed              $value     New value.
         * @param string             $option    Option name.
         * @param mixed              $old_value Old value. `null` when called via add_option_ hook.
         * @since 8.5.0
         */
        private function payment_gateway_settings_option_changed($gateway, $value, $option, $old_value = \null)
        {
        }
        /**
         * Email the site admin when a payment gateway has been enabled.
         *
         * @param WC_Payment_Gateway $gateway The gateway that was enabled.
         * @return bool Whether the email was sent or not.
         * @since 8.5.0
         */
        private function notify_admin_payment_gateway_enabled($gateway)
        {
        }
        /**
         * Determines from changes in settings if a gateway was enabled.
         *
         * @param array $value New value.
         * @param array $old_value Old value.
         * @return bool Whether the gateway was enabled or not.
         */
        private function was_gateway_enabled($value, $old_value = \null)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Determines if PayPal Standard should be loaded.
         *
         * @since 5.5.0
         * @return bool Whether PayPal Standard should be loaded or not.
         */
        protected function should_load_paypal_standard()
        {
        }
    }
    /**
     * 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 arguments {
         *     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)
        {
        }
        /**
         * Get classname based on token type.
         *
         * @since 3.8.0
         * @param string $type Token type.
         * @return string
         */
        protected static function get_token_classname($type)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Clear global unique id if it's not unique.
         *
         * @param mixed $id Post ID.
         */
        private static function clear_global_unique_id_if_necessary($id)
        {
        }
        /**
         * Get the post type for a given post.
         *
         * @param int $id The post id.
         * @return string The post type.
         */
        private static function get_post_type($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  mixed  $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)
        {
        }
        /**
         * Ensure statuses are correctly reassigned when restoring orders and products.
         *
         * @param string $new_status      The new status of the post being restored.
         * @param int    $post_id         The ID of the post being restored.
         * @param string $previous_status The status of the post at the point where it was trashed.
         * @return string
         */
        public static function wp_untrash_post_status($new_status, $post_id, $previous_status)
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Customize taxonomies update messages.
         *
         * @param array $messages The list of available messages.
         * @since 4.4.0
         * @return bool
         */
        public static function updated_term_messages($messages)
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * 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_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 associated 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Initial registration of privacy erasers and exporters.
         *
         * Due to the use of translation functions, this should run only after plugins loaded.
         */
        public function register_erasers_exporters()
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * 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 string $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
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet.
         *
         * @param string $offset Offset.
         * @param mixed  $value  Value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset.
         *
         * @param string $offset Offset.
         */
        #[\ReturnTypeWillChange]
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists.
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
    }
    /**
     * Product download class.
     */
    class WC_Product_Download implements \ArrayAccess
    {
        /**
         * Data array.
         *
         * @since 3.0.0
         * @var array
         */
        protected $data = array('id' => '', 'name' => '', 'file' => '', 'enabled' => \true);
        /**
         * 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()
        {
        }
        /**
         * Confirms that the download is of an allowed filetype, that it exists and that it is
         * contained within an approved directory. Used before adding to a product's list of
         * downloads.
         *
         * @internal
         * @throws Exception If the download is determined to be invalid.
         *
         * @param bool $auto_add_to_approved_directory_list If the download is not already in the approved directory list, automatically add it if possible.
         */
        public function check_is_valid(bool $auto_add_to_approved_directory_list = \true)
        {
        }
        /**
         * Check if file is allowed.
         *
         * @return boolean
         */
        public function is_allowed_filetype()
        {
        }
        /**
         * Validate file exists.
         *
         * @return boolean
         */
        public function file_exists()
        {
        }
        /**
         * Confirms that the download exists within an approved directory.
         *
         * If it is not within an approved directory but the current user has sufficient
         * capabilities, then the method will try to add the download's directory to the
         * approved directory list.
         *
         * @throws Exception If the download is not in an approved directory.
         *
         * @param bool $auto_add_to_approved_directory_list If the download is not already in the approved directory list, automatically add it if possible.
         */
        private function approved_directory_checks(bool $auto_add_to_approved_directory_list = \true)
        {
        }
        /**
         * Convenience method, allows us to re-use the same exception messaging from different areas.
         *
         * @throws Exception
         *
         * @param string $download_file
         *
         * @return void
         */
        private function raise_invalid_file_exception(string $download_file) : void
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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)
        {
        }
        /**
         * Sets the status of the download to enabled (true) or disabled (false).
         *
         * @param bool $enabled True indicates the downloadable file is enabled, false indicates it is disabled.
         */
        public function set_enabled(bool $enabled = \true)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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()
        {
        }
        /**
         * Get status of the download.
         *
         * @return bool
         */
        public function get_enabled() : bool
        {
        }
        /*
        |--------------------------------------------------------------------------
        | ArrayAccess/Backwards compatibility.
        |--------------------------------------------------------------------------
        */
        /**
         * OffsetGet.
         *
         * @param string $offset Offset.
         * @return mixed
         */
        #[\ReturnTypeWillChange]
        public function offsetGet($offset)
        {
        }
        /**
         * OffsetSet.
         *
         * @param string $offset Offset.
         * @param mixed  $value Offset value.
         */
        #[\ReturnTypeWillChange]
        public function offsetSet($offset, $value)
        {
        }
        /**
         * OffsetUnset.
         *
         * @param string $offset Offset.
         */
        #[\ReturnTypeWillChange]
        public function offsetUnset($offset)
        {
        }
        /**
         * OffsetExists.
         *
         * @param string $offset Offset.
         * @return bool
         */
        #[\ReturnTypeWillChange]
        public function offsetExists($offset)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Get the add to cart button success message - used to update the mini cart live region.
         *
         * @return string
         */
        public function add_to_cart_success_message()
        {
        }
    }
    /**
     * 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 aria-describedby description for the add to cart button.
         * Note that this is to provide the description, not the describedby attribute
         * itself.
         *
         * @return string
         */
        public function add_to_cart_aria_describedby()
        {
        }
        /**
         * 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.
         *
         * @param string $return Optional. The format to return the results in. Can be 'array' to return an array of variation data or 'objects' for the product objects. Default 'array'.
         *
         * @return array[]|WC_Product_Variation[]
         */
        public function get_available_variations($return = 'array')
        {
        }
        /**
         * Check if a given variation is currently available.
         *
         * @param WC_Product_Variation $variation Variation to check.
         *
         * @return bool True if the variation is available, false otherwise.
         */
        private function variation_is_available(\WC_Product_Variation $variation)
        {
        }
        /**
         * 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 Children 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()
        {
        }
        /**
         * Do any extra processing needed before the actual product save
         * (but after triggering the 'woocommerce_before_..._object_save' action)
         *
         * @return mixed A state value that will be passed to after_data_store_save_or_update.
         */
        protected function before_data_store_save_or_update()
        {
        }
        /**
         * Do any extra processing needed after the actual product save
         * (but before triggering the 'woocommerce_after_..._object_save' action)
         *
         * @param mixed $state The state object that was returned by before_data_store_save_or_update.
         */
        protected function after_data_store_save_or_update($state)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | 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 its 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 associative array of $variation_id => $price pairs in order of min and max prices.
         *
         * @param array $prices associative array of $variation_id => $price pairs.
         * @return array
         */
        protected function sort_variation_prices($prices)
        {
        }
    }
    /**
     * 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, unless $with_prefix is false.
         *
         * @param bool $with_prefix Whether keys should be prepended with attribute_ or not, default is true.
         * @return array of attributes and their values for this variation.
         */
        public function get_variation_attributes($with_prefix = \true)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the value of the "Cost of Goods Sold value overrides parent value" flag for this product.
         *
         * If the flag is set to true, the effective value is equal to the defined value for this variation.
         * Otherwise, the effective value is equal to the sum of the defined values for the variation and the parent product.
         *
         * @return bool The current value of the flag.
         */
        public function get_cogs_value_overrides_parent() : bool
        {
        }
        /**
         * Set the value of the "Cost of Goods Sold value overrides parent value" flag for this product.
         *
         * WARNING! If the Cost of Goods Sold feature is disabled this value will NOT be persisted when the product is saved.
         *
         * @param bool $value The value to set for the flag.
         */
        public function set_cogs_value_overrides_parent(bool $value) : void
        {
        }
        /**
         * Get the effective value of the Cost of Goods Sold for this product.
         * (the final, actual monetary value).
         *
         * See get_cogs_value_overrides_parent.
         *
         * @return float
         */
        protected function get_cogs_effective_value_core() : float
        {
        }
    }
    /**
     * WC_Query Class.
     */
    class WC_Query
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * Query vars to add to wp.
         *
         * @var array
         */
        public $query_vars = array();
        /**
         * Reference to the main product query on the page.
         *
         * @var WP_Query
         */
        private static $product_query;
        /**
         * Stores chosen attributes.
         *
         * @var array
         */
        private static $chosen_attributes;
        /**
         * The instance of the class that helps filtering with the product attributes lookup table.
         *
         * @var Filterer
         */
        private $filterer;
        /**
         * Constructor for the query class. Hooks in methods.
         */
        public function __construct()
        {
        }
        /**
         * Reset the chosen attributes so that get_layered_nav_chosen_attributes will get them from the query again.
         */
        public static function reset_chosen_attributes()
        {
        }
        /**
         * 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.
         * @param string $action Optional action or variation within the endpoint.
         *
         * @since 2.3.0
         * @since 4.6.0 Added $action parameter.
         * @return string The page title.
         */
        public function get_endpoint_title($endpoint, $action = '')
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Returns a copy of `$query` with all query vars that are allowed on the front page stripped.
         * Used when the shop page is also the front page.
         *
         * @param array $query The unfiltered array.
         * @return array The filtered query vars.
         */
        private function filter_out_valid_front_page_query_vars($query)
        {
        }
        /**
         * Checks whether a query var is allowed on the front page or not.
         *
         * @param string $query_var Query var name.
         * @return boolean TRUE when query var is allowed on the front page. FALSE otherwise.
         */
        private function is_query_var_valid_on_front_page($query_var)
        {
        }
        /**
         * Hook into pre_get_posts to do the main product query.
         *
         * @param WP_Query $q Query instance.
         */
        public function pre_get_posts($q)
        {
        }
        /**
         * Handler for the 'the_posts' WP filter.
         *
         * @param array    $posts Posts from WP Query.
         * @param WP_Query $query Current query.
         *
         * @return array
         */
        public function handle_get_posts($posts, $query)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * This function used to be hooked to found_posts and adjust the posts count when the filtering by attribute
         * widget was used and variable products were present. Now it isn't hooked anymore and does nothing but return
         * the input unchanged, since the pull request in which it was introduced has been reverted.
         *
         * @since 4.4.0
         * @param int      $count Original posts count, as supplied by the found_posts filter.
         * @param WP_Query $query The current WP_Query object.
         *
         * @return int Adjusted posts count.
         */
        public function adjust_posts_count($count, $query)
        {
        }
        /**
         * Instance version of get_layered_nav_chosen_attributes, needed for unit tests.
         *
         * @return array
         */
        protected function get_layered_nav_chosen_attributes_inst()
        {
        }
        /**
         * Get the posts (or the ids of the posts) found in the current WP loop.
         *
         * @return array Array of posts or post ids.
         */
        protected function get_current_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)
        {
        }
        /**
         * Add extra clauses to the product query.
         *
         * @param array    $args Product query clauses.
         * @param WP_Query $wp_query The current product query.
         * @return array The updated product query clauses array.
         */
        private function product_query_post_clauses($args, $wp_query)
        {
        }
        /**
         * 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 WP_Query $wp_query WP_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 WP_Query
         */
        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)
        {
        }
        /**
         * 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.
         *
         * @param string $where Where clause.
         *
         * @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()
        {
        }
    }
    /**
     * Rate limit class.
     */
    class WC_Rate_Limiter
    {
        /**
         * Cache group.
         */
        const CACHE_GROUP = 'wc_rate_limit';
        /**
         * Hook in methods.
         */
        public static function init()
        {
        }
        /**
         * Constructs key name from action identifier.
         * Left in for backwards compatibility.
         *
         * @param string $action_id Identifier of the action.
         * @return string
         */
        public static function storage_id($action_id)
        {
        }
        /**
         * Gets a cache prefix.
         *
         * @param string $action_id Identifier of the action.
         * @return string
         */
        protected static function get_cache_key($action_id)
        {
        }
        /**
         * Retrieve a cached rate limit.
         *
         * @param string $action_id Identifier of the action.
         * @return bool|int
         */
        protected static function get_cached($action_id)
        {
        }
        /**
         * Cache a rate limit.
         *
         * @param string $action_id Identifier of the action.
         * @param int    $expiry Timestamp when the limit expires.
         * @return bool
         */
        protected static function set_cache($action_id, $expiry)
        {
        }
        /**
         * Returns true if the action is not allowed to be run by the rate limiter yet, false otherwise.
         *
         * @param string $action_id Identifier of the action.
         * @return bool
         */
        public static function retried_too_soon($action_id)
        {
        }
        /**
         * Sets the rate limit delay in seconds for action with identifier $id.
         *
         * @param string $action_id Identifier of the action.
         * @param int    $delay Delay in seconds.
         * @return bool True if the option setting was successful, false otherwise.
         */
        public static function set_rate_limit($action_id, $delay)
        {
        }
        /**
         * Cleanup expired rate limits from the database and clear caches.
         */
        public static function cleanup()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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 = '';
        /**
         * Provides access to the global WC_REST_Authentication instance.
         *
         * @internal
         * @return self
         */
        public static function instance() : self
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Authenticate the user if authentication wasn't performed during the
         * determine_current_user action.
         *
         * Necessary in cases where wp_get_current_user() is called before WooCommerce is loaded.
         *
         * @see https://github.com/woocommerce/woocommerce/issues/26847
         *
         * @param WP_Error|null|bool $error Error data.
         * @return WP_Error|null|bool
         */
        public function authentication_fallback($error)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Updates the `last_access` field for the API key associated with the current request.
         *
         * This method tries to disambiguate 'primary' API requests from any programmatic REST
         * API requests made internally.
         *
         * @param WP_REST_Request $request The request currently being processed.
         *
         * @return void
         */
        private function update_last_access($request)
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * WC_REST_Exception class.
     */
    class WC_REST_Exception extends \WC_Data_Exception
    {
    }
    /**
     * 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()
        {
        }
        /**
         * Checks if session cookie is expired, or belongs to a logged out user.
         *
         * @return bool Whether session cookie is valid.
         */
        private function is_session_cookie_valid()
        {
        }
        /**
         * Hooks into the wp action to maybe set the session cookie if the user is on a certain page e.g. a checkout endpoint.
         *
         * Certain gateways may rely on sessions and this ensures a session is present even if the customer does not have a
         * cart.
         */
        public function maybe_set_customer_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()
        {
        }
        /**
         * Checks if this is an auto-generated customer ID.
         *
         * @param string|int $customer_id Customer ID to check.
         *
         * @return bool Whether customer ID is randomly generated.
         */
        private function is_customer_guest($customer_id)
        {
        }
        /**
         * Get session unique ID for requests if session is initialized or user ID if logged in.
         * Introduced to help with unit tests.
         *
         * @since 5.3.0
         * @return string
         */
        public function get_customer_unique_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.
         *
         * @deprecated 5.3.0
         * @param int $uid User ID.
         * @return int|string
         */
        public function nonce_user_logged_out($uid)
        {
        }
        /**
         * When a user is logged out, ensure they have a unique nonce to manage cart and more using the customer/session ID.
         * This filter runs everything `wp_verify_nonce()` and `wp_create_nonce()` gets called.
         *
         * @since 5.3.0
         * @param int    $uid    User ID.
         * @param string $action The nonce action.
         * @return int|string
         */
        public function maybe_update_nonce_user_logged_out($uid, $action)
        {
        }
        /**
         * Cleanup session data from the database and clear caches.
         */
        public function cleanup_sessions()
        {
        }
        /**
         * Returns the session.
         *
         * @param string $customer_id Customer 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)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Get 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()
        {
        }
        /**
         * Get shipping method ID the rate belongs to.
         *
         * @since 3.2.0
         * @return string
         */
        public function get_method_id()
        {
        }
        /**
         * Get instance ID the rate belongs to.
         *
         * @since 3.2.0
         * @return int
         */
        public function get_instance_id()
        {
        }
        /**
         * Get rate label.
         *
         * @return string
         */
        public function get_label()
        {
        }
        /**
         * Get rate cost.
         *
         * @since 3.2.0
         * @return string
         */
        public function get_cost()
        {
        }
        /**
         * Get rate taxes.
         *
         * @since 3.2.0
         * @return array
         */
        public function get_taxes()
        {
        }
        /**
         * Get shipping tax.
         *
         * @return float
         */
        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()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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
         */
        public 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()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Check if a GTIN is valid.
         * A valid GTIN is a string containing 8,12,13 or 14 digits.
         *
         * @see https://schema.org/gtin
         * @param string $gtin The GTIN to check.
         * @return bool True if valid. False otherwise.
         */
        public function is_valid_gtin($gtin)
        {
        }
        /**
         * Prepare a GTIN input removing everything except numbers.
         *
         * @param string $gtin The GTIN to prepare.
         * @return string Empty string if no GTIN is provided or the string with the replacements.
         */
        public function prepare_gtin($gtin)
        {
        }
    }
    /**
     * 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 from location and tax class. $customer parameter is used to preserve backward compatibility for filter.
         *
         * @param string $tax_class Tax class to get rates for.
         * @param array  $location  Location to compute rates for. Should be in form: array( country, state, postcode, city).
         * @param object $customer  Only used to maintain backward compatibility for filter `woocommerce-matched_rates`.
         *
         * @return mixed|void Tax rates.
         */
        public static function get_rates_from_location($tax_class, $location, $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.
         */
        public 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)
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Checks whether a block template for a given taxonomy exists.
         *
         * **Note:** This checks both the `templates` and `block-templates` directories
         * as both conventions should be supported.
         *
         * @param object $taxonomy Object taxonomy to check.
         * @return boolean
         */
        private static function taxonomy_has_block_template($taxonomy) : bool
        {
        }
        /**
         * Checks whether a block template with that name exists.
         *
         * **Note: ** This checks both the `templates` and `block-templates` directories
         * as both conventions should be supported.
         *
         * @since  5.5.0
         * @param string $template_name Template to check.
         * @return boolean
         */
        private static function has_block_template($template_name)
        {
        }
        /**
         * Get the default filename for a template except if a block template with
         * the same name exists.
         *
         * @since  3.0.0
         * @since  5.5.0 If a block template with the same name exists, return an
         * empty string.
         * @since  6.3.0 It checks custom product taxonomies
         * @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()
        {
        }
        /**
         * Add theme support for Product page gallery.
         *
         * @since x.x.x
         */
        private static function add_support_for_product_page_gallery()
        {
        }
        /**
         * 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)
        {
        }
    }
    // phpcs:disable Squiz.Classes.ClassFileName.NoMatch, Squiz.Classes.ValidClassName.NotCamelCaps -- Backwards compatibility.
    /**
     * WooCommerce Tracker Class
     */
    class WC_Tracker
    {
        // phpcs:enable
        /**
         * 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()
        {
        }
        /**
         * Test whether this site is a staging site according to the Jetpack criteria.
         *
         * With Jetpack 8.1+, Jetpack::is_staging_site has been deprecated.
         * \Automattic\Jetpack\Status::is_staging_site is the replacement.
         * However, there are version of JP where \Automattic\Jetpack\Status exists, but does *not* contain is_staging_site method,
         * so with those, code still needs to use the previous check as a fallback.
         *
         * After upgrading Jetpack Status to v3.3.2 is_staging_site is also deprecated and in_safe_mode is the new replacement.
         * So we check this first of all.
         *
         * @return bool
         */
        private static function is_jetpack_staging_site()
        {
        }
        /**
         * Get all the tracking data.
         *
         * @return array
         */
        public 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()
        {
        }
        /**
         * Get the settings of WooCommerce Payments plugin
         *
         * @return array
         */
        private static function get_wcpay_settings()
        {
        }
        /**
         * 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 order totals.
         *
         * @since 5.4.0
         * @return array
         */
        private static function get_order_totals()
        {
        }
        /**
         * Get last order date.
         *
         * @return string
         */
        private static function get_order_dates()
        {
        }
        /**
         * Extract the group key for an associative array of objects which have unique ids in the key.
         * A 'group_key' property is introduced in the object.
         * For example, two objects with keys like 'WooDataPay ** #123' and 'WooDataPay ** #78' would
         * both have a group_key of 'WooDataPay **' after this function call.
         *
         * @param array  $objects     The array of objects that need to be grouped.
         * @param string $default_key The property that will be the default group_key.
         * @return array Contains the objects with a group_key property.
         */
        private static function extract_group_key($objects, $default_key)
        {
        }
        /**
         * Get order details by gateway.
         *
         * @return array
         */
        private static function get_orders_by_gateway()
        {
        }
        /**
         * Get orders origin details.
         *
         * @return array
         */
        private static function get_orders_origins()
        {
        }
        /**
         * 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 the number of product brands.
         *
         * @return int
         */
        private static function get_brands_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 an array of slugs for WC features that are enabled on the site.
         *
         * @return string[]
         */
        private static function get_enabled_features()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Search a specific post for text content.
         *
         * @param integer $post_id The id of the post to search.
         * @param string  $text    The text to search for.
         * @return string 'Yes' if post contains $text (otherwise 'No').
         */
        public static function post_contains_text($post_id, $text)
        {
        }
        /**
         * Get tracker data for a specific block type on a woocommerce page.
         *
         * @param string $block_name The name (id) of a block, e.g. `woocommerce/cart`.
         * @param string $woo_page_name The woo page to search, e.g. `cart`.
         * @return array Associative array of tracker data with keys:
         * - page_contains_block
         * - block_attributes
         */
        public static function get_block_tracker_data($block_name, $woo_page_name)
        {
        }
        /**
         * Get tracker data for a pickup location method.
         *
         * @return array Associative array of tracker data with keys:
         * - pickup_location_enabled
         * - pickup_locations_count
         */
        public static function get_pickup_location_data()
        {
        }
        /**
         * Get tracker data for additional fields on the checkout page.
         *
         * @return array Array of fields count and names.
         */
        public static function get_checkout_additional_fields_data()
        {
        }
        /**
         * Get info about the cart & checkout pages.
         *
         * @return array
         */
        public static function get_cart_checkout_info()
        {
        }
        /**
         * Get info about the Mini Cart Block.
         *
         * @return array
         */
        private static function get_mini_cart_info()
        {
        }
        /**
         * Get info about WooCommerce Mobile App usage
         *
         * @return array
         */
        public static function get_woocommerce_mobile_usage()
        {
        }
        /**
         * Map legacy order meta keys to a column name.
         *
         * @param string $meta_key Legacy meta key name.
         * @return string Mapped column name.
         */
        private static function map_legacy_meta_key_name($meta_key)
        {
        }
        /**
         * Fetch main order data.
         *
         * @param string  $sort_order Date sort order (ASC or DESC).
         * @param integer $limit      Limit the amount of orders to return (default 20).
         * @return array Found orders indexed by ID.
         */
        private static function get_order_data($sort_order = 'ASC', $limit = 20)
        {
        }
        /**
         * Fetch additional data for a specific set of orders.
         *
         * @param array $order_ids List of order ID's to fetch data for.
         * @return array Additional data, indexed by order ID.
         */
        private static function get_additional_order_data($order_ids)
        {
        }
        /**
         * Fetch refund data for a specific set of orders.
         *
         * @param array $order_ids List of order ID's to fetch data for.
         * @return array Refund data, indexed by order ID.
         */
        private static function get_refund_order_data($order_ids)
        {
        }
        /**
         * Get a snapshot of the first 20 orders and the last 20 orders.
         *
         * @return array
         */
        private static function get_order_snapshot()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * Webhook class.
     */
    class WC_Webhook extends \WC_Legacy_Webhook
    {
        /**
         * Store which object IDs this webhook has processed (ie scheduled to be delivered)
         * within the current page request.
         *
         * @var array
         */
        protected $processed = array();
        /**
         * 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)
        {
        }
        /**
         * Checks if the specified resource has already been queued for delivery within the current request.
         *
         * Helps avoid duplication of data being sent for topics that have more than one hook defined.
         *
         * @param mixed $arg First hook argument.
         *
         * @return bool
         */
        protected function is_already_processed($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 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.
         *
         * @param mixed $resource_id First hook argument, typically the resource ID.
         * @return mixed              Payload data.
         * @throws \Exception The webhook is configured to use the Legacy REST API, but the Legacy REST API plugin is not available.
         * @since  2.2.0
         */
        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 webhook 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 webhook 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()
        {
        }
    }
    /**
     * Main WooCommerce Class.
     *
     * @class WooCommerce
     */
    final class WooCommerce
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * WooCommerce version.
         *
         * @var string
         */
        public $version = '9.5.0';
        /**
         * WooCommerce Schema version.
         *
         * @since 4.3 started with version string 430.
         *
         * @var string
         */
        public $db_version = '920';
        /**
         * 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;
        /**
         * API instance
         *
         * @deprecated 9.0.0 The Legacy REST API has been removed from WooCommerce core. Now this property points to a RestApiUtil instance, unless the Legacy REST API plugin is installed.
         *
         * @var WC_API
         */
        private $api;
        /**
         * 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()
        {
        }
        /**
         * Autoload inaccessible or non-existing properties on demand.
         *
         * @param mixed $key Key name.
         * @return mixed
         */
        public function __get($key)
        {
        }
        /**
         * Set the value of an inaccessible or non-existing property.
         *
         * @param string $key Property name.
         * @param mixed  $value Property value.
         */
        public function __set(string $key, $value)
        {
        }
        /**
         * Check if the Legacy REST API plugin is active (and thus the Legacy REST API is available).
         *
         * @return bool
         */
        public function legacy_rest_api_is_available()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Initiali Jetpack Connection Config.
         *
         * @return void
         */
        public function init_jetpack_connection_config()
        {
        }
        /**
         * Hook into actions and filters.
         *
         * @since 2.3
         */
        private function init_hooks()
        {
        }
        /**
         * Add woocommerce_inbox_variant for the Remote Inbox Notification.
         *
         * P2 post can be found at https://wp.me/paJDYF-1uJ.
         *
         * This will no longer be used. The more flexible add_woocommerce_remote_variant
         * below will be used instead.
         */
        public function add_woocommerce_inbox_variant()
        {
        }
        /**
         * Add woocommerce_remote_variant_assignment used to determine cohort
         * or group assignment for Remote Spec Engines.
         */
        public function add_woocommerce_remote_variant()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Returns true if the request is a store REST API request.
         *
         * @return bool
         */
        public function is_store_api_request()
        {
        }
        /**
         * Load REST API.
         */
        public function load_rest_api()
        {
        }
        /**
         * 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.
         *
         * Note, wc()->customer is session based. Changes to customer data via this property are not persisted to the database automatically.
         *
         * @since 3.6.4
         * @return void
         */
        public function initialize_cart()
        {
        }
        /**
         * Initialize the session class.
         *
         * @since 3.6.4
         * @return void
         */
        public function initialize_session()
        {
        }
        /**
         * Tell bots not to index some WooCommerce-created directories.
         *
         * We try to detect the default "User-agent: *" added by WordPress and add our rules to that group, because
         * it's possible that some bots will only interpret the first group of rules if there are multiple groups with
         * the same user agent.
         *
         * @param string $output The contents that WordPress will output in a robots.txt file.
         *
         * @return string
         */
        private function robots_txt($output)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Is the WooCommerce Admin actively included in the WooCommerce core?
         * Based on presence of a basic WC Admin function.
         *
         * @return boolean
         */
        public function is_wc_admin_active()
        {
        }
        /**
         * Call a user function. This should be used to execute any non-idempotent function, especially
         * those in the `includes` directory or provided by WordPress.
         *
         * This method can be useful for unit tests, since functions called using this method
         * can be easily mocked by using WC_Unit_Test_Case::register_legacy_proxy_function_mocks.
         *
         * @param string $function_name The function to execute.
         * @param mixed  ...$parameters The parameters to pass to the function.
         *
         * @return mixed The result from the function.
         *
         * @since 4.4
         */
        public function call_function($function_name, ...$parameters)
        {
        }
        /**
         * Call a static method in a class. This should be used to execute any non-idempotent method in classes
         * from the `includes` directory.
         *
         * This method can be useful for unit tests, since methods called using this method
         * can be easily mocked by using WC_Unit_Test_Case::register_legacy_proxy_static_mocks.
         *
         * @param string $class_name The name of the class containing the method.
         * @param string $method_name The name of the method.
         * @param mixed  ...$parameters The parameters to pass to the method.
         *
         * @return mixed The result from the method.
         *
         * @since 4.4
         */
        public function call_static($class_name, $method_name, ...$parameters)
        {
        }
        /**
         * Gets an instance of a given legacy class.
         * This must not be used to get instances of classes in the `src` directory.
         *
         * This method can be useful for unit tests, since objects obtained using this method
         * can be easily mocked by using WC_Unit_Test_Case::register_legacy_proxy_class_mocks.
         *
         * @param string $class_name The name of the class to get an instance for.
         * @param mixed  ...$args Parameters to be passed to the class constructor or to the appropriate internal 'get_instance_of_' method.
         *
         * @return object The instance of the class.
         * @throws \Exception The requested class belongs to the `src` directory, or there was an error creating an instance of the class.
         *
         * @since 4.4
         */
        public function get_instance_of(string $class_name, ...$args)
        {
        }
        /**
         * Gets the value of a global.
         *
         * @param string $global_name The name of the global to get the value for.
         * @return mixed The value of the global.
         */
        public function get_global(string $global_name)
        {
        }
        /**
         * Register WC settings from WP-API to the REST API.
         *
         * This method used to be part of the now removed Legacy REST API.
         *
         * @since 9.0.0
         */
        private function register_wp_admin_settings()
        {
        }
        /**
         * Converts the WooCommerce slug to the correct slug for the current version.
         * This ensures that when the plugin is installed in a different folder name, the correct slug is used so that dependent plugins can be installed/activated.
         *
         * @since 9.0.0
         * @param string $slug The plugin slug to convert.
         *
         * @return string
         */
        public function convert_woocommerce_slug($slug)
        {
        }
        /**
         * Register the remote log handler.
         *
         * @param \WC_Log_Handler[] $handlers The handlers to register.
         *
         * @return \WC_Log_Handler[]
         */
        private function register_remote_log_handler($handlers)
        {
        }
    }
    /**
     * Allows to interact with extensions from WCCOM marketplace via CLI.
     *
     * @version 6.8
     * @package WooCommerce
     */
    class WC_CLI_COM_Command
    {
        const APPLICATION_PASSWORD_SECTION_URL = 'https://woocommerce.com/my-account/#application-passwords';
        /**
         * Registers a commands for managing WooCommerce.com extensions.
         */
        public static function register_commands()
        {
        }
        /**
         * List extensions owned by the connected site
         *
         * [--format]
         * : If set, the command will use the specified format. Possible values are table, json, csv and yaml. By default the table format will be used.
         *
         * [--fields]
         * : If set, the command will show only the specified fields instead of showing all the fields in the output.
         *
         * ## EXAMPLES
         *
         *     # List extensions owned by the connected site in table format with all the fields
         *     $ wp wc com extension list
         *
         *     # List the product slug of the extension owned by the connected site in csv format
         *     $ wp wc com extension list --format=csv --fields=product_slug
         *
         * @param  array $args  WP-CLI positional arguments.
         * @param  array $assoc_args  WP-CLI associative arguments.
         */
        public static function list_extensions(array $args, array $assoc_args)
        {
        }
        /**
         * ## OPTIONS
         *
         * [--yes]
         * : Do not prompt for confirmation.
         *
         * ## EXAMPLES
         *
         *     # Disconnect from site.
         *     $ wp wc com disconnect
         *
         *     # Disconnect without prompt for confirmation.
         *     $ wp wc com disconnect --yes
         *
         * @param array $args Positional arguments to include when calling the command.
         * @param array $assoc_args Associative arguments to include when calling the command.
         * @return void
         * @throws \WP_CLI\ExitException If WP_CLI::$capture_exit is true.
         */
        public static function disconnect(array $args, array $assoc_args)
        {
        }
        /**
         * Connects to WooCommerce.com with application-password.
         *
         * [--password]
         * : If set, password won't be prompt.
         *
         * [--force]
         * : If set, site will be disconnected and a new connection will be forced.
         *
         * ## EXAMPLES
         *
         *     # Connect to WCCOM using password.
         *     $ wp wc com connect
         *
         *     # force connecting to WCCOM even if site is already connected.
         *     $ wp wc com connect --force
         *
         *     # Pass password to command.
         *     $ wp wc com connect --password=PASSWORD
         *
         * @param array $args Positional arguments to include when calling the command.
         * @param array $assoc_args Associative arguments to include when calling the command.
         *
         * @return void
         * @throws \WP_CLI\ExitException If WP_CLI::$capture_exit is true.
         */
        public static function connect(array $args, array $assoc_args)
        {
        }
        /**
         * We are asking a question and returning an answer as a string.
         *
         * @param  string $question The question being prompt.
         *
         * @return string
         */
        protected static function ask($question)
        {
        }
    }
    /**
     * Main Command for WooCommerce 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)
        {
        }
    }
    /**
     * 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 WC_CLI_REST_Command $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())
        {
        }
    }
    /**
     * 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 access to tracker snapshot for transparency and debugging.
     *
     * @since 5.5.0
     * @package WooCommerce
     */
    class WC_CLI_Tracker_Command
    {
        /**
         * Registers a command for showing WooCommerce Tracker snapshot data.
         */
        public static function register_commands()
        {
        }
        /**
         * Dump tracker snapshot data to screen.
         *
         * ## EXAMPLES
         *
         * wp wc tracker snapshot --format=yaml
         * wp wc tracker snapshot --format=json
         *
         * ## OPTIONS
         *
         * [--format=<format>]
         * : Render output in a particular format, see WP_CLI\Formatter for details.
         *
         * @see \WP_CLI\Formatter
         * @see WC_Tracker::get_tracking_data()
         * @param array $args WP-CLI positional arguments.
         * @param array $assoc_args WP-CLI associative arguments.
         */
        public static function show_tracker_snapshot($args, $assoc_args)
        {
        }
    }
    /**
     * 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_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 disable the Checkout section, when the default checkout page contains the
         * Checkout block, and to enhance form visuals.
         */
        public function add_styles()
        {
        }
        /**
         * Scripts to improve our form.
         */
        public function add_scripts()
        {
        }
        /**
         * Enqueue scripts for the customizer.
         */
        public function enqueue_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)
        {
        }
        /**
         * Whether or not a page has been chose for the privacy policy.
         *
         * @return bool
         */
        public function has_privacy_policy_page_id()
        {
        }
        /**
         * Whether or not a page has been chose for the terms and conditions.
         *
         * @return bool
         */
        public function has_terms_and_conditions_page_id()
        {
        }
        /**
         * Weather or not the checkout page contains the Checkout block.
         *
         * @return bool
         */
        private function has_block_checkout()
        {
        }
    }
    /**
     * Order Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interfaces
     */
    /**
     * 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);
    }
    /**
     * Object Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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_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)
        {
        }
        /**
         * Helper method to filter internal meta keys from all meta data rows for the object.
         *
         * @since 4.7.0
         *
         * @param WC_Data $object        WC_Data object.
         * @param array   $raw_meta_data Array of std object of meta data to be filtered.
         *
         * @return mixed|void
         */
        public function filter_raw_meta_data(&$object, $raw_meta_data)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Converts a WP post date string into a timestamp.
         *
         * @since 4.8.0
         *
         * @param  string $time_string The WP post date string.
         * @return int|null The date string converted to a timestamp or null.
         */
        protected function string_to_timestamp($time_string)
        {
        }
    }
    // phpcs:disable Squiz.Classes.ClassFileName.NoMatch, Squiz.Classes.ValidClassName.NotCamelCaps -- Backward compatibility.
    /**
     * 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_Abstract_Order_Data_Store_Interface, \WC_Object_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');
        /**
         * Custom setters for props. Add key here if it has corresponding set_ and get_ method present.
         *
         * @var string[]
         */
        protected $internal_data_store_key_getters = array();
        /**
         * Return internal key getters name.
         *
         * @return string[]
         */
        public function get_internal_data_store_key_getters()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Method to create a new order in the database.
         *
         * @param WC_Order $order Order object.
         */
        public function create(&$order)
        {
        }
        /**
         * Check if an order exists by id.
         *
         * @since 8.0.0
         *
         * @param int $order_id The order id to check.
         * @return bool True if an order exists with the given name.
         */
        public function order_exists($order_id) : bool
        {
        }
        /**
         * Method to read an order from the database.
         *
         * @param WC_Order $order Order object.
         *
         * @throws Exception If passed order is invalid.
         */
        public function read(&$order)
        {
        }
        /**
         * Set the properties of an object and log the first error found while doing so.
         *
         * @param $order WC_Order $order Order object.
         * @param array          $props The properties to set.
         */
        private function set_order_props(&$order, array $props)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get order key.
         *
         * @since 4.3.0
         * @param WC_order $order Order object.
         * @return string
         */
        protected function get_order_key($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)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Prime following caches:
         *  1. item-$order_item_id   For individual items.
         *  2. order-items-$order-id For fetching items associated with an order.
         *  3. order-item meta.
         *
         * @param array $order_ids  Order Ids to prime cache for.
         * @param array $query_vars Query vars for the query.
         */
        protected function prime_order_item_caches_for_orders($order_ids, $query_vars)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Get the order's title.
         *
         * @param WC_Order $order Order object.
         *
         * @return string Order title.
         */
        public function get_title(\WC_Order $order)
        {
        }
        /**
         * Given an initialized order object, update the post/postmeta records.
         *
         * @param WC_Abstract_Order $order Order object.
         *
         * @return bool Whether the order was updated.
         */
        public function update_order_from_object($order)
        {
        }
        /**
         * Change the modified date of the post to match the order's modified date if passed.
         *
         * @hooked wp_insert_post_data See function update_order_from_object.
         *
         * @param array $data An array of slashed, sanitized, and processed post data.
         * @param array $postarr An array of sanitized (and slashed) but otherwise unmodified post data.
         *
         * @return array Data with updated modified date.
         */
        public function update_post_modified_data($data, $postarr)
        {
        }
        /**
         * Helper method to update order metadata from initialized order object.
         *
         * @param WC_Abstract_Order $order Order object.
         */
        protected function update_order_meta_from_object($order)
        {
        }
    }
    /**
     * 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
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * 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';
        /**
         * Indicates if the Cost of Goods Sold feature is enabled.
         *
         * @var bool
         */
        private bool $cogs_is_enabled;
        /**
         * The instance of WC_Order_Item_Data_Store to use for COGS related operations.
         *
         * @var WC_Order_Item_Data_Store
         */
        private \WC_Data_Store $order_item_data_store;
        /**
         * Class constructor.
         */
        public function __construct()
        {
        }
        /**
         * Create a new order item in the database.
         *
         * @param WC_Order_Item $item Order item object.
         * @since 3.0.0
         */
        public function create(&$item)
        {
        }
        /**
         * Update a order item in the database.
         *
         * @param WC_Order_Item $item Order item object.
         * @since 3.0.0
         */
        public function update(&$item)
        {
        }
        /**
         * Remove an order item from the database.
         *
         * @param WC_Order_Item $item Order item object.
         * @param array         $args Array of args to pass to the delete method.
         * @since 3.0.0
         */
        public function delete(&$item, $args = array())
        {
        }
        /**
         * Read a order item from the database.
         *
         * @param WC_Order_Item $item Order item object.
         *
         * @throws Exception If invalid order item.
         * @since 3.0.0
         */
        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.
         *
         * @param WC_Order_Item $item Order item object.
         * @since 3.0.0
         */
        public function save_item_data(&$item)
        {
        }
        /**
         * Clear meta cache.
         *
         * @param WC_Order_Item $item Order item object.
         */
        public function clear_cache(&$item)
        {
        }
        /**
         * Persist the Cost of Goods Sold related data to the database.
         *
         * @param WC_Order_Item $item The order item for which the data will be persisted.
         */
        private function save_cogs_data(\WC_Order_Item $item)
        {
        }
    }
    /**
     * Coupon Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interfaces
     */
    /**
     * 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');
        /**
         * The updated coupon properties
         *
         * @since 4.1.0
         * @var array
         */
        protected $updated_props = array();
        /**
         * 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)
        {
        }
        /**
         * Get a metadata value that is stored as either a string consisting of a comma-separated list of values
         * or as a serialized array.
         *
         * WooCommerce always stores the coupon product ids as a comma-separated string, but it seems that
         * some plugins mistakenly change these to an array.
         *
         * @param int    $coupon_id The coupon id.
         * @param string $meta_key The meta key to get.
         * @return array The metadata value as an array, with empty values removed.
         */
        private function get_coupon_meta_as_array($coupon_id, string $meta_key)
        {
        }
        /**
         * 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.
         * @param WC_Order  $order (Optional) If passed, clears the hold record associated with order.
         * @return int New usage count.
         */
        public function increase_usage_count(&$coupon, $used_by = '', $order = \null)
        {
        }
        /**
         * Helper function to add a `_used_by` record to track coupons used by the user.
         *
         * @param WC_Coupon $coupon           Coupon object.
         * @param string    $used_by          Either user ID or billing email.
         * @param string    $coupon_held_key (Optional) Update meta key to `_used_by` instead of adding a new record.
         */
        private function add_coupon_used_by($coupon, $used_by, $coupon_held_key)
        {
        }
        /**
         * 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')
        {
        }
        /**
         * Returns tentative usage count for coupon.
         *
         * @param int $coupon_id Coupon ID.
         *
         * @return int Tentative usage count.
         */
        public function get_tentative_usage_count($coupon_id)
        {
        }
        /**
         * Get the number of uses for a coupon by user ID.
         *
         * @since 3.0.0
         * @param WC_Coupon $coupon Coupon object.
         * @param int       $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)
        {
        }
        /**
         * Get tentative coupon usages for user.
         *
         * @param int   $coupon_id    Coupon ID.
         * @param array $user_aliases Array of user aliases to check tentative usages for.
         *
         * @return string|null
         */
        public function get_tentative_usages_for_user($coupon_id, $user_aliases)
        {
        }
        /**
         * Get held time for resources before cancelling the order. Use 60 minutes as sane default.
         * Note that the filter `woocommerce_coupon_hold_minutes` only support minutes because it's getting used elsewhere as well, however this function returns in seconds.
         *
         * @return int
         */
        private function get_tentative_held_time()
        {
        }
        /**
         * Check and records coupon usage tentatively for short period of time so that counts validation is correct. Returns early if there is no limit defined for the coupon.
         *
         * @param WC_Coupon $coupon Coupon object.
         *
         * @return bool|int|string|null Returns meta key if coupon was held, null if returned early.
         */
        public function check_and_hold_coupon($coupon)
        {
        }
        /**
         * Generate query to calculate tentative usages for the coupon.
         *
         * @param int $coupon_id Coupon ID to get tentative usage query for.
         *
         * @return string Query for tentative usages.
         */
        private function get_tentative_usage_query($coupon_id)
        {
        }
        /**
         * Check and records coupon usage tentatively for passed user aliases for short period of time so that counts validation is correct. Returns early if there is no limit per user for the coupon.
         *
         * @param WC_Coupon $coupon       Coupon object.
         * @param array     $user_aliases Emails or Ids to check for user.
         * @param string    $user_alias   Email/ID to use as `used_by` value.
         *
         * @return null|false|int
         */
        public function check_and_hold_coupon_for_user($coupon, $user_aliases, $user_alias)
        {
        }
        /**
         * Generate query to calculate tentative usages for the coupon by the user.
         *
         * @param int   $coupon_id    Coupon ID.
         * @param array $user_aliases List of user aliases to check for usages.
         *
         * @return string Tentative usages query.
         */
        private function get_tentative_usage_query_for_user($coupon_id, $user_aliases)
        {
        }
        /**
         * This function clears coupon data from the WP cache after certain operations which, for performance reasons,
         * are done via SQL queries.
         *
         * @param \WC_Coupon $coupon The coupon object.
         * @return void
         */
        private function refresh_coupon_data(&$coupon)
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * Customer Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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.
     *
     * Used by the WC_Customer class to store customer data to the 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_first_name', 'billing_last_name', 'billing_company', 'billing_phone', 'billing_email', 'billing_address', 'billing_address_1', 'billing_address_2', 'billing_city', 'billing_state', 'billing_postcode', 'billing_country', 'shipping_first_name', 'shipping_last_name', 'shipping_company', 'shipping_phone', 'shipping_address', 'shipping_address_1', 'shipping_address_2', 'shipping_city', 'shipping_state', 'shipping_postcode', 'shipping_country', 'is_vat_exempt', 'calculated_shipping', 'meta_data');
        /**
         * Update the session. Note, this does not persist the data to the DB.
         *
         * @param WC_Customer $customer Customer object.
         */
        public function create(&$customer)
        {
        }
        /**
         * Update the session. Note, this does not persist the data to the DB.
         *
         * @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)
        {
        }
        /**
         * Set default values for the customer object if props are unset.
         *
         * @param WC_Customer $customer Customer object.
         */
        protected function set_defaults(&$customer)
        {
        }
        /**
         * Deletes the customer session.
         *
         * @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 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', 'shipping_phone', 'wptests_capabilities', 'wptests_user_level', 'syntax_highlighting', '_order_count', '_money_spent', '_last_order', '_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)
        {
        }
        /**
         * Check if the usage of the custom orders table is enabled.
         *
         * @return bool
         */
        private function is_cot_in_use() : bool
        {
        }
        /**
         * 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 = '')
        {
        }
        /**
         * Get all user ids who have `billing_email` set to any of the email passed in array.
         *
         * @param array $emails List of emails to check against.
         *
         * @return array
         */
        public function get_user_ids_for_billing_email($emails)
        {
        }
    }
    /**
     * Customer Download Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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
    {
        /**
         * Names of the database fields for the download permissions table.
         */
        const DOWNLOAD_PERMISSION_DB_FIELDS = array('download_id', 'product_id', 'user_id', 'user_email', 'order_id', 'order_key', 'downloads_remaining', 'access_granted', 'download_count', 'access_expires');
        /**
         * Create download permission for a user, from an array of data.
         *
         * @param array $data Data to create the permission for.
         * @returns int The database id of the created permission, or false if the permission creation failed.
         */
        public function create_from_data($data)
        {
        }
        /**
         * Create download permission for a user.
         *
         * @param WC_Customer_Download $download WC_Customer_Download object.
         */
        public function create(&$download)
        {
        }
        /**
         * Create download permission for a user, from an array of data.
         * Assumes that all the keys in the passed data are valid.
         *
         * @param array $data Data to create the permission for.
         * @return int The database id of the created permission, or false if the permission creation failed.
         */
        private function insert_new_download_permission($data)
        {
        }
        /**
         * Adjust a date value to be inserted in the database.
         *
         * @param mixed $date The date value. Can be a WC_DateTime, a timestamp, or anything else that "date" recognizes.
         * @return string The date converted to 'Y-m-d' format.
         * @throws Exception The passed value can't be converted to a date.
         */
        private function adjust_date_for_db($date)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Delete download_log related to download permission via $field with value $value.
         *
         * @param string           $field Field used to query download permission table with.
         * @param string|int|float $value Value to filter the field by.
         *
         * @return void
         */
        private function delete_download_log_by_field_value($field, $value)
        {
        }
        /**
         * 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 separated 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)
        {
        }
    }
    /**
     * Customer Download Log Data Store Interface
     *
     * @version 3.3.0
     * @package WooCommerce\Interface
     */
    /**
     * 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 logs, or the count of existing logs, by specified args.
         *
         * @param  array $args Arguments to define download logs to retrieve. If $args['return'] is 'count' then the count of existing logs will be returned.
         * @return array|int
         */
        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)
        {
        }
        /**
         * Get the count of download logs for a given download permission.
         *
         * @param int $permission_id Permission to get logs count for.
         * @return int
         */
        public function get_download_logs_count_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)
        {
        }
    }
    /**
     * Order Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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: 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', '_shipping_phone', '_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', '_new_order_email_sent');
        /**
         * Custom setters for props. Add key here if it has corresponding set_ and get_ method present.
         *
         * @var string[]
         */
        protected $internal_data_store_key_getters = array('_download_permissions_granted' => 'download_permissions_granted', '_recorded_sales' => 'recorded_sales', '_recorded_coupon_usage_counts' => 'recorded_coupon_usage_counts', '_order_stock_reduced' => 'order_stock_reduced', '_new_order_email_sent' => 'new_order_email_sent');
        /**
         * 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 its 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 order key.
         *
         * @since 4.3.0
         * @param WC_order $order Order object.
         * @return string
         */
        protected function get_order_key($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)
        {
        }
        /**
         * Whether email have been sent for this order.
         *
         * @param WC_Order|int $order Order ID or order object.
         *
         * @return bool               Whether email is sent.
         */
        public function get_email_sent($order)
        {
        }
        /**
         * Whether email have been sent for this order.
         *
         * @param WC_Order|int $order Order ID or order object.
         *
         * @return bool               Whether email is sent.
         */
        public function get_new_order_email_sent($order)
        {
        }
        /**
         * Stores information about whether email was sent.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @param bool         $set True or false.
         */
        public function set_email_sent($order, $set)
        {
        }
        /**
         * Stores information about whether email was sent.
         *
         * @param WC_Order|int $order Order ID or order object.
         * @param bool         $set True or false.
         */
        public function set_new_order_email_sent($order, $set)
        {
        }
        /**
         * Return array of coupon_code => meta_key for coupon which have usage limit and have tentative keys.
         * Pass $coupon_id if key for only one of the coupon is needed.
         *
         * @param WC_Order $order     Order object.
         * @param int      $coupon_id If passed, will return held key for that coupon.
         *
         * @return array|string Key value pair for coupon code and meta key name. If $coupon_id is passed, returns meta_key for only that coupon.
         */
        public function get_coupon_held_keys($order, $coupon_id = \null)
        {
        }
        /**
         * Return array of coupon_code => meta_key for coupon which have usage limit per customer and have tentative keys.
         *
         * @param WC_Order $order Order object.
         * @param int      $coupon_id If passed, will return held key for that coupon.
         *
         * @return mixed
         */
        public function get_coupon_held_keys_for_users($order, $coupon_id = \null)
        {
        }
        /**
         * Add/Update list of meta keys that are currently being used by this order to hold a coupon.
         * This is used to figure out what all meta entries we should delete when order is cancelled/completed.
         *
         * @param WC_Order $order              Order object.
         * @param array    $held_keys          Array of coupon_code => meta_key.
         * @param array    $held_keys_for_user Array of coupon_code => meta_key for held coupon for user.
         *
         * @return mixed
         */
        public function set_coupon_held_keys($order, $held_keys, $held_keys_for_user)
        {
        }
        /**
         * Release all coupons held by this order.
         *
         * @param WC_Order $order Current order object.
         * @param bool     $save  Whether to delete keys from DB right away. Could be useful to pass `false` if you are building a bulk request.
         */
        public function release_held_coupons($order, $save = \true)
        {
        }
        /**
         * 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.
         * @return bool
         */
        public function get_order_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)
        {
        }
        /**
         * Gets 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_order_stock_reduced($order, $set)
        {
        }
        /**
         * Get the order type based on Order ID.
         *
         * @since 3.0.0
         * @param int|WP_Post $order Order | Order id.
         *
         * @return string
         */
        public function get_order_type($order)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Compile order response and set caches as needed for order ids.
         *
         * @param array    $order_ids  List of order IDS to compile.
         * @param array    $query_vars Original query arguments.
         * @param WP_Query $query      Query object.
         *
         * @return array Orders.
         */
        private function compile_orders($order_ids, $query_vars, $query)
        {
        }
        /**
         * Helper method to prime caches for orders. Call this if you are going to be fetching orders in a loop.
         *
         * @param array $order_ids List of order IDS to prime caches for.
         * @param array $query_vars Original query arguments.
         */
        public function prime_caches_for_orders($order_ids, $query_vars)
        {
        }
        /**
         * Prime refund cache for orders.
         *
         * @param array $order_ids  Order Ids to prime cache for.
         * @param array $query_vars Query vars for the query.
         */
        private function prime_refund_caches_for_order($order_ids, $query_vars)
        {
        }
        /**
         * Prime cache for raw meta data for orders in bulk. Difference between this and WP built-in metadata is that this method also fetches `meta_id` field which we use and cache it.
         *
         * @param array $order_ids  Order Ids to prime cache for.
         * @param array $query_vars Query vars for the query.
         */
        private function prime_raw_meta_cache_for_orders($order_ids, $query_vars)
        {
        }
        /**
         * Attempts to restore the specified order back to its original status (after having been trashed).
         *
         * @param WC_Order $order The order to be untrashed.
         *
         * @return bool If the operation was successful.
         */
        public function untrash_order(\WC_Order $order) : bool
        {
        }
    }
    /**
     * Order Item Type Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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 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)
        {
        }
    }
    /**
     * Order Item Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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  mixed  $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  mixed  $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|null Order item type or null if no order item entry found.
         */
        public function get_order_item_type($item_id)
        {
        }
        /**
         * Clear meta cache.
         *
         * @param int      $item_id Item ID.
         * @param int|null $order_id Order ID. If not set, it will be loaded using the item ID.
         */
        protected function clear_caches($item_id, $order_id)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * Order Item Product Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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 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_Product_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('_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_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 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)
        {
        }
    }
    /**
     * Order Refund Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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()
        {
        }
    }
    /**
     * Payment Token Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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_Object_Data_Store_Interface, \WC_Payment_Token_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 int $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 int $token_id Token ID.
         * @return array
         */
        public function get_metadata($token_id)
        {
        }
        /**
         * Get a token's type by ID.
         *
         * @since 3.0.0
         * @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.
         *
         * @since 3.0.0
         *
         * @param int  $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)
        {
        }
    }
    /**
     * Product Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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', '_global_unique_id', '_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', '_cogs_total_value');
        /**
         * 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();
        /**
         * Method to obtain DB lock on SKU to make sure we only
         * create product with unique SKU for concurrent requests.
         *
         * We are doing so by inserting a row in the wc_product_meta_lookup table
         * upfront with the SKU of the product we are trying to insert.
         *
         * If the SKU is already present in the table, it means that another
         * request is processing the same SKU and we should not proceed
         * with the insert.
         *
         * Using $wpdb->options as it always has some data, if we select from a table
         * that does not have any data, then our query will always return null set
         * and the where subquery won't be fired, effectively bypassing any lock.
         *
         * @param WC_Product $product Product object.
         * @return bool True if lock is obtained (unique SKU), false otherwise.
         */
        private function obtain_lock_on_sku_for_concurrent_requests($product)
        {
        }
        /*
        |--------------------------------------------------------------------------
        | CRUD Methods
        |--------------------------------------------------------------------------
        */
        /**
         * Method to create a new product in the database.
         *
         * @param WC_Product $product Product object.
         * @throws Exception If SKU is already under processing.
         */
        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)
        {
        }
        /**
         * Load the Cost of Goods Sold related data for a given product.
         *
         * @param WC_Product $product The product to apply the loaded data to.
         */
        protected function load_cogs_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)
        {
        }
        /**
         * Check if product sku is found for any other product IDs.
         *
         * @since 9.1.0
         * @param int    $product_id Product ID.
         * @param string $global_unique_id Will be slashed to work around https://core.trac.wordpress.org/ticket/27421.
         * @return bool
         */
        public function is_existing_global_unique_id($product_id, $global_unique_id)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Return product ID based on Unique ID.
         *
         * @since 9.1.0
         * @param string $global_unique_id Product Unique ID.
         * @return int
         */
        public function get_product_id_by_global_unique_id($global_unique_id)
        {
        }
        /**
         * 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.
         * @param  array      $default_values Key value pairs to set on created variations.
         * @param  array      $metadata Key value pairs to set as meta data on created variations.
         * @return int        Number of created variations.
         */
        public function create_all_product_variations($product, $limit = -1, $default_values = array(), $metadata = array())
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Returns query statement for getting current `_stock` of a product.
         *
         * @internal MAX function below is used to make sure result is a scalar.
         * @param int $product_id Product ID.
         * @return string|void Query statement.
         */
        public function get_query_for_stock($product_id)
        {
        }
        /**
         * Check if the Cost of Goods Sold feature is enabled.
         *
         * @return bool True if the feature is enabled.
         */
        protected function cogs_feature_is_enabled() : bool
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * Product Variable Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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 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), or when passing an invalid ID.
         */
        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)
        {
        }
        /**
         * Load the Cost of Goods Sold related data for a given product.
         *
         * @param WC_Product $product The product to apply the loaded data to.
         */
        protected function load_cogs_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 its 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)
        {
        }
    }
    /**
     * Shipping Zone Data Store Interface
     *
     * @version 3.0.0
     * @package WooCommerce\Interface
     */
    /**
     * 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 Instance 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_Object_Data_Store_Interface, \WC_Shipping_Zone_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 Instance 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)
        {
        }
    }
    /**
     * Webhook Data Store Interface
     *
     * @version  3.2.0
     * @package  WooCommerce\Interface
     */
    /**
     * 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 = '')
        {
        }
    }
    /**
     * 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();
        /**
         * E-mail type: plain, html or multipart.
         *
         * @var string
         */
        public $email_type;
        /**
         * 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.
         *
         * @param string $default_content_type Default wp_mail() content type.
         * @return string
         */
        public function get_content_type($default_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).
         *
         * @version 4.0.0
         * @param string|null $content Content that will receive inline styles.
         * @return string
         */
        public function style_inline($content)
        {
        }
        /**
         * Returns CSS styles that should be included with all HTML e-mails, regardless of theme specific customizations.
         *
         * @since 9.1.0
         *
         * @return string
         */
        protected function get_must_use_css_styles() : string
        {
        }
        /**
         * Return if emogrifier library is supported.
         *
         * @version 4.0.0
         * @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.
         *
         * @param string $from_name Default wp_mail() name associated with the "from" email address.
         * @return string
         */
        public function get_from_name($from_name = '')
        {
        }
        /**
         * Get the from address for outgoing emails.
         *
         * @param string $from_email Default wp_mail() email address to send from.
         * @return string
         */
        public function get_from_address($from_email = '')
        {
        }
        /**
         * Set the object for the outgoing email.
         *
         * @param object $object Object this email is for, e.g. customer, or product.
         * @return void
         */
        public function set_object($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Clears the PhpMailer AltBody field, to prevent that content from leaking across emails.
         */
        private function clear_alt_body_field() : void
        {
        }
    }
    /**
     * 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 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 failed Order Email.
     *
     * Order failed emails are sent to the customer when their order are marked as failed.
     *
     * @class       WC_Email_Customer_Failed_Order
     * @version     2.0.0
     * @package     WooCommerce\Classes\Emails
     * @extends     WC_Email
     */
    class WC_Email_Customer_Failed_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()
        {
        }
    }
    /**
     * Order details email.
     *
     * An email sent to the customer via admin, that summarizes the details of their order. This was
     * historically referred to as the 'invoice', and for backwards compatibility reasons that is still
     * reflected in the class name (although on a user-level we have moved away from that nomenclature).
     *
     * @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()
        {
        }
    }
    /**
     * 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;
        /**
         * Magic link to set initial password.
         *
         * @var string
         */
        public $set_password_url;
        /**
         * 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()
        {
        }
        /**
         * Generate set password URL link for a new user.
         * 
         * See also Automattic\WooCommerce\Blocks\Domain\Services\Email\CustomerNewAccount and wp_new_user_notification.
         * 
         * @since 6.0.0
         * @return string
         */
        protected function generate_set_password_url()
        {
        }
    }
    /**
     * 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 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 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 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()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Add mobile messaging.
         *
         * @param WC_Email $email that called for mobile messaging. May not contain a WC_Email for legacy reasons.
         */
        public function mobile_messaging($email)
        {
        }
    }
    /**
     * 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();
        /**
         * The delimiter parameter sets the field delimiter (one character only).
         *
         * @var string
         */
        protected $delimiter = ',';
        /**
         * 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()
        {
        }
        /**
         * Return the delimiter to use in CSV file
         *
         * @since 3.9.0
         * @return string
         */
        public function get_delimiter()
        {
        }
        /**
         * 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 https://owasp.org/www-community/attacks/CSV_Injection
         * @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.
         *
         * @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 CSV headers row file path to export to.
         *
         * @return string
         */
        protected function get_headers_row_file_path()
        {
        }
        /**
         * Get the contents of the CSV headers row file. Defaults to the original known headers.
         *
         * @since 3.1.0
         * @return string
         */
        public function get_headers_row_file()
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * 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;
        /**
         * Gateway instructions that will be added to the thank you page and emails.
         *
         * @var string
         */
        public $instructions;
        /**
         * Account details.
         *
         * @var array
         */
        public $account_details;
        /**
         * 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
    {
        /**
         * Gateway instructions that will be added to the thank you page and emails.
         *
         * @var string
         */
        public $instructions;
        /**
         * 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)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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
    {
        /**
         * Gateway instructions that will be added to the thank you page and emails.
         *
         * @var string
         */
        public $instructions;
        /**
         * Enable for shipping methods.
         *
         * @var array
         */
        public $enable_for_methods;
        /**
         * Enable for virtual products.
         *
         * @var bool
         */
        public $enable_for_virtual;
        /**
         * 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()
        {
        }
        /**
         * Checks to see whether or not the admin settings are being accessed by the current request.
         *
         * @return bool
         */
        private function is_accessing_settings()
        {
        }
        /**
         * Loads all of the shipping method options for the enable_for_methods field.
         *
         * @return array
         */
        private function load_shipping_method_options()
        {
        }
        /**
         * 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 array
         */
        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.
         *
         * @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)
        {
        }
    }
    /**
     * 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;
        /**
         * Whether the test mode is enabled.
         *
         * @var bool
         */
        public $testmode;
        /**
         * Whether the debug mode is enabled.
         *
         * @var bool
         */
        public $debug;
        /**
         * Email address to send payments to.
         *
         * @var string
         */
        public $email;
        /**
         * Receiver email.
         *
         * @var string
         */
        public $receiver_email;
        /**
         * Identity token.
         *
         * @var string
         */
        public $identity_token;
        /**
         * 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 available in the user's country based on currency.
         *
         * @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()
        {
        }
        /**
         * Custom PayPal order received text.
         *
         * @since 3.9.0
         * @param string   $text Default text.
         * @param WC_Order $order Order data.
         * @return string
         */
        public function order_received_text($text, $order)
        {
        }
        /**
         * Determines whether PayPal Standard should be loaded or not.
         *
         * By default PayPal Standard isn't loaded on new installs or on existing sites which haven't set up the gateway.
         *
         * @since 5.5.0
         *
         * @return bool Whether PayPal Standard should be loaded.
         */
        public function should_load()
        {
        }
        /**
         * Checks if the store has at least one PayPal Standand order.
         *
         * @return bool
         */
        public function has_paypal_orders()
        {
        }
    }
    /**
     * 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 = '')
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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;
        /**
         * Receiver email address to validate.
         *
         * @var string Receiver email address.
         */
        protected $receiver_email;
        /**
         * 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 = '')
        {
        }
        /**
         * Set receiver email to enable more strict validation.
         *
         * @param string $receiver_email Email to receive PDT notification from.
         */
        public function set_receiver_email($receiver_email = '')
        {
        }
        /**
         * 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, taking the order id from the request.
         *
         * @deprecated 6.4 Use check_response_for_order instead.
         */
        public function check_response()
        {
        }
        /**
         * Check Response for PDT.
         *
         * @since 6.4
         *
         * @param mixed $wc_order_id The order id to check the response against.
         */
        public function check_response_for_order($wc_order_id)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * WooCommerce Importer Interface
     *
     * @package  WooCommerce\Interface
     * @version  3.1.0
     */
    /**
     * 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())
        {
        }
        /**
         * Convert a string from the input encoding to UTF-8.
         *
         * @param string $value The string to convert.
         * @return string The converted string.
         */
        private function adjust_character_encoding($value)
        {
        }
        /**
         * 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 dates from a CSV.
         * Dates can be Unix timestamps or in any format supported by strtotime().
         *
         * @param string $value Field value.
         *
         * @return string|null
         */
        public function parse_datetime_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_formatting_callback(), use this method to skip any formatting.
         *
         * @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, otherwise 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)
        {
        }
        /**
         * Deprecated get formatting callback method.
         *
         * @deprecated 4.3.0
         * @return array
         */
        protected function get_formating_callback()
        {
        }
        /**
         * Get formatting callback.
         *
         * @since 4.3.0
         * @return array
         */
        protected function get_formatting_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()
        {
        }
    }
    /**
     * The service class responsible for interacting with MaxMind databases.
     *
     * @since 3.9.0
     */
    class WC_Integration_MaxMind_Database_Service
    {
        /**
         * The name of the MaxMind database to utilize.
         */
        const DATABASE = 'GeoLite2-Country';
        /**
         * The extension for the MaxMind database.
         */
        const DATABASE_EXTENSION = '.mmdb';
        /**
         * A prefix for the MaxMind database filename.
         *
         * @var string
         */
        private $database_prefix;
        /**
         * WC_Integration_MaxMind_Database_Service constructor.
         *
         * @param string|null $database_prefix A prefix for the MaxMind database filename.
         */
        public function __construct($database_prefix)
        {
        }
        /**
         * Fetches the path that the database should be stored.
         *
         * @return string The local database path.
         */
        public function get_database_path()
        {
        }
        /**
         * Fetches the database from the MaxMind service.
         *
         * @param string $license_key The license key to be used when downloading the database.
         * @return string|WP_Error The path to the database file or an error if invalid.
         */
        public function download_database($license_key)
        {
        }
        /**
         * Fetches the ISO country code associated with an IP address.
         *
         * @param string $ip_address The IP address to find the country code for.
         * @return string The country code for the IP address, or empty if not found.
         */
        public function get_iso_country_code_for_ip($ip_address)
        {
        }
    }
    /**
     * WC Integration MaxMind Geolocation
     *
     * @since 3.9.0
     */
    class WC_Integration_MaxMind_Geolocation extends \WC_Integration
    {
        /**
         * The service responsible for interacting with the MaxMind database.
         *
         * @var WC_Integration_MaxMind_Database_Service
         */
        private $database_service;
        /**
         * Initialize the integration.
         */
        public function __construct()
        {
        }
        /**
         * Override the normal options so we can print the database file path to the admin,
         */
        public function admin_options()
        {
        }
        /**
         * Initializes the settings fields.
         */
        public function init_form_fields()
        {
        }
        /**
         * Get database service.
         *
         * @return WC_Integration_MaxMind_Database_Service|null
         */
        public function get_database_service()
        {
        }
        /**
         * Checks to make sure that the license key is valid.
         *
         * @param string $key The key of the field.
         * @param mixed  $value The value of the field.
         * @return mixed
         * @throws Exception When the license key is invalid.
         */
        public function validate_license_key_field($key, $value)
        {
        }
        /**
         * Updates the database used for geolocation queries.
         *
         * @param string|null $new_database_path The path to the new database file. Null will fetch a new archive.
         */
        public function update_database($new_database_path = \null)
        {
        }
        /**
         * Performs a geolocation lookup against the MaxMind database for the given IP address.
         *
         * @param array  $data       Geolocation data.
         * @param string $ip_address The IP address to geolocate.
         * @return array Geolocation including country code, state, city and postcode based on an IP address.
         */
        public function get_geolocation($data, $ip_address)
        {
        }
        /**
         * Fetches the prefix for the MaxMind database file.
         *
         * @return string
         */
        private function get_database_prefix()
        {
        }
        /**
         * Add missing license key notice.
         */
        private function add_missing_license_key_notice()
        {
        }
        /**
         * Remove missing license key notice.
         */
        private function remove_missing_license_key_notice()
        {
        }
        /**
         * Display notice if license key is missing.
         *
         * @param mixed $old_value Option old value.
         * @param mixed $new_value Current value.
         */
        public function display_missing_license_key_notice($old_value, $new_value)
        {
        }
    }
    /**
     * Queue Interface
     *
     * @version 3.5.0
     * @package WooCommerce\Interface
     */
    /**
     * 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 occurrence 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);
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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 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()
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * WC_Product_Usage_Rule_Set.
     */
    class WC_Product_Usage_Rule_Set
    {
        /**
         * Set of product feature restriction rules.
         *
         * @var array|null $rules
         */
        protected $rules;
        /**
         * Constructor
         *
         * @param array $rules product feature restriction rules.
         */
        public function __construct($rules)
        {
        }
        /**
         * Retrieve the value of a rule by name
         *
         * @param string $rule_name name of the rule to retrieve value.
         * @return mixed|null
         */
        public function get_rule(string $rule_name)
        {
        }
    }
    /**
     * Product usagee
     */
    class WC_Product_Usage
    {
        /**
         * Load Product Usage class.
         *
         * @since 9.3.0
         */
        public static function load()
        {
        }
        /**
         * Include support files.
         *
         * @since 9.3.0
         */
        protected static function includes()
        {
        }
        /**
         * Get product usage rule if it needs to be applied to the given product id.
         *
         * @param int $product_id product id to get feature restriction rules.
         * @since 9.3.0
         */
        public static function get_rules_for_product(int $product_id) : ?\WC_Product_Usage_Rule_Set
        {
        }
        /**
         * Get the product usage rule for a product.
         *
         * @param int $product_id product id to get feature restriction rules.
         * @return array|null
         * @since 9.3.0
         */
        private static function get_product_usage_restriction_rule(int $product_id) : ?array
        {
        }
    }
    /**
     * 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 occurrence 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)
        {
        }
    }
}
namespace WooCommerce\Admin {
    /**
     * This class provides an interface to the Explat A/B tests.
     *
     * Usage:
     *
     * $anon_id = isset( $_COOKIE['tk_ai'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['tk_ai'] ) ) : '';
     * $allow_tracking = 'yes' === get_option( 'woocommerce_allow_tracking' );
     * $abtest = new \WooCommerce\Admin\Experimental_Abtest(
     *      $anon_id,
     *      'woocommerce',
     *      $allow_tracking
     * );
     *
     * OR use the helper function:
     *
     * WooCommerce\Admin\Experimental_Abtest::in_treatment('experiment_name');
     *
     *
     * $isTreatment = $abtest->get_variation('your-experiment-name') === 'treatment';
     *
     * @internal This class is experimental and should not be used externally due to planned breaking changes.
     */
    final class Experimental_Abtest
    {
        /**
         * A variable to hold the tests we fetched, and their variations for the current user.
         *
         * @var array
         */
        private $tests = array();
        /**
         * ExPlat Anonymous ID.
         *
         * @var string
         */
        private $anon_id = null;
        /**
         * ExPlat Platform name.
         *
         * @var string
         */
        private $platform = 'woocommerce';
        /**
         * Whether trcking consent is given.
         *
         * @var bool
         */
        private $consent = false;
        /**
         * Request variation as a auth wpcom user or not.
         *
         * @var boolean
         */
        private $as_auth_wpcom_user = false;
        /**
         * Constructor.
         *
         * @param string $anon_id ExPlat anonymous ID.
         * @param string $platform ExPlat platform name.
         * @param bool   $consent Whether tracking consent is given.
         * @param bool   $as_auth_wpcom_user  Request variation as a auth wp user or not.
         */
        public function __construct(string $anon_id, string $platform, bool $consent, bool $as_auth_wpcom_user = false)
        {
        }
        /**
         * Returns true if the current user is in the treatment group of the given experiment.
         *
         * @param string $experiment_name Name of the experiment.
         * @param bool   $as_auth_wpcom_user Request variation as a auth wp user or not.
         * @return bool
         */
        public static function in_treatment(string $experiment_name, bool $as_auth_wpcom_user = false)
        {
        }
        /**
         * Retrieve the test variation for a provided A/B test.
         *
         * @param string $test_name Name of the A/B test.
         * @return mixed|null A/B test variation, or null on failure.
         * @throws \Exception If there is an error retrieving the variation and the environment is not production.
         */
        public function get_variation($test_name)
        {
        }
        /**
         * Perform the request for a experiment assignment of a provided A/B test from WP.com.
         *
         * @param array $args Arguments to pass to the request for A/B test.
         * @return array|\WP_Error A/B test variation error on failure.
         */
        public function request_assignment($args)
        {
        }
        /**
         * Fetch and cache the test variation for a provided A/B test from WP.com.
         *
         * ExPlat returns a null value when the assigned variation is control or
         * an assignment has not been set. In these instances, this method returns
         * a value of "control".
         *
         * @param string $test_name Name of the A/B test.
         * @return array|\WP_Error A/B test variation, or error on failure.
         */
        protected function fetch_variation($test_name)
        {
        }
    }
}
namespace {
    /**
     * Abstract Rest Controller Class
     *
     * @package 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 = '';
        /**
         * Used to cache computed return fields.
         *
         * @var null|array
         */
        private $_fields = \null;
        /**
         * Used to verify if cached fields are for correct request object.
         *
         * @var null|WP_REST_Request
         */
        private $_request = \null;
        /**
         * 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)
        {
        }
        /**
         * Compatibility functions for WP 5.5, since custom types are not supported anymore.
         * See @link https://core.trac.wordpress.org/changeset/48306
         *
         * @param string $method Optional. HTTP method of the request.
         *
         * @return array Endpoint arguments.
         */
        public function get_endpoint_args_for_item_schema($method = \WP_REST_Server::CREATABLE)
        {
        }
        /**
         * Change datatypes `date-time` to string, and `mixed` to composite of all built in types. This is required for maintaining forward compatibility with WP 5.5 since custom post types are not supported anymore.
         *
         * See @link https://core.trac.wordpress.org/changeset/48306
         *
         * We still use the 'mixed' type, since if we convert to composite type everywhere, it won't work in 5.4 anymore because they require to define the full schema.
         *
         * @param array $endpoint_args Schema with datatypes to convert.
         * @return mixed Schema with converted datatype.
         */
        protected function adjust_wp_5_5_datatype_compatibility($endpoint_args)
        {
        }
        /**
         * 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
         * @since 9.0.0 No longer allows storing IFRAME, which was allowed for "ShareThis" integration no longer found in core.
         * @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.
         * Updated from WordPress 5.3, included into this class to support old versions.
         *
         * @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)
        {
        }
        /**
         * Limit the contents of the meta_data property based on certain request parameters.
         *
         * Note that if both `include_meta` and `exclude_meta` are present in the request,
         * `include_meta` will take precedence.
         *
         * @param \WP_REST_Request $request   The request.
         * @param array            $meta_data All of the meta data for an object.
         *
         * @return array
         */
        protected function get_meta_data_for_response($request, $meta_data)
        {
        }
    }
    /**
     * Telemetry controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Telemetry_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-telemetry';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'tracker';
        /**
         * Register the route for /tracker
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to post telemetry data
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function telemetry_permissions_check($request)
        {
        }
        /**
         * Record WCTracker Data
         *
         * @param  WP_REST_Request $request Full details about the request.
         */
        public function record_usage_data($request)
        {
        }
        /**
         * Get usage data from current request
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return Array
         */
        public function get_usage_data($request)
        {
        }
        /**
         * Get any query params needed.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * WC_REST_Posts_Controller
     *
     * @package 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)
        {
        }
    }
    /**
     * REST API Coupons controller class.
     *
     * @package 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 Customers controller class.
     *
     * @package 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 Customers controller class.
     *
     * @package 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 Order Notes controller class.
     *
     * @package 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 Orders controller class.
     *
     * @package 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  Order object.
         * @param array    $posted Request data.
         * @param string   $type   Type of address; 'billing' or 'shipping'.
         */
        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.
         * @param string          $action 'create' to add line item or 'update' to update it.
         * @return int
         */
        protected function get_product_id($posted, $action = 'create')
        {
        }
        /**
         * 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()
        {
        }
        /**
         * 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 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 Order Refunds controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * 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 = '';
        /**
         * Cached taxonomies by attribute id.
         *
         * @var array
         */
        protected $taxonomies_by_id = array();
        /**
         * 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 Attribute Terms controller class.
     *
     * @package 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 Attributes controller class.
     *
     * @package 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 = '';
        /**
         * Cached taxonomies by attribute id.
         *
         * @var array
         */
        protected $taxonomies_by_id = array();
        /**
         * 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 The request to get the attributes from.
         * @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 The request to process.
         * @return WP_REST_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 The slug to validate.
         * @param bool   $new_data If we are creating 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 Categories controller class.
     *
     * @package 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 Reviews Controller Class.
     *
     * @package 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)
        {
        }
        /**
         * Fetch a single product review from the database.
         *
         * @param int $id         Review ID.
         * @param int $product_id Product ID.
         *
         * @since  9.2.0
         * @return \WP_Comment
         */
        protected function get_review(int $id, int $product_id)
        {
        }
        /**
         * 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 Product Shipping Classes controller class.
     *
     * @package 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 Product Tags controller class.
     *
     * @package 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 Products controller class.
     *
     * @package 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 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 Report Top Sellers controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * REST API Reports controller class.
     *
     * @package 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 Tax Classes controller class.
     *
     * @package 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 Full details about the 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 Full details about the request.
         * @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 Taxes controller class.
     *
     * @package 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)
        {
        }
        /**
         * Add tax rate locales to the response array.
         *
         * @param array    $data Response data.
         * @param stdClass $tax  Tax object.
         *
         * @return array
         */
        protected function add_tax_rate_locales($data, $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 Webhook Deliveries controller class.
     *
     * @deprecated 3.3.0 Webhooks deliveries logs now uses logging system.
     * @package 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 Webhooks controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Get fields for an object if getter is defined.
         *
         * @param object $object  Object we are fetching response for.
         * @param string $context Context of the request. Can be `view` or `edit`.
         * @param array  $fields  List of fields to fetch.
         * @return array Data fetched from getters.
         */
        public function fetch_fields_using_getters($object, $context, $fields)
        {
        }
        /**
         * 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 Coupons controller class.
     *
     * @package 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 Customers controller class.
     *
     * @package 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 Customers controller class.
     *
     * @package 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)
        {
        }
        /**
         * Get formatted item data, not including orders count nor total spent.
         * This method is needed because v3 API doesn't return those two fields.
         *
         * @internal This method could disappear or have its name or signature changed in future releases.
         *
         * @param  WC_Data $object WC_Data instance.
         * @return array
         */
        protected function get_formatted_item_data_core($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()
        {
        }
    }
    // phpcs:disable Squiz.Classes.ClassFileName.NoMatch, Squiz.Classes.ValidClassName.NotCamelCaps -- Legacy class name, can't change without breaking backward compat.
    /**
     * REST API Orders controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_CRUD_Controller
     */
    class WC_REST_Orders_V2_Controller extends \WC_REST_CRUD_Controller
    {
        // phpcs:enable
        /**
         * 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)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Merge the `$formatted_meta_data` `display_key` and `display_value` attribute values into the corresponding
         * {@link WC_Meta_Data}. Returns the merged array.
         *
         * @param WC_Meta_Data $meta_item           An object from {@link WC_Order_Item::get_meta_data()}.
         * @param array        $formatted_meta_data An object result from {@link WC_Order_Item::get_all_formatted_meta_data}.
         * The keys are the IDs of {@link WC_Meta_Data}.
         *
         * @return array
         */
        private function merge_meta_item_with_formatted_meta_display_attributes($meta_item, $formatted_meta_data)
        {
        }
        /**
         * With HPOS, few internal meta keys such as _billing_address_index, _shipping_address_index are not considered internal anymore (since most internal keys were flattened into dedicated columns).
         *
         * This function helps in filtering out any remaining internal meta keys with HPOS is enabled.
         *
         * @param array $meta_data Order meta data.
         *
         * @return array Filtered order meta data.
         */
        private function filter_internal_meta_keys($meta_data)
        {
        }
        /**
         * Get formatted item data.
         *
         * @since 3.0.0
         * @param WC_Order $order WC_Data instance.
         *
         * @return array
         */
        protected function get_formatted_item_data($order)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Core method to prepare a single order object for response
         * (doesn't fire hooks, execute rest_ensure_response, or add links).
         *
         * @param  WC_Data         $order  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return array Prepared response data.
         * @since  9.5.0
         */
        protected function prepare_object_for_response_core($order, $request) : array
        {
        }
        /**
         * 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   Type of address; 'billing' or 'shipping'.
         */
        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.
         * @param string $action 'create' to add line item or 'update' to update it.
         * @return int
         */
        protected function get_product_id($posted, $action = 'create')
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get objects.
         *
         * @param  array $query_args Query args.
         * @return array
         */
        protected function get_objects($query_args)
        {
        }
    }
    /**
     * REST API Network Orders controller class.
     *
     * @package 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 Notes controller class.
     *
     * @package 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 Order Refunds controller class.
     *
     * @package 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 refund 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()
        {
        }
    }
    /**
     * Paymenga gateways controller class.
     *
     * @package 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 Product Attribute Terms controller class.
     *
     * @package 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 Attributes controller class.
     *
     * @package 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 Categories controller class.
     *
     * @package 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 Brands controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Product_Categories_Controller
     */
    class WC_REST_Product_Brands_V2_Controller extends \WC_REST_Product_Categories_V2_Controller
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/brands';
        /**
         * Taxonomy.
         *
         * @var string
         */
        protected $taxonomy = 'product_brand';
    }
    /**
     * REST API Product Reviews Controller Class.
     *
     * @package 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 Product Shipping Classes controller class.
     *
     * @package 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';
    }
    /**
     * REST API Product Tags controller class.
     *
     * @package 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 Products controller class.
     *
     * @package 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)
        {
        }
        /**
         * Core function to prepare a single product output for response
         * (doesn't fire hooks, ensure_response, or add links).
         *
         * @param WC_Data         $object_data Object data.
         * @param WP_REST_Request $request Request object.
         * @param string          $context Request context.
         * @return array Product data to be included in the response.
         */
        protected function prepare_object_for_response_core($object_data, $request, $context) : array
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Fetch price HTML.
         *
         * @param WC_Product $product Product object.
         * @param string     $context Context of request, can be `view` or `edit`.
         *
         * @return string
         */
        protected function api_get_price_html($product, $context)
        {
        }
        /**
         * Fetch related IDs.
         *
         * @param WC_Product $product Product object.
         * @param string     $context Context of request, can be `view` or `edit`.
         *
         * @return array
         */
        protected function api_get_related_ids($product, $context)
        {
        }
        /**
         * Fetch meta data.
         *
         * @param WC_Product $product Product object.
         * @param string     $context Context of request, can be `view` or `edit`.
         *
         * @return array
         */
        protected function api_get_meta_data($product, $context)
        {
        }
        /**
         * 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 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|null
         */
        protected function get_object($id)
        {
        }
        /**
         * Checks that a variation belongs to the specified parent product.
         *
         * @param int $variation_id Variation ID.
         * @param int $parent_id    Parent product ID to check against.
         * @return bool TRUE if variation and parent product exist. FALSE otherwise.
         *
         * @since 9.2.0
         */
        protected function check_variation_parent(int $variation_id, int $parent_id) : bool
        {
        }
        /**
         * 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)
        {
        }
        /**
         * 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 Report Sales controller class.
     *
     * @package 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 Report Top Sellers controller class.
     *
     * @package 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 Reports controller class.
     *
     * @package 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 Setting Options controller class.
     *
     * @package 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 Settings controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * Shipping methods controller class.
     *
     * @package 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 Shipping Zones base class.
     *
     * @package 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 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 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()
        {
        }
    }
    /**
     * REST API Shipping Zones class.
     *
     * @package 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()
        {
        }
    }
    /**
     * System status tools controller.
     *
     * @package 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)
        {
        }
        /**
         * Get a printable name for a callback.
         *
         * @param mixed  $callback The callback to get a name for.
         * @param string $default The default name, to be returned when the callback is an inline function.
         * @return string A printable name for the callback.
         */
        private function get_printable_callback_name($callback, $default)
        {
        }
    }
    /**
     * System status controller class.
     *
     * @package 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 cache cleaner
         *
         * Handles all the cache cleaning for this endpoint. We need to register
         * these functions before the routes are registered, so this function gets
         * called from Server.php
         */
        public static function register_cache_clean()
        {
        }
        /**
         * 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.
         *
         * @deprecated 3.9.0
         * @return array
         */
        public function get_item_mappings()
        {
        }
        /**
         * Return an array of sections and the data associated with each.
         *
         * @since 3.9.0
         * @param array $fields List of fields to be included on the response.
         * @return array
         */
        public function get_item_mappings_per_fields($fields)
        {
        }
        /**
         * Get array of environment information. Includes thing like software
         * versions, and various server settings.
         *
         * @deprecated 3.9.0
         * @return array
         */
        public function get_environment_info()
        {
        }
        /**
         * Check if field item exists.
         *
         * @since 3.9.0
         * @param string $section Fields section.
         * @param array  $items List of items to check for.
         * @param array  $fields List of fields to be included on the response.
         * @return bool
         */
        private function check_if_field_item_exists($section, $items, $fields)
        {
        }
        /**
         * Get array of environment information. Includes thing like software
         * versions, and various server settings.
         *
         * @param array $fields List of fields to be included on the response.
         * @return array
         */
        public function get_environment_info_per_fields($fields)
        {
        }
        /**
         * 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 inactive plugins.
         *
         * @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()
        {
        }
        /**
         * Clear the system status theme cache
         */
        public static function clean_theme_cache()
        {
        }
        /**
         * Clear the system status plugin caches
         */
        public static function clean_plugin_cache()
        {
        }
        /**
         * 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 or block.
         *
         * @return array
         */
        public function get_pages()
        {
        }
        /**
         * Get info about the logging system.
         *
         * @return array
         */
        protected function get_logging_info()
        {
        }
        /**
         * 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 Tax Classes controller class.
     *
     * @package 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';
        /**
         * Register the routes for tax classes.
         */
        public function register_routes()
        {
        }
        /**
         * Get one tax class.
         *
         * @param WP_REST_Request $request Request object.
         * @return array
         */
        public function get_item($request)
        {
        }
    }
    /**
     * REST API Taxes controller class.
     *
     * @package 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 Webhook Deliveries controller class.
     *
     * @deprecated 3.3.0 Webhooks deliveries logs now uses logging system.
     * @package 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 Webhooks controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * REST API Coupons controller class.
     *
     * @package 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';
        /**
         * Prepare objects query.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
    }
    /**
     * REST API Customers controller class.
     *
     * @package 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 Customers controller class.
     *
     * @package 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 Data controller class.
     *
     * @package 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 continents controller class.
     *
     * @package 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, $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 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, $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 Data Currencies controller class.
     *
     * @package 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, $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()
        {
        }
    }
    /**
     * REST API Layout Templates controller class.
     */
    class WC_REST_Layout_Templates_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'layout-templates';
        /**
         * Register the routes for template layouts.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read template layouts.
         *
         * @param WP_REST_Request $request The request.
         */
        public function get_items_permissions_check($request) : bool
        {
        }
        /**
         * Check if a given request has access to read a template layout.
         *
         * @param WP_REST_Request $request The request.
         */
        public function get_item_permissions_check($request) : bool
        {
        }
        /**
         * Handle request for template layouts.
         *
         * @param WP_REST_Request $request The request.
         */
        public function get_items($request)
        {
        }
        /**
         * Handle request for a single template layout.
         *
         * @param WP_REST_Request $request The request.
         */
        public function get_item($request)
        {
        }
        /**
         * Get layout templates.
         *
         * @param array $query_params Query params.
         */
        private function get_layout_templates(array $query_params) : array
        {
        }
    }
    /**
     * REST API Network Orders controller class.
     *
     * @package 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 Order Notes controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * REST API Order Refunds controller class.
     *
     * @package 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)
        {
        }
        /**
         * Get the refund schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Orders controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Orders_V2_Controller
     */
    class WC_REST_Orders_Controller extends \WC_REST_Orders_V2_Controller
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * 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)
        {
        }
        /**
         * Create or update a line item, overridden to add COGS data as needed.
         *
         * @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)
        {
        }
        /**
         * Wrapper method to remove order items.
         * When updating, the item ID provided is checked to ensure it is associated
         * with the order.
         *
         * @param WC_Order $order     The order to remove the item from.
         * @param string   $item_type The item type (from the request, not from the item, e.g. 'line_items' rather than 'line_item').
         * @param int      $item_id   The ID of the item to remove.
         *
         * @return void
         * @throws WC_REST_Exception If item ID is not associated with order.
         */
        protected function remove_item(\WC_Order $order, string $item_type, int $item_id) : void
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Add the Cost of Goods Sold related fields to the schema.
         *
         * @param array $schema The original schema.
         * @return array The updated schema.
         */
        private function add_cogs_related_schema(array $schema) : array
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Core method to prepare a single order object for response
         * (doesn't fire hooks, execute rest_ensure_response, or add links).
         *
         * @param  WC_Data         $order  Object data.
         * @param  WP_REST_Request $request Request object.
         * @return array Prepared response data.
         * @since  9.5.0
         */
        protected function prepare_object_for_response_core($order, $request) : array
        {
        }
    }
    /**
     * Paymenga gateways controller class.
     *
     * @package 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 Product Attribute Terms controller class.
     *
     * @package 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';
    }
    /**
     * REST API Product Attributes controller class.
     *
     * @package 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';
        /**
         * Generates a unique slug for a given attribute name. We do this so that we can 
         * create more than one attribute with the same name.
         *
         * @param string $attribute_name The attribute name to generate a slug for.
         * @return string The auto-generated slug
         */
        private function generate_unique_slug($attribute_name)
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * REST API Product Categories controller class.
     *
     * @package 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)
        {
        }
    }
    /**
     * REST API Brands controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Product_Categories_Controller
     */
    class WC_REST_Product_Brands_Controller extends \WC_REST_Product_Categories_Controller
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/brands';
        /**
         * Taxonomy.
         *
         * @var string
         */
        protected $taxonomy = 'product_brand';
    }
    /**
     * REST API Product Custom Fields controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Controller
     */
    class WC_REST_Product_Custom_Fields_Controller extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'products/custom-fields';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'product';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Get a collection of custom field names.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_item_names($request)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Add new options for 'order' to the collection params.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * REST API Product Reviews Controller Class.
     *
     * @package 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 review, 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 Product Shipping Classes controller class.
     *
     * @package 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';
        /**
         * Register the routes for product reviews.
         */
        public function register_routes()
        {
        }
        /**
         * Callback function for the slug-suggestion endpoint.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return string          The suggested slug.
         */
        public function suggest_slug($request)
        {
        }
    }
    /**
     * REST API Product Tags controller class.
     *
     * @package 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\Internal\CostOfGoodsSold {
    /**
     * Trait with Cost of Goods Sold related functionality shared by the REST products and variations controllers.
     */
    trait CogsAwareRestControllerTrait
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareTrait;
        /**
         * Add Cost of Goods Sold related information for a given product to the array of data that will become the REST response.
         *
         * @param array      $data Array of response data.
         * @param WC_Product $product Product to get the information from.
         */
        private function add_cogs_info_to_returned_product_data(array &$data, $product) : void
        {
        }
        /**
         * Apply Cost of Goods Sold related information received in the request body to a product object.
         *
         * @param WP_Rest_Request $request Request data.
         * @param WC_Product      $product The product to apply the data to.
         */
        private function set_cogs_info_in_product_object($request, $product) : void
        {
        }
        /**
         * Add Cost of Goods Sold related schema information to a given REST endpoint schema.
         *
         * @param array $schema The schema data set to add the information to.
         * @param bool  $for_variations_controller True if the information is for an endpoint in the variations controller.
         * @return array Updated schema information.
         */
        private function add_cogs_related_product_schema(array $schema, bool $for_variations_controller) : array
        {
        }
    }
}
namespace {
    /**
     * REST API variations controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Product_Variations_V2_Controller
     */
    class WC_REST_Product_Variations_Controller extends \WC_REST_Product_Variations_V2_Controller
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareRestControllerTrait;
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Get the downloads for a product variation.
         *
         * @param WC_Product_Variation $product Product variation instance.
         * @param string               $context Context of the request: 'view' or 'edit'.
         *
         * @return array
         */
        protected function get_downloads($product, $context = 'view')
        {
        }
        /**
         * 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.
         * @param string               $context   Context of the request: 'view' or 'edit'.
         * @return array
         */
        protected function get_image($variation, $context = 'view')
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Deletes all unmatched variations (aka duplicates).
         *
         * @param  WC_Product $product Variable product.
         * @return int        Number of deleted variations.
         */
        private function delete_unmatched_product_variations($product)
        {
        }
        /**
         * Generate all variations for a given product.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function generate($request)
        {
        }
    }
    /**
     * REST API Products controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Products_V2_Controller
     */
    class WC_REST_Products_Controller extends \WC_REST_Products_V2_Controller
    {
        use \Automattic\WooCommerce\Internal\CostOfGoodsSold\CogsAwareRestControllerTrait;
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * A string to inject into a query to do a partial match SKU search.
         *
         * See prepare_objects_query()
         *
         * @var string
         */
        private $search_sku_in_product_lookup_table = '';
        /**
         * Suggested product ids.
         *
         * @var array
         */
        private $suggested_products_ids = array();
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Duplicate a product and returns the duplicated product.
         * The product status is set to "draft" and the name includes a "(copy)" at the end by default.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function duplicate_product($request)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Get objects.
         *
         * @param array $query_args Query args.
         * @return array
         */
        protected function get_objects($query_args)
        {
        }
        /**
         * Join `wc_product_meta_lookup` table when SKU search query is present.
         *
         * @param string $join Join clause used to search posts.
         * @return string
         */
        public function add_search_criteria_to_wp_query_join($join)
        {
        }
        /**
         * Add a where clause for matching the SKU field.
         *
         * @param string $where Where clause used to search posts.
         * @return string
         */
        public function add_search_criteria_to_wp_query_where($where)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Add new options for the suggested-products endpoint.
         *
         * @return array
         */
        public function get_suggested_products_collection_params()
        {
        }
        /**
         * Get the downloads for a product.
         *
         * @param WC_Product $product Product instance.
         *
         * @return array
         */
        protected function get_downloads($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')
        {
        }
        /**
         * Get the suggested products.
         *
         * @param WP_REST_Request $request Request object.
         * @return object
         */
        public function get_suggested_products($request)
        {
        }
        /**
         * Core function to prepare a single product output for response
         * (doesn't fire hooks, ensure_response, or add links).
         *
         * @param WC_Data         $object_data Object data.
         * @param WP_REST_Request $request Request object.
         * @param string          $context Request context.
         * @return array Product data to be included in the response.
         */
        protected function prepare_object_for_response_core($object_data, $request, $context) : array
        {
        }
    }
    /**
     * REST API Order Refunds controller class.
     *
     * @package WooCommerce\RestApi
     * @extends WC_REST_Order_Refunds_Controller
     */
    class WC_REST_Refunds_Controller extends \WC_REST_Order_Refunds_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/v3';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'refunds';
        /**
         * Post type.
         *
         * @var string
         */
        protected $post_type = 'shop_order_refund';
        /**
         * Register the routes for order refunds.
         */
        public function register_routes()
        {
        }
        /**
         * Prepare objects query.
         *
         * @since  9.0.0
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Prepare a single order output for response.
         *
         * @since  9.0.0
         *
         * @param  WC_Order_Refund $refund  Refund data.
         * @param  WP_REST_Request $request Request object.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function prepare_object_for_response($refund, $request)
        {
        }
        /**
         * Get formatted item data.
         *
         * @since  9.0.0
         * @param  WC_Order_Refund $refund The refund object.
         * @return array
         */
        protected function get_formatted_item_data($refund)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Order_Refund $refund  Refund data.
         * @param WP_REST_Request $request Request object.
         * @return array                   Links for the given post.
         */
        protected function prepare_links($refund, $request)
        {
        }
        /**
         * Get the refund schema, conforming to JSON Schema.
         *
         * @since  9.0.0
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Reports controller class.
     *
     * @package 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 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 Reports Customers Totals controller class.
     *
     * @package 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 Reports Orders Totals controller class.
     *
     * @package 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 Reports Products Totals controller class.
     *
     * @package 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 Reports Reviews Totals controller class.
     *
     * @package 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 Report Sales controller class.
     *
     * @package 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 Report Top Sellers controller class.
     *
     * @package 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 Setting Options controller class.
     *
     * @package 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 Settings controller class.
     *
     * @package 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()
        {
        }
    }
    /**
     * Shipping methods controller class.
     *
     * @package 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';
    }
    /**
     * REST API Shipping Zone Locations class.
     *
     * @package 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 Shipping Zone Methods class.
     *
     * @package 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';
        /**
         * Get the settings schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Shipping Zones class.
     *
     * @package 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';
    }
    /**
     * System status controller class.
     *
     * @package 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';
    }
    /**
     * System status tools controller.
     *
     * @package 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 Tax Classes controller class.
     *
     * @package 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';
    }
    /**
     * REST API Taxes controller class.
     *
     * @package 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';
        /**
         * Add tax rate locales to the response array.
         *
         * @param array    $data Response data.
         * @param stdClass $tax  Tax object.
         *
         * @return array
         */
        protected function add_tax_rate_locales($data, $tax)
        {
        }
        /**
         * Get the taxes schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Create a single tax.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response The response, or an error.
         */
        public function create_item($request)
        {
        }
        /**
         * Update a single tax.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response The response, or an error.
         */
        public function update_item($request)
        {
        }
        /**
         * Convert array "cities" and "postcodes" parameters
         * into semicolon-separated strings "city" and "postcode".
         *
         * @param WP_REST_Request $request The request to adjust.
         */
        private function adjust_cities_and_postcodes(&$request)
        {
        }
    }
    /**
     * REST API Webhooks controller class.
     *
     * @package 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()
        {
        }
    }
}
namespace Automattic\WooCommerce\RestApi {
    /**
     * Main package class.
     *
     * @deprecated Use \Automattic\WooCommerce\RestApi\Server directly.
     */
    class Package
    {
        /**
         * Version.
         *
         * @deprecated since 4.5.0. This tracks WooCommerce version now.
         * @var string
         */
        const VERSION = WC_VERSION;
        /**
         * Init the package - load the REST API Server class.
         *
         * @deprecated since 4.5.0. Directly call Automattic\WooCommerce\RestApi\Server::instance()->init()
         */
        public static function init()
        {
        }
        /**
         * Return the version of the package.
         *
         * @deprecated since 4.5.0. This tracks WooCommerce version now.
         * @return string
         */
        public static function get_version()
        {
        }
        /**
         * Return the path to the package.
         *
         * @deprecated since 4.5.0. Directly call Automattic\WooCommerce\RestApi\Server::get_path()
         * @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.
         */
        public final 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 = array();
        /**
         * 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()
        {
        }
        /**
         * List of controllers in the telemetry namespace.
         *
         * @return array
         */
        protected function get_telemetry_controllers()
        {
        }
        /**
         * Return the path to the package.
         *
         * @return string
         */
        public static function get_path()
        {
        }
    }
}
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 {
    /**
     * 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 = '';
        /**
         * Shipping method cost.
         *
         * @var string
         */
        public $cost;
        /**
         * Shipping method type.
         *
         * @var string
         */
        public $type;
        /**
         * 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, must contain `cost` and `qty` keys. Having `array()` as default is for back compat reasons.
         * @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.
         * @throws Exception Last error triggered.
         * @return string
         */
        public function sanitize_cost($value)
        {
        }
    }
    /**
     * 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 = '';
        /**
         * Ignore discounts.
         *
         * If set, free shipping would be available based on pre-discount order amount.
         *
         * @var string
         */
        public $ignore_discounts;
        /**
         * Constructor.
         *
         * @param int $instance_id Shipping method instance.
         */
        public function __construct($instance_id = 0)
        {
        }
        /**
         * Initialize free shipping.
         */
        public function init()
        {
        }
        /**
         * Sanitize the cost field.
         *
         * @since 8.3.0
         * @param string $value Unsanitized value.
         * @throws Exception Last error triggered.
         * @return string
         */
        public function sanitize_cost($value)
        {
        }
        /**
         * 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()
        {
        }
    }
    /**
     * 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 = '';
        /**
         * Shipping method cost.
         *
         * @var string
         */
        public $cost;
        /**
         * Shipping method type.
         *
         * @var string
         */
        public $type;
        /**
         * Shipping method options.
         *
         * @deprecated 2.4.0
         * @var string
         */
        public $options;
        /**
         * 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 adjustment.
         * @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)
        {
        }
    }
    /**
     * 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())
        {
        }
    }
    /**
     * 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
    {
        /**
         * Shipping method cost.
         *
         * @var string
         */
        public $cost;
        /**
         * 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())
        {
        }
        /**
         * Sanitize the cost field.
         *
         * @since 8.3.0
         * @param string $value Unsanitized value.
         * @throws Exception Last error triggered.
         * @return string
         */
        public function sanitize_cost($value)
        {
        }
        /**
         * Init form fields.
         */
        public function init_form_fields()
        {
        }
    }
    /**
     * 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
    {
        /**
         * Shipping method fee type.
         *
         * How to calculate delivery charges.
         *
         * @var string
         */
        public $type;
        /**
         * Allowed post/zip codes for the shipping method.
         *
         * @var string
         */
        public $codes;
        /**
         * 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()
        {
        }
    }
    /**
     * 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
    {
        /**
         * Allowed post/zip codes for the shipping method.
         *
         * @var string
         */
        public $codes;
        /**
         * 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)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Tries to determine if the user's email address should be verified before rendering either the 'order received' or
         * 'order pay' pages. This should only be applied to guest orders.
         *
         * @param WC_Order $order   The order for which a need for email verification is being determined.
         * @param string   $context The context in which email verification is being tested.
         *
         * @return bool
         */
        private static function guest_should_verify_email(\WC_Order $order, string $context) : bool
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Add notices to the my account page.
         *
         * Historically a filter has existed to render a message above the my account page content while the user is
         * logged out. See `woocommerce_my_account_message`.
         */
        private static function my_account_add_notices()
        {
        }
        /**
         * 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; 'billing' or 'shipping'.
         */
        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.
         *
         * @since 9.4.0 This will log the user in after resetting the password/session.
         *
         * @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()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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 string
         */
        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 querying 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  int $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)
        {
        }
    }
    /**
     * 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_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_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)
        {
        }
    }
    /**
     * 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_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_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_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_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()
        {
        }
        /**
         * Add theme compatibility styles.
         *
         * @return void
         */
        public static function enqueue_styles()
        {
        }
    }
    /**
     * WC_Twenty_Twenty_One class.
     */
    class WC_Twenty_Twenty_One
    {
        /**
         * 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)
        {
        }
        /**
         * Enqueue the wp-admin CSS overrides for this theme.
         */
        public static function enqueue_admin_styles()
        {
        }
    }
    /**
     * WC_Twenty_Twenty_Three class.
     */
    class WC_Twenty_Twenty_Three
    {
        /**
         * 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)
        {
        }
        /**
         * Wrap checkout order review with a `col2-set` div.
         */
        public static function before_order_review()
        {
        }
        /**
         * Close the div wrapper.
         */
        public static function after_order_review()
        {
        }
    }
    /**
     * WC_Twenty_Twenty_One class.
     */
    class WC_Twenty_Twenty_Two
    {
        /**
         * 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)
        {
        }
        /**
         * Wrap checkout order review with a `col2-set` div.
         */
        public static function before_order_review()
        {
        }
        /**
         * Close the div wrapper.
         */
        public static function after_order_review()
        {
        }
    }
    /**
     * WC_Twenty_Twenty class.
     */
    class WC_Twenty_Twenty
    {
        /**
         * Theme init.
         */
        public static function init()
        {
        }
        /**
         * Open the Twenty Twenty wrapper.
         */
        public static function output_content_wrapper()
        {
        }
        /**
         * Close the Twenty Twenty wrapper.
         */
        public static function output_content_wrapper_end()
        {
        }
        /**
         * Set background color to white if it's default, otherwise don't touch it.
         */
        public static function set_white_background()
        {
        }
        /**
         * Enqueue CSS for this theme.
         *
         * @param  array $styles Array of registered styles.
         * @return array
         */
        public static function enqueue_styles($styles)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Register scripts required to record events from javascript.
         */
        public static function register_scripts()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Adds a function to load tracking scripts and enable them client-side on the fly.
         * Note that this function does not update `woocommerce_allow_tracking` in the database
         * and will not persist enabled tracking across page loads.
         */
        public static function add_enable_tracking_function()
        {
        }
        /**
         * Init tracking.
         */
        public static function init()
        {
        }
        /**
         * Sets a cookie for tracking purposes, but only if tracking is enabled/allowed.
         *
         * @internal
         * @since 9.2.0
         *
         * @param string $cookie_key   The key of the cookie.
         * @param string $cookie_value The value of the cookie.
         * @param int    $expire       Expiry of the cookie.
         * @param bool   $secure       Whether the cookie should be served only over https.
         * @param bool   $http_only    Whether the cookie is only accessible over HTTP.
         *
         * @return bool If setting the cookie was attempted (will be false if tracking is not allowed).
         */
        public static function set_tracking_cookie(string $cookie_key, string $cookie_value, int $expire = 0, bool $secure = \false, bool $http_only = \false) : bool
        {
        }
    }
    /**
     * 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 identity 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 timestamp 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()
        {
        }
    }
    /**
     * WC_Tracks_Event class.
     */
    #[\AllowDynamicProperties]
    class WC_Tracks_Event
    {
        /**
         * Event name regex.
         */
        public const EVENT_NAME_REGEX = '/^(([a-z0-9]+)_){1}([a-z0-9_]+)$/';
        /**
         * Property name regex.
         */
        public 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)
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Get all events.
         */
        public static function get_events()
        {
        }
        /**
         * Clear all queued events.
         */
        public static function clear_events()
        {
        }
    }
    /**
     * 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()
        {
        }
        /**
         * Get role-related details.
         *
         * @param WP_User $user The user object.
         * @return array The role details.
         */
        public static function get_role_details($user)
        {
        }
        /**
         * Record an event in Tracks - this is the preferred way to record events from PHP.
         * Note: the event request won't be made if $properties has a member called `error`.
         *
         * @param string $event_name The name of the event.
         * @param array  $event_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, $event_properties = array())
        {
        }
        /**
         * Get all properties for the event including filtered and identity properties.
         *
         * @param string $event_name Event name.
         * @param array  $event_properties Event specific properties.
         * @return array
         */
        public static function get_properties($event_name, $event_properties)
        {
        }
    }
    /**
     * 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.
         *
         * @deprecated 4.6.0
         */
        public function init()
        {
        }
        /**
         * Get the name of the current step.
         *
         * @deprecated 4.6.0
         * @return string
         */
        public function get_current_step()
        {
        }
        /**
         * Add footer scripts to OBW via woocommerce_setup_footer
         *
         * @deprecated 4.6.0
         */
        public function add_footer_scripts()
        {
        }
        /**
         * Dequeue unwanted scripts from OBW footer.
         *
         * @deprecated 4.6.0
         */
        public function dequeue_non_allowed_scripts()
        {
        }
        /**
         * Track when tracking is opted into and OBW has started.
         *
         * @param string $option Option name.
         * @param string $value  Option value.
         *
         * @deprecated 4.6.0
         */
        public function track_start($option, $value)
        {
        }
        /**
         * Track the marketing form on submit.
         *
         * @deprecated 4.6.0
         */
        public function track_ready_next_steps()
        {
        }
        /**
         * Track various events when a step is saved.
         *
         * @deprecated 4.6.0
         */
        public function add_step_save_events()
        {
        }
        /**
         * Track store setup and store properties on save.
         *
         * @deprecated 4.6.0
         */
        public function track_store_setup()
        {
        }
        /**
         * Track payment gateways selected.
         *
         * @deprecated 4.6.0
         */
        public function track_payments()
        {
        }
        /**
         * Track shipping units and whether or not labels are set.
         *
         * @deprecated 4.6.0
         */
        public function track_shipping()
        {
        }
        /**
         * Track recommended plugins selected for install.
         *
         * @deprecated 4.6.0
         */
        public function track_recommended()
        {
        }
        /**
         * Tracks when Jetpack is activated through the OBW.
         *
         * @deprecated 4.6.0
         */
        public function track_jetpack_activate()
        {
        }
        /**
         * Tracks when last next_steps screen is viewed in the OBW.
         *
         * @deprecated 4.6.0
         */
        public function track_next_steps()
        {
        }
        /**
         * Track skipped steps.
         *
         * @deprecated 4.6.0
         */
        public function track_skip_step()
        {
        }
        /**
         * Set the OBW steps inside this class instance.
         *
         * @param array $steps Array of OBW steps.
         *
         * @deprecated 4.6.0
         */
        public function set_obw_steps($steps)
        {
        }
    }
    /**
     * WooCommerce Coupon Tracking
     *
     * @package WooCommerce\Tracks
     */
    /**
     * This class adds actions to track usage of a WooCommerce Coupon.
     */
    class WC_Coupon_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a Tracks event when a coupon is updated.
         *
         * @param WC_Coupon $coupon        The coupon that has been updated.
         * @param Array     $updated_props The props of the coupon that have been updated.
         */
        public function track_coupon_updated($coupon, $updated_props)
        {
        }
    }
    /**
     * 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()
        {
        }
    }
    /**
     * 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 event when the Extensions page gets a bad response or no response
         * from the WCCOM extensions API.
         *
         * @param string $error Error message.
         */
        public function track_extensions_page_connection_error(string $error = '')
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Send a Tracks event when addon is installed via the Extensions page.
         *
         * @param string $addon_id Addon slug.
         * @param string $section  Extensions tab.
         */
        public function track_addon_install($addon_id, $section)
        {
        }
    }
    /**
     * 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 a WooCommerce Order.
     */
    class WC_Order_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a Tracks event when an order is viewed.
         *
         * @param WC_Order $order Order.
         */
        public function track_order_viewed($order)
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Orders.
     */
    class WC_Orders_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a track event when on the Order Listing page, and search results are being displayed.
         *
         * @deprecated 8.6.0
         *
         * @param array  $order_ids Array of order_ids that are matches for the search.
         * @param string $term The string that was used in the search.
         * @param array  $search_fields Fields that were used in the original search.
         */
        public function track_order_search($order_ids, $term, $search_fields)
        {
        }
        /**
         * Send a track event when on the Order Listing page, and search results are being displayed.
         *
         * @since 8.6.0
         */
        public function track_search_in_orders_list()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Adds the tracking scripts for product setting pages.
         */
        public function possibly_add_order_tracking_scripts()
        {
        }
    }
    /**
     * This class adds actions to track usage of the Product Collection Block.
     */
    class WC_Product_Collection_Block_Tracking
    {
        /**
         * Init Tracking.
         */
        public function init()
        {
        }
        /**
         * Track feature usage of the Product Collection block within the site editor.
         *
         * @param int      $post_id  The post ID.
         * @param \WP_Post $post     The post object.
         *
         * @return void
         */
        public function track_collection_instances($post_id, $post)
        {
        }
        /**
         * Track usage of the Product Collection block within the given blocks.
         *
         * @param array $blocks                The parsed blocks to check.
         * @param bool  $is_in_single_product  Whether we are in a single product container (used for keeping state in the recurring process).
         * @param bool  $is_in_template_part   Whether we are in a template part (used for keeping state in the recurring process).
         * @param bool  $is_in_synced_pattern  Whether we are in a synced block (used for keeping state in the recurring process).
         *
         * @return array Parsed instances of the Product Collection block.
         */
        private function parse_blocks_track_data($blocks, $is_in_single_product = \false, $is_in_template_part = \false, $is_in_synced_pattern = \false)
        {
        }
        /**
         * Parse editor's location context from WP Post.
         *
         * Possible contexts:
         * - post
         * - page
         * - single-product
         * - product-archive
         * - cart
         * - checkout
         * - product-catalog
         * - order-confirmation
         *
         * @param WP_Post $post The Post instance.
         *
         * @return string Returns the context.
         */
        private function parse_editor_location_context($post)
        {
        }
        /**
         * Parse the collection query filters from the query attributes.
         *
         * @param array $block The parsed block.
         * @return array The filters data for tracking.
         */
        private function get_query_filters_usage_data($block)
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Products.
     */
    class WC_Products_Tracking
    {
        /**
         * Tracks source.
         */
        const TRACKS_SOURCE = 'product-legacy-editor';
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Send a Tracks event when the Products page is viewed.
         */
        public function track_products_view()
        {
        }
        /**
         * Send a Tracks event when the Products Categories and Tags page is viewed.
         */
        public function track_categories_and_tags_view()
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Track the Update button being clicked on the client side.
         * This is needed because `track_product_updated` (using the `edit_post`
         * hook) is called in response to a number of other triggers.
         *
         * @param WP_Post $post The post, not used.
         */
        public function track_product_updated_client_side($post)
        {
        }
        /**
         * Get the IDs of the possible product type options.
         *
         * @return array
         */
        private static function get_possible_product_type_options_ids()
        {
        }
        /**
         * Get the product type options for a product.
         *
         * @param int $post_id The ID of the product.
         *
         * @return array
         */
        private static function get_product_type_options($post_id)
        {
        }
        /**
         * Get a comma-separated string of the product type options that are enabled.
         *
         * @param array $product_type_options The product type options.
         *
         * @return string
         */
        private static function get_product_type_options_string($product_type_options)
        {
        }
        /**
         * Send a Tracks event when a product is published.
         *
         * @param int          $post_id     Post ID.
         * @param WP_Post      $post        Post object.
         * @param bool         $update      Whether this is an existing post being updated.
         * @param null|WP_Post $post_before Null for new posts, the WP_Post object prior
         *                                  to the update for updated posts.
         */
        public function track_product_published($post_id, $post, $update, $post_before)
        {
        }
        /**
         * Send a Tracks event when a product category is created.
         *
         * @param int $category_id Category ID.
         */
        public function track_product_category_created($category_id)
        {
        }
        /**
         * Send a Tracks event when a product category is updated.
         *
         * @param int $category_id Category ID.
         */
        public function track_product_category_updated($category_id)
        {
        }
        /**
         * Adds the tracking scripts for product filtering actions.
         *
         * @param string $hook Hook of the current page.
         * @return string|boolean
         */
        protected function get_product_screen($hook)
        {
        }
        /**
         * Adds the tracking scripts for product filtering actions.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_product_tracking_scripts($hook)
        {
        }
        /**
         * Adds the tracking scripts for product setting pages.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_product_import_scripts($hook)
        {
        }
        /**
         * Adds the tracking scripts for product attributes filtering actions.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_attribute_tracking_scripts($hook)
        {
        }
        /**
         * Adds the tracking scripts for tags and categories filtering actions.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_tag_tracking_scripts($hook)
        {
        }
        /**
         * Check if the current process is importing products.
         *
         * @return bool True if importing, false otherwise.
         */
        private function is_importing()
        {
        }
    }
    /**
     * This class adds actions to track usage of WooCommerce Settings.
     */
    class WC_Settings_Tracking
    {
        /**
         * List of allowed WooCommerce settings to potentially track updates for.
         *
         * @var array
         */
        protected $allowed_options = array();
        /**
         * WooCommerce settings that have been updated (and will be tracked).
         *
         * @var array
         */
        protected $updated_options = array();
        /**
         * List of option names that are dropdown menus.
         *
         * @var array
         */
        protected $dropdown_menu_options = array();
        /**
         * List of options that have been modified.
         *
         * @var array
         */
        protected $modified_options = array();
        /**
         * List of options that have been deleted.
         *
         * @var array
         */
        protected $deleted_options = array();
        /**
         * List of options that have been added.
         *
         * @var array
         */
        protected $added_options = array();
        /**
         * Toggled options.
         *
         * @var array
         */
        protected $toggled_options = array('enabled' => array(), 'disabled' => array());
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Adds the option to the allowed and updated options directly.
         * Currently used for settings that don't use update_option.
         *
         * @param array $option WooCommerce option that should be updated.
         */
        public function add_option_to_list_and_track_setting_change($option)
        {
        }
        /**
         * Add a WooCommerce option name to our allowed options list and attach
         * the `update_option` hook. Rather than inspecting every updated
         * option and pattern matching for "woocommerce", just build a dynamic
         * list 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_list($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()
        {
        }
        /**
         * Adds the tracking scripts for product setting pages.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_settings_tracking_scripts($hook)
        {
        }
    }
    /**
     * 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 themes on a WooCommerce store.
     */
    class WC_Theme_Tracking
    {
        /**
         * Init tracking.
         */
        public function init()
        {
        }
        /**
         * Tracks the sites current theme the first time this code is run, and will only be run once.
         */
        public function track_initial_theme()
        {
        }
        /**
         * Send a Tracks event when a theme is activated so that we can track active block themes.
         */
        public function track_activated_theme()
        {
        }
    }
    /**
     * 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, $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, $args, &$output)
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installer Class
     *
     * Contains functionalities to install products via WooCommerce.com helper connection.
     */
    class WC_WCCOM_Site_Installer
    {
        /**
         * An instance of the WP_Upgrader class to be used for installation.
         *
         * @var \WP_Upgrader $wp_upgrader
         */
        private static $wp_upgrader;
        /**
         * Get WP.org plugin's main file.
         *
         * @since 3.7.0
         * @param string $dir Directory name of the plugin.
         * @return bool|string
         */
        public static function get_wporg_plugin_main_file($dir)
        {
        }
        /**
         * Get plugin info
         *
         * @since 3.9.0
         * @param string $dir Directory name of the plugin.
         * @return bool|array
         */
        public static function get_plugin_info($dir)
        {
        }
        /**
         * Get an instance of WP_Upgrader to use for installing plugins.
         *
         * @return WP_Upgrader
         */
        public static function get_wp_upgrader()
        {
        }
    }
    /**
     * WC_WCCOM_Site Class
     *
     * Main class for WooCommerce.com connected site.
     */
    class WC_WCCOM_Site
    {
        const AUTH_ERROR_FILTER_NAME = 'wccom_auth_error';
        /**
         * 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)
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_Manager class
     */
    class WC_WCCOM_Site_Installation_Manager
    {
        const STEPS = array('get_product_info', 'download_product', 'unpack_product', 'move_product', 'activate_product');
        /**
         * The product ID.
         *
         * @var int
         */
        protected $product_id;
        /**
         * The idempotency key.
         *
         * @var string
         */
        protected $idempotency_key;
        /**
         * Constructor.
         *
         * @param int    $product_id The product ID.
         * @param string $idempotency_key The idempotency key.
         */
        public function __construct(int $product_id, string $idempotency_key)
        {
        }
        /**
         * Run the installation.
         *
         * @param string $run_until_step The step to run until.
         * @return bool
         * @throws WC_REST_WCCOM_Site_Installer_Error If installation failed to run.
         */
        public function run_installation(string $run_until_step) : bool
        {
        }
        /**
         * Get the next step to run.
         *
         * @return bool
         * @throws WC_REST_WCCOM_Site_Installer_Error If the installation cannot be rest.
         */
        public function reset_installation() : bool
        {
        }
        /**
         * Check if the installation can be run.
         *
         * @param string                           $run_until_step Run until this step.
         * @param WC_WCCOM_Site_Installation_State $state Installation state.
         * @return void
         * @throws WC_REST_WCCOM_Site_Installer_Error If the installation cannot be run.
         */
        protected function can_run_installation($run_until_step, $state)
        {
        }
        /**
         * Get the next step to run.
         *
         * @param WC_WCCOM_Site_Installation_State $state Installation state.
         * @return string
         */
        protected function get_next_step($state) : string
        {
        }
        /**
         * Get the steps to run.
         *
         * @param string $start_step The step to start from.
         * @param string $end_step  The step to end at.
         * @return string[]
         */
        protected function get_installation_steps(string $start_step, string $end_step)
        {
        }
        /**
         * Run the step.
         *
         * @param string                           $step_name Step name.
         * @param WC_WCCOM_Site_Installation_State $state Installation state.
         * @return void
         * @throws WC_REST_WCCOM_Site_Installer_Error If the step fails.
         */
        protected function run_step($step_name, $state)
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_State_Storage class
     */
    class WC_WCCOM_Site_Installation_State_Storage
    {
        /**
         * Get state from storage.
         *
         * @param int $product_id The product ID.
         * @return WC_WCCOM_Site_Installation_State|null
         */
        public static function get_state($product_id) : ?\WC_WCCOM_Site_Installation_State
        {
        }
        /**
         * Save state to storage.
         *
         * @param WC_WCCOM_Site_Installation_State $state The state to save.
         * @return bool
         */
        public static function save_state(\WC_WCCOM_Site_Installation_State $state) : bool
        {
        }
        /**
         * Delete state from storage.
         *
         * @param WC_WCCOM_Site_Installation_State $state The state to delete.
         * @return bool
         */
        public static function delete_state(\WC_WCCOM_Site_Installation_State $state) : bool
        {
        }
        /**
         * Get the storage key for a product ID.
         *
         * @param int $product_id The product ID.
         * @return string
         */
        protected static function get_storage_key($product_id) : string
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_State class
     */
    class WC_WCCOM_Site_Installation_State
    {
        /**
         * The product ID.
         *
         * @var string
         */
        protected $product_id;
        /**
         * The idempotency key.
         *
         * @var string
         */
        protected $idempotency_key;
        /**
         * The last step name.
         *
         * @var string
         */
        protected $last_step_name;
        /**
         * The last step status.
         *
         * @var string
         */
        protected $last_step_status;
        /**
         * The last step error.
         *
         * @var string
         */
        protected $last_step_error;
        /**
         * The product type.
         *
         * @var string
         */
        protected $product_type;
        /**
         * The product name.
         *
         * @var string
         */
        protected $product_name;
        /**
         * The product slug.
         *
         * @var string
         */
        protected $download_url;
        /**
         * The path to the downloaded file.
         *
         * @var string
         */
        protected $download_path;
        /**
         * The path to the unpacked file.
         *
         * @var string
         */
        protected $unpacked_path;
        /**
         * The path to the installed file.
         *
         * @var string
         */
        protected $installed_path;
        /**
         * The plugin info for the already installed plugin.
         *
         * @var array
         */
        protected $already_installed_plugin_info;
        /**
         * The timestamp of the installation start.
         *
         * @var int
         */
        protected $started_date;
        const STEP_STATUS_IN_PROGRESS = 'in-progress';
        const STEP_STATUS_FAILED = 'failed';
        const STEP_STATUS_COMPLETED = 'completed';
        /**
         * Constructor.
         *
         * @param string $product_id The product ID.
         */
        protected function __construct($product_id)
        {
        }
        /**
         * Initiate an existing installation state.
         *
         * @param int    $product_id The product ID.
         * @param string $idempotency_key The idempotency key.
         * @param string $last_step_name The last step name.
         * @param string $last_step_status The last step status.
         * @param string $last_step_error The last step error.
         * @param int    $started_date The timestamp of the installation start.
         * @return WC_WCCOM_Site_Installation_State The instance.
         */
        public static function initiate_existing($product_id, $idempotency_key, $last_step_name, $last_step_status, $last_step_error, $started_date)
        {
        }
        /**
         * Initiate a new installation state.
         *
         * @param init   $product_id The product ID.
         * @param string $idempotency_key The idempotency key.
         * @return WC_WCCOM_Site_Installation_State The instance.
         */
        public static function initiate_new($product_id, $idempotency_key)
        {
        }
        /**
         * Get the product ID.
         *
         * @return string
         */
        public function get_product_id()
        {
        }
        /**
         * Get the idempotency key.
         *
         * @return string
         */
        public function get_idempotency_key()
        {
        }
        /**
         * Get the timestamp of the installation start.
         *
         * @return int
         */
        public function get_last_step_name()
        {
        }
        /**
         * Get the last step status.
         *
         * @return string
         */
        public function get_last_step_status()
        {
        }
        /**
         * Get the last step error.
         *
         * @return int
         */
        public function get_last_step_error()
        {
        }
        /**
         * Initiate a step.
         *
         * @param string $step_name Step name.
         * @return void
         */
        public function initiate_step($step_name)
        {
        }
        /**
         * Capture a successful installation of a step.
         *
         * @param string $step_name The step name.
         */
        public function complete_step($step_name)
        {
        }
        /**
         * Capture an installation failure.
         *
         * @param string $step_name  The step name.
         * @param string $error_code The error code.
         */
        public function capture_failure($step_name, $error_code)
        {
        }
        /**
         * Get the product type.
         *
         * @return string
         */
        public function get_product_type()
        {
        }
        /**
         * Set the product type.
         *
         * @param string $product_type The product type.
         */
        public function set_product_type($product_type)
        {
        }
        /**
         * Get the product name.
         *
         * @return string
         */
        public function get_product_name()
        {
        }
        /**
         * Set the product name.
         *
         * @param string $product_name The product name.
         */
        public function set_product_name($product_name)
        {
        }
        /**
         * Get the download URL.
         *
         * @return string
         */
        public function get_download_url()
        {
        }
        /**
         * Set the download URL.
         *
         * @param string $download_url The download URL.
         */
        public function set_download_url($download_url)
        {
        }
        /**
         * Get the path to the downloaded file.
         *
         * @return string
         */
        public function get_download_path()
        {
        }
        /**
         * Set the path to the downloaded file.
         *
         * @param string $download_path The path to the downloaded file.
         */
        public function set_download_path($download_path)
        {
        }
        /**
         * Get the path to the unpacked file.
         *
         * @return string
         */
        public function get_unpacked_path()
        {
        }
        /**
         * Set the path to the unpacked file.
         *
         * @param string $unpacked_path The path to the unpacked file.
         */
        public function set_unpacked_path($unpacked_path)
        {
        }
        /**
         * Get the path to the installed file.
         *
         * @return string
         */
        public function get_installed_path()
        {
        }
        /**
         * Set the path to the installed file.
         *
         * @param string $installed_path The path to the installed file.
         */
        public function set_installed_path($installed_path)
        {
        }
        /**
         * Get the plugin info for the already installed plugin.
         *
         * @return array
         */
        public function get_already_installed_plugin_info()
        {
        }
        /**
         * Set the plugin info for the already installed plugin.
         *
         * @param array $plugin_info The plugin info.
         */
        public function set_already_installed_plugin_info($plugin_info)
        {
        }
        /**
         * Get the timestamp of the installation start.
         *
         * @return int
         */
        public function get_started_date()
        {
        }
    }
    interface WC_WCCOM_Site_Installation_Step
    {
        /**
         * Constructor.
         *
         * @param array $state The current installation state.
         */
        public function __construct($state);
        /**
         * Run the step installation process.
         */
        public function run();
    }
    /**
     * WC_WCCOM_Site_Installation_Step_Activate_Product Class
     */
    class WC_WCCOM_Site_Installation_Step_Activate_Product implements \WC_WCCOM_Site_Installation_Step
    {
        /**
         * The current installation state.
         *
         * @var WC_WCCOM_Site_Installation_State
         */
        protected $state;
        /**
         * Constructor.
         *
         * @param array $state The current installation state.
         */
        public function __construct($state)
        {
        }
        /**
         * Run the step installation process.
         */
        public function run()
        {
        }
        /**
         * Activate plugin.
         *
         * @param int $product_id Product ID.
         * @return void
         * @throws WC_REST_WCCOM_Site_Installer_Error If plugin activation failed.
         */
        private function activate_plugin($product_id)
        {
        }
        /**
         * Activate theme.
         *
         * @param int $product_id Product ID.
         * @return void
         * @throws WC_REST_WCCOM_Site_Installer_Error If theme activation failed.
         */
        private function activate_theme($product_id)
        {
        }
        /**
         * Get WP.org product directory name.
         *
         * @return string|false
         */
        private function get_wporg_product_dir_name()
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_Step_Download_Product class
     */
    class WC_WCCOM_Site_Installation_Step_Download_Product implements \WC_WCCOM_Site_Installation_Step
    {
        /**
         * The current installation state.
         *
         * @var WC_WCCOM_Site_Installation_State
         */
        protected $state;
        /**
         * Constructor.
         *
         * @param array $state The current installation state.
         */
        public function __construct($state)
        {
        }
        /**
         * Run the step installation process.
         *
         * @throws Installer_Error Installer Error.
         */
        public function run()
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_Step_Get_Product_Info class
     */
    class WC_WCCOM_Site_Installation_Step_Get_Product_Info implements \WC_WCCOM_Site_Installation_Step
    {
        /**
         * The current installation state.
         *
         * @var WC_WCCOM_Site_Installation_State
         */
        protected $state;
        /**
         * Constructor.
         *
         * @param array $state The current installation state.
         */
        public function __construct($state)
        {
        }
        /**
         * Run the step installation process.
         *
         * @throws Installer_Error Installer Error.
         * @return array
         */
        public function run()
        {
        }
        /**
         * Get download URL for wporg product.
         *
         * @param array $data Product data.
         *
         * @return string|null
         * @throws Installer_Error Installer Error.
         */
        protected function get_wporg_download_url($data)
        {
        }
        /**
         * Get download URL for wccom product.
         *
         * @param int $product_id Product ID.
         *
         * @return string
         * @throws Installer_Error Installer Error.
         */
        protected function get_wccom_download_url($product_id)
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_Step_Move_Product class
     */
    class WC_WCCOM_Site_Installation_Step_Move_Product implements \WC_WCCOM_Site_Installation_Step
    {
        /**
         * The current installation state.
         *
         * @var WC_WCCOM_Site_Installation_State
         */
        protected $state;
        /**
         * Constructor.
         *
         * @param array $state The current installation state.
         */
        public function __construct($state)
        {
        }
        /**
         * Run the step installation process.
         */
        public function run()
        {
        }
    }
    /**
     * WC_WCCOM_Site_Installation_Step_Unpack_Product class
     */
    class WC_WCCOM_Site_Installation_Step_Unpack_Product implements \WC_WCCOM_Site_Installation_Step
    {
        /**
         * The current installation state.
         *
         * @var WC_WCCOM_Site_Installation_State
         */
        protected $state;
        /**
         * Constructor.
         *
         * @param array $state The current installation state.
         */
        public function __construct($state)
        {
        }
        /**
         * Run the step installation process.
         *
         * @return WC_WCCOM_Site_Installation_State
         * @throws WC_REST_WCCOM_Site_Installer_Error If the package unpacked path is not returned.
         */
        public function run()
        {
        }
    }
    /**
     * WCCOM Site Installer Error Codes Class
     *
     * Stores data for errors, returned by installer API.
     */
    class WC_REST_WCCOM_Site_Installer_Error_Codes
    {
        const NOT_AUTHENTICATED = 'not_authenticated';
        const NO_ACCESS_TOKEN = 'no_access_token';
        const NO_SIGNATURE = 'no_signature';
        const SITE_NOT_CONNECTED = 'site_not_connnected';
        const INVALID_TOKEN = 'invalid_token';
        const REQUEST_VERIFICATION_FAILED = 'request_verification_failed';
        const USER_NOT_FOUND = 'user_not_found';
        const NO_PERMISSION = 'forbidden';
        const IDEMPOTENCY_KEY_MISMATCH = 'idempotency_key_mismatch';
        const NO_INITIATED_INSTALLATION_FOUND = 'no_initiated_installation_found';
        const ALL_INSTALLATION_STEPS_RUN = 'all_installation_steps_run';
        const REQUESTED_STEP_ALREADY_RUN = 'requested_step_already_run';
        const PLUGIN_ALREADY_INSTALLED = 'plugin_already_installed';
        const INSTALLATION_ALREADY_RUNNING = 'installation_already_running';
        const INSTALLATION_FAILED = 'installation_failed';
        const FILESYSTEM_REQUIREMENTS_NOT_MET = 'filesystem_requirements_not_met';
        const FAILED_GETTING_PRODUCT_INFO = 'product_info_failed';
        const INVALID_PRODUCT_INFO_RESPONSE = 'invalid_product_info_response';
        const WCCOM_PRODUCT_MISSING_SUBSCRIPTION = 'wccom_product_missing_subscription';
        const WCCOM_PRODUCT_MISSING_PACKAGE = 'wccom_product_missing_package';
        const WPORG_PRODUCT_MISSING_DOWNLOAD_LINK = 'wporg_product_missing_download_link';
        const MISSING_DOWNLOAD_PATH = 'missing_download_path';
        const MISSING_UNPACKED_PATH = 'missing_unpacked_path';
        const UNKNOWN_FILENAME = 'unknown_filename';
        const PLUGIN_ACTIVATION_ERROR = 'plugin_activation_error';
        const UNEXPECTED_ERROR = 'unexpected_error';
        const FAILED_TO_RESET_INSTALLATION_STATE = 'failed_to_reset_installation_state';
        const ERROR_MESSAGES = array(self::NOT_AUTHENTICATED => 'Authentication required', self::NO_ACCESS_TOKEN => 'No access token provided', self::NO_SIGNATURE => 'No signature provided', self::SITE_NOT_CONNECTED => 'Site not connected to WooCommerce.com', self::INVALID_TOKEN => 'Invalid access token provided', self::REQUEST_VERIFICATION_FAILED => 'Request verification by signature failed', self::USER_NOT_FOUND => 'Token owning user not found', self::NO_PERMISSION => 'You do not have permission to install plugin or theme', self::IDEMPOTENCY_KEY_MISMATCH => 'Idempotency key mismatch', self::NO_INITIATED_INSTALLATION_FOUND => 'No initiated installation for the product found', self::ALL_INSTALLATION_STEPS_RUN => 'All installation steps have been run', self::REQUESTED_STEP_ALREADY_RUN => 'Requested step has already been run', self::PLUGIN_ALREADY_INSTALLED => 'The plugin has already been installed', self::INSTALLATION_ALREADY_RUNNING => 'The installation of the plugin is already running', self::INSTALLATION_FAILED => 'The installation of the plugin failed', self::FILESYSTEM_REQUIREMENTS_NOT_MET => 'The filesystem requirements are not met', self::FAILED_GETTING_PRODUCT_INFO => 'Failed to retrieve product info from WooCommerce.com', self::INVALID_PRODUCT_INFO_RESPONSE => 'Invalid product info response from WooCommerce.com', self::WCCOM_PRODUCT_MISSING_SUBSCRIPTION => 'Product subscription is missing', self::WCCOM_PRODUCT_MISSING_PACKAGE => 'Could not find product package', self::MISSING_DOWNLOAD_PATH => 'Download path is missing', self::MISSING_UNPACKED_PATH => 'Unpacked path is missing', self::UNKNOWN_FILENAME => 'Unknown product filename', self::PLUGIN_ACTIVATION_ERROR => 'Plugin activation error', self::UNEXPECTED_ERROR => 'Unexpected error', self::FAILED_TO_RESET_INSTALLATION_STATE => 'Failed to reset installation state');
        const HTTP_CODES = array(self::NOT_AUTHENTICATED => 401, self::NO_ACCESS_TOKEN => 400, self::NO_SIGNATURE => 400, self::SITE_NOT_CONNECTED => 401, self::INVALID_TOKEN => 401, self::REQUEST_VERIFICATION_FAILED => 400, self::USER_NOT_FOUND => 401, self::NO_PERMISSION => 403, self::IDEMPOTENCY_KEY_MISMATCH => 400, self::NO_INITIATED_INSTALLATION_FOUND => 400, self::ALL_INSTALLATION_STEPS_RUN => 400, self::REQUESTED_STEP_ALREADY_RUN => 400, self::UNEXPECTED_ERROR => 500);
    }
    /**
     * WCCOM Site Installer Error Class
     */
    class WC_REST_WCCOM_Site_Installer_Error extends \Exception
    {
        /**
         * Constructor for the Installer Error class.
         *
         * @param string $error_code Error code.
         * @param string $error_message Error message.
         * @param int    $http_code HTTP status code.
         */
        public function __construct($error_code, $error_message = \null, $http_code = \null)
        {
        }
        /**
         * Get the error code.
         */
        public function get_error_code()
        {
        }
        /**
         * Get the error message.
         */
        public function get_error_message()
        {
        }
        /**
         * Get the HTTP status code.
         */
        public function get_http_code()
        {
        }
    }
    /**
     * Brand Description Widget
     *
     * When viewing a brand archive, show the current brands description + image
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @package WooCommerce\Widgets
     * @version 9.4.0
     */
    class WC_Widget_Brand_Description extends \WP_Widget
    {
        /**
         * Widget class.
         *
         * @var string
         */
        public $woo_widget_cssclass;
        /**
         * Widget description.
         *
         * @var string
         */
        public $woo_widget_description;
        /**
         * Widget idbase.
         *
         * @var string
         */
        public $woo_widget_idbase;
        /**
         * Widget name.
         *
         * @var string
         */
        public $woo_widget_name;
        /** Constructor */
        public function __construct()
        {
        }
        /**
         * Echoes the widget content.
         *
         * @see WP_Widget
         *
         * @param array $args     Display arguments including 'before_title', 'after_title',
         *                        'before_widget', and 'after_widget'.
         * @param array $instance The settings for the particular instance of the widget.
         */
        public function widget($args, $instance)
        {
        }
        /**
         * Updates widget instance.
         *
         * @see WP_Widget->update
         *
         * @param array $new_instance New widget instance.
         * @param array $old_instance Old widget instance.
         */
        public function update($new_instance, $old_instance)
        {
        }
        /**
         * Outputs the settings update form.
         *
         * @param array $instance Current settings.
         */
        public function form($instance)
        {
        }
    }
    /**
     * Layered Navigation Widget for brands WC 2.6 version
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @package WooCommerce\Widgets
     * @version 9.4.0
     * @extends WP_Widget
     */
    class WC_Widget_Brand_Nav extends \WC_Widget
    {
        /**
         * Constructor
         *
         * @return void
         */
        public function __construct()
        {
        }
        /**
         * Filter out all categories and not display them
         *
         * @param array $cat_args Category arguments.
         */
        public function filter_out_cats($cat_args)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Widget function.
         *
         * @see WP_Widget
         *
         * @param array $args Arguments.
         * @param array $instance Widget instance.
         * @return void
         */
        public function widget($args, $instance)
        {
        }
        /**
         * Update function.
         *
         * @see WP_Widget->update
         *
         * @param array $new_instance The new settings for the particular instance of the widget.
         * @param array $old_instance The old settings for the particular instance of the widget.
         * @return array
         */
        public function update($new_instance, $old_instance)
        {
        }
        /**
         * Form function.
         *
         * @see WP_Widget->form
         *
         * @param array $instance Widget instance.
         * @return void
         */
        public function form($instance)
        {
        }
        /**
         * Get current page URL for layered nav items.
         *
         * @param  string $taxonomy Taxonomy.
         * @return string
         */
        protected function get_page_base_url($taxonomy)
        {
        }
        /**
         * Gets the currently selected attributes
         *
         * @return array
         */
        public function get_chosen_attributes()
        {
        }
        /**
         * Show dropdown layered nav.
         *
         * @param  array  $terms Terms.
         * @param  string $taxonomy Taxonomy.
         * @param  int    $depth Depth.
         * @return bool Will nav display?
         */
        protected function layered_nav_dropdown($terms, $taxonomy, $depth = 0)
        {
        }
        /**
         * Show list based layered nav.
         *
         * @param  array  $terms Terms.
         * @param  string $taxonomy Taxonomy.
         * @param  int    $depth Depth.
         * @return bool   Will nav display?
         */
        protected function layered_nav_list($terms, $taxonomy, $depth = 0)
        {
        }
        /**
         * Count products within certain terms, taking the main WP query into consideration.
         *
         * @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 = 'and')
        {
        }
    }
    /**
     * Brand Thumbnails Widget
     *
     * Show brand images as thumbnails
     *
     * Important: For internal use only by the Automattic\WooCommerce\Internal\Brands package.
     *
     * @package WooCommerce\Widgets
     * @version 9.4.0
     */
    class WC_Widget_Brand_Thumbnails extends \WP_Widget
    {
        /**
         * Widget CSS class.
         *
         * @var string
         */
        public $woo_widget_cssclass;
        /**
         * Widget description.
         *
         * @var string
         */
        public $woo_widget_description;
        /**
         * Widget id base.
         *
         * @var string
         */
        public $woo_widget_idbase;
        /**
         * Widget name.
         *
         * @var string
         */
        public $woo_widget_name;
        /** Constructor */
        public function __construct()
        {
        }
        /**
         * Echoes the widget content.
         *
         * @see WP_Widget
         *
         * @param array $args     Display arguments including 'before_title', 'after_title',
         *                        'before_widget', and 'after_widget'.
         * @param array $instance The settings for the particular instance of the widget.
         */
        public function widget($args, $instance)
        {
        }
        /**
         * Update widget instance.
         *
         * @param array $new_instance The new settings for the particular instance of the widget.
         * @param array $old_instance The old settings for the particular instance of the widget.
         *
         * @see WP_Widget->update
         */
        public function update($new_instance, $old_instance)
        {
        }
        /**
         * Outputs the settings update form.
         *
         * @param array $instance Current settings.
         */
        public function form($instance)
        {
        }
    }
    /**
     * 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 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)
        {
        }
        /**
         * Wrapper for WC_Query::get_main_tax_query() to ease unit testing.
         *
         * @since 4.4.0
         * @return array
         */
        protected function get_main_tax_query()
        {
        }
        /**
         * Wrapper for WC_Query::get_main_search_query_sql() to ease unit testing.
         *
         * @since 4.4.0
         * @return string
         */
        protected function get_main_search_query_sql()
        {
        }
        /**
         * Wrapper for WC_Query::get_main_search_queryget_main_meta_query to ease unit testing.
         *
         * @since 4.4.0
         * @return array
         */
        protected function get_main_meta_query()
        {
        }
        /**
         * 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 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 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 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)
        {
        }
        // @codingStandardsIgnoreEnd
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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 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 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 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)
        {
        }
    }
}
namespace Automattic\WooCommerce\Vendor\Detection {
    /**
     * Auto-generated isXXXX() magic methods.
     * php export/dump_magic_methods.php
     *
     * @method bool isiPhone()
     * @method bool isBlackBerry()
     * @method bool isPixel()
     * @method bool isHTC()
     * @method bool isNexus()
     * @method bool isDell()
     * @method bool isMotorola()
     * @method bool isSamsung()
     * @method bool isLG()
     * @method bool isSony()
     * @method bool isAsus()
     * @method bool isXiaomi()
     * @method bool isNokiaLumia()
     * @method bool isMicromax()
     * @method bool isPalm()
     * @method bool isVertu()
     * @method bool isPantech()
     * @method bool isFly()
     * @method bool isWiko()
     * @method bool isiMobile()
     * @method bool isSimValley()
     * @method bool isWolfgang()
     * @method bool isAlcatel()
     * @method bool isNintendo()
     * @method bool isAmoi()
     * @method bool isINQ()
     * @method bool isOnePlus()
     * @method bool isGenericPhone()
     * @method bool isiPad()
     * @method bool isNexusTablet()
     * @method bool isGoogleTablet()
     * @method bool isSamsungTablet()
     * @method bool isKindle()
     * @method bool isSurfaceTablet()
     * @method bool isHPTablet()
     * @method bool isAsusTablet()
     * @method bool isBlackBerryTablet()
     * @method bool isHTCtablet()
     * @method bool isMotorolaTablet()
     * @method bool isNookTablet()
     * @method bool isAcerTablet()
     * @method bool isToshibaTablet()
     * @method bool isLGTablet()
     * @method bool isFujitsuTablet()
     * @method bool isPrestigioTablet()
     * @method bool isLenovoTablet()
     * @method bool isDellTablet()
     * @method bool isYarvikTablet()
     * @method bool isMedionTablet()
     * @method bool isArnovaTablet()
     * @method bool isIntensoTablet()
     * @method bool isIRUTablet()
     * @method bool isMegafonTablet()
     * @method bool isEbodaTablet()
     * @method bool isAllViewTablet()
     * @method bool isArchosTablet()
     * @method bool isAinolTablet()
     * @method bool isNokiaLumiaTablet()
     * @method bool isSonyTablet()
     * @method bool isPhilipsTablet()
     * @method bool isCubeTablet()
     * @method bool isCobyTablet()
     * @method bool isMIDTablet()
     * @method bool isMSITablet()
     * @method bool isSMiTTablet()
     * @method bool isRockChipTablet()
     * @method bool isFlyTablet()
     * @method bool isbqTablet()
     * @method bool isHuaweiTablet()
     * @method bool isNecTablet()
     * @method bool isPantechTablet()
     * @method bool isBronchoTablet()
     * @method bool isVersusTablet()
     * @method bool isZyncTablet()
     * @method bool isPositivoTablet()
     * @method bool isNabiTablet()
     * @method bool isKoboTablet()
     * @method bool isDanewTablet()
     * @method bool isTexetTablet()
     * @method bool isPlaystationTablet()
     * @method bool isTrekstorTablet()
     * @method bool isPyleAudioTablet()
     * @method bool isAdvanTablet()
     * @method bool isDanyTechTablet()
     * @method bool isGalapadTablet()
     * @method bool isMicromaxTablet()
     * @method bool isKarbonnTablet()
     * @method bool isAllFineTablet()
     * @method bool isPROSCANTablet()
     * @method bool isYONESTablet()
     * @method bool isChangJiaTablet()
     * @method bool isGUTablet()
     * @method bool isPointOfViewTablet()
     * @method bool isOvermaxTablet()
     * @method bool isHCLTablet()
     * @method bool isDPSTablet()
     * @method bool isVistureTablet()
     * @method bool isCrestaTablet()
     * @method bool isMediatekTablet()
     * @method bool isConcordeTablet()
     * @method bool isGoCleverTablet()
     * @method bool isModecomTablet()
     * @method bool isVoninoTablet()
     * @method bool isECSTablet()
     * @method bool isStorexTablet()
     * @method bool isVodafoneTablet()
     * @method bool isEssentielBTablet()
     * @method bool isRossMoorTablet()
     * @method bool isiMobileTablet()
     * @method bool isTolinoTablet()
     * @method bool isAudioSonicTablet()
     * @method bool isAMPETablet()
     * @method bool isSkkTablet()
     * @method bool isTecnoTablet()
     * @method bool isJXDTablet()
     * @method bool isiJoyTablet()
     * @method bool isFX2Tablet()
     * @method bool isXoroTablet()
     * @method bool isViewsonicTablet()
     * @method bool isVerizonTablet()
     * @method bool isOdysTablet()
     * @method bool isCaptivaTablet()
     * @method bool isIconbitTablet()
     * @method bool isTeclastTablet()
     * @method bool isOndaTablet()
     * @method bool isJaytechTablet()
     * @method bool isBlaupunktTablet()
     * @method bool isDigmaTablet()
     * @method bool isEvolioTablet()
     * @method bool isLavaTablet()
     * @method bool isAocTablet()
     * @method bool isMpmanTablet()
     * @method bool isCelkonTablet()
     * @method bool isWolderTablet()
     * @method bool isMediacomTablet()
     * @method bool isMiTablet()
     * @method bool isNibiruTablet()
     * @method bool isNexoTablet()
     * @method bool isLeaderTablet()
     * @method bool isUbislateTablet()
     * @method bool isPocketBookTablet()
     * @method bool isKocasoTablet()
     * @method bool isHisenseTablet()
     * @method bool isHudl()
     * @method bool isTelstraTablet()
     * @method bool isGenericTablet()
     * @method bool isAndroidOS()
     * @method bool isBlackBerryOS()
     * @method bool isPalmOS()
     * @method bool isSymbianOS()
     * @method bool isWindowsMobileOS()
     * @method bool isWindowsPhoneOS()
     * @method bool isiOS()
     * @method bool isiPadOS()
     * @method bool isSailfishOS()
     * @method bool isMeeGoOS()
     * @method bool isMaemoOS()
     * @method bool isJavaOS()
     * @method bool iswebOS()
     * @method bool isbadaOS()
     * @method bool isBREWOS()
     * @method bool isChrome()
     * @method bool isDolfin()
     * @method bool isOpera()
     * @method bool isSkyfire()
     * @method bool isEdge()
     * @method bool isIE()
     * @method bool isFirefox()
     * @method bool isBolt()
     * @method bool isTeaShark()
     * @method bool isBlazer()
     * @method bool isSafari()
     * @method bool isWeChat()
     * @method bool isUCBrowser()
     * @method bool isbaiduboxapp()
     * @method bool isbaidubrowser()
     * @method bool isDiigoBrowser()
     * @method bool isMercury()
     * @method bool isObigoBrowser()
     * @method bool isNetFront()
     * @method bool isGenericBrowser()
     * @method bool isPaleMoon()
     * @method bool isWebKit()
     * @method bool isConsole()
     * @method bool isWatch()
     */
    class MobileDetect
    {
        /**
         * A frequently used regular expression to extract version #s.
         *
         * @deprecated since version 2.6.9
         */
        const VER = '([\\w._\\+]+)';
        /**
         * Stores the version number of the current release.
         */
        const VERSION = '3.74.3';
        /**
         * A type for the version() method indicating a string return value.
         */
        const VERSION_TYPE_STRING = 'text';
        /**
         * A type for the version() method indicating a float return value.
         */
        const VERSION_TYPE_FLOAT = 'float';
        /**
         * A cache for resolved matches
         * @var array
         */
        protected array $cache = [];
        /**
         * The User-Agent HTTP header is stored in here.
         * @var string|null
         */
        protected ?string $userAgent = null;
        /**
         * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
         * @var array
         */
        protected array $httpHeaders = [];
        /**
         * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer.
         * @var array
         */
        protected array $cloudfrontHeaders = [];
        /**
         * The matching Regex.
         * This is good for debug.
         * @var string|null
         */
        protected ?string $matchingRegex = null;
        /**
         * The matches extracted from the regex expression.
         * This is good for debug.
         *
         * @var array|null
         */
        protected ?array $matchesArray = null;
        /**
         * HTTP headers that trigger the 'isMobile' detection
         * to be true.
         *
         * @var array
         */
        protected static array $mobileHeaders = [
            'HTTP_ACCEPT' => ['matches' => [
                // Opera Mini
                // @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/
                'application/x-obml2d',
                // BlackBerry devices.
                'application/vnd.rim.html',
                'text/vnd.wap.wml',
                'application/vnd.wap.xhtml+xml',
            ]],
            'HTTP_X_WAP_PROFILE' => null,
            'HTTP_X_WAP_CLIENTID' => null,
            'HTTP_WAP_CONNECTION' => null,
            'HTTP_PROFILE' => null,
            // Reported by Opera on Nokia devices (eg. C3).
            'HTTP_X_OPERAMINI_PHONE_UA' => null,
            'HTTP_X_NOKIA_GATEWAY_ID' => null,
            'HTTP_X_ORANGE_ID' => null,
            'HTTP_X_VODAFONE_3GPDPCONTEXT' => null,
            'HTTP_X_HUAWEI_USERID' => null,
            // Reported by Windows Smartphones.
            'HTTP_UA_OS' => null,
            // Reported by Verizon, Vodafone proxy system.
            'HTTP_X_MOBILE_GATEWAY' => null,
            // Seen this on HTC Sensation. SensationXE_Beats_Z715e.
            'HTTP_X_ATT_DEVICEID' => null,
            // Seen this on a HTC.
            'HTTP_UA_CPU' => ['matches' => ['ARM']],
        ];
        /**
         * List of mobile devices (phones).
         *
         * @var array
         */
        protected static array $phoneDevices = [
            'iPhone' => '\\biPhone\\b|\\biPod\\b',
            // |\biTunes
            'BlackBerry' => 'BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+',
            'Pixel' => '; \\bPixel\\b',
            'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel',
            'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6',
            // @todo: Is 'Dell Streak' a tablet or a phone? ;)
            'Dell' => 'Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b',
            'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052',
            'Samsung' => '\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F|SM-G988N|SM-G781B|SM-A805N|SM-G965F',
            'LG' => '\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710',
            'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332',
            'Asus' => 'Asus.*Galaxy|PadFone.*Mobile|ASUS_Z01QD|ASUS_X00TD',
            'Xiaomi' => '^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|\\bMI\\b 8|\\bMi\\b 10|Redmi Note 9S|Redmi 5A|Redmi Note 5A Prime|Redmi Note 7 Pro|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G|M2012K11C|M2007J1SC',
            'NokiaLumia' => 'Lumia [0-9]{3,4}',
            // http://www.micromaxinfo.com/mobiles/smartphones
            // Added because the codes might conflict with Acer Tablets.
            'Micromax' => 'Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b',
            // @todo Complete the regex.
            'Palm' => 'PalmSource|Palm',
            // avantgo|blazer|elaine|hiptop|plucker|xiino ;
            'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature',
            // Just for fun ;)
            // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH)
            // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android.
            'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790',
            // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones.
            'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250',
            // http://fr.wikomobile.com
            'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM',
            'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)',
            // Added simvalley mobile just for fun. They have some interesting devices.
            // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html
            'SimValley' => '\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b',
            // Wolfgang - a brand that is sold by Aldi supermarkets.
            // http://www.wolfgangmobile.com/
            'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q',
            'Alcatel' => 'Alcatel',
            'Nintendo' => 'Nintendo (3DS|Switch)',
            // http://en.wikipedia.org/wiki/Amoi
            'Amoi' => 'Amoi',
            // http://en.wikipedia.org/wiki/INQ
            'INQ' => 'INQ',
            'OnePlus' => 'ONEPLUS',
            // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039
            'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser',
        ];
        /**
         * List of tablet devices.
         *
         * @var array
         */
        protected static array $tabletDevices = [
            // @todo: check for mobile friendly emails topic.
            'iPad' => 'iPad|iPad.*Mobile',
            // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$
            // @see #442
            // @todo Merge NexusTablet into GoogleTablet.
            'NexusTablet' => 'Android.*Nexus[\\s]+(7|9|10)',
            // https://en.wikipedia.org/wiki/Pixel_C
            'GoogleTablet' => 'Android.*Pixel C',
            'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860|SM-T536|SM-T837A|SM-X200|SM-T220|SM-T870|SM-X906C|SM-X700|SM-X706|SM-X706B|SM-X706U|SM-X706N|SM-X800|SM-X806|SM-X806B|SM-X806U|SM-X806N|SM-X900|SM-X906|SM-X906B|SM-X906U|SM-X906N|SM-P613',
            // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone.
            // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html
            'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)',
            // Only the Surface tablets with Windows RT are considered mobile.
            // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx
            'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)',
            // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT
            'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10',
            // Watch out for PadFone, see #132.
            // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/
            'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K01A | K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b',
            'BlackBerryTablet' => 'PlayBook|RIM Tablet',
            'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410',
            'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
            'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2',
            // http://www.acer.ro/ac/ro/RO/content/drivers
            // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer)
            // http://us.acer.com/ac/en/US/content/group/tablets
            // http://www.acer.de/ac/de/DE/content/models/tablets/
            // Can conflict with Micromax and Motorola phones codes.
            'AcerTablet' => 'Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40',
            // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/
            // http://us.toshiba.com/tablets/tablet-finder
            // http://www.toshiba.co.jp/regza/tablet/
            'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO',
            // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html
            // http://www.lg.com/us/tablets
            'LGTablet' => '\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b',
            'FujitsuTablet' => 'Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b',
            // Prestigio Tablets http://www.prestigio.com/support
            'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002',
            // http://support.lenovo.com/en_GB/downloads/default.page?#
            'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L|TB-J606F|TB-X606F|TB-X306X|YT-J706X|TB128FU',
            // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets
            'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7',
            'XiaomiTablet' => '21051182G',
            // http://www.yarvik.com/en/matrix/tablets/
            'YarvikTablet' => 'Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b',
            'MedionTablet' => 'Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB',
            'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2',
            // http://www.intenso.de/kategorie_en.php?kategorie=33
            // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate
            'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004',
            // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/
            'IRUTablet' => 'M702pro',
            'MegafonTablet' => 'MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b',
            // http://www.e-boda.ro/tablete-pc.html
            'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)',
            // http://www.allview.ro/produse/droseries/lista-tablete-pc/
            'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)',
            // http://wiki.archosfans.com/index.php?title=Main_Page
            // @note Rewrite the regex format after we add more UAs.
            'ArchosTablet' => '\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b',
            // http://www.ainol.com/plugin.php?identifier=ainol&module=product
            'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark',
            'NokiaLumiaTablet' => 'Lumia 2520',
            // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER
            // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser
            // http://www.sony.jp/support/tablet/
            'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712',
            // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8
            'PhilipsTablet' => '\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b',
            // db + http://www.cube-tablet.com/buy-products.html
            'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT',
            // http://www.cobyusa.com/?p=pcat&pcat_id=3001
            'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010',
            // http://www.match.net.cn/products.asp
            'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10',
            // http://www.msi.com/support
            // @todo Research the Windows Tablets.
            'MSITablet' => 'MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b',
            // @todo http://www.kyoceramobile.com/support/drivers/
            //    'KyoceraTablet' => null,
            // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/
            //    'IntextTablet' => null,
            // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets)
            // http://www.imp3.net/14/show.php?itemid=20454
            'SMiTTablet' => 'Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)',
            // http://www.rock-chips.com/index.php?do=prod&pid=2
            'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A',
            // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/
            'FlyTablet' => 'IQ310|Fly Vision',
            // http://www.bqreaders.com/gb/tablets-prices-sale.html
            'bqTablet' => 'Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus',
            // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
            // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
            'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19|KOB2-L09|BG2-U01|BG2-W09|BG2-U03',
            // Nec or Medias Tab
            'NecTablet' => '\\bN-06D|\\bN-08D',
            // Pantech Tablets: http://www.pantechusa.com/phones/
            'PantechTablet' => 'Pantech.*P4100',
            // Broncho Tablets: http://www.broncho.cn/ (hard to find)
            'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
            // http://versusuk.com/support.html
            'VersusTablet' => 'TOUCHPAD.*[78910]|\\bTOUCHTAB\\b',
            // http://www.zync.in/index.php/our-products/tablet-phablets
            'ZyncTablet' => 'z1000|Z99 2G|z930|z990|z909|Z919|z900',
            // Removed "z999" because of https://github.com/serbanghita/Mobile-Detect/issues/717
            // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
            'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
            // https://www.nabitablet.com/
            'NabiTablet' => 'Android.*\\bNabi',
            'KoboTablet' => 'Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build',
            // French Danew Tablets http://www.danew.com/produits-tablette.php
            'DanewTablet' => 'DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b',
            // Texet Tablets and Readers http://www.texet.ru/tablet/
            'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE',
            // Avoid detecting 'PLAYSTATION 3' as mobile.
            'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
            // http://www.trekstor.de/surftabs.html
            'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab',
            // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
            'PyleAudioTablet' => '\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b',
            // http://www.advandigital.com/index.php?link=content-product&jns=JP001
            // because of the short codenames we have to include whitespaces to reduce the possible conflicts.
            'AdvanTablet' => 'Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ',
            // http://www.danytech.com/category/tablet-pc
            'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1',
            // http://www.galapad.net/product.html ; https://github.com/serbanghita/Mobile-Detect/issues/761
            'GalapadTablet' => 'Android [0-9.]+; [a-z-]+; \\bG1\\b',
            // http://www.micromaxinfo.com/tablet/funbook
            'MicromaxTablet' => 'Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b',
            // http://www.karbonnmobiles.com/products_tablet.php
            'KarbonnTablet' => 'Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b',
            // http://www.myallfine.com/Products.asp
            'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
            // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
            'PROSCANTablet' => '\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b',
            // http://www.yonesnav.com/products/products.php
            'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
            // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
            // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
            'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503',
            // http://www.gloryunion.cn/products.asp
            // http://www.allwinnertech.com/en/apply/mobile.html
            // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
            // @todo: Softwiner tablets?
            // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
            'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026',
            // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G
            // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
            'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10',
            // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
            // @todo: add more tests.
            'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027',
            // http://hclmetablet.com/India/index.php
            'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync',
            // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
            'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
            // http://www.visture.com/index.asp
            'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
            // http://www.mijncresta.nl/tablet
            'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
            // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
            'MediatekTablet' => '\\bMT8125|MT8389|MT8135|MT8377\\b',
            // Concorde tab
            'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
            // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
            'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042',
            // Modecom Tablets - http://www.modecom.eu/tablets/portal/
            'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003',
            // Vonino Tablets
            'VoninoTablet' => '\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b',
            // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
            'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
            // Storex Tablets - http://storex.fr/espace_client/support.html
            // @note: no need to add all the tablet codes since they are guided by the first regex.
            'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
            // Generic Vodafone tablets.
            'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400',
            // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
            // Aka: http://www.essentielb.fr/
            'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
            // Ross & Moor - http://ross-moor.ru/
            'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
            // i-mobile http://product.i-mobilephone.com/Mobile_Device
            'iMobileTablet' => 'i-mobile i-note',
            // http://www.tolino.de/de/vergleichen/
            'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
            // AudioSonic - a Kmart brand
            // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72&currentPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1
            'AudioSonicTablet' => '\\bC-22Q|T7-QC|T-17B|T-17P\\b',
            // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
            // @todo: add them gradually to avoid conflicts.
            'AMPETablet' => 'Android.* A78 ',
            // Skk Mobile - http://skkmobile.com.ph/product_tablets.php
            'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
            // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
            'TecnoTablet' => 'TECNO P9|TECNO DP8D',
            // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
            'JXDTablet' => 'Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b',
            // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
            'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)',
            // http://www.intracon.eu/tablet
            'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
            // http://www.xoro.de/produkte/
            // @note: Might be the same brand with 'Simply tablets'
            'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151',
            // http://www1.viewsonic.com/products/computing/tablets/
            'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
            // https://www.verizonwireless.com/tablets/verizon/
            'VerizonTablet' => 'QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1',
            // http://www.odys.de/web/internet-tablet_en.html
            'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10',
            // http://www.captiva-power.de/products.html#tablets-en
            'CaptivaTablet' => 'CAPTIVA PAD',
            // IconBIT - http://www.iconbit.com/products/tablets/
            'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S',
            // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63
            'TeclastTablet' => 'T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi',
            // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price
            'OndaTablet' => '\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b',
            'JaytechTablet' => 'TPC-PA762',
            'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010',
            // http://www.digma.ru/support/download/
            // @todo: Ebooks also (if requested)
            'DigmaTablet' => '\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b',
            // http://www.evolioshop.com/ro/tablete-pc.html
            // http://www.evolio.ro/support/downloads_static.html?cat=2
            // @todo: Research some more
            'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b',
            // @todo http://www.lavamobiles.com/tablets-data-cards
            'LavaTablet' => 'QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b',
            // http://www.breezetablet.com/
            'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712',
            // http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/
            'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010',
            // https://www.celkonmobiles.com/?_a=categoryphones&sid=2
            'CelkonTablet' => 'CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b',
            // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab
            'WolderTablet' => 'miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b',
            'MediacomTablet' => 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA',
            // http://www.mi.com/en
            'MiTablet' => '\\bMI PAD\\b|\\bHM NOTE 1W\\b',
            // http://www.nbru.cn/index.html
            'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One',
            // http://navroad.com/products/produkty/tablety/
            // http://navroad.com/products/produkty/tablety/
            'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI',
            // http://leader-online.com/new_site/product-category/tablets/
            // http://www.leader-online.net.au/List/Tablet
            'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100',
            // http://www.datawind.com/ubislate/
            'UbislateTablet' => 'UbiSlate[\\s]?7C',
            // http://www.pocketbook-int.com/ru/support
            'PocketBookTablet' => 'Pocketbook',
            // http://www.kocaso.com/product_tablet.html
            'KocasoTablet' => '\\b(TB-1207)\\b',
            // http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm
            'HisenseTablet' => '\\b(F5281|E2371)\\b',
            // http://www.tesco.com/direct/hudl/
            'Hudl' => 'Hudl HT7S3|Hudl 2',
            // http://www.telstra.com.au/home-phone/thub-2/
            'TelstraTablet' => 'T-Hub2',
            'GenericTablet' => 'Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107',
        ];
        /**
         * List of mobile Operating Systems.
         *
         * @var array
         */
        protected static array $operatingSystems = [
            'AndroidOS' => 'Android',
            'BlackBerryOS' => 'blackberry|\\bBB10\\b|rim tablet os',
            'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
            'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b',
            // @reference: http://en.wikipedia.org/wiki/Windows_Mobile
            'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;',
            // @reference: http://en.wikipedia.org/wiki/Windows_Phone
            // http://wifeng.cn/?r=blog&a=view&id=106
            // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
            // http://msdn.microsoft.com/library/ms537503.aspx
            // https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
            'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;',
            'iOS' => '\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia',
            // https://en.wikipedia.org/wiki/IPadOS
            'iPadOS' => 'CPU OS 13',
            // @reference https://en.m.wikipedia.org/wiki/Sailfish_OS
            // https://sailfishos.org/
            'SailfishOS' => 'Sailfish',
            // http://en.wikipedia.org/wiki/MeeGo
            // @todo: research MeeGo in UAs
            'MeeGoOS' => 'MeeGo',
            // http://en.wikipedia.org/wiki/Maemo
            // @todo: research Maemo in UAs
            'MaemoOS' => 'Maemo',
            'JavaOS' => 'J2ME/|\\bMIDP\\b|\\bCLDC\\b',
            // '|Java/' produces bug #135
            'webOS' => 'webOS|hpwOS',
            'badaOS' => '\\bBada\\b',
            'BREWOS' => 'BREW',
        ];
        /**
         * List of mobile User Agents.
         *
         * IMPORTANT: This is a list of only mobile browsers.
         * Mobile Detect 2.x supports only mobile browsers,
         * it was never designed to detect all browsers.
         * The change will come in 2017 in the 3.x release for PHP7.
         *
         * @var array
         */
        protected static array $browsers = [
            //'Vivaldi'         => 'Vivaldi',
            // @reference: https://developers.google.com/chrome/mobile/docs/user-agent
            'Chrome' => '\\bCrMo\\b|CriOS.*Mobile|Android.*Chrome/[.0-9]* Mobile',
            'Dolfin' => '\\bDolfin\\b',
            'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+',
            'Skyfire' => 'Skyfire',
            // Added "Edge on iOS" https://github.com/serbanghita/Mobile-Detect/issues/764
            'Edge' => 'EdgiOS.*Mobile|Mobile Safari/[.0-9]* Edge',
            'IE' => 'IEMobile|MSIEMobile',
            // |Trident/[.0-9]+
            'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS.*Mobile',
            'Bolt' => 'bolt',
            'TeaShark' => 'teashark',
            'Blazer' => 'Blazer',
            // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
            // Excluded "Edge on iOS" https://github.com/serbanghita/Mobile-Detect/issues/764
            'Safari' => 'Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari',
            // http://en.wikipedia.org/wiki/Midori_(web_browser)
            //'Midori'          => 'midori',
            //'Tizen'           => 'Tizen',
            'WeChat' => '\\bMicroMessenger\\b',
            'UCBrowser' => 'UC.*Browser|UCWEB',
            'baiduboxapp' => 'baiduboxapp',
            'baidubrowser' => 'baidubrowser',
            // https://github.com/serbanghita/Mobile-Detect/issues/7
            'DiigoBrowser' => 'DiigoBrowser',
            // http://www.puffinbrowser.com/index.php
            // https://github.com/serbanghita/Mobile-Detect/issues/752
            // 'Puffin'            => 'Puffin',
            // http://mercury-browser.com/index.html
            'Mercury' => '\\bMercury\\b',
            // http://en.wikipedia.org/wiki/Obigo_Browser
            'ObigoBrowser' => 'Obigo',
            // http://en.wikipedia.org/wiki/NetFront
            'NetFront' => 'NF-Browser',
            // @reference: http://en.wikipedia.org/wiki/Minimo
            // http://en.wikipedia.org/wiki/Vision_Mobile_Browser
            'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
            // @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser)
            'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon',
        ];
        /**
         * All possible HTTP headers that represent the
         * User-Agent string.
         *
         * @var array
         */
        protected static array $uaHttpHeaders = [
            // The default User-Agent string.
            'HTTP_USER_AGENT',
            // Header can occur on devices using Opera Mini.
            'HTTP_X_OPERAMINI_PHONE_UA',
            // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
            'HTTP_X_DEVICE_USER_AGENT',
            'HTTP_X_ORIGINAL_USER_AGENT',
            'HTTP_X_SKYFIRE_PHONE',
            'HTTP_X_BOLT_PHONE_UA',
            'HTTP_DEVICE_STOCK_UA',
            'HTTP_X_UCBROWSER_DEVICE_UA',
        ];
        /**
         * The individual segments that could exist in a User-Agent string. VER refers to the regular
         * expression defined in the constant self::VER.
         *
         * @var array
         */
        protected static array $properties = [
            // Build
            'Mobile' => 'Mobile/[VER]',
            'Build' => 'Build/[VER]',
            'Version' => 'Version/[VER]',
            'VendorID' => 'VendorID/[VER]',
            // Devices
            'iPad' => 'iPad.*CPU[a-z ]+[VER]',
            'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
            'iPod' => 'iPod.*CPU[a-z ]+[VER]',
            //'BlackBerry'    => array('BlackBerry[VER]', 'BlackBerry [VER];'),
            'Kindle' => 'Kindle/[VER]',
            // Browser
            'Chrome' => ['Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'],
            'Coast' => ['Coast/[VER]'],
            'Dolfin' => 'Dolfin/[VER]',
            // @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
            'Firefox' => ['Firefox/[VER]', 'FxiOS/[VER]'],
            'Fennec' => 'Fennec/[VER]',
            // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
            // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx
            'Edge' => 'Edge/[VER]',
            'IE' => ['IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'],
            // http://en.wikipedia.org/wiki/NetFront
            'NetFront' => 'NetFront/[VER]',
            'NokiaBrowser' => 'NokiaBrowser/[VER]',
            'Opera' => [' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]'],
            'Opera Mini' => 'Opera Mini/[VER]',
            'Opera Mobi' => 'Version/[VER]',
            'UCBrowser' => ['UCWEB[VER]', 'UC.*Browser/[VER]'],
            'MQQBrowser' => 'MQQBrowser/[VER]',
            'MicroMessenger' => 'MicroMessenger/[VER]',
            'baiduboxapp' => 'baiduboxapp/[VER]',
            'baidubrowser' => 'baidubrowser/[VER]',
            'SamsungBrowser' => 'SamsungBrowser/[VER]',
            'Iron' => 'Iron/[VER]',
            // @note: Safari 7534.48.3 is actually Version 5.1.
            // @note: On BlackBerry the Version is overwritten by the OS.
            'Safari' => ['Version/[VER]', 'Safari/[VER]'],
            'Skyfire' => 'Skyfire/[VER]',
            'Tizen' => 'Tizen/[VER]',
            'Webkit' => 'webkit[ /][VER]',
            'PaleMoon' => 'PaleMoon/[VER]',
            'SailfishBrowser' => 'SailfishBrowser/[VER]',
            // Engine
            'Gecko' => 'Gecko/[VER]',
            'Trident' => 'Trident/[VER]',
            'Presto' => 'Presto/[VER]',
            'Goanna' => 'Goanna/[VER]',
            // OS
            'iOS' => ' \\bi?OS\\b [VER][ ;]{1}',
            'Android' => 'Android [VER]',
            'Sailfish' => 'Sailfish [VER]',
            'BlackBerry' => ['BlackBerry[\\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'],
            'BREW' => 'BREW [VER]',
            'Java' => 'Java/[VER]',
            // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
            // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
            'Windows Phone OS' => ['Windows Phone OS [VER]', 'Windows Phone [VER]'],
            'Windows Phone' => 'Windows Phone [VER]',
            'Windows CE' => 'Windows CE/[VER]',
            // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
            'Windows NT' => 'Windows NT [VER]',
            'Symbian' => ['SymbianOS/[VER]', 'Symbian/[VER]'],
            'webOS' => ['webOS/[VER]', 'hpwOS/[VER];'],
        ];
        /**
         * Construct an instance of this class.
         *
         * @param array|null $headers Specify the headers as injection. Should be PHP _SERVER flavored.
         *                            If left empty, will use the global _SERVER['HTTP_*'] vars instead.
         * @param string|null $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
         *                               from the $headers array instead.
         */
        public function __construct(array $headers = null, string $userAgent = null)
        {
        }
        /**
         * Get the current script version.
         * This is useful for the demo.php file,
         * so people can check on what version they are testing
         * for mobile devices.
         *
         * @return string The version number in semantic version format.
         */
        public static function getScriptVersion() : string
        {
        }
        /**
         * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
         *
         * @param array|null $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
         *                           the headers. The default null is left for backwards compatibility.
         */
        public function setHttpHeaders(array $httpHeaders = null)
        {
        }
        /**
         * Retrieves the HTTP headers.
         *
         * @return array
         */
        public function getHttpHeaders() : array
        {
        }
        /**
         * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
         * Simply null is returned.
         *
         * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
         *                       "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
         *                       all-caps, HTTP_ prefixed, underscore separated awesomeness.
         *
         * @return string|null The value of the header.
         */
        public function getHttpHeader(string $header) : ?string
        {
        }
        public function getMobileHeaders() : array
        {
        }
        /**
         * Get all possible HTTP headers that
         * can contain the User-Agent string.
         *
         * @return array List of HTTP headers.
         */
        public function getUaHttpHeaders() : array
        {
        }
        /**
         * Set CloudFront headers
         * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
         *
         * @param array|null $cfHeaders List of HTTP headers
         *
         * @return bool If there were CloudFront headers to be set
         */
        public function setCfHeaders(array $cfHeaders = null) : bool
        {
        }
        /**
         * Retrieves the cloudfront headers.
         *
         * @return array
         */
        public function getCfHeaders() : array
        {
        }
        /**
         * @param string $userAgent
         * @return string
         */
        private function prepareUserAgent(string $userAgent) : string
        {
        }
        /**
         * Set the User-Agent to be used.
         *
         * @param string|null $userAgent The user agent string to set.
         *
         * @return string|null
         */
        public function setUserAgent(string $userAgent = null) : ?string
        {
        }
        /**
         * Retrieve the User-Agent.
         *
         * @return string|null The user agent if it's set.
         */
        public function getUserAgent() : ?string
        {
        }
        public function getMatchingRegex() : ?string
        {
        }
        public function getMatchesArray() : ?array
        {
        }
        /**
         * Retrieve the list of known phone devices.
         *
         * @return array List of phone devices.
         */
        public static function getPhoneDevices() : array
        {
        }
        /**
         * Retrieve the list of known tablet devices.
         *
         * @return array List of tablet devices.
         */
        public static function getTabletDevices() : array
        {
        }
        /**
         * Alias for getBrowsers() method.
         *
         * @return array List of user agents.
         */
        public static function getUserAgents() : array
        {
        }
        /**
         * Retrieve the list of known browsers. Specifically, the user agents.
         *
         * @return array List of browsers / user agents.
         */
        public static function getBrowsers() : array
        {
        }
        /**
         * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
         * Retrieve the current set of rules.
         *
         * @return array
         */
        public function getRules() : array
        {
        }
        /**
         * Retrieve the list of mobile operating systems.
         *
         * @return array The list of mobile operating systems.
         */
        public static function getOperatingSystems() : array
        {
        }
        /**
         * Check the HTTP headers for signs of mobile.
         * This is the fastest mobile check possible; it's used
         * inside isMobile() method.
         *
         * @return bool
         */
        public function checkHttpHeadersForMobile() : bool
        {
        }
        /**
         * Magic overloading method.
         *
         * @method boolean is[...]()
         * @param string $name
         * @param array $arguments
         * @return bool
         * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is'
         */
        public function __call(string $name, array $arguments)
        {
        }
        /**
         * Find a detection rule that matches the current User-agent.
         *
         * @param string|null $userAgent deprecated
         * @return bool
         */
        protected function matchDetectionRulesAgainstUA(string $userAgent = null) : bool
        {
        }
        /**
         * Search for a certain key in the rules array.
         * If the key is found then try to match the corresponding
         * regex against the User-Agent.
         *
         * @param string $key
         *
         * @return bool
         */
        protected function matchUAAgainstKey(string $key) : bool
        {
        }
        /**
         * Check if the device is mobile.
         * Returns true if any type of mobile device detected, including special ones
         * @param string|null $userAgent  deprecated
         * @param array|null $httpHeaders deprecated
         * @return bool
         */
        public function isMobile(string $userAgent = null, array $httpHeaders = null) : bool
        {
        }
        /**
         * Check if the device is a tablet.
         * Return true if any type of tablet device is detected.
         *
         * @param string|null $userAgent   deprecated
         * @param array|null $httpHeaders deprecated
         * @return bool
         */
        public function isTablet(string $userAgent = null, array $httpHeaders = null) : bool
        {
        }
        /**
         * This method checks for a certain property in the
         * userAgent.
         * @param  string        $key
         * @param string|null $userAgent   deprecated
         * @param array|null $httpHeaders deprecated
         * @return bool
         *
         * @todo: The httpHeaders part is not yet used.
         */
        public function is(string $key, string $userAgent = null, array $httpHeaders = null) : bool
        {
        }
        /**
         * Some detection rules are relative (not standard),
         * because of the diversity of devices, vendors and
         * their conventions in representing the User-Agent or
         * the HTTP headers.
         *
         * This method will be used to check custom regexes against
         * the User-Agent string.
         *
         * @param string $regex
         * @param string|null $userAgent
         * @return bool
         *
         * @todo: search in the HTTP headers too.
         */
        public function match(string $regex, string $userAgent = null) : bool
        {
        }
        /**
         * Get the properties array.
         *
         * @return array
         */
        public static function getProperties() : array
        {
        }
        /**
         * Prepare the version number.
         *
         * @param string $ver The string version, like "2.6.21.2152";
         *
         * @return float
         *
         * @todo Remove the error suppression from str_replace() call.
         */
        public function prepareVersionNo(string $ver) : float
        {
        }
        /**
         * Check the version of the given property in the User-Agent.
         * Will return a float number. (e.g. 2_0 will return 2.0, 4.3.1 will return 4.31)
         *
         * @param string $propertyName The name of the property. See self::getProperties() array
         *                             keys for all possible properties.
         * @param string $type         Either self::VERSION_TYPE_STRING to get a string value or
         *                             self::VERSION_TYPE_FLOAT indicating a float value. This parameter
         *                             is optional and defaults to self::VERSION_TYPE_STRING. Passing an
         *                             invalid parameter will default to the type as well.
         *
         * @return string|float|false The version of the property we are trying to extract.
         */
        public function version(string $propertyName, string $type = self::VERSION_TYPE_STRING)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\AI {
    /**
     * AI Endpoint base controller
     *
     * @internal
     */
    abstract class AIEndpoint
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'ai';
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint;
        /**
         * Register routes.
         *
         * @param array $args Optional. Either an array of options for the endpoint,
         * or an array of arrays for multiple methods. Default empty array.
         */
        public function register($args)
        {
        }
        /**
         * Return schema properties.
         *
         * @return array
         */
        public function get_schema()
        {
        }
    }
    /**
     * Store Title controller
     *
     * @internal
     */
    class BusinessDescription extends \Automattic\WooCommerce\Admin\API\AI\AIEndpoint
    {
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint = 'business-description';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Update the business description.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response|WP_Error Response object.
         */
        public function update_business_description($request)
        {
        }
        /**
         * Get the Business Description response.
         *
         * @return array
         */
        public function get_schema()
        {
        }
    }
    /**
     * Images controller
     *
     * @internal
     */
    class Images extends \Automattic\WooCommerce\Admin\API\AI\AIEndpoint
    {
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint = 'images';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Generate Images from Pexels
         *
         * @param WP_REST_Request $request Request object.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function generate_images(\WP_REST_Request $request)
        {
        }
    }
    /**
     * Middleware class.
     *
     * @internal
     */
    class Middleware
    {
        /**
         * Ensure that the user is allowed to make this request.
         *
         * @return boolean|WP_Error
         * @throws RouteException If the user is not allowed to make this request.
         */
        public static function is_authorized()
        {
        }
    }
    /**
     * Patterns controller
     *
     * @internal
     */
    class Patterns extends \Automattic\WooCommerce\Admin\API\AI\AIEndpoint
    {
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint = 'patterns';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Update patterns with the content and images powered by AI.
         *
         * @param  WP_REST_Request $request Request object.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function update_patterns(\WP_REST_Request $request)
        {
        }
        /**
         * Remove patterns generated by AI.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function delete_patterns()
        {
        }
    }
    /**
     * Product controller
     *
     * @internal
     */
    class Product extends \Automattic\WooCommerce\Admin\API\AI\AIEndpoint
    {
        /**
         * The endpoint response option name.
         *
         * @var string
         */
        const AI_CONTENT_GENERATED = 'ai_content_generated';
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint = 'product';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Update product with the content and images powered by AI.
         *
         * @param  WP_REST_Request $request Request object.
         *
         * @return WP_REST_Response
         */
        public function update_product(\WP_REST_Request $request)
        {
        }
    }
    /**
     * Store Info controller
     *
     * @internal
     */
    class StoreInfo extends \Automattic\WooCommerce\Admin\API\AI\AIEndpoint
    {
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint = 'store-info';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Update the store title powered by AI.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function get_response()
        {
        }
        /**
         * Get the Business Description response.
         *
         * @return array
         */
        public function get_schema()
        {
        }
    }
    /**
     * Store Title controller
     *
     * @internal
     */
    class StoreTitle extends \Automattic\WooCommerce\Admin\API\AI\AIEndpoint
    {
        /**
         * The store title option name.
         *
         * @var string
         */
        const STORE_TITLE_OPTION_NAME = 'blogname';
        /**
         * The AI generated store title option name.
         *
         * @var string
         */
        const AI_STORE_TITLE_OPTION_NAME = 'ai_generated_site_title';
        /**
         * The default store title.
         *
         * @var string
         */
        const DEFAULT_TITLE = 'Site Title';
        /**
         * Endpoint.
         *
         * @var string
         */
        protected $endpoint = 'store-title';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Update the store title powered by AI.
         *
         * @param  WP_REST_Request $request Request object.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function update_store_title($request)
        {
        }
        /**
         * Generate the store title powered by AI.
         *
         * @param string $business_description The business description for a given store.
         *
         * @return string|WP_Error|WP_REST_Response The store title generated by AI.
         */
        private function generate_ai_title($business_description)
        {
        }
        /**
         * Get the Business Description response.
         *
         * @return array
         */
        public function get_schema()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API {
    /**
     * Coupons controller.
     *
     * @internal
     * @extends WC_REST_Coupons_Controller
     */
    class Coupons extends \WC_REST_Coupons_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Add coupon code searching to the WC API.
         *
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get a collection of posts and add the code search option to WP_Query.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Add code searching to the WP Query
         *
         * @internal
         * @param string $where Where clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_search_code_filter($where, $wp_query)
        {
        }
    }
    /**
     * CustomAttributeTraits class.
     *
     * @internal
     */
    trait CustomAttributeTraits
    {
        /**
         * Get a single attribute by its slug.
         *
         * @internal
         * @param string $slug The attribute slug.
         * @return WP_Error|object The matching attribute object or WP_Error if not found.
         */
        public function get_custom_attribute_by_slug($slug)
        {
        }
        /**
         * Query custom attributes by name or slug.
         *
         * @param string $args Search arguments, either name or slug.
         * @return array Matching attributes, formatted for response.
         */
        protected function get_custom_attributes($args)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * WooCommerce Reports exportable controller interface.
     *
     * @since 3.5.0
     */
    interface ExportableInterface
    {
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns();
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Value.
         */
        public function prepare_item_for_export($item);
    }
    /**
     * {@see WC_REST_Reports_Controller WC REST API Reports Controller} extended to be shared as a generic base for all Analytics reports controllers.
     *
     * Handles pagination HTTP headers and links, basic, conventional params.
     * Does all the REST API plumbing as `WC_REST_Controller`.
     *
     *
     * Minimalistic example:
     * <pre><code class="language-php">class MyController extends GenericController {
     *     /** Route of your new REST endpoint. &ast;/
     *     protected $rest_base = 'reports/my-thing';
     *     /**
     *      * Provide JSON schema for the response item.
     *      * @override WC_REST_Reports_Controller::get_item_schema()
     *      &ast;/
     *     public function get_item_schema() {
     *         $schema = array(
     *             '$schema'    => 'http://json-schema.org/draft-04/schema#',
     *             'title'      => 'report_my_thing',
     *             'type'       => 'object',
     *             'properties' => array(
     *                 'product_id' => array(
     *                     'type'        => 'integer',
     *                     'readonly'    => true,
     *                     'context'     => array( 'view', 'edit' ),
     *                 'description' => __( 'Product ID.', 'my_extension' ),
     *                 ),
     *             ),
     *         );
     *         // Add additional fields from `get_additional_fields` method and apply `woocommerce_rest_' . $schema['title'] . '_schema` filter.
     *         return $this->add_additional_fields_schema( $schema );
     *     }
     * }
     * </code></pre>
     *
     * The above Controller will get the data from a {@see DataStore data store} registered as `$rest_base` (`reports/my-thing`).
     * (To change this behavior, override the `get_datastore_data()` method).
     *
     * To use the controller, please register it with the filter `woocommerce_admin_rest_controllers` filter.
     *
     * @extends WC_REST_Reports_Controller
     */
    abstract class GenericController extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Add pagination headers and links.
         *
         * @param \WP_REST_Request        $request   Request data.
         * @param \WP_REST_Response|array $response  Response data.
         * @param int                     $total     Total results.
         * @param int                     $page      Current page.
         * @param int                     $max_pages Total amount of pages.
         * @return \WP_REST_Response
         */
        public function add_pagination_headers($request, $response, int $total, int $page, int $max_pages)
        {
        }
        /**
         * Get data from `{$this->rest_base}` store, based on the given query vars.
         *
         * @throws Exception When the data store is not found {@see WC_Data_Store WC_Data_Store}.
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Get the query params definition for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the report data.
         *
         * Prepares query params, fetches the report data from the data store,
         * prepares it for the response, and packs it into the convention-conforming response object.
         *
         * @throws \WP_Error When the queried data is invalid.
         * @param \WP_REST_Request $request Request data.
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * This method is called by `get_items` to prepare a single report data item for serialization.
         * Calls `add_additional_fields_to_object` and `filter_response_by_context`,
         * then wpraps the data with `rest_ensure_response`.
         *
         * You can extend it to add or filter some fields.
         *
         * @override WP_REST_Posts_Controller::prepare_item_for_response()
         *
         * @param mixed           $report_item Report data item as returned from Data Store.
         * @param WP_REST_Request $request     Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report_item, $request)
        {
        }
        /**
         * Maps query arguments from the REST request, to be used to query the datastore.
         *
         * `WP_REST_Request` does not expose a method to return all params covering defaults,
         * as it does for `$request['param']` accessor.
         * Therefore, we re-implement defaults resolution.
         *
         * @param \WP_REST_Request $request Full request object.
         * @return array Simplified array of params.
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Apply a filter for custom orderby enum.
         *
         * @param array $orderby_enum An array of orderby enum options.
         *
         * @return array An array of filtered orderby enum options.
         *
         * @since 9.4.0
         */
        protected function apply_custom_orderby_filters($orderby_enum)
        {
        }
    }
    /**
     * ExportableTraits class.
     */
    trait ExportableTraits
    {
        /**
         * Format numbers for CSV using store precision setting.
         *
         * @param string|float $value Numeric value.
         * @return string Formatted value.
         */
        public static function csv_number_format($value)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Customers {
    /**
     * REST API Reports customers controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        /**
         * Exportable traits.
         */
        use \Automattic\WooCommerce\Admin\API\Reports\ExportableTraits;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/customers';
        /**
         * Get data from Customers\Query.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get one report.
         *
         * @param WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array            $report  Report data item as returned from Data Store.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param array $object Object data.
         * @return array
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API {
    /**
     * Customers controller.
     *
     * @internal
     * @extends \Automattic\WooCommerce\Admin\API\Reports\Customers\Controller
     */
    class Customers extends \Automattic\WooCommerce\Admin\API\Reports\Customers\Controller
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'customers';
        /**
         * Register the routes for customers.
         */
        public function register_routes()
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * Data controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Data extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Return the list of data resources.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
    }
    /**
     * REST API Data countries controller class.
     *
     * @internal
     * @extends WC_REST_Data_Countries_Controller
     */
    class DataCountries extends \WC_REST_Data_Countries_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Register routes.
         *
         * @since 3.5.0
         */
        public function register_routes()
        {
        }
        /**
         * Get country fields.
         *
         * @return array
         */
        public function get_locales()
        {
        }
    }
    /**
     * Data Download IP controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class DataDownloadIPs extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'data/download-ips';
        /**
         * Register routes.
         *
         * @since 3.5.0
         */
        public function register_routes()
        {
        }
        /**
         * Return the download IPs matching the passed parameters.
         *
         * @since  3.5.0
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($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 object.
         */
        protected function prepare_links($item)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Data controller.
     *
     * @extends WC_REST_Data_Controller
     */
    class Experiments extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'experiments';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Forward the experiment request to WP.com and return the WP.com response.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_assignment($request)
        {
        }
    }
    /**
     * Features Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Features extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'features';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read onboarding profile data.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Return available payment methods.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_features($request)
        {
        }
    }
    /**
     * Init class.
     *
     * @internal
     */
    #[\AllowDynamicProperties]
    class Init
    {
        /**
         * The single instance of the class.
         *
         * @var object
         */
        protected static $instance = null;
        /**
         * Get class instance.
         *
         * @return object Instance.
         */
        public static final function instance()
        {
        }
        /**
         * Bootstrap REST API.
         */
        public function __construct()
        {
        }
        /**
         * Init REST API.
         */
        public function rest_api_init()
        {
        }
        /**
         * Adds data stores.
         *
         * @internal
         * @param array $data_stores List of data stores.
         * @return array
         */
        public static function add_data_stores($data_stores)
        {
        }
        /**
         * Add the currency symbol (in addition to currency code) to each Order
         * object in REST API responses. For use in formatAmount().
         *
         * @internal
         * @param WP_REST_Response $response REST response object.
         * @returns WP_REST_Response
         */
        public static function add_currency_symbol_to_order_response($response)
        {
        }
    }
    /**
     * Launch Your Store controller.
     *
     * @internal
     */
    class LaunchYourStore
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'launch-your-store';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * User must be either shop_manager or administrator.
         *
         * @return bool
         */
        public function must_be_shop_manager_or_admin()
        {
        }
        /**
         * Initializes options for coming soon. Does not override if options exist.
         *
         * @return bool|void
         */
        public function initialize_coming_soon()
        {
        }
        /**
         * Count the test orders created during Woo Payments test mode.
         *
         * @return \WP_REST_Response
         */
        public function get_woopay_test_orders_count()
        {
        }
        /**
         * Delete WooPayments test orders.
         *
         * @return \WP_REST_Response
         */
        public function delete_woopay_test_orders()
        {
        }
        /**
         * Update woocommerce_admin_launch_your_store_survey_completed to yes or no
         *
         * @param \WP_REST_Request $request WP_REST_Request object.
         *
         * @return \WP_REST_Response
         */
        public function update_survey_status(\WP_REST_Request $request)
        {
        }
        /**
         * Return woocommerce_admin_launch_your_store_survey_completed option.
         *
         * @return \WP_REST_Response
         */
        public function has_survey_completed()
        {
        }
    }
    /**
     * Leaderboards controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Leaderboards extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'leaderboards';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Get the data for the coupons leaderboard.
         *
         * @param int    $per_page Number of rows.
         * @param string $after Items after date.
         * @param string $before Items before date.
         * @param string $persisted_query URL query string.
         */
        protected function get_coupons_leaderboard($per_page, $after, $before, $persisted_query)
        {
        }
        /**
         * Get the data for the categories leaderboard.
         *
         * @param int    $per_page Number of rows.
         * @param string $after Items after date.
         * @param string $before Items before date.
         * @param string $persisted_query URL query string.
         */
        protected function get_categories_leaderboard($per_page, $after, $before, $persisted_query)
        {
        }
        /**
         * Get the data for the customers leaderboard.
         *
         * @param int    $per_page Number of rows.
         * @param string $after Items after date.
         * @param string $before Items before date.
         * @param string $persisted_query URL query string.
         */
        protected function get_customers_leaderboard($per_page, $after, $before, $persisted_query)
        {
        }
        /**
         * Get the data for the products leaderboard.
         *
         * @param int    $per_page Number of rows.
         * @param string $after Items after date.
         * @param string $before Items before date.
         * @param string $persisted_query URL query string.
         */
        protected function get_products_leaderboard($per_page, $after, $before, $persisted_query)
        {
        }
        /**
         * Get an array of all leaderboards.
         *
         * @param int    $per_page Number of rows.
         * @param string $after Items after date.
         * @param string $before Items before date.
         * @param string $persisted_query URL query string.
         * @return array
         */
        public function get_leaderboards($per_page, $after, $before, $persisted_query)
        {
        }
        /**
         * Return all leaderboards.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Returns a list of allowed leaderboards.
         *
         * @param  WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_allowed_items($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)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get schema for the list of allowed leaderboards.
         *
         * @return array $schema
         */
        public function get_public_allowed_item_schema()
        {
        }
    }
    /**
     * Marketing Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Marketing extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'marketing';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to install plugins.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_recommended_plugins_permissions_check($request)
        {
        }
        /**
         * Return installed marketing extensions data.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_recommended_plugins($request)
        {
        }
        /**
         * Return installed marketing extensions data.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_knowledge_base_posts($request)
        {
        }
        /**
         * Return misc recommendations.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @since 9.5.0
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_misc_recommendations($request)
        {
        }
    }
    /**
     * MarketingCampaignTypes Controller.
     *
     * @internal
     * @extends WC_REST_Controller
     * @since x.x.x
     */
    class MarketingCampaignTypes extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'marketing/campaign-types';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Retrieves the query params for the collections.
         *
         * @return array Query parameters for the collection.
         */
        public function get_collection_params()
        {
        }
        /**
         * Check whether a given request has permission to view marketing campaigns.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Returns an aggregated array of marketing campaigns for all active marketing channels.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Prepares the item for the REST response.
         *
         * @param MarketingCampaignType $item    WordPress representation of the item.
         * @param WP_REST_Request       $request Request object.
         *
         * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Retrieves the item's schema, conforming to JSON Schema.
         *
         * @return array Item schema data.
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * MarketingCampaigns Controller.
     *
     * @internal
     * @extends WC_REST_Controller
     * @since x.x.x
     */
    class MarketingCampaigns extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'marketing/campaigns';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view marketing campaigns.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Returns an aggregated array of marketing campaigns for all active marketing channels.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get formatted price based on Price type.
         *
         * This uses plugins/woocommerce/i18n/currency-info.php and plugins/woocommerce/i18n/locale-info.php to get option object based on $price->currency.
         *
         * Example:
         *
         * - When $price->currency is 'USD' and $price->value is '1000', it should return '$1000.00'.
         * - When $price->currency is 'JPY' and $price->value is '1000', it should return '¥1,000'.
         * - When $price->currency is 'AED' and $price->value is '1000', it should return '5.000,00 د.إ'.
         *
         * @param Price $price Price object.
         * @return String formatted price.
         */
        private function get_formatted_price($price)
        {
        }
        /**
         * Prepares the item for the REST response.
         *
         * @param MarketingCampaign $item    WordPress representation of the item.
         * @param WP_REST_Request   $request Request object.
         *
         * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Retrieves the item's schema, conforming to JSON Schema.
         *
         * @return array Item schema data.
         */
        public function get_item_schema()
        {
        }
        /**
         * Retrieves the query params for the collections.
         *
         * @return array Query parameters for the collection.
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * MarketingChannels Controller.
     *
     * @internal
     * @extends WC_REST_Controller
     * @since x.x.x
     */
    class MarketingChannels extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'marketing/channels';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view marketing channels.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Return installed marketing channels.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Prepares the item for the REST response.
         *
         * @param MarketingChannelInterface $item    WordPress representation of the item.
         * @param WP_REST_Request           $request Request object.
         *
         * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Retrieves the item's schema, conforming to JSON Schema.
         *
         * @return array Item schema data.
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Marketing Overview Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class MarketingOverview extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'marketing/overview';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Return installed marketing extensions data.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function activate_plugin($request)
        {
        }
        /**
         * Check if a given request has access to manage plugins.
         *
         * @param \WP_REST_Request $request Full details about the request.
         *
         * @return \WP_Error|boolean
         */
        public function install_plugins_permissions_check($request)
        {
        }
        /**
         * Return installed marketing extensions data.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_installed_plugins($request)
        {
        }
    }
    /**
     * MarketingRecommendations Controller.
     *
     * @internal
     * @extends WC_REST_Controller
     * @since x.x.x
     */
    class MarketingRecommendations extends \WC_REST_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'marketing/recommendations';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to view marketing recommendations.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Retrieves a collection of recommendations.
         *
         * @param WP_REST_Request $request Full details about the request.
         *
         * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
         */
        public function get_items($request)
        {
        }
        /**
         * Prepares the item for the REST response.
         *
         * @param array           $item    WordPress representation of the item.
         * @param WP_REST_Request $request Request object.
         *
         * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
         */
        public function prepare_item_for_response($item, $request)
        {
        }
        /**
         * Retrieves the item's schema, conforming to JSON Schema.
         *
         * @return array Item schema data.
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Data countries controller class.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class MobileAppMagicLink extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'mobile-app';
        /**
         * Register routes.
         *
         * @since 7.0.0
         */
        public function register_routes()
        {
        }
        /**
         * Sends request to generate magic link email.
         *
         * @return \WP_REST_Response|\WP_Error
         */
        public function send_magic_link()
        {
        }
    }
    /**
     * REST API Admin Notes controller class.
     *
     * @internal
     * @extends WC_REST_CRUD_Controller
     */
    class Notes extends \WC_REST_CRUD_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'admin/notes';
        /**
         * Register the routes for admin notes.
         */
        public function register_routes()
        {
        }
        /**
         * Get a single note.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public function get_item($request)
        {
        }
        /**
         * Get all notes.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Checks if user is in tasklist experiment.
         *
         * @return bool Whether remote inbox notifications are enabled.
         */
        private function is_tasklist_experiment_assigned_treatment()
        {
        }
        /**
         * Prepare objects query.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Check whether a given request has permission to read a single note.
         *
         * @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 read notes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Update a single note.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function update_item($request)
        {
        }
        /**
         * Delete a single note.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function delete_item($request)
        {
        }
        /**
         * Delete all notes.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Request|WP_Error
         */
        public function delete_all_items($request)
        {
        }
        /**
         * Prepare note data.
         *
         * @param Note            $note     Note data.
         * @param WP_REST_Request $request  Request object.
         *
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_note_data_for_response($note, $request)
        {
        }
        /**
         * Prepare an array with the requested updates.
         *
         * @param WP_REST_Request $request  Request object.
         * @return array A list of the requested updates values.
         */
        protected function get_requested_updates($request)
        {
        }
        /**
         * Batch update a set of notes.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Request|WP_Error
         */
        public function batch_update_items($request)
        {
        }
        /**
         * Activate a promo note, create if not exist.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Request|WP_Error
         */
        public function activate_promo_note($request)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Prepare a path or query for serialization to the client.
         *
         * @param string $query The query, path, or URL to transform.
         * @return string A fully formed URL.
         */
        public function prepare_query_for_response($query)
        {
        }
        /**
         * Maybe add a nonce to a URL.
         *
         * @link https://codex.wordpress.org/WordPress_Nonces
         *
         * @param string $url The URL needing a nonce.
         * @param string $action The nonce action.
         * @param string $name The nonce name.
         * @return string A fully formed URL.
         */
        private function maybe_add_nonce_to_url(string $url, string $action = '', string $name = '') : string
        {
        }
        /**
         * Prepare a note object for serialization.
         *
         * @param array           $data Note data.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($data, $request)
        {
        }
        /**
         * Track opened emails.
         *
         * @param WP_REST_Request $request Request object.
         */
        public function track_opened_email($request)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the note's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * REST API Admin Note Action controller class.
     *
     * @internal
     * @extends WC_REST_CRUD_Controller
     */
    class NoteActions extends \Automattic\WooCommerce\Admin\API\Notes
    {
        /**
         * Register the routes for admin notes.
         */
        public function register_routes()
        {
        }
        /**
         * Trigger a note action.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function trigger_note_action($request)
        {
        }
    }
    /**
     * Notice Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Notice extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'notice';
        /**
         * Register the routes for admin notes.
         */
        public function register_routes()
        {
        }
        /**
         * Save notice dismiss information in user meta.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response|WP_Error
         */
        public function dissmiss_notice($request)
        {
        }
        /**
         * Check user has the necessary permissions to perform this action.
         *
         * @return bool
         */
        public function get_permission() : bool
        {
        }
    }
    /**
     * Onboarding Payments Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingFreeExtensions extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding/free-extensions';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read onboarding profile data.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Return available payment methods.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_Error|WP_REST_Response
         */
        public function get_available_extensions($request)
        {
        }
    }
    /**
     * Onboarding Plugins controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingPlugins extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding/plugins';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Install and activate a plugin.
         *
         * @param WP_REST_Request $request WP Request object.
         *
         * @return WP_REST_Response
         */
        public function install_and_activate(\WP_REST_Request $request)
        {
        }
        /**
         * Queue plugin install request.
         *
         * @param WP_REST_Request $request WP_REST_Request object.
         *
         * @return array
         */
        public function install_and_activate_async(\WP_REST_Request $request)
        {
        }
        /**
         * Returns current status of given job.
         *
         * @param WP_REST_Request $request WP_REST_Request object.
         *
         * @return array|WP_REST_Response
         */
        public function get_scheduled_installs(\WP_REST_Request $request)
        {
        }
        /**
         * Return Jetpack authorization URL.
         *
         * @param WP_REST_Request $request WP_REST_Request object.
         *
         * @return array
         * @throws \Exception If there is an error registering the site.
         */
        public function get_jetpack_authorization_url(\WP_REST_Request $request)
        {
        }
        /**
         * Return a locale string for wpcom.
         *
         * @return string
         */
        private function get_wpcom_locale()
        {
        }
        /**
         * Check whether the current user has permission to install plugins
         *
         * @return WP_Error|boolean
         */
        public function can_install_plugins()
        {
        }
        /**
         * Check whether the current user has permission to install and activate plugins
         *
         * @return WP_Error|boolean
         */
        public function can_install_and_activate_plugins()
        {
        }
        /**
         * JSON Schema for both install-async and scheduled-installs endpoints.
         *
         * @return array
         */
        public function get_install_async_schema()
        {
        }
        /**
         * JSON Schema for install-and-activate endpoint.
         *
         * @return array
         */
        public function get_install_activate_schema()
        {
        }
        public function log_plugins_install_error($slug, $api, $result, $upgrader)
        {
        }
        public function log_plugins_install_api_error($slug, $api)
        {
        }
    }
    /**
     * Onboarding Product Types Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingProductTypes extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding/product-types';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read onboarding profile data.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_items_permissions_check($request)
        {
        }
        /**
         * Return available product types.
         *
         * @param \WP_REST_Request $request Request data.
         *
         * @return \WP_Error|\WP_REST_Response
         */
        public function get_product_types($request)
        {
        }
    }
    /**
     * Onboarding Themes Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingProducts extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Create products.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function create_products($request)
        {
        }
        /**
         * Check if a given request has access to manage themes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
    }
    /**
     * Onboarding Profile controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingProfile extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding/profile';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to read onboarding profile 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 edit onboarding profile data.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_items_permissions_check($request)
        {
        }
        /**
         * Return all onboarding profile data.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Filter the industries.
         *
         * @param  array $industries list of industries.
         * @return array
         */
        protected function filter_industries($industries)
        {
        }
        /**
         * Update onboarding profile data.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function update_items($request)
        {
        }
        /**
         * Returns a default email to be pre-filled in OBW. Prioritizes Jetpack if connected,
         * otherwise will default to WordPress general settings.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_email_prefill($request)
        {
        }
        /**
         * Prepare objects query.
         *
         * @param  array $params The params sent in the request.
         * @return array
         */
        protected function prepare_objects_query($params)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Get onboarding profile properties.
         *
         * @return array
         */
        public static function get_profile_properties()
        {
        }
        /**
         * Optionally validates email if user agreed to marketing or if email is not empty.
         *
         * @param mixed           $value Email value.
         * @param WP_REST_Request $request Request object.
         * @param string          $param Parameter name.
         * @return true|WP_Error
         */
        public static function rest_validate_marketing_email($value, $request, $param)
        {
        }
        /**
         * Get the 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()
        {
        }
    }
    /**
     * Onboarding Tasks Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingTasks extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding/tasks';
        /**
         * Duration to millisecond mapping.
         *
         * @var array
         */
        protected $duration_to_ms = array('day' => DAY_IN_SECONDS * 1000, 'hour' => HOUR_IN_SECONDS * 1000, 'week' => WEEK_IN_SECONDS * 1000);
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to create a product.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_products_permission_check($request)
        {
        }
        /**
         * Check if a given request has access to create a product.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function create_pages_permission_check($request)
        {
        }
        /**
         * Check if a given request has access to manage woocommerce.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_tasks_permission_check($request)
        {
        }
        /**
         * Check if a given request has permission to hide task lists.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function hide_task_list_permission_check($request)
        {
        }
        /**
         * Check if a given request has access to manage woocommerce.
         *
         * @deprecated 7.8.0 snooze task is deprecated.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function snooze_task_permissions_check($request)
        {
        }
        /**
         * Import sample products from given CSV path.
         *
         * @param  string $csv_file CSV file path.
         * @return WP_Error|WP_REST_Response
         */
        public static function import_sample_products_from_csv($csv_file)
        {
        }
        /**
         * Import sample products from WooCommerce sample CSV.
         *
         * @internal
         * @return WP_Error|WP_REST_Response
         */
        public static function import_sample_products()
        {
        }
        /**
         * Creates a product from a template name passed in through the template_name param.
         *
         * @internal
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response|WP_Error
         */
        public static function create_product_from_template($request)
        {
        }
        /**
         * Get header mappings from CSV columns.
         *
         * @internal
         * @param string $file File path.
         * @return array Mapped headers.
         */
        public static function get_header_mappings($file)
        {
        }
        /**
         * Sanitize special column name regex.
         *
         * @internal
         * @param  string $value Raw special column name.
         * @return string
         */
        public static function sanitize_special_column_name_regex($value)
        {
        }
        /**
         * Returns a valid cover block with an image, if one exists, or background as a fallback.
         *
         * @internal
         * @param  array $image Image to use for the cover block. Should contain a media ID and image URL.
         * @return string Block content.
         */
        private static function get_homepage_cover_block($image)
        {
        }
        /**
         * Returns a valid media block with an image, if one exists, or a uninitialized media block the user can set.
         *
         * @internal
         * @param  array  $image Image to use for the cover block. Should contain a media ID and image URL.
         * @param  string $align If the image should be aligned to the left or right.
         * @return string Block content.
         */
        private static function get_homepage_media_block($image, $align = 'left')
        {
        }
        /**
         * Returns a homepage template to be inserted into a post. A different template will be used depending on the number of products.
         *
         * @internal
         * @param int $post_id ID of the homepage template.
         * @return string Template contents.
         */
        private static function get_homepage_template($post_id)
        {
        }
        /**
         * Gets the possible industry images from the plugin folder for sideloading. If an image doesn't exist, other.jpg is used a fallback.
         *
         * @internal
         * @return array An array of images by industry.
         */
        private static function get_available_homepage_images()
        {
        }
        /**
         * Uploads a number of images to a homepage template, depending on the selected industry from the profile wizard.
         *
         * @internal
         * @param  int $post_id ID of the homepage template.
         * @param  int $number_of_images The number of images that should be sideloaded (depending on how many media slots are in the template).
         * @return array An array of images that have been attached to the post.
         */
        private static function sideload_homepage_images($post_id, $number_of_images)
        {
        }
        /**
         * Create a homepage from a template.
         *
         * @return WP_Error|array
         */
        public static function create_homepage()
        {
        }
        /**
         * Get the query params for task lists.
         *
         * @return array
         */
        public function get_task_list_params()
        {
        }
        /**
         * Get the onboarding tasks.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function get_tasks($request)
        {
        }
        /**
         * Dismiss a single task.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function dismiss_task($request)
        {
        }
        /**
         * Undo dismissal of a single task.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function undo_dismiss_task($request)
        {
        }
        /**
         * Snooze an onboarding task.
         *
         * @deprecated 7.8.0 snooze task is deprecated.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_REST_Response|WP_Error
         */
        public function snooze_task($request)
        {
        }
        /**
         * Undo snooze of a single task.
         *
         * @deprecated 7.8.0 undo snooze task is deprecated.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function undo_snooze_task($request)
        {
        }
        /**
         * Hide a task list.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_REST_Response|WP_Error
         */
        public function hide_task_list($request)
        {
        }
        /**
         * Unhide a task list.
         *
         * @param WP_REST_Request $request Request data.
         *
         * @return WP_REST_Response|WP_Error
         */
        public function unhide_task_list($request)
        {
        }
        /**
         * Action a single task.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function action_task($request)
        {
        }
    }
    /**
     * Onboarding Themes Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class OnboardingThemes extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'onboarding/themes';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to manage themes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Installs the requested theme.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Theme installation status.
         */
        public function install_theme($request)
        {
        }
        /**
         * Activate the requested theme.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Theme activation status.
         */
        public function activate_theme($request)
        {
        }
        /**
         * Get recommended themes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Theme activation status.
         */
        public function get_recommended_themes($request)
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the recommended themes schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_recommended_item_schema()
        {
        }
    }
    /**
     * Options Controller.
     *
     * @deprecated since 6.2.0
     *
     * @extends WC_REST_Data_Controller
     */
    class Options extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'options';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to get options.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_item_permissions_check($request)
        {
        }
        /**
         * Check if the user has permission given an option name.
         *
         * @param  string          $option Option name.
         * @param  WP_REST_Request $request Full details about the request.
         * @param  bool            $is_update If the request is to update the option.
         * @return boolean
         */
        public function user_has_permission($option, $request, $is_update = false)
        {
        }
        /**
         * Check if a given request has access to update options.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Get an array of options and respective permissions for the current user.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        public function get_option_permissions($request)
        {
        }
        /**
         * Get the default available option permissions.
         *
         * @return array
         */
        public static function get_default_option_permissions()
        {
        }
        /**
         * Gets an array of options and respective values.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array Options object with option values.
         */
        public function get_options($request)
        {
        }
        /**
         * Updates an array of objects.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array Options object with a boolean if the option was updated.
         */
        public function update_options($request)
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Orders controller.
     *
     * @internal
     * @extends WC_REST_Orders_Controller
     */
    class Orders extends \WC_REST_Orders_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Prepare objects query.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Helper method to allow searching by partial order number.
         *
         * @param int   $number Partial order number match.
         * @param array $args List of arguments for the request.
         *
         * @return array Modified args with partial order search included.
         */
        private function search_partial_order_number($number, $args)
        {
        }
        /**
         * Get product IDs, names, and quantity from order ID.
         *
         * @param array $order_id ID of order.
         * @return array
         */
        protected function get_products_by_order_id($order_id)
        {
        }
        /**
         * Get customer data from customer_id.
         *
         * @param array $customer_id ID of customer.
         * @return array
         */
        protected function get_customer_by_id($customer_id)
        {
        }
        /**
         * Get formatted item data.
         *
         * @param  WC_Data $object WC_Data instance.
         * @return array
         */
        protected function get_formatted_item_data($object)
        {
        }
    }
    /**
     * PaymentGatewaySuggetsions Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class PaymentGatewaySuggestions extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'payment-gateway-suggestions';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to manage plugins.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_permission_check($request)
        {
        }
        /**
         * Return suggested payment gateways.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return \WP_Error|\WP_HTTP_Response|\WP_REST_Response
         */
        public function get_suggestions($request)
        {
        }
        /**
         * Dismisses suggested payment gateways.
         *
         * @return \WP_Error|\WP_HTTP_Response|\WP_REST_Response
         */
        public function dismiss_payment_gateway_suggestion()
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
    }
    /**
     * Plugins Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Plugins extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'plugins';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to manage plugins.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function update_item_permissions_check($request)
        {
        }
        /**
         * Install the requested plugin.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Plugin Status
         */
        public function install_plugin($request)
        {
        }
        /**
         * Installs the requested plugins.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Plugin Status
         */
        public function install_plugins($request)
        {
        }
        /**
         * Returns a list of recently scheduled installation jobs.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array Jobs.
         */
        public function get_installation_status($request)
        {
        }
        /**
         * Returns a list of recently scheduled installation jobs.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array Job.
         */
        public function get_job_installation_status($request)
        {
        }
        /**
         * Returns a list of active plugins in API format.
         *
         * @return array Active plugins
         */
        public static function active_plugins()
        {
        }
        /**
         * Returns a list of active plugins.
         *
         * @internal
         * @return array Active plugins
         */
        public static function get_active_plugins()
        {
        }
        /**
         * Returns a list of installed plugins.
         *
         * @return array Installed plugins
         */
        public function installed_plugins()
        {
        }
        /**
         * Activate the requested plugin.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Plugin Status
         */
        public function activate_plugins($request)
        {
        }
        /**
         * Returns a list of recently scheduled activation jobs.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array Job.
         */
        public function get_activation_status($request)
        {
        }
        /**
         * Returns a list of recently scheduled activation jobs.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return array Jobs.
         */
        public function get_job_activation_status($request)
        {
        }
        /**
         * Generates a Jetpack Connect URL.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|array Connection URL for Jetpack
         */
        public function connect_jetpack($request)
        {
        }
        /**
         *  Kicks off the WCCOM Connect process.
         *
         * @return WP_Error|array Connection URL for WooCommerce.com
         */
        public function request_wccom_connect()
        {
        }
        /**
         * Finishes connecting to WooCommerce.com.
         *
         * @param  object $rest_request Request details.
         * @return WP_Error|array Contains success status.
         */
        public function finish_wccom_connect($rest_request)
        {
        }
        /**
         * Returns a URL that can be used to connect to Square.
         *
         * @return WP_Error|array Connect URL.
         */
        public function connect_square()
        {
        }
        /**
         * Returns a URL that can be used to point the merchant to the WooPayments onboarding flow.
         *
         * @return \WP_Error|array Connect URL.
         */
        public function connect_wcpay()
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_connect_schema()
        {
        }
    }
    /**
     * Product attribute terms controller.
     *
     * @internal
     * @extends WC_REST_Product_Attribute_Terms_Controller
     */
    class ProductAttributeTerms extends \WC_REST_Product_Attribute_Terms_Controller
    {
        use \Automattic\WooCommerce\Admin\API\CustomAttributeTraits;
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Register the routes for custom product attributes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to read a custom attribute.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_custom_attribute_permissions_check($request)
        {
        }
        /**
         * Get the Attribute's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Query custom attribute values by slug.
         *
         * @param string $slug Attribute slug.
         * @return array Attribute values, formatted for response.
         */
        protected function get_custom_attribute_values($slug)
        {
        }
        /**
         * Get a single custom attribute.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Request|WP_Error
         */
        public function get_item_by_slug($request)
        {
        }
    }
    /**
     * Product categories controller.
     *
     * @internal
     * @extends WC_REST_Product_Attributes_Controller
     */
    class ProductAttributes extends \WC_REST_Product_Attributes_Controller
    {
        use \Automattic\WooCommerce\Admin\API\CustomAttributeTraits;
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Register the routes for custom product attributes.
         */
        public function register_routes()
        {
        }
        /**
         * Get the query params for collections
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the Attribute's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get a single attribute by it's slug.
         *
         * @param WP_REST_Request $request The API request.
         * @return WP_REST_Response
         */
        public function get_item_by_slug($request)
        {
        }
        /**
         * Format custom attribute items for response (mimic the structure of a taxonomy - backed attribute).
         *
         * @param array $custom_attributes - CustomAttributeTraits::get_custom_attributes().
         * @return array
         */
        protected function format_custom_attribute_items_for_response($custom_attributes)
        {
        }
        /**
         * Get all attributes, with support for searching (which includes custom attributes).
         *
         * @param WP_REST_Request $request The API request.
         * @return WP_REST_Response
         */
        public function get_items($request)
        {
        }
    }
    /**
     * Product categories controller.
     *
     * @internal
     * @extends WC_REST_Product_Categories_Controller
     */
    class ProductCategories extends \WC_REST_Product_Categories_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
    }
    /**
     * ProductForm Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class ProductForm extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'product-form';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to manage woocommerce.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_product_form_permission_check($request)
        {
        }
        /**
         * Get the form fields.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function get_fields($request)
        {
        }
        /**
         * Get the form config.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_REST_Response|WP_Error
         */
        public function get_form_config($request)
        {
        }
    }
    /**
     * Product reviews controller.
     *
     * @internal
     * @extends WC_REST_Product_Reviews_Controller
     */
    class ProductReviews extends \WC_REST_Product_Reviews_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * 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)
        {
        }
    }
    /**
     * Product variations controller.
     *
     * @internal
     * @extends WC_REST_Product_Variations_Controller
     */
    class ProductVariations extends \WC_REST_Product_Variations_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Register the routes for products.
         */
        public function register_routes()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Add in conditional search filters for variations.
         *
         * @internal
         * @param string $where Where clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_filter($where, $wp_query)
        {
        }
        /**
         * Join posts meta tables when variation search query is present.
         *
         * @internal
         * @param string $join Join clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_join($join, $wp_query)
        {
        }
        /**
         * Add product name and sku filtering to the WC API.
         *
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get a collection of posts and add the post title filter option to WP_Query.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Get the Product's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * 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)
        {
        }
    }
    /**
     * Products controller.
     *
     * @internal
     * @extends WC_REST_Products_Controller
     */
    class Products extends \WC_REST_Products_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Local cache of last order dates by ID.
         *
         * @var array
         */
        protected $last_order_dates = array();
        /**
         * Adds properties that can be embed via ?_embed=1.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Add product name and sku filtering to the WC API.
         *
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        protected function prepare_objects_query($request)
        {
        }
        /**
         * Get a collection of posts and add the post title filter option to WP_Query.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
        /**
         * Check whether the request is for products low in stock.
         *
         * It matches requests with parameters:
         *
         * low_in_stock = true
         * page = 1
         * fields[0] = id
         *
         * @param string $request WP REST API request.
         * @return boolean Whether the request matches.
         */
        private function is_low_in_stock_request($request)
        {
        }
        /**
         * Hang onto last order date since it will get removed by wc_get_product().
         *
         * @param stdClass $object_data Single row from query results.
         * @return WC_Data
         */
        public function get_object($object_data)
        {
        }
        /**
         * Add `low_stock_amount` property to product data
         *
         * @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)
        {
        }
        /**
         * Add in conditional select fields to the query.
         *
         * @internal
         * @param string $select Select clause used to select fields from the query.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_fields($select, $wp_query)
        {
        }
        /**
         * Add in conditional search filters for products.
         *
         * @internal
         * @param string $where Where clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_filter($where, $wp_query)
        {
        }
        /**
         * Join posts meta tables when product search or low stock query is present.
         *
         * @internal
         * @param string $join Join clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_join($join, $wp_query)
        {
        }
        /**
         * Join wc_product_meta_lookup to posts if not already joined.
         *
         * @internal
         * @param string $sql SQL join.
         * @return string
         */
        protected static function append_product_sorting_table_join($sql)
        {
        }
        /**
         * Group by post ID to prevent duplicates.
         *
         * @internal
         * @param string $groupby Group by clause used to organize posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_group_by($groupby, $wp_query)
        {
        }
    }
    /**
     * ProductsLowInStock controller.
     *
     * @internal
     * @extends WC_REST_Products_Controller
     */
    final class ProductsLowInStock extends \WC_REST_Products_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Return # of low in stock count.
         *
         * @param WP_REST_Request $request request object.
         *
         * @return \WP_Error|\WP_HTTP_Response|\WP_REST_Response
         */
        public function get_low_in_stock_count($request)
        {
        }
        /**
         * Get low in stock products.
         *
         * @param WP_REST_Request $request request object.
         *
         * @return WP_REST_Response|WP_ERROR
         */
        public function get_items($request)
        {
        }
        /**
         * Set the last order date for each data.
         *
         * @param array $results query result from get_low_in_stock_products.
         *
         * @return mixed
         */
        protected function set_last_order_date($results = array())
        {
        }
        /**
         * Get low in stock products data.
         *
         * @param int    $page current page.
         * @param int    $per_page items per page.
         * @param string $status post status.
         *
         * @return array
         */
        protected function get_low_in_stock_products($page = 1, $per_page = 1, $status = 'publish')
        {
        }
        /**
         * Check to see if store is using sitewide threshold only. Meaning that it does not have any custom
         * stock threshold for a product.
         *
         * @return bool
         */
        protected function is_using_sitewide_stock_threshold_only()
        {
        }
        /**
         * Transform post object to expected API response.
         *
         * @param object $query_result a row of query result from get_low_in_stock_products().
         *
         * @return array
         */
        protected function transform_post_to_api_response($query_result)
        {
        }
        /**
         * Return a query string for low in stock products.
         * The query string includes the following replacement strings:
         * - :selects
         * - :postmeta_join
         * - :postmeta_wheres
         * - :orderAndLimit
         *
         * @param array $replacements  of replacement strings.
         *
         * @return string
         */
        private function get_base_query($replacements = array())
        {
        }
        /**
         * Add sitewide stock query string to base query string.
         *
         * @param string $query Base query string.
         *
         * @return string
         */
        private function add_sitewide_stock_query_str($query)
        {
        }
        /**
         * Generate a query.
         *
         * @param bool $sitewide_only generates a query for sitewide low stock threshold only query.
         *
         * @return string
         */
        protected function get_query($sitewide_only = false)
        {
        }
        /**
         * Generate a count query.
         *
         * @param bool $sitewide_only generates a query for sitewide low stock threshold only query.
         *
         * @return string
         */
        protected function get_count_query($sitewide_only = false)
        {
        }
        /**
         * Get the query params for collections of attachments.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the query params for collections for /count-low-in-stock endpoint.
         *
         * @return array
         */
        public function get_low_in_stock_count_params()
        {
        }
        /**
         * Get the schema for /count-low-in-stock response.
         *
         * @return array
         */
        public function get_low_in_stock_count_schema()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * REST API Reports Cache class.
     */
    class Cache
    {
        /**
         * Cache version. Used to invalidate all cached values.
         */
        const VERSION_OPTION = 'woocommerce_reports';
        /**
         * Invalidate cache.
         */
        public static function invalidate()
        {
        }
        /**
         * Get cache version number.
         *
         * @return string
         */
        public static function get_version()
        {
        }
        /**
         * Get cached value.
         *
         * @param string $key Cache key.
         * @return mixed
         */
        public static function get($key)
        {
        }
        /**
         * Update cached value.
         *
         * @param string $key   Cache key.
         * @param mixed  $value New value.
         * @return bool
         */
        public static function set($key, $value)
        {
        }
    }
    /**
     * Trait to contain shared methods for reports Controllers that use order and orders statuses.
     *
     * If your analytics controller needs to work with orders,
     * you will most probably need to use at least {@see get_order_statuses() get_order_statuses()}
     * to filter only "actionable" statuses to produce consistent results among other analytics.
     *
     * @see GenericController
     */
    trait OrderAwareControllerTrait
    {
        /**
         * Get the order number for an order. If no filter is present for `woocommerce_order_number`, we can just return the ID.
         * Returns the parent order number if the order is actually a refund.
         *
         * @param  int $order_id Order ID.
         * @return string|null The Order Number or null if the order doesn't exist.
         */
        protected function get_order_number($order_id)
        {
        }
        /**
         * Whether the order is valid.
         *
         * @param bool|WC_Order|WC_Order_Refund $order Order object.
         * @return bool True if the order is valid, false otherwise.
         */
        protected function is_valid_order($order)
        {
        }
        /**
         * Get the order total with the related currency formatting.
         * Returns the parent order total if the order is actually a refund.
         *
         * @param  int $order_id Order ID.
         * @return string|null The Order Number or null if the order doesn't exist.
         */
        protected function get_total_formatted($order_id)
        {
        }
        /**
         * Get order statuses without prefixes.
         * Includes unregistered statuses that have been marked "actionable".
         *
         * @return array
         */
        public static function get_order_statuses()
        {
        }
        /**
         * Get order statuses (and labels) without prefixes.
         *
         * @internal
         * @return array
         */
        public static function get_order_status_labels()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Categories {
    /**
     * REST API Reports categories controller class.
     *
     * @internal
     * @extends \Automattic\WooCommerce\Admin\API\Reports\GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\OrderAwareControllerTrait;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/categories';
        /**
         * Get data from `'categories'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param mixed            $report  Report data item as returned from Data Store.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param \Automattic\WooCommerce\Admin\API\Reports\GenericQuery $object Object data.
         * @return array
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * WooCommerce Reports data store interface.
     *
     * @since 3.5.0
     */
    interface DataStoreInterface
    {
        /**
         * Get the data based on args.
         *
         * @param array $args Query parameters.
         * @return stdClass|WP_Error
         */
        public function get_data($args);
    }
    /**
     * Admin\API\Reports\SqlQuery: Common parent for manipulating SQL query clauses.
     */
    class SqlQuery
    {
        /**
         * List of SQL clauses.
         *
         * @var array
         */
        private $sql_clauses = array('select' => array(), 'from' => array(), 'left_join' => array(), 'join' => array(), 'right_join' => array(), 'where' => array(), 'where_time' => array(), 'group_by' => array(), 'having' => array(), 'limit' => array(), 'order_by' => array(), 'union' => array());
        /**
         * SQL clause merge filters.
         *
         * @var array
         */
        private $sql_filters = array('where' => array('where', 'where_time'), 'join' => array('right_join', 'join', 'left_join'));
        /**
         * Data store context used to pass to filters.
         *
         * @var string
         */
        protected $context;
        /**
         * Constructor.
         *
         * @param string $context Optional context passed to filters. Default empty string.
         */
        public function __construct($context = '')
        {
        }
        /**
         * Add a SQL clause to be included when get_data is called.
         *
         * @param string $type   Clause type.
         * @param string $clause SQL clause.
         */
        public function add_sql_clause($type, $clause)
        {
        }
        /**
         * Get SQL clause by type.
         *
         * @param string $type     Clause type.
         * @param string $handling Whether to filter the return value (filtered|unfiltered). Default unfiltered.
         *
         * @return string SQL clause.
         */
        protected function get_sql_clause($type, $handling = 'unfiltered')
        {
        }
        /**
         * Clear SQL clauses by type.
         *
         * @param string|array $types Clause type.
         */
        protected function clear_sql_clause($types)
        {
        }
        /**
         * Replace strings within SQL clauses by type.
         *
         * @param string $type    Clause type.
         * @param string $search  String to search for.
         * @param string $replace Replacement string.
         */
        protected function str_replace_clause($type, $search, $replace)
        {
        }
        /**
         * Get the full SQL statement.
         *
         * @return string
         */
        public function get_query_statement()
        {
        }
        /**
         * Reinitialize the clause array.
         */
        public function clear_all_clauses()
        {
        }
    }
    /**
     * Common parent for custom report data stores.
     *
     * We use Report DataStores to separate DB data retrieval logic from the REST API controllers.
     *
     * Handles caching, data normalization, intervals-related methods, and other common functionality.
     * So, in your custom report DataStore class that extends this class
     * you can focus on specifics by overriding the `get_noncached_data` method.
     *
     * Minimalistic example:
     * <pre><code class="language-php">class MyDataStore extends DataStore implements DataStoreInterface {
     *     /** Cache identifier, used by the `DataStore` class to handle caching for you. &ast;/
     *     protected $cache_key = 'my_thing';
     *     /** Data store context used to pass to filters. &ast;/
     *     protected $context = 'my_thing';
     *     /** Table used to get the data. &ast;/
     *     protected static $table_name = 'my_table';
     *     /**
     *      * Method that overrides the `DataStore::get_noncached_data()` to return the report data.
     *      * Will be called by `get_data` if there is no data in cache.
     *      &ast;/
     *     public function get_noncached_data( $query ) {
     *         // Do your magic.
     *
     *         // Then return your data in conforming object structure.
     *         return (object) array(
     *             'data' => $product_data,
     *             'total' => 1,
     *             'page_no' => 1,
     *             'pages' => 1,
     *         );
     *     }
     * }
     * </code></pre>
     *
     * Please use the `woocommerce_data_stores` filter to add your custom data store to the list of available ones.
     * Then, your store could be accessed by Controller classes ({@see GenericController::get_datastore_data() GenericController::get_datastore_data()})
     * or using {@link \WC_Data_Store::load() \WC_Data_Store::load()}.
     *
     * We recommend registering using the REST base name of your Controller as the key, e.g.:
     * <pre><code class="language-php">add_filter( 'woocommerce_data_stores', function( $stores ) {
     *     $stores['reports/my-thing'] = 'MyExtension\Admin\Analytics\Rest_API\MyDataStore';
     * } );
     * </code></pre>
     * This way, `GenericController` will pick it up automatically.
     *
     * Note that this class is NOT {@link https://developer.woocommerce.com/docs/how-to-manage-woocommerce-data-stores/ a CRUD data store}.
     * It does not implement the {@see WC_Object_Data_Store_Interface WC_Object_Data_Store_Interface} nor extend WC_Data & WC_Data_Store_WP classes.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\SqlQuery implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Cache group for the reports.
         *
         * @var string
         */
        protected $cache_group = 'reports';
        /**
         * Time out for the cache.
         *
         * @var int
         */
        protected $cache_timeout = 3600;
        /**
         * Cache identifier.
         *
         * @var string
         */
        protected $cache_key = '';
        /**
         * Table used as a data store for this report.
         *
         * @var string
         */
        protected static $table_name = '';
        /**
         * Date field name.
         *
         * @var string
         */
        protected $date_column_name = 'date_created';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @var array
         */
        protected $column_types = array();
        /**
         * SQL columns to select in the db query.
         *
         * @var array
         */
        protected $report_columns = array();
        // @todo This does not really belong here, maybe factor out the comparison as separate class?
        /**
         * Order by property, used in the cmp function.
         *
         * @var string
         */
        private $order_by = '';
        /**
         * Order property, used in the cmp function.
         *
         * @var string
         */
        private $order = '';
        /**
         * Query limit parameters.
         *
         * @var array
         */
        private $limit_parameters = array();
        /**
         * Data store context used to pass to filters.
         *
         * @override SqlQuery
         *
         * @var string
         */
        protected $context = 'reports';
        /**
         * Subquery object for query nesting.
         *
         * @var SqlQuery
         */
        protected $subquery;
        /**
         * Totals query object.
         *
         * @var SqlQuery
         */
        protected $total_query;
        /**
         * Intervals query object.
         *
         * @var SqlQuery
         */
        protected $interval_query;
        /**
         * Refresh the cache for the current query when true.
         *
         * @var bool
         */
        protected $force_cache_refresh = false;
        /**
         * Include debugging information in the returned data when true.
         *
         * @var bool
         */
        protected $debug_cache = true;
        /**
         * Debugging information to include in the returned data.
         *
         * @var array
         */
        protected $debug_cache_data = array();
        /**
         * Class constructor.
         *
         * @override SqlQuery::__construct()
         */
        public function __construct()
        {
        }
        /**
         * Get the data based on args.
         *
         * Returns the report data based on parameters supplied by the user.
         * Fetches it from cache or returns `get_noncached_data` result.
         *
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error
         */
        public function get_data($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Get table name from database class.
         */
        public static function get_db_table_name()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Set table name from database class.
         */
        protected static function set_db_table_name()
        {
        }
        /**
         * Whether or not the report should use the caching layer.
         *
         * Provides an opportunity for plugins to prevent reports from using cache.
         *
         * @return boolean Whether or not to utilize caching.
         */
        protected function should_use_cache()
        {
        }
        /**
         * Returns string to be used as cache key for the data.
         *
         * @param array $params Query parameters.
         * @return string
         */
        protected function get_cache_key($params)
        {
        }
        /**
         * Wrapper around Cache::get().
         *
         * @param string $cache_key Cache key.
         * @return mixed
         */
        protected function get_cached_data($cache_key)
        {
        }
        /**
         * Wrapper around Cache::set().
         *
         * @param string $cache_key Cache key.
         * @param mixed  $value     New value.
         * @return bool
         */
        protected function set_cached_data($cache_key, $value)
        {
        }
        /**
         * Add cache debugging information to an enveloped API response.
         *
         * @param array             $envelope
         * @param \WP_REST_Response $response
         *
         * @return array
         */
        public function add_debug_cache_to_envelope($envelope, $response)
        {
        }
        /**
         * Compares two report data objects by pre-defined object property and ASC/DESC ordering.
         *
         * @param stdClass $a Object a.
         * @param stdClass $b Object b.
         * @return string
         */
        private function interval_cmp($a, $b)
        {
        }
        /**
         * Sorts intervals according to user's request.
         *
         * They are pre-sorted in SQL, but after adding gaps, they need to be sorted including the added ones.
         *
         * @param stdClass $data      Data object, must contain an array under $data->intervals.
         * @param string   $sort_by   Ordering property.
         * @param string   $direction DESC/ASC.
         */
        protected function sort_intervals(&$data, $sort_by, $direction)
        {
        }
        /**
         * Sorts array of arrays based on subarray key $sort_by.
         *
         * @param array  $arr       Array to sort.
         * @param string $sort_by   Ordering property.
         * @param string $direction DESC/ASC.
         */
        protected function sort_array(&$arr, $sort_by, $direction)
        {
        }
        /**
         * Fills in interval gaps from DB with 0-filled objects.
         *
         * @param array    $db_intervals   Array of all intervals present in the db.
         * @param DateTime $start_datetime Start date.
         * @param DateTime $end_datetime   End date.
         * @param string   $time_interval  Time interval, e.g. day, week, month.
         * @param stdClass $data           Data with SQL extracted intervals.
         * @return stdClass
         */
        protected function fill_in_missing_intervals($db_intervals, $start_datetime, $end_datetime, $time_interval, &$data)
        {
        }
        /**
         * Converts input datetime parameters to local timezone. If there are no inputs from the user in query_args,
         * uses default from $defaults.
         *
         * @param array $query_args Array of query arguments.
         * @param array $defaults Array of default values.
         */
        protected function normalize_timezones(&$query_args, $defaults)
        {
        }
        /**
         * Removes extra records from intervals so that only requested number of records get returned.
         *
         * @param stdClass $data           Data from whose intervals the records get removed.
         * @param int      $page_no        Offset requested by the user.
         * @param int      $items_per_page Number of records requested by the user.
         * @param int      $db_interval_count Database interval count.
         * @param int      $expected_interval_count Expected interval count on the output.
         * @param string   $order_by Order by field.
         * @param string   $order ASC or DESC.
         */
        protected function remove_extra_records(&$data, $page_no, $items_per_page, $db_interval_count, $expected_interval_count, $order_by, $order)
        {
        }
        /**
         * Returns expected number of items on the page in case of date ordering.
         *
         * @param int $expected_interval_count Expected number of intervals in total.
         * @param int $items_per_page          Number of items per page.
         * @param int $page_no                 Page number.
         *
         * @return float|int
         */
        protected function expected_intervals_on_page($expected_interval_count, $items_per_page, $page_no)
        {
        }
        /**
         * Returns true if there are any intervals that need to be filled in the response.
         *
         * @param int    $expected_interval_count Expected number of intervals in total.
         * @param int    $db_records              Total number of records for given period in the database.
         * @param int    $items_per_page          Number of items per page.
         * @param int    $page_no                 Page number.
         * @param string $order                   asc or desc.
         * @param string $order_by                Column by which the result will be sorted.
         * @param int    $intervals_count         Number of records for given (possibly shortened) time interval.
         *
         * @return bool
         */
        protected function intervals_missing($expected_interval_count, $db_records, $items_per_page, $page_no, $order, $order_by, $intervals_count)
        {
        }
        /**
         * Updates the LIMIT query part for Intervals query of the report.
         *
         * If there are less records in the database than time intervals, then we need to remap offset in SQL query
         * to fetch correct records.
         *
         * @param array  $query_args Query arguments.
         * @param int    $db_interval_count Database interval count.
         * @param int    $expected_interval_count Expected interval count on the output.
         * @param string $table_name Name of the db table relevant for the date constraint.
         */
        protected function update_intervals_sql_params(&$query_args, $db_interval_count, $expected_interval_count, $table_name)
        {
        }
        /**
         * Casts strings returned from the database to appropriate data types for output.
         *
         * @param array $array Associative array of values extracted from the database.
         * @return array|WP_Error
         */
        protected function cast_numbers($array)
        {
        }
        /**
         * Returns a list of columns selected by the query_args formatted as a comma separated string.
         *
         * @param array $query_args User-supplied options.
         * @return string
         */
        protected function selected_columns($query_args)
        {
        }
        /**
         * Get the excluded order statuses used when calculating reports.
         *
         * @return array
         */
        protected static function get_excluded_report_order_statuses()
        {
        }
        /**
         * Maps order status provided by the user to the one used in the database.
         *
         * @param string $status Order status.
         * @return string
         */
        protected static function normalize_order_status($status)
        {
        }
        /**
         * Normalizes order_by clause to match to SQL query.
         *
         * @param string $order_by Order by option requested by user.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Updates start and end dates for intervals so that they represent intervals' borders, not times when data in db were recorded.
         *
         * E.g. if there are db records for only Tuesday and Thursday this week, the actual week interval is [Mon, Sun], not [Tue, Thu].
         *
         * @param DateTime $start_datetime Start date.
         * @param DateTime $end_datetime End date.
         * @param string   $time_interval Time interval, e.g. day, week, month.
         * @param array    $intervals Array of intervals extracted from SQL db.
         */
        protected function update_interval_boundary_dates($start_datetime, $end_datetime, $time_interval, &$intervals)
        {
        }
        /**
         * Change structure of intervals to form a correct response.
         *
         * Also converts local datetimes to GMT and adds them to the intervals.
         *
         * @param array $intervals Time interval, e.g. day, week, month.
         */
        protected function create_interval_subtotals(&$intervals)
        {
        }
        /**
         * Fills WHERE clause of SQL request with date-related constraints.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $table_name Name of the db table relevant for the date constraint.
         */
        protected function add_time_period_sql_params($query_args, $table_name)
        {
        }
        /**
         * Fills LIMIT clause of SQL request based on user supplied parameters.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_limit_sql_params($query_args)
        {
        }
        /**
         * Fills LIMIT parameters of SQL request based on user supplied parameters.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_limit_params($query_args = array())
        {
        }
        /**
         * Generates a virtual table given a list of IDs.
         *
         * @param array $ids          Array of IDs.
         * @param array $id_field     Name of the ID field.
         * @param array $other_values Other values that must be contained in the virtual table.
         * @return array
         */
        protected function get_ids_table($ids, $id_field, $other_values = array())
        {
        }
        /**
         * Returns a comma separated list of the fields in the `query_args`, if there aren't, returns `report_columns` keys.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_fields($query_args)
        {
        }
        /**
         * Returns a comma separated list of the field names prepared to be used for a selection after a join with `default_results`.
         *
         * @param array $fields                 Array of fields name.
         * @param array $default_results_fields Fields to load from `default_results` table.
         * @param array $outer_selections       Array of fields that are not selected in the inner query.
         * @return string
         */
        protected function format_join_selections($fields, $default_results_fields, $outer_selections = array())
        {
        }
        /**
         * Fills ORDER BY clause of SQL request based on user supplied parameters.
         *
         * @param array $query_args Parameters supplied by the user.
         */
        protected function add_order_by_sql_params($query_args)
        {
        }
        /**
         * Fills FROM and WHERE clauses of SQL request for 'Intervals' section of data response based on user supplied parameters.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $table_name Name of the db table relevant for the date constraint.
         */
        protected function add_intervals_sql_params($query_args, $table_name)
        {
        }
        /**
         * Get join and where clauses for refunds based on user supplied parameters.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_refund_subquery($query_args)
        {
        }
        /**
         * Returns an array of products belonging to given categories.
         *
         * @param array $categories List of categories IDs.
         * @return array|stdClass
         */
        protected function get_products_by_cat_ids($categories)
        {
        }
        /**
         * Get WHERE filter by object ids subquery.
         *
         * @param string $select_table Select table name.
         * @param string $select_field Select table object ID field name.
         * @param string $filter_table Lookup table name.
         * @param string $filter_field Lookup table object ID field name.
         * @param string $compare      Comparison string (IN|NOT IN).
         * @param string $id_list      Comma separated ID list.
         *
         * @return string
         */
        protected function get_object_where_filter($select_table, $select_field, $filter_table, $filter_field, $compare, $id_list)
        {
        }
        /**
         * Returns an array of ids of allowed products, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_included_products_array($query_args)
        {
        }
        /**
         * Returns comma separated ids of allowed products, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_products($query_args)
        {
        }
        /**
         * Returns comma separated ids of allowed variations, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_variations($query_args)
        {
        }
        /**
         * Returns comma separated ids of excluded variations, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_variations($query_args)
        {
        }
        /**
         * Returns an array of ids of disallowed products, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_excluded_products_array($query_args)
        {
        }
        /**
         * Returns comma separated ids of excluded products, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_products($query_args)
        {
        }
        /**
         * Returns comma separated ids of included categories, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_categories($query_args)
        {
        }
        /**
         * Returns comma separated ids of included coupons, based on query arguments from the user.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $field      Field name in the parameter list.
         * @return string
         */
        protected function get_included_coupons($query_args, $field = 'coupon_includes')
        {
        }
        /**
         * Returns comma separated ids of excluded coupons, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_coupons($query_args)
        {
        }
        /**
         * Returns comma separated ids of included orders, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_orders($query_args)
        {
        }
        /**
         * Returns comma separated ids of excluded orders, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_orders($query_args)
        {
        }
        /**
         * Returns comma separated ids of included users, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_users($query_args)
        {
        }
        /**
         * Returns comma separated ids of excluded users, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_users($query_args)
        {
        }
        /**
         * Returns order status subquery to be used in WHERE SQL query, based on query arguments from the user.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $operator   AND or OR, based on match query argument.
         * @return string
         */
        protected function get_status_subquery($query_args, $operator = 'AND')
        {
        }
        /**
         * Add order status SQL clauses if included in query.
         *
         * @param array    $query_args Parameters supplied by the user.
         * @param string   $table_name Database table name.
         * @param SqlQuery $sql_query  Query object.
         */
        protected function add_order_status_clause($query_args, $table_name, &$sql_query)
        {
        }
        /**
         * Add order by SQL clause if included in query.
         *
         * @param array    $query_args Parameters supplied by the user.
         * @param SqlQuery $sql_query  Query object.
         * @return string Order by clause.
         */
        protected function add_order_by_clause($query_args, &$sql_query)
        {
        }
        /**
         * Add order by order SQL clause.
         *
         * @param array    $query_args Parameters supplied by the user.
         * @param SqlQuery $sql_query  Query object.
         */
        protected function add_orderby_order_clause($query_args, &$sql_query)
        {
        }
        /**
         * Returns customer subquery to be used in WHERE SQL query, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_customer_subquery($query_args)
        {
        }
        /**
         * Returns product attribute subquery elements used in JOIN and WHERE clauses,
         * based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_attribute_subqueries($query_args)
        {
        }
        /**
         * Returns logic operator for WHERE subclause based on 'match' query argument.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_match_operator($query_args)
        {
        }
        /**
         * Returns filtered comma separated ids, based on query arguments from the user.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $field      Query field to filter.
         * @param string $separator  Field separator.
         * @return string
         */
        protected function get_filtered_ids($query_args, $field, $separator = ',')
        {
        }
        /**
         * Assign report columns once full table name has been assigned.
         */
        protected function assign_report_columns()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Categories {
    /**
     * API\Reports\Categories\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_product_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'categories';
        /**
         * Order by setting used for sorting categories data.
         *
         * @var string
         */
        private $order_by = '';
        /**
         * Order setting used for sorting categories data.
         *
         * @var string
         */
        private $order = '';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('category_id' => 'intval', 'items_sold' => 'intval', 'net_revenue' => 'floatval', 'orders_count' => 'intval', 'products_count' => 'intval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'categories';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Return the database query with parameters used for Categories report: time span and order status.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Fills ORDER BY clause of SQL request based on user supplied parameters.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $from_arg   Target of the JOIN sql param.
         * @param string $id_cell    ID cell identifier, like `table_name.id_column_name`.
         */
        protected function add_order_by_params($query_args, $from_arg, $id_cell)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Returns an array of ids of included categories, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_included_categories_array($query_args)
        {
        }
        /**
         * Returns the page of data according to page number and items per page.
         *
         * @param array   $data           Data to paginate.
         * @param integer $page_no        Page number.
         * @param integer $items_per_page Number of items per page.
         * @return array
         */
        protected function page_records($data, $page_no, $items_per_page)
        {
        }
        /**
         * Enriches the category data.
         *
         * @param array $categories_data Categories data.
         * @param array $query_args  Query parameters.
         */
        protected function include_extended_info(&$categories_data, $query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @see get_data
         * @override ReportsDataStore::get_noncached_data()
         *
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Initialize query objects.
         *
         * @override ReportsDataStore::initialize_queries()
         */
        protected function initialize_queries()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Admin\API\Reports\Query
     *
     * @deprecated 9.3.0 Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    abstract class Query extends \WC_Object_Query
    {
        /**
         * Create a new query.
         *
         * @deprecated 9.3.0 Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @param array $args Criteria to query on in a format similar to WP_Query.
         */
        public function __construct($args = array())
        {
        }
        /**
         * Get report data matching the current query vars.
         *
         * @deprecated 9.3.0 Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array|object of WC_Product objects
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Categories {
    /**
     * API\Reports\Categories\Query
     *
     * @deprecated 9.3.0 Categories\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        const REPORT_NAME = 'report-categories';
        /**
         * Valid fields for Categories report.
         *
         * @deprecated 9.3.0 Categories\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get categories data based on the current query vars.
         *
         * @deprecated 9.3.0 Categories\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Reports controller class.
     *
     * Controller that handles the endpoint that returns all available analytics endpoints.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController
    {
        use \Automattic\WooCommerce\Admin\API\Reports\OrderAwareControllerTrait;
        /**
         * Get all reports.
         *
         * @param WP_REST_Request $request Request data.
         * @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
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @override WP_REST_Controller::get_item_schema()
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Coupons {
    /**
     * REST API Reports coupons controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/coupons';
        /**
         * Get data from `'coupons'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array            $report  Report data item as returned from Data Store.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Reports_Query $object Object data.
         * @return array
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
    /**
     * API\Reports\Coupons\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_coupon_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'coupons';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('coupon_id' => 'intval', 'amount' => 'floatval', 'orders_count' => 'intval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'coupons';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        // This method was already available as non-final, marking it as final now would make it backwards-incompatible.
        // phpcs:disable WooCommerce.Functions.InternalInjectionMethod.MissingFinal
        /**
         * Set up all the hooks for maintaining and populating table data.
         *
         * @internal
         */
        public static function init()
        {
        }
        // phpcs:enable WooCommerce.Functions.InternalInjectionMethod.MissingFinal
        /**
         * Returns an array of ids of included coupons, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return array
         */
        protected function get_included_coupons_array($query_args)
        {
        }
        /**
         * Updates the database query with parameters used for Products report: categories and order status.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Fills ORDER BY clause of SQL request based on user supplied parameters.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $from_arg   Target of the JOIN sql param.
         * @param string $id_cell    ID cell identifier, like `table_name.id_column_name`.
         */
        protected function add_order_by_params($query_args, $from_arg, $id_cell)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Enriches the coupon data with extra attributes.
         *
         * @param array $coupon_data Coupon data.
         * @param array $query_args Query parameters.
         */
        protected function include_extended_info(&$coupon_data, $query_args)
        {
        }
        /**
         * Get coupon ID for an order.
         *
         * Tries to get the ID from order item meta, then falls back to a query of published coupons.
         *
         * @param \WC_Order_Item_Coupon $coupon_item The coupon order item object.
         * @return int Coupon ID on success, 0 on failure.
         */
        public static function get_coupon_id(\WC_Order_Item_Coupon $coupon_item)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Create or update an an entry in the wc_order_coupon_lookup table for an order.
         *
         * @since 3.5.0
         * @param int $order_id Order ID.
         * @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
         */
        public static function sync_order_coupons($order_id)
        {
        }
        /**
         * Clean coupons data when an order is deleted.
         *
         * @param int $order_id Order ID.
         */
        public static function sync_on_order_delete($order_id)
        {
        }
        /**
         * Gets coupons based on the provided arguments.
         *
         * @todo Upon core merge, including this in core's `class-wc-coupon-data-store-cpt.php` might make more sense.
         * @param array $args Array of args to filter the query by. Supports `include`.
         * @return array Array of results.
         */
        public function get_coupons($args)
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
    /**
     * API\Reports\Coupons\Query
     *
     * @deprecated 9.3.0 Coupons\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Products report.
         *
         * @deprecated 9.3.0 Coupons\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Coupons\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Generic base for all stats controllers.
     *
     * {@see GenericController Generic Controller} extended to be shared as a generic base for all Analytics stats controllers.
     *
     * Besides the `GenericController` functionality, it adds conventional stats-specific collection params and item schema.
     * So, you may want to extend only your report-specific {@see get_item_properties_schema() get_item_properties_schema()}`.
     * It also uses the stats-specific {@see get_items() get_items()} method,
     * which packs report data into `totals` and `intervals`.
     *
     *
     * Minimalistic example:
     * <pre><code class="language-php">class StatsController extends GenericStatsController {
     *     /** Route of your new REST endpoint. &ast;/
     *     protected $rest_base = 'reports/my-thing/stats';
     *     /** Define your proeprties schema. &ast;/
     *     protected function get_item_properties_schema() {
     *         return array(
     *             'my_property' => array(
     *                 'title'       => __( 'My property', 'my-extension' ),
     *                 'type'        => 'integer',
     *                 'readonly'    => true,
     *                 'context'     => array( 'view', 'edit' ),
     *                 'description' => __( 'Amazing thing.', 'my-extension' ),
     *                 'indicator'    => true,
     *              ),
     *         );
     *     }
     *     /** Define overall schema. You can use the defaults,
     *      * just remember to provide your title and call `add_additional_fields_schema`
     *      * to run the filters
     *      &ast;/
     *     public function get_item_schema() {
     *         $schema          = parent::get_item_schema();
     *         $schema['title'] = 'report_my_thing_stats';
     *
     *        return $this->add_additional_fields_schema( $schema );
     *     }
     * }
     * </code></pre>
     *
     * @extends GenericController
     */
    abstract class GenericStatsController extends \Automattic\WooCommerce\Admin\API\Reports\GenericController
    {
        /**
         * Get the query params definition for collections.
         * Adds `fields` & `intervals` to the generic list.
         *
         * @override GenericController::get_collection_params()
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get the report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected abstract function get_item_properties_schema();
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * Please note that it does not call add_additional_fields_schema,
         * as you may want to update the `title` first.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the report data.
         *
         * Prepares query params, fetches the report data from the data store,
         * prepares it for the response, and packs it into the convention-conforming response object.
         *
         * @override GenericController::get_items()
         *
         * @throws \WP_Error When the queried data is invalid.
         * @param \WP_REST_Request $request Request data.
         * @return \WP_REST_Response|\WP_Error
         */
        public function get_items($request)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Coupons\Stats {
    /**
     * REST API Reports coupons stats controller class.
     *
     * @internal
     * @extends GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/coupons/stats';
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get data from `'coupons-stats'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param mixed           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * 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()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Trait to contain *stats-specific methods for data stores.
     *
     * It does preliminary intervals & page calculations
     * and prepares intervals & totals data structure by implementing the `get_noncached_data()` method.
     * So, this time, you'll need to prepare `get_noncached_stats_data()` which will be called only if
     * the requested page is within the date range.
     *
     * The trait also exposes the `initialize_queries()` method to initialize the interval and total queries.
     *
     * Example:
     * <pre><code class="language-php">class MyStatsDataStore extends DataStore implements DataStoreInterface {
     *     // Use the trait.
     *     use StatsDataStoreTrait;
     *     // Provide all the necessary properties and methods for a regular DataStore.
     *     // ...
     *     /**
     *      * Return your results with the help of the interval & total methods and queries.
     *      * @return stdClass|WP_Error $data filled with your results.
     *      &ast;/
     *     public function get_noncached_stats_data( $query_args, $params, &$data, $expected_interval_count ) {
     *         $this->initialize_queries();
     *         // Do your magic ...
     *         // ... with a help of things like:
     *         $this->update_intervals_sql_params( $query_args, $db_interval_count, $expected_interval_count, $table_name );
     *         $this->total_query->add_sql_clause( 'where_time', $this->get_sql_clause( 'where_time' ) );
     *
     *         $totals = $wpdb->get_results(
     *             $this->total_query->get_query_statement(),
     *             ARRAY_A
     *         );
     *
     *         $intervals = $wpdb->get_results(
     *             $this->interval_query->get_query_statement(),
     *             ARRAY_A
     *         );
     *
     *         $data->totals    = (object) $this->cast_numbers( $totals[0] );
     *         $data->intervals = $intervals;
     *
     *         if ( TimeInterval::intervals_missing( $expected_interval_count, $db_interval_count, $params['per_page'], $query_args['page'], $query_args['order'], $query_args['orderby'], count( $intervals ) ) ) {
     *             $this->fill_in_missing_intervals( $db_intervals, $query_args['adj_after'], $query_args['adj_before'], $query_args['interval'], $data );
     *             $this->sort_intervals( $data, $query_args['orderby'], $query_args['order'] );
     *             $this->remove_extra_records( $data, $query_args['page'], $params['per_page'], $db_interval_count, $expected_interval_count, $query_args['orderby'], $query_args['order'] );
     *         } else {
     *             $this->update_interval_boundary_dates( $query_args['after'], $query_args['before'], $query_args['interval'], $data->intervals );
     *         }
     *
     *         return $data;
     *    }
     * }
     * </code></pre>
     *
     * @see DataStore
     */
    trait StatsDataStoreTrait
    {
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
        /**
         * Returns the stats report data based on normalized parameters.
         * Prepares the basic intervals and object structure
         * Will be called by `get_data` if there is no data in cache.
         * Will call `get_noncached_stats_data` to fetch the actual data.
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Coupons\Stats {
    /**
     * API\Reports\Coupons\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\Coupons\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\StatsDataStoreTrait;
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override CouponsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('date_start' => 'strval', 'date_end' => 'strval', 'date_start_gmt' => 'strval', 'date_end_gmt' => 'strval', 'amount' => 'floatval', 'coupons_count' => 'intval', 'orders_count' => 'intval');
        /**
         * SQL columns to select in the db query.
         *
         * @override CouponsDataStore::$report_columns
         *
         * @var array
         */
        protected $report_columns;
        /**
         * Data store context used to pass to filters.
         *
         * @override CouponsDataStore::$context
         *
         * @var string
         */
        protected $context = 'coupons_stats';
        /**
         * Cache identifier.
         *
         * @override CouponsDataStore::get_default_query_vars()
         *
         * @var string
         */
        protected $cache_key = 'coupons_stats';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override CouponsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Updates the database query with parameters used for Products Stats report: categories and order status.
         *
         * @param array $query_args       Query arguments supplied by the user.
         */
        protected function update_sql_query_params($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override CouponsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override CouponsDataStore::get_noncached_stats_data()
         *
         * @see get_data
         * @see get_noncached_stats_data
         * @param array    $query_args Query parameters.
         * @param array    $params            Query limit parameters.
         * @param stdClass $data                    Reference to the data object to fill.
         * @param int      $expected_interval_count Number of expected intervals.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_stats_data($query_args, $params, &$data, $expected_interval_count)
        {
        }
    }
    /**
     * API\Reports\Coupons\Stats\Query
     *
     * @deprecated 9.3.0 Coupons\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Products report.
         *
         * @deprecated 9.3.0 Coupons\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Coupons\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class Segmenter
    {
        /**
         * Array of all segment ids.
         *
         * @var array|bool
         */
        protected $all_segment_ids = false;
        /**
         * Array of all segment labels.
         *
         * @var array
         */
        protected $segment_labels = array();
        /**
         * Query arguments supplied by the user for data store.
         *
         * @var array
         */
        protected $query_args = '';
        /**
         * SQL definition for each column.
         *
         * @var array
         */
        protected $report_columns = array();
        /**
         * Constructor.
         *
         * @param array $query_args Query arguments supplied by the user for data store.
         * @param array $report_columns Report columns lookup from data store.
         */
        public function __construct($query_args, $report_columns)
        {
        }
        /**
         * Filters definitions for SELECT clauses based on query_args and joins them into one string usable in SELECT clause.
         *
         * @param array $columns_mapping Column name -> SQL statememt mapping.
         *
         * @return string to be used in SELECT clause statements.
         */
        protected function prepare_selections($columns_mapping)
        {
        }
        /**
         * Update row-level db result for segments in 'totals' section to the format used for output.
         *
         * @param array  $segments_db_result Results from the SQL db query for segmenting.
         * @param string $segment_dimension Name of column used for grouping the result.
         *
         * @return array Reformatted array.
         */
        protected function reformat_totals_segments($segments_db_result, $segment_dimension)
        {
        }
        /**
         * Merges segmented results for totals response part.
         *
         * E.g. $r1 = array(
         *     0 => array(
         *          'product_id' => 3,
         *          'net_amount' => 15,
         *     ),
         * );
         * $r2 = array(
         *     0 => array(
         *          'product_id'      => 3,
         *          'avg_order_value' => 25,
         *     ),
         * );
         *
         * $merged = array(
         *     3 => array(
         *          'segment_id' => 3,
         *          'subtotals'  => array(
         *              'net_amount'      => 15,
         *              'avg_order_value' => 25,
         *          )
         *     ),
         * );
         *
         * @param string $segment_dimension Name of the segment dimension=key in the result arrays used to match records from result sets.
         * @param array  $result1 Array 1 of segmented figures.
         * @param array  $result2 Array 2 of segmented figures.
         *
         * @return array
         */
        protected function merge_segment_totals_results($segment_dimension, $result1, $result2)
        {
        }
        /**
         * Merges segmented results for intervals response part.
         *
         * E.g. $r1 = array(
         *     0 => array(
         *          'product_id'    => 3,
         *          'time_interval' => '2018-12'
         *          'net_amount'    => 15,
         *     ),
         * );
         * $r2 = array(
         *     0 => array(
         *          'product_id'      => 3,
         *          'time_interval' => '2018-12'
         *          'avg_order_value' => 25,
         *     ),
         * );
         *
         * $merged = array(
         *     '2018-12' => array(
         *          'segments' => array(
         *              3 => array(
         *                  'segment_id' => 3,
         *                  'subtotals'  => array(
         *                      'net_amount'      => 15,
         *                      'avg_order_value' => 25,
         *                  ),
         *              ),
         *          ),
         *     ),
         * );
         *
         * @param string $segment_dimension Name of the segment dimension=key in the result arrays used to match records from result sets.
         * @param array  $result1 Array 1 of segmented figures.
         * @param array  $result2 Array 2 of segmented figures.
         *
         * @return array
         */
        protected function merge_segment_intervals_results($segment_dimension, $result1, $result2)
        {
        }
        /**
         * Update row-level db result for segments in 'intervals' section to the format used for output.
         *
         * @param array  $segments_db_result Results from the SQL db query for segmenting.
         * @param string $segment_dimension Name of column used for grouping the result.
         *
         * @return array Reformatted array.
         */
        protected function reformat_intervals_segments($segments_db_result, $segment_dimension)
        {
        }
        /**
         * Fetches all segment ids from db and stores it for later use.
         *
         * @return void
         */
        protected function set_all_segments()
        {
        }
        /**
         * Return all segment ids for given segmentby query parameter.
         *
         * @return array
         */
        protected function get_all_segments()
        {
        }
        /**
         * Return all segment labels for given segmentby query parameter.
         *
         * @return array
         */
        protected function get_segment_labels()
        {
        }
        /**
         * Compares two report data objects by pre-defined object property and ASC/DESC ordering.
         *
         * @param stdClass $a Object a.
         * @param stdClass $b Object b.
         * @return string
         */
        private function segment_cmp($a, $b)
        {
        }
        /**
         * Adds zeroes for segments not present in the data selection.
         *
         * @param array $segments Array of segments from the database for given data points.
         *
         * @return array
         */
        protected function fill_in_missing_segments($segments)
        {
        }
        /**
         * Adds missing segments to intervals, modifies $data.
         *
         * @param stdClass $data Response data.
         */
        protected function fill_in_missing_interval_segments(&$data)
        {
        }
        /**
         * Calculate segments for totals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for totals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_totals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $totals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for intervals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_intervals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $intervals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for totals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_totals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $totals_query)
        {
        }
        /**
         * Calculate segments for intervals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_intervals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $intervals_query)
        {
        }
        /**
         * Return array of segments formatted for REST response.
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $query_params SQL query parameter array.
         * @param string $table_name Name of main SQL table for the data store (used as basis for JOINS).
         *
         * @return array
         */
        protected function get_segments($type, $query_params, $table_name)
        {
        }
        /**
         * Calculate segments for segmenting property bound to product (e.g. category, product_id, variation_id).
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $query_params Array of SQL clauses for intervals/totals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_segments($type, $segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $query_params, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for segmenting property bound to order (e.g. coupon or customer type).
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $query_params Array of SQL clauses for intervals/totals query.
         *
         * @return array
         */
        protected function get_order_related_segments($type, $segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $query_params)
        {
        }
        /**
         * Assign segments to time intervals by updating original $intervals array.
         *
         * @param array $intervals Result array from intervals SQL query.
         * @param array $intervals_segments Result array from interval segments SQL query.
         */
        protected function assign_segments_to_intervals(&$intervals, $intervals_segments)
        {
        }
        /**
         * Returns an array of segments for totals part of REST response.
         *
         * @param array  $query_params Totals SQL query parameters.
         * @param string $table_name Name of the SQL table that is the main order stats table.
         *
         * @return array
         */
        public function get_totals_segments($query_params, $table_name)
        {
        }
        /**
         * Adds an array of segments to data->intervals object.
         *
         * @param stdClass $data Data object representing the REST response.
         * @param array    $intervals_query Intervals SQL query parameters.
         * @param string   $table_name Name of the SQL table that is the main order stats table.
         */
        public function add_intervals_segments(&$data, $intervals_query, $table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Coupons\Stats {
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class Segmenter extends \Automattic\WooCommerce\Admin\API\Reports\Segmenter
    {
        /**
         * Returns column => query mapping to be used for product-related product-level segmenting query
         * (e.g. coupon discount amount for product X when segmenting by product id or category).
         *
         * @param string $products_table Name of SQL table containing the product-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_product_level($products_table)
        {
        }
        /**
         * Returns column => query mapping to be used for order-related product-level segmenting query
         * (e.g. orders_count when segmented by category).
         *
         * @param string $coupons_lookup_table Name of SQL table containing the order-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_order_level($coupons_lookup_table)
        {
        }
        /**
         * Returns column => query mapping to be used for order-level segmenting query
         * (e.g. discount amount when segmented by coupons).
         *
         * @param string $coupons_lookup_table Name of SQL table containing the order-level info.
         * @param array  $overrides Array of overrides for default column calculations.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function segment_selections_orders($coupons_lookup_table, $overrides = array())
        {
        }
        /**
         * Calculate segments for totals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for totals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_totals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $totals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for intervals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_intervals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $intervals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for totals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_totals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $totals_query)
        {
        }
        /**
         * Calculate segments for intervals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_intervals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $intervals_query)
        {
        }
        /**
         * Return array of segments formatted for REST response.
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $query_params SQL query parameter array.
         * @param string $table_name Name of main SQL table for the data store (used as basis for JOINS).
         *
         * @return array
         * @throws \Automattic\WooCommerce\Admin\API\Reports\ParameterException In case of segmenting by variations, when no parent product is specified.
         */
        protected function get_segments($type, $query_params, $table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Customers {
    /**
     * Admin\API\Reports\Customers\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_customer_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'customers';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('id' => 'intval', 'user_id' => 'intval', 'orders_count' => 'intval', 'total_spend' => 'floatval', 'avg_order_value' => 'floatval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'customers';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Set up all the hooks for maintaining and populating table data.
         */
        public static function init()
        {
        }
        /**
         * Sync customers data after an order was deleted.
         *
         * When an order is deleted, the customer record is deleted from the
         * table if the customer has no other orders.
         *
         * @param int $order_id Order ID.
         * @param int $customer_id Customer ID.
         */
        public static function sync_on_order_delete($order_id, $customer_id)
        {
        }
        /**
         * Sync customers data after an order was updated.
         *
         * Only updates customer if it is the customers last order.
         *
         * @param int $post_id of order.
         * @return true|-1
         */
        public static function sync_order_customer($post_id)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Fills WHERE clause of SQL request with date-related constraints.
         *
         * @override ReportsDataStore::add_time_period_sql_params()
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $table_name Name of the db table relevant for the date constraint.
         */
        protected function add_time_period_sql_params($query_args, $table_name)
        {
        }
        /**
         * Updates the database query with parameters used for Customers report: categories and order status.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns an existing customer ID for an order if one exists.
         *
         * @param object $order WC Order.
         * @return int|bool
         */
        public static function get_existing_customer_id_from_order($order)
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Get or create a customer from a given order.
         *
         * @param object $order WC Order.
         * @return int|bool
         */
        public static function get_or_create_customer_from_order($order)
        {
        }
        /**
         * Returns a data object and format object of the customers data coming from the order.
         *
         * @param object      $order         WC_Order where we get customer info from.
         * @param object|null $customer_user WC_Customer registered customer WP user.
         * @return array ($data, $format)
         */
        public static function get_customer_order_data_and_format($order, $customer_user = null)
        {
        }
        /**
         * Retrieve a guest ID (when user_id is null) by email.
         *
         * @param string $email Email address.
         * @return false|array Customer array if found, boolean false if not.
         */
        public static function get_guest_id_by_email($email)
        {
        }
        /**
         * Retrieve a registered customer row id by user_id.
         *
         * @param string|int $user_id User ID.
         * @return false|int Customer ID if found, boolean false if not.
         */
        public static function get_customer_id_by_user_id($user_id)
        {
        }
        /**
         * Retrieve the last order made by a customer.
         *
         * @param int $customer_id Customer ID.
         * @return object WC_Order|false.
         */
        public static function get_last_order($customer_id)
        {
        }
        /**
         * Retrieve the oldest orders made by a customer.
         *
         * @param int $customer_id Customer ID.
         * @return array Orders.
         */
        public static function get_oldest_orders($customer_id)
        {
        }
        /**
         * Retrieve the amount of orders made by a customer.
         *
         * @param int $customer_id Customer ID.
         * @return int|null Amount of orders for customer or null on failure.
         */
        public static function get_order_count($customer_id)
        {
        }
        /**
         * Update the database with customer data.
         *
         * @param int $user_id WP User ID to update customer data for.
         * @return int|bool|null Number or rows modified or false on failure.
         */
        public static function update_registered_customer($user_id)
        {
        }
        /**
         * Update the database if the "last active" meta value was changed.
         * Function expects to be hooked into the `added_user_meta` and `updated_user_meta` actions.
         *
         * @param int    $meta_id ID of updated metadata entry.
         * @param int    $user_id ID of the user being updated.
         * @param string $meta_key Meta key being updated.
         */
        public static function update_registered_customer_via_last_active($meta_id, $user_id, $meta_key)
        {
        }
        /**
         * Check if a user ID is a valid customer or other user role with past orders.
         *
         * @param int $user_id User ID.
         * @return bool
         */
        protected static function is_valid_customer($user_id)
        {
        }
        /**
         * Delete a customer lookup row.
         *
         * @param int $customer_id Customer ID.
         */
        public static function delete_customer($customer_id)
        {
        }
        /**
         * Delete a customer lookup row by WordPress User ID.
         *
         * @param int $user_id WordPress User ID.
         */
        public static function delete_customer_by_user_id($user_id)
        {
        }
        /**
         * Anonymize the customer data for a single order.
         *
         * @internal
         * @param int|WC_Order $order Order instance or ID.
         * @return void
         */
        public static function anonymize_customer($order)
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * A generic class for a report-specific query to be used in Analytics.
     *
     * Example usage:
     * <pre><code class="language-php">$args = array(
     *          'before'    => '2018-07-19 00:00:00',
     *          'after'     => '2018-07-05 00:00:00',
     *          'page'      => 2,
     *         );
     * $report = new GenericQuery( $args, 'coupons' );
     * $mydata = $report->get_data();
     * </code></pre>
     *
     * It uses the name provided in the class property or in the constructor call to load the `report-{name}` data store.
     *
     * It's used by the {@see GenericController GenericController}.
     *
     * @since 9.3.0
     */
    class GenericQuery extends \WC_Object_Query
    {
        /**
         * Specific query name.
         * Will be used to load the `report-{name}` data store,
         * and to call `woocommerce_analytics_{snake_case(name)}_*` filters.
         *
         * @var string
         */
        protected $name;
        /**
         * Create a new query.
         *
         * @param array  $args Criteria to query on in a format similar to WP_Query.
         * @param string $name Query name.
         * @extends WC_Object_Query::_construct
         */
        public function __construct($args, $name = null)
        {
        }
        /**
         * Valid fields for Products report.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get data from `report-{$name}` store, based on the current query vars.
         * Filters query vars through `woocommerce_analytics_{snake_case(name)}_query_args` filter.
         * Filters results through `woocommerce_analytics_{snake_case(name)}_select_query` filter.
         *
         * @return mixed filtered results from the data store.
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Customers {
    /**
     * API\Reports\Customers\Query
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\GenericQuery
    {
        /**
         * Specific query name.
         * Will be used to load the `report-{name}` data store,
         * and to call `woocommerce_analytics_{snake_case(name)}_*` filters.
         *
         * @var string
         */
        protected $name = 'customers';
        /**
         * Valid fields for Customers report.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Customers\Stats {
    /**
     * REST API Reports customers stats controller class.
     *
     * @internal
     * @extends WC_REST_Reports_Controller
     */
    class Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/customers/stats';
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get all reports.
         *
         * @param WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array            $report  Report data item as returned from Data Store.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        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()
        {
        }
    }
    /**
     * API\Reports\Customers\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\Customers\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override CustomersDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('customers_count' => 'intval', 'avg_orders_count' => 'floatval', 'avg_total_spend' => 'floatval', 'avg_avg_order_value' => 'floatval');
        /**
         * Cache identifier.
         *
         * @override CustomersDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'customers_stats';
        /**
         * Data store context used to pass to filters.
         *
         * @override CustomersDataStore::$context
         *
         * @var string
         */
        protected $context = 'customers_stats';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override CustomersDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override CustomersDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override CustomersDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
    }
    /**
     * API\Reports\Customers\Stats\Query
     *
     * @deprecated 9.3.0 Customers\Stats\Query class is deprecated, please use `Reports\Customers\Query` with a custom name, `GenericQuery`, `\WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Customers report.
         *
         * @deprecated 9.3.0 Customers\Stats\Query class is deprecated, please use `Reports\Customers\Query` with a custom name, `GenericQuery`, `\WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Customers\Stats\Query class is deprecated, please use `Reports\Customers\Query` with a custom name, `GenericQuery`, `\WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Downloads {
    /**
     * REST API Reports downloads controller class.
     *
     * @internal
     * @extends Automattic\WooCommerce\Admin\API\Reports\GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\OrderAwareControllerTrait;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/downloads';
        /**
         * Get data from `'downloads'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param Array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param Array $object Object data.
         * @return array        Links for the given post.
         */
        protected function prepare_links($object)
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
    /**
     * API\Reports\Downloads\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_download_log';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'downloads';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array(
            'id' => 'intval',
            'date' => 'strval',
            'date_gmt' => 'strval',
            'download_id' => 'strval',
            // String because this can sometimes be a hash.
            'file_name' => 'strval',
            'product_id' => 'intval',
            'order_id' => 'intval',
            'user_id' => 'intval',
            'ip_address' => 'strval',
        );
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'downloads';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Updates the database query with parameters used for downloads report.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Returns comma separated ids of included ip address, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_ip_addresses($query_args)
        {
        }
        /**
         * Returns comma separated ids of excluded ip address, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_ip_addresses($query_args)
        {
        }
        /**
         * Returns filtered comma separated ids, based on query arguments from the user.
         *
         * @param array  $query_args  Parameters supplied by the user.
         * @param string $field       Query field to filter.
         * @return string
         */
        protected function get_filtered_ip_addresses($query_args, $field)
        {
        }
        /**
         * Returns comma separated ids of included customers, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_included_customers($query_args)
        {
        }
        /**
         * Returns comma separated ids of excluded customers, based on query arguments from the user.
         *
         * @param array $query_args Parameters supplied by the user.
         * @return string
         */
        protected function get_excluded_customers($query_args)
        {
        }
        /**
         * Gets WHERE time clause of SQL request with date-related constraints.
         *
         * @override ReportsDataStore::add_time_period_sql_params()
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $table_name Name of the db table relevant for the date constraint.
         * @return string
         */
        protected function add_time_period_sql_params($query_args, $table_name)
        {
        }
        /**
         * Fills ORDER BY clause of SQL request based on user supplied parameters.
         *
         * @param array $query_args Parameters supplied by the user.
         */
        protected function add_order_by($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Downloads\Files {
    /**
     * REST API Reports downloads files controller class.
     *
     * @internal
     * @extends WC_REST_Reports_Controller
     */
    class Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/downloads/files';
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Downloads {
    /**
     * API\Reports\Downloads\Query
     *
     * @deprecated 9.3.0 Downloads\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for downloads report.
         *
         * @deprecated 9.3.0 Downloads\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get downloads data based on the current query vars.
         *
         * @deprecated 9.3.0 Downloads\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Downloads\Stats {
    /**
     * REST API Reports downloads stats controller class.
     *
     * @internal
     * @extends GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/downloads/stats';
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get data from `'downloads-stats'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         * It does not have the segments as in GenericStatsController.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * API\Reports\Downloads\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\Downloads\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\StatsDataStoreTrait;
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override DownloadsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('download_count' => 'intval');
        /**
         * Cache identifier.
         *
         * @override DownloadsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'downloads_stats';
        /**
         * Data store context used to pass to filters.
         *
         * @override DownloadsDataStore::$context
         *
         * @var string
         */
        protected $context = 'downloads_stats';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override DownloadsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override DownloadsDataStore::default_query_args()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override DownloadsDataStore::get_noncached_data()
         *
         * @see get_data
         * @see get_noncached_stats_data
         * @param array    $query_args Query parameters.
         * @param array    $params                  Query limit parameters.
         * @param stdClass $data                    Reference to the data object to fill.
         * @param int      $expected_interval_count Number of expected intervals.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_stats_data($query_args, $params, &$data, $expected_interval_count)
        {
        }
        /**
         * Normalizes order_by clause to match to SQL query.
         *
         * @override DownloadsDataStore::normalize_order_by()
         *
         * @param string $order_by Order by option requeste by user.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
    }
    /**
     * API\Reports\Downloads\Stats\Query
     *
     * @deprecated 9.3.0 Downloads\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Orders report.
         *
         * @deprecated 9.3.0 Downloads\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get revenue data based on the current query vars.
         *
         * @deprecated 9.3.0 Downloads\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Export {
    /**
     * Reports Export controller.
     *
     * @internal
     * @extends \Automattic\WooCommerce\Admin\API\Reports\Controller
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\Controller
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/(?P<type>[a-z]+)/export';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        protected function get_export_collection_params()
        {
        }
        /**
         * Get the Report Export's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_export_public_schema()
        {
        }
        /**
         * Get the Export status schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_export_status_public_schema()
        {
        }
        /**
         * Export data based on user request params.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function export_items($request)
        {
        }
        /**
         * Export status based on user request params.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function export_status($request)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Trait to call filters on `get_data` methods for data stores.
     *
     * It calls the filters `woocommerce_analytics_{$this->context}_query_args` and
     * `woocommerce_analytics_{$this->context}_select_query` on the `get_data` method.
     *
     * Example:
     * <pre><code class="language-php">class MyStatsDataStore extends DataStore implements DataStoreInterface {
     *     // Use the trait.
     *     use FilteredGetDataTrait;
     *     // Provide all the necessary properties and methods for a regular DataStore.
     *     // ...
     * }
     * </code></pre>
     *
     * @see DataStore
     */
    trait FilteredGetDataTrait
    {
        /**
         * Get the data based on args.
         *
         * Filters query args, calls DataStore::get_data, and returns the filtered data.
         *
         * @override ReportsDataStore::get_data()
         *
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error
         */
        public function get_data($query_args)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Import {
    /**
     * Reports Imports controller.
     *
     * @internal
     * @extends \Automattic\WooCommerce\Admin\API\Reports\Controller
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\Controller
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/import';
        /**
         * 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 import_permissions_check($request)
        {
        }
        /**
         * Import data based on user request params.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function import_items($request)
        {
        }
        /**
         * Prepare request object as query args.
         *
         * @param WP_REST_Request $request Request data.
         * @return array
         */
        protected function prepare_objects_query($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)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_import_collection_params()
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_import_public_schema()
        {
        }
        /**
         * Cancel all queued import actions.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function cancel_import($request)
        {
        }
        /**
         * Delete all imported items.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function delete_imported_items($request)
        {
        }
        /**
         * Get the status of the current import.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_import_status($request)
        {
        }
        /**
         * Get the total orders and customers based on user supplied params.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function get_import_totals($request)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Orders {
    /**
     * REST API Reports orders controller class.
     *
     * @internal
     * @extends \Automattic\WooCommerce\Admin\API\Reports\GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\OrderAwareControllerTrait;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/orders';
        /**
         * Get data from Orders\Query.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array            $report  Report data item as returned from Data Store.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Reports_Query $object Object data.
         * @return array
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get customer name column export value.
         *
         * @param array $customer Customer from report row.
         * @return string
         */
        protected function get_customer_name($customer)
        {
        }
        /**
         * Get products column export value.
         *
         * @param array $products Products from report row.
         * @return string
         */
        protected function get_products($products)
        {
        }
        /**
         * Get coupons column export value.
         *
         * @param array $coupons Coupons from report row.
         * @return string
         */
        protected function get_coupons($coupons)
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\Internal\Traits {
    /**
     * Trait OrderAttributionMeta
     *
     * @since 8.5.0
     *
     * phpcs:disable Generic.Commenting.DocComment.MissingShort
     */
    trait OrderAttributionMeta
    {
        /**
         * The default fields and their sourcebuster accessors,
         * to show in the source data metabox.
         *
         * @var string[]
         * */
        private $default_fields = array(
            // main fields.
            'source_type' => 'current.typ',
            'referrer' => 'current_add.rf',
            // utm fields.
            'utm_campaign' => 'current.cmp',
            'utm_source' => 'current.src',
            'utm_medium' => 'current.mdm',
            'utm_content' => 'current.cnt',
            'utm_id' => 'current.id',
            'utm_term' => 'current.trm',
            'utm_source_platform' => 'current.plt',
            'utm_creative_format' => 'current.fmt',
            'utm_marketing_tactic' => 'current.tct',
            // additional fields.
            'session_entry' => 'current_add.ep',
            'session_start_time' => 'current_add.fd',
            'session_pages' => 'session.pgs',
            'session_count' => 'udata.vst',
            'user_agent' => 'udata.uag',
        );
        /** @var array */
        private $fields = array();
        /**
         * Cached `array_keys( $fields )`.
         *
         * @var array
         * */
        private $field_names = array();
        /** @var string */
        private $field_prefix = '';
        /**
         * Get the device type based on the other meta fields.
         *
         * @param array $values The meta values.
         *
         * @return string The device type.
         */
        protected function get_device_type(array $values) : string
        {
        }
        /**
         * Set the fields and the field prefix.
         *
         * @return void
         */
        private function set_fields_and_prefix()
        {
        }
        /**
         * Set the meta prefix for our fields.
         *
         * @return void
         */
        private function set_field_prefix() : void
        {
        }
        /**
         * Filter an order's meta data to only the keys that we care about.
         *
         * Sets the origin value based on the source type.
         *
         * @param WC_Meta_Data[] $meta The meta data.
         *
         * @return array
         */
        private function filter_meta_data(array $meta) : array
        {
        }
        /**
         * Get the field name with the appropriate prefix.
         *
         * @param string $name Field name.
         *
         * @return string The prefixed field name.
         */
        private function get_prefixed_field_name($name) : string
        {
        }
        /**
         * Get the field name with the meta prefix.
         *
         * @param string $name The field name.
         *
         * @return string The prefixed field name.
         */
        private function get_meta_prefixed_field_name(string $name) : string
        {
        }
        /**
         * Remove the meta prefix from the field name.
         *
         * @param string $name The prefixed fieldname .
         *
         * @return string
         */
        private function unprefix_meta_field_name(string $name) : string
        {
        }
        /**
         * Get the order object with HPOS compatibility.
         *
         * @param WC_Order|WP_Post|int $post_or_order The post ID or object.
         *
         * @return WC_Order The order object
         * @throws Exception When the order isn't found.
         */
        private function get_hpos_order_object($post_or_order)
        {
        }
        /**
         * Map posted, prefixed values to field values.
         * Used for the classic forms.
         *
         * @param array $raw_values The raw values from the POST form.
         *
         * @return array
         */
        private function get_unprefixed_field_values(array $raw_values = array()) : array
        {
        }
        /**
         * Map submitted values to meta values.
         *
         * @param array $raw_values The raw (unprefixed) values from the submitted data.
         *
         * @return array
         */
        private function get_source_values(array $raw_values = array()) : array
        {
        }
        /**
         * Get the label for the Order origin with placeholder where appropriate. Can be
         * translated (for DB / display) or untranslated (for Tracks).
         *
         * @param string $source_type The source type.
         * @param string $source      The source.
         * @param bool   $translated  Whether the label should be translated.
         *
         * @return string
         */
        private function get_origin_label(string $source_type, string $source, bool $translated = true) : string
        {
        }
        /**
         * Get the description for the order attribution field.
         *
         * @param string $field_name The field name.
         *
         * @return string
         */
        private function get_field_description(string $field_name) : string
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Orders {
    /**
     * API\Reports\Orders\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Internal\Traits\OrderAttributionMeta;
        /**
         * Dynamically sets the date column name based on configuration
         *
         * @override ReportsDataStore::__construct()
         */
        public function __construct()
        {
        }
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_stats';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'orders';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('order_id' => 'intval', 'parent_id' => 'intval', 'date_created' => 'strval', 'date_created_gmt' => 'strval', 'status' => 'strval', 'customer_id' => 'intval', 'net_total' => 'floatval', 'total_sales' => 'floatval', 'num_items_sold' => 'intval', 'customer_type' => 'strval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'orders';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Updates the database query with parameters used for orders report: coupons and products filters.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Normalizes order_by clause to match to SQL query.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Order by option requeste by user.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Enriches the order data.
         *
         * @param array $orders_data Orders data.
         * @param array $query_args  Query parameters.
         */
        protected function include_extended_info(&$orders_data, $query_args)
        {
        }
        /**
         * Returns oreders that have a parent id
         *
         * @param array $orders Orders array.
         * @return array
         */
        protected function get_orders_with_parent_id($orders)
        {
        }
        /**
         * Returns the same array index by a given key
         *
         * @param array  $array Array to be looped over.
         * @param string $key Key of values used for new array.
         * @return array
         */
        protected function map_array_by_key($array, $key)
        {
        }
        /**
         * Get product IDs, names, and quantity from order IDs.
         *
         * @param array $order_ids Array of order IDs.
         * @return array
         */
        protected function get_products_by_order_ids($order_ids)
        {
        }
        /**
         * Get customer data from Order data.
         *
         * @param array $orders Array of orders data.
         * @return array
         */
        protected function get_customers_by_orders($orders)
        {
        }
        /**
         * Get coupon information from order IDs.
         *
         * @param array $order_ids Array of order IDs.
         * @return array
         */
        protected function get_coupons_by_order_ids($order_ids)
        {
        }
        /**
         * Get order attributions data from order IDs.
         *
         * @param array $order_ids Array of order IDs.
         * @return array
         */
        protected function get_order_attributions_by_order_ids($order_ids)
        {
        }
        /**
         * Get all statuses that have been synced.
         *
         * @return array Unique order statuses.
         */
        public static function get_all_statuses()
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
    /**
     * API\Reports\Orders\Query
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\GenericQuery
    {
        /**
         * Specific query name.
         * Will be used to load the `report-{name}` data store,
         * and to call `woocommerce_analytics_{snake_case(name)}_*` filters.
         *
         * @var string
         */
        protected $name = 'orders';
        /**
         * Get the default allowed query vars.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Orders\Stats {
    /**
     * REST API Reports orders stats controller class.
     *
     * @internal
     * @extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
    {
        use \Automattic\WooCommerce\Admin\API\Reports\OrderAwareControllerTrait;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/orders/stats';
        /**
         * Get data from Orders\Stats\Query.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param Array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * 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()
        {
        }
    }
    /**
     * API\Reports\Orders\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\StatsDataStoreTrait;
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_stats';
        /**
         * Cron event name.
         */
        const CRON_EVENT = 'wc_order_stats_update';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'orders_stats';
        /**
         * Type for each column to cast values correctly later.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('orders_count' => 'intval', 'num_items_sold' => 'intval', 'gross_sales' => 'floatval', 'total_sales' => 'floatval', 'coupons' => 'floatval', 'coupons_count' => 'intval', 'refunds' => 'floatval', 'taxes' => 'floatval', 'shipping' => 'floatval', 'net_revenue' => 'floatval', 'avg_items_per_order' => 'floatval', 'avg_order_value' => 'floatval', 'total_customers' => 'intval', 'products' => 'intval', 'segment_id' => 'intval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'orders_stats';
        /**
         * Dynamically sets the date column name based on configuration
         *
         * @override ReportsDataStore::__construct()
         */
        public function __construct()
        {
        }
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Set up all the hooks for maintaining and populating table data.
         */
        public static function init()
        {
        }
        /**
         * Updates the totals and intervals database queries with parameters used for Orders report: categories, coupons and order status.
         *
         * @param array $query_args      Query arguments supplied by the user.
         */
        protected function orders_stats_sql_filter($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_stats_data()
         *
         * @see get_data
         * @see get_noncached_stats_data
         * @param array    $query_args Query parameters.
         * @param array    $params                  Query limit parameters.
         * @param stdClass $data                    Reference to the data object to fill.
         * @param int      $expected_interval_count Number of expected intervals.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_stats_data($query_args, $params, &$data, $expected_interval_count)
        {
        }
        /**
         * Get unique products based on user time query
         *
         * @param string $from_clause       From clause with date query.
         * @param string $where_time_clause Where clause with date query.
         * @param string $where_clause      Where clause with date query.
         * @return integer Unique product count.
         */
        public function get_unique_product_count($from_clause, $where_time_clause, $where_clause)
        {
        }
        /**
         * Get unique coupons based on user time query
         *
         * @param string $from_clause       From clause with date query.
         * @param string $where_time_clause Where clause with date query.
         * @param string $where_clause      Where clause with date query.
         * @return integer Unique product count.
         */
        public function get_unique_coupon_count($from_clause, $where_time_clause, $where_clause)
        {
        }
        /**
         * Add order information to the lookup table when orders are created or modified.
         *
         * @param int $post_id Post ID.
         * @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
         */
        public static function sync_order($post_id)
        {
        }
        /**
         * Update the database with stats data.
         *
         * @param WC_Order|WC_Order_Refund $order Order or refund to update row for.
         * @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
         */
        public static function update($order)
        {
        }
        /**
         * Deletes the order stats when an order is deleted.
         *
         * @param int $post_id Post ID.
         */
        public static function delete_order($post_id)
        {
        }
        /**
         * Calculation methods.
         */
        /**
         * Get number of items sold among all orders.
         *
         * @param array $order WC_Order object.
         * @return int
         */
        protected static function get_num_items_sold($order)
        {
        }
        /**
         * Get the net amount from an order without shipping, tax, or refunds.
         *
         * @param array $order WC_Order object.
         * @return float
         */
        protected static function get_net_total($order)
        {
        }
        /**
         * Check to see if an order's customer has made previous orders or not
         *
         * @param array     $order WC_Order object.
         * @param int|false $customer_id Customer ID. Optional.
         * @return bool
         */
        public static function is_returning_customer($order, $customer_id = null)
        {
        }
        /**
         * Set a customer's first order and all others to returning.
         *
         * @param int $customer_id Customer ID.
         * @param int $order_id Order ID.
         */
        protected static function set_customer_first_order($customer_id, $order_id)
        {
        }
    }
    /**
     * API\Reports\Orders\Stats\Query
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\GenericQuery
    {
        /**
         * Specific query name.
         * Will be used to load the `report-{name}` data store,
         * and to call `woocommerce_analytics_{snake_case(name)}_*` filters.
         *
         * @var string
         */
        protected $name = 'orders-stats';
        /**
         * Valid fields for Orders report.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
    }
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class Segmenter extends \Automattic\WooCommerce\Admin\API\Reports\Segmenter
    {
        /**
         * Returns column => query mapping to be used for product-related product-level segmenting query
         * (e.g. products sold, revenue from product X when segmenting by category).
         *
         * @param string $products_table Name of SQL table containing the product-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_product_level($products_table)
        {
        }
        /**
         * Returns column => query mapping to be used for order-related product-level segmenting query
         * (e.g. avg items per order when segmented by category).
         *
         * @param string $unique_orders_table Name of SQL table containing the order-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_order_level($unique_orders_table)
        {
        }
        /**
         * Returns column => query mapping to be used for order-level segmenting query
         * (e.g. avg items per order or Net sales when segmented by coupons).
         *
         * @param string $order_stats_table Name of SQL table containing the order-level info.
         * @param array  $overrides Array of overrides for default column calculations.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function segment_selections_orders($order_stats_table, $overrides = array())
        {
        }
        /**
         * Calculate segments for totals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for totals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_totals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $totals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for intervals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_intervals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $intervals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for totals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_totals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $totals_query)
        {
        }
        /**
         * Calculate segments for intervals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_intervals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $intervals_query)
        {
        }
        /**
         * Return array of segments formatted for REST response.
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $query_params SQL query parameter array.
         * @param string $table_name Name of main SQL table for the data store (used as basis for JOINS).
         *
         * @return array
         * @throws \Automattic\WooCommerce\Admin\API\Reports\ParameterException In case of segmenting by variations, when no parent product is specified.
         */
        protected function get_segments($type, $query_params, $table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * API\Reports\ParameterException class.
     */
    class ParameterException extends \WC_Data_Exception
    {
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\PerformanceIndicators {
    /**
     * REST API Reports Performance indicators controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/performance-indicators';
        /**
         * Contains a list of endpoints by report slug.
         *
         * @var array
         */
        protected $endpoints = array();
        /**
         * Contains a list of active Jetpack module slugs.
         *
         * @var array
         */
        protected $active_jetpack_modules = null;
        /**
         * Contains a list of allowed stats.
         *
         * @var array
         */
        protected $allowed_stats = array();
        /**
         * Contains a list of stat labels.
         *
         * @var array
         */
        protected $labels = array();
        /**
         * Contains a list of endpoints by url.
         *
         * @var array
         */
        protected $urls = array();
        /**
         * Contains a cache of retrieved stats data, grouped by report slug.
         *
         * @var array
         */
        protected $stats_data = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Register the routes for reports.
         */
        public function register_routes()
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get analytics report data and endpoints.
         */
        private function get_analytics_report_data()
        {
        }
        /**
         * Get active Jetpack modules.
         *
         * @return array List of active Jetpack module slugs.
         */
        private function get_active_jetpack_modules()
        {
        }
        /**
         * Set active Jetpack modules.
         *
         * @internal
         * @param array $modules List of active Jetpack module slugs.
         */
        public function set_active_jetpack_modules($modules)
        {
        }
        /**
         * Get active Jetpack modules and endpoints.
         */
        private function get_jetpack_modules_data()
        {
        }
        /**
         * Get information such as allowed stats, stat labels, and endpoint data from stats reports.
         *
         * @return WP_Error|True
         */
        private function get_indicator_data()
        {
        }
        /**
         * Returns a list of allowed performance indicators.
         *
         * @param  WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_allowed_items($request)
        {
        }
        /**
         * Sorts the list of stats. Sorted by custom arrangement.
         *
         * @internal
         * @see https://github.com/woocommerce/woocommerce-admin/issues/1282
         * @param object $a First item.
         * @param object $b Second item.
         * @return order
         */
        public function sort($a, $b)
        {
        }
        /**
         * Get report stats data, avoiding duplicate requests for stats that use the same endpoint.
         *
         * @param string $report Report slug to request data for.
         * @param array  $query_args Report query args.
         * @return WP_REST_Response|WP_Error Report stats data.
         */
        private function get_stats_data($report, $query_args)
        {
        }
        /**
         * Get all reports.
         *
         * @param  WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array           $stat_data Report data item as returned from Data Store.
         * @param WP_REST_Request $request   Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($stat_data, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param object $object data.
         * @return array
         */
        protected function prepare_links($object)
        {
        }
        /**
         * Returns the endpoint part of a stat request (prefix) and the actual stat total we want.
         * To allow extensions to namespace (example: fue/emails/sent), we break on the last forward slash.
         *
         * @param string $full_stat A stat request string like orders/avg_order_value or fue/emails/sent.
         * @return array Containing the prefix (endpoint) and suffix (stat).
         */
        private function get_stats_parts($full_stat)
        {
        }
        /**
         * Format the data returned from the API for given stats.
         *
         * @param array  $data Data from external endpoint.
         * @param string $stat Name of the stat.
         * @param string $report Name of the report.
         * @param string $chart Name of the chart.
         * @param array  $query_args Query args.
         * @return mixed
         */
        public function format_data_value($data, $stat, $report, $chart, $query_args)
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get schema for the list of allowed performance indicators.
         *
         * @return array $schema
         */
        public function get_public_allowed_item_schema()
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Products {
    /**
     * REST API Reports products controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/products';
        /**
         * Mapping between external parameter name and name used in query class.
         *
         * @var array
         */
        protected $param_mapping = array('categories' => 'category_includes', 'products' => 'product_includes', 'variations' => 'variation_includes');
        /**
         * Get data from `'products'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param Array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param Array $object Object data.
         * @return array        Links for the given post.
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get stock status column export value.
         *
         * @param array $status Stock status from report row.
         * @return string
         */
        protected function get_stock_status($status)
        {
        }
        /**
         * Get categories column export value.
         *
         * @param array $category_ids Category IDs from report row.
         * @return string
         */
        protected function get_categories($category_ids)
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
    /**
     * API\Reports\Products\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_product_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'products';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array(
            'date_start' => 'strval',
            'date_end' => 'strval',
            'product_id' => 'intval',
            'items_sold' => 'intval',
            'net_revenue' => 'floatval',
            'orders_count' => 'intval',
            // Extended attributes.
            'name' => 'strval',
            'price' => 'floatval',
            'image' => 'strval',
            'permalink' => 'strval',
            'stock_status' => 'strval',
            'stock_quantity' => 'intval',
            'low_stock_amount' => 'intval',
            'category_ids' => 'array_values',
            'variations' => 'array_values',
            'sku' => 'strval',
        );
        /**
         * Extended product attributes to include in the data.
         *
         * @var array
         */
        protected $extended_attributes = array('name', 'price', 'image', 'permalink', 'stock_status', 'stock_quantity', 'manage_stock', 'low_stock_amount', 'category_ids', 'variations', 'sku');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'products';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Set up all the hooks for maintaining and populating table data.
         */
        public static function init()
        {
        }
        /**
         * Fills FROM clause of SQL request based on user supplied parameters.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $arg_name   Target of the JOIN sql param.
         * @param string $id_cell    ID cell identifier, like `table_name.id_column_name`.
         */
        protected function add_from_sql_params($query_args, $arg_name, $id_cell)
        {
        }
        /**
         * Updates the database query with parameters used for Products report: categories and order status.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Enriches the product data with attributes specified by the extended_attributes.
         *
         * @param array $products_data Product data.
         * @param array $query_args  Query parameters.
         */
        protected function include_extended_info(&$products_data, $query_args)
        {
        }
        /**
         * Returns the report data based on parameters supplied by the user.
         *
         * @override ReportsDataStore::get_data()
         *
         * @param array $query_args  Query parameters.
         * @return stdClass|WP_Error Data.
         */
        public function get_data($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Create or update an entry in the wc_admin_order_product_lookup table for an order.
         *
         * @since 3.5.0
         * @param int $order_id Order ID.
         * @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
         */
        public static function sync_order_products($order_id)
        {
        }
        /**
         * Clean products data when an order is deleted.
         *
         * @param int $order_id Order ID.
         */
        public static function sync_on_order_delete($order_id)
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
    /**
     * API\Reports\Products\Query
     *
     * @deprecated 9.3.0 Products\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Products report.
         *
         * @deprecated 9.3.0 Products\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Products\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Products\Stats {
    /**
     * REST API Reports products stats controller class.
     *
     * @internal
     * @extends GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/products/stats';
        /**
         * Mapping between external parameter name and name used in query class.
         *
         * @var array
         */
        protected $param_mapping = array('categories' => 'category_includes', 'products' => 'product_includes', 'variations' => 'variation_includes');
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get data from `'products-stats'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request to be used to query the datastore.
         *
         * @param \WP_REST_Request $request Full request object.
         * @return array Simplified array of params.
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Set the default results to 0 if API returns an empty array
         *
         * @internal
         * @param Mixed $results Report data.
         * @return object
         */
        public function set_default_report_data($results)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * API\Reports\Products\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\Products\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\StatsDataStoreTrait;
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ProductsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('date_start' => 'strval', 'date_end' => 'strval', 'product_id' => 'intval', 'items_sold' => 'intval', 'net_revenue' => 'floatval', 'orders_count' => 'intval', 'products_count' => 'intval', 'variations_count' => 'intval');
        /**
         * Cache identifier.
         *
         * @override ProductsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'products_stats';
        /**
         * Data store context used to pass to filters.
         *
         * @override ProductsDataStore::$context
         *
         * @var string
         */
        protected $context = 'products_stats';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ProductsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Updates the database query with parameters used for Products Stats report: categories and order status.
         *
         * @param array $query_args       Query arguments supplied by the user.
         */
        protected function update_sql_query_params($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ProductsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on parameters supplied by the user.
         *
         * @override ProductsDataStore::get_data()
         *
         * @param array $query_args  Query parameters.
         * @return stdClass|WP_Error Data.
         */
        public function get_data($query_args)
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ProductsDataStore::get_noncached_data()
         *
         * @see get_data
         * @see get_noncached_stats_data
         * @param array    $query_args Query parameters.
         * @param array    $params                  Query limit parameters.
         * @param stdClass $data                    Reference to the data object to fill.
         * @param int      $expected_interval_count Number of expected intervals.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_stats_data($query_args, $params, &$data, $expected_interval_count)
        {
        }
        /**
         * Normalizes order_by clause to match to SQL query.
         *
         * @override ProductsDataStore::normalize_order_by()
         *
         * @param string $order_by Order by option requeste by user.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
    }
    /**
     * API\Reports\Products\Stats\Query
     *
     * @deprecated 9.3.0 Products\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Products report.
         *
         * @deprecated 9.3.0 Products\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Products\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class Segmenter extends \Automattic\WooCommerce\Admin\API\Reports\Segmenter
    {
        /**
         * Returns column => query mapping to be used for product-related product-level segmenting query
         * (e.g. products sold, revenue from product X when segmenting by category).
         *
         * @param string $products_table Name of SQL table containing the product-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_product_level($products_table)
        {
        }
        /**
         * Calculate segments for totals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for totals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_totals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $totals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for intervals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_intervals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $intervals_query, $unique_orders_table)
        {
        }
        /**
         * Return array of segments formatted for REST response.
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $query_params SQL query parameter array.
         * @param string $table_name Name of main SQL table for the data store (used as basis for JOINS).
         *
         * @return array
         * @throws \Automattic\WooCommerce\Admin\API\Reports\ParameterException In case of segmenting by variations, when no parent product is specified.
         */
        protected function get_segments($type, $query_params, $table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Revenue {
    /**
     * API\Reports\Revenue\Query
     *
     * This query uses inconsistent names:
     *  - `report-revenue-stats` data store
     *  - `woocommerce_analytics_revenue_*` filters
     * So, for backward compatibility, we cannot use GenericQuery.
     */
    class Query extends \WC_Object_Query
    {
        /**
         * Valid fields for Revenue report.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get revenue data based on the current query vars.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Revenue\Stats {
    /**
     * REST API Reports revenue stats controller class.
     *
     * @internal
     * @extends GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        /**
         * Exportable traits.
         */
        use \Automattic\WooCommerce\Admin\API\Reports\ExportableTraits;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/revenue/stats';
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get data from RevenueQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Get report items for export.
         *
         * Returns only the interval data.
         *
         * @param WP_REST_Request $request Request data.
         * @return WP_REST_Response
         */
        public function get_export_items($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Stock {
    /**
     * REST API Reports stock controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/stock';
        /**
         * Registered stock status options.
         *
         * @var array
         */
        protected $status_options;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param  WP_REST_Request $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Query products.
         *
         * @param  array $query_args Query args.
         * @return array
         */
        protected function get_products($query_args)
        {
        }
        /**
         * Get all reports.
         *
         * @param  WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Add in conditional search filters for products.
         *
         * @internal
         * @param string $where Where clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_filter($where, $wp_query)
        {
        }
        /**
         * Join posts meta tables when product search or low stock query is present.
         *
         * @internal
         * @param string $join Join clause used to search posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_join($join, $wp_query)
        {
        }
        /**
         * Join wc_product_meta_lookup to posts if not already joined.
         *
         * @internal
         * @param string $sql SQL join.
         * @return string
         */
        protected static function append_product_sorting_table_join($sql)
        {
        }
        /**
         * Group by post ID to prevent duplicates.
         *
         * @internal
         * @param string $groupby Group by clause used to organize posts.
         * @param object $wp_query WP_Query object.
         * @return string
         */
        public static function add_wp_query_group_by($groupby, $wp_query)
        {
        }
        /**
         * Custom orderby clauses using the lookup tables.
         *
         * @internal
         * @param array  $args Query args.
         * @param object $wp_query WP_Query object.
         * @return array
         */
        public static function add_wp_query_orderby($args, $wp_query)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param  WC_Product      $product Report data item as returned from Data Store.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($product, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param  WC_Product $product Object data.
         * @return array
         */
        protected function prepare_links($product)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Stock\Stats {
    /**
     * REST API Reports stock stats controller class.
     *
     * @internal
     * @extends WC_REST_Reports_Controller
     */
    class Controller extends \WC_REST_Reports_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/stock/stats';
        /**
         * Get Stock Status Totals.
         *
         * @param  WP_REST_Request $request Request data.
         * @return array|WP_Error
         */
        public function get_items($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param  WC_Product      $report  Report data item as returned from Data Store.
         * @param  WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        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()
        {
        }
    }
    /**
     * API\Reports\Stock\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Get stock counts for the whole store.
         *
         * @override ReportsDataStore::get_data()
         *
         * @param array $query Not used for the stock stats data store, but needed for the interface.
         * @return array Array of counts.
         */
        public function get_data($query)
        {
        }
        /**
         * Get low stock count (products with stock < low stock amount, but greater than no stock amount).
         *
         * @return int Low stock count.
         */
        private function get_low_stock_count()
        {
        }
        /**
         * Get count for the passed in stock status.
         *
         * @param  string $status Status slug.
         * @return int Count.
         */
        private function get_count($status)
        {
        }
        /**
         * Get product count for the store.
         *
         * @return int Product count.
         */
        private function get_product_count()
        {
        }
    }
    /**
     * API\Reports\Stock\Stats\Query
     * This query takes no arguments, so we do not inherit from GenericQuery.
     */
    class Query extends \WC_Object_Query
    {
        /**
         * Get product data based on the current query vars.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Taxes {
    /**
     * REST API Reports taxes controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        /**
         * Exportable traits.
         */
        use \Automattic\WooCommerce\Admin\API\Reports\ExportableTraits;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/taxes';
        /**
         * Get data from `'taxes'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param mixed           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param WC_Reports_Query $object Object data.
         * @return array
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
    /**
     * API\Reports\Taxes\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_tax_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'taxes';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('tax_rate_id' => 'intval', 'name' => 'strval', 'tax_rate' => 'floatval', 'country' => 'strval', 'state' => 'strval', 'priority' => 'intval', 'total_tax' => 'floatval', 'order_tax' => 'floatval', 'shipping_tax' => 'floatval', 'orders_count' => 'intval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'taxes';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Set up all the hooks for maintaining and populating table data.
         */
        public static function init()
        {
        }
        /**
         * Fills FROM clause of SQL request based on user supplied parameters.
         *
         * @param array  $query_args          Query arguments supplied by the user.
         * @param string $order_status_filter Order status subquery.
         */
        protected function add_from_sql_params($query_args, $order_status_filter)
        {
        }
        /**
         * Updates the database query with parameters used for Taxes report: categories and order status.
         *
         * @see Automattic\WooCommerce\Admin\API\Reports\Taxes\Stats\DataStore::update_sql_query_params()
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Create or update an entry in the wc_order_tax_lookup table for an order.
         *
         * @param int $order_id Order ID.
         * @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
         */
        public static function sync_order_taxes($order_id)
        {
        }
        /**
         * Clean taxes data when an order is deleted.
         *
         * @param int $order_id Order ID.
         */
        public static function sync_on_order_delete($order_id)
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
    /**
     * API\Reports\Taxes\Query
     *
     * @deprecated 9.3.0 Taxes\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Taxes report.
         *
         * @deprecated 9.3.0 Taxes\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Taxes\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Taxes\Stats {
    /**
     * REST API Reports taxes stats controller class.
     *
     * @internal
     * @extends GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/taxes/stats';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Set the default results to 0 if API returns an empty array
         *
         * @internal
         * @param Mixed $results Report data.
         * @return object
         */
        public function set_default_report_data($results)
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Get data from `'taxes-stats'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param mixed           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * 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()
        {
        }
    }
    /**
     * API\Reports\Taxes\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\StatsDataStoreTrait;
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_tax_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'taxes_stats';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('tax_codes' => 'intval', 'total_tax' => 'floatval', 'order_tax' => 'floatval', 'shipping_tax' => 'floatval', 'orders_count' => 'intval');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'taxes_stats';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Updates the database query with parameters used for Taxes Stats report
         *
         * @see Automattic\WooCommerce\Admin\API\Reports\Taxes\DataStore::add_sql_query_params()
         * @param array $query_args       Query arguments supplied by the user.
         */
        protected function update_sql_query_params($query_args)
        {
        }
        /**
         * Get taxes associated with a store.
         *
         * @param array $args Array of args to filter the query by. Supports `include`.
         * @return array An array of all taxes.
         */
        public static function get_taxes($args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @see get_noncached_stats_data
         * @param array    $query_args Query parameters.
         * @param array    $params                  Query limit parameters.
         * @param stdClass $data                    Reference to the data object to fill.
         * @param int      $expected_interval_count Number of expected intervals.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_stats_data($query_args, $params, &$data, $expected_interval_count)
        {
        }
    }
    /**
     * API\Reports\Taxes\Stats\Query
     *
     * @deprecated 9.3.0 Taxes\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Taxes report.
         *
         * @deprecated 9.3.0 Taxes\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get tax stats data based on the current query vars.
         *
         * @deprecated 9.3.0 Taxes\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class Segmenter extends \Automattic\WooCommerce\Admin\API\Reports\Segmenter
    {
        /**
         * Returns column => query mapping to be used for order-related order-level segmenting query (e.g. tax_rate_id).
         *
         * @param string $lookup_table Name of SQL table containing the order-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_order_level($lookup_table)
        {
        }
        /**
         * Calculate segments for totals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_totals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $totals_query)
        {
        }
        /**
         * Calculate segments for intervals query where the segmenting property is bound to order (e.g. coupon or customer type).
         *
         * @param string $segmenting_select SELECT part of segmenting SQL query.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         *
         * @return array
         */
        protected function get_order_related_intervals_segments($segmenting_select, $segmenting_from, $segmenting_where, $segmenting_groupby, $table_name, $intervals_query)
        {
        }
        /**
         * Return array of segments formatted for REST response.
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $query_params SQL query parameter array.
         * @param string $table_name Name of main SQL table for the data store (used as basis for JOINS).
         *
         * @return array
         * @throws \Automattic\WooCommerce\Admin\API\Reports\ParameterException In case of segmenting by variations, when no parent product is specified.
         */
        protected function get_segments($type, $query_params, $table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports {
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class TimeInterval
    {
        /**
         * Format string for ISO DateTime formatter.
         *
         * @var string
         */
        public static $iso_datetime_format = 'Y-m-d\\TH:i:s';
        /**
         * Format string for use in SQL queries.
         *
         * @var string
         */
        public static $sql_datetime_format = 'Y-m-d H:i:s';
        /**
         * Converts local datetime to GMT/UTC time.
         *
         * @param string $datetime_string String representation of local datetime.
         * @return DateTime
         */
        public static function convert_local_datetime_to_gmt($datetime_string)
        {
        }
        /**
         * Returns default 'before' parameter for the reports.
         *
         * @return DateTime
         */
        public static function default_before()
        {
        }
        /**
         * Returns default 'after' parameter for the reports.
         *
         * @return DateTime
         */
        public static function default_after()
        {
        }
        /**
         * Returns date format to be used as grouping clause in SQL.
         *
         * @param string $time_interval Time interval.
         * @param string $table_name Name of the db table relevant for the date constraint.
         * @param string $date_column_name Name of the date table column.
         * @return mixed
         */
        public static function db_datetime_format($time_interval, $table_name, $date_column_name = 'date_created')
        {
        }
        /**
         * Returns quarter for the DateTime.
         *
         * @param DateTime $datetime Local date & time.
         * @return int|null
         */
        public static function quarter($datetime)
        {
        }
        /**
         * Returns simple week number for the DateTime, for week starting on $first_day_of_week.
         *
         * The first week of the year is considered to be the week containing January 1.
         * The second week starts on the next $first_day_of_week.
         *
         * @param DateTime $datetime          Local date for which the week number is to be calculated.
         * @param int      $first_day_of_week 0 for Sunday to 6 for Saturday.
         * @return int
         */
        public static function simple_week_number($datetime, $first_day_of_week)
        {
        }
        /**
         * Returns ISO 8601 week number for the DateTime, if week starts on Monday,
         * otherwise returns simple week number.
         *
         * @see TimeInterval::simple_week_number()
         *
         * @param DateTime $datetime          Local date for which the week number is to be calculated.
         * @param int      $first_day_of_week 0 for Sunday to 6 for Saturday.
         * @return int
         */
        public static function week_number($datetime, $first_day_of_week)
        {
        }
        /**
         * Returns time interval id for the DateTime.
         *
         * @param string   $time_interval Time interval type (week, day, etc).
         * @param DateTime $datetime      Date & time.
         * @return string
         */
        public static function time_interval_id($time_interval, $datetime)
        {
        }
        /**
         * Calculates number of time intervals between two dates, closed interval on both sides.
         *
         * @param DateTime $start_datetime Start date & time.
         * @param DateTime $end_datetime End date & time.
         * @param string   $interval Time interval increment, e.g. hour, day, week.
         *
         * @return int
         */
        public static function intervals_between($start_datetime, $end_datetime, $interval)
        {
        }
        /**
         * Returns a new DateTime object representing the next hour start/previous hour end if reversed.
         *
         * @param DateTime $datetime Date and time.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function next_hour_start($datetime, $reversed = false)
        {
        }
        /**
         * Returns a new DateTime object representing the next day start, or previous day end if reversed.
         *
         * @param DateTime $datetime Date and time.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function next_day_start($datetime, $reversed = false)
        {
        }
        /**
         * Returns DateTime object representing the next week start, or previous week end if reversed.
         *
         * The next week start is the first day of the next week at 00:00:00.
         * The previous week end is the last day of the previous week at 23:59:59.
         * The start day is determined by the "start_of_week" wp_option.
         *
         * @param DateTime $datetime Date and time.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function next_week_start($datetime, $reversed = false)
        {
        }
        /**
         * Returns a new DateTime object representing the next month start, or previous month end if reversed.
         *
         * @param DateTime $datetime Date and time.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function next_month_start($datetime, $reversed = false)
        {
        }
        /**
         * Returns a new DateTime object representing the next quarter start, or previous quarter end if reversed.
         *
         * @param DateTime $datetime Date and time.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function next_quarter_start($datetime, $reversed = false)
        {
        }
        /**
         * Return a new DateTime object representing the next year start, or previous year end if reversed.
         *
         * @param DateTime $datetime Date and time.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function next_year_start($datetime, $reversed = false)
        {
        }
        /**
         * Returns beginning of next time interval for provided DateTime.
         *
         * E.g. for current DateTime, beginning of next day, week, quarter, etc.
         *
         * @param DateTime $datetime      Date and time.
         * @param string   $time_interval Time interval, e.g. week, day, hour.
         * @param bool     $reversed Going backwards in time instead of forward.
         * @return DateTime
         */
        public static function iterate($datetime, $time_interval, $reversed = false)
        {
        }
        /**
         * Returns expected number of items on the page in case of date ordering.
         *
         * @param int $expected_interval_count Expected number of intervals in total.
         * @param int $items_per_page          Number of items per page.
         * @param int $page_no                 Page number.
         *
         * @return float|int
         */
        public static function expected_intervals_on_page($expected_interval_count, $items_per_page, $page_no)
        {
        }
        /**
         * Returns true if there are any intervals that need to be filled in the response.
         *
         * @param int    $expected_interval_count Expected number of intervals in total.
         * @param int    $db_records              Total number of records for given period in the database.
         * @param int    $items_per_page          Number of items per page.
         * @param int    $page_no                 Page number.
         * @param string $order                   asc or desc.
         * @param string $order_by                Column by which the result will be sorted.
         * @param int    $intervals_count         Number of records for given (possibly shortened) time interval.
         *
         * @return bool
         */
        public static function intervals_missing($expected_interval_count, $db_records, $items_per_page, $page_no, $order, $order_by, $intervals_count)
        {
        }
        /**
         * Normalize "*_between" parameters to "*_min" and "*_max" for numeric values
         * and "*_after" and "*_before" for date values.
         *
         * @param array        $request Query params from REST API request.
         * @param string|array $param_names One or more param names to handle. Should not include "_between" suffix.
         * @param bool         $is_date Boolean if the param is date is related.
         * @return array Normalized query values.
         */
        public static function normalize_between_params($request, $param_names, $is_date)
        {
        }
        /**
         * Validate a "*_between" range argument (an array with 2 numeric items).
         *
         * @param  mixed           $value Parameter value.
         * @param  WP_REST_Request $request REST Request.
         * @param  string          $param Parameter name.
         * @return WP_Error|boolean
         */
        public static function rest_validate_between_numeric_arg($value, $request, $param)
        {
        }
        /**
         * Validate a "*_between" range argument (an array with 2 date items).
         *
         * @param  mixed           $value Parameter value.
         * @param  WP_REST_Request $request REST Request.
         * @param  string          $param Parameter name.
         * @return WP_Error|boolean
         */
        public static function rest_validate_between_date_arg($value, $request, $param)
        {
        }
        /**
         * Get dates from a timeframe string.
         *
         * @param int           $timeframe Timeframe to use.  One of: last_week|last_month|last_quarter|last_6_months|last_year.
         * @param DateTime|null $current_date DateTime of current date to compare.
         * @return array
         */
        public static function get_timeframe_dates($timeframe, $current_date = null)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Variations {
    /**
     * REST API Reports products controller class.
     *
     * @internal
     * @extends GenericController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericController implements \Automattic\WooCommerce\Admin\API\Reports\ExportableInterface
    {
        // The controller does not use this trait. It's here for API backward compatibility.
        use \Automattic\WooCommerce\Admin\API\Reports\OrderAwareControllerTrait;
        /**
         * Exportable traits.
         */
        use \Automattic\WooCommerce\Admin\API\Reports\ExportableTraits;
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/variations';
        /**
         * Mapping between external parameter name and name used in query class.
         *
         * @var array
         */
        protected $param_mapping = array('variations' => 'variation_includes', 'products' => 'product_includes');
        /**
         * Get data from `'variations'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Maps query arguments from the REST request.
         *
         * @param array $request Request array.
         * @return array
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param array $object Object data.
         * @return array        Links for the given post.
         */
        protected function prepare_links($object)
        {
        }
        /**
         * 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()
        {
        }
        /**
         * Get stock status column export value.
         *
         * @param array $status Stock status from report row.
         * @return string
         */
        protected function get_stock_status($status)
        {
        }
        /**
         * Get the column names for export.
         *
         * @return array Key value pair of Column ID => Label.
         */
        public function get_export_columns()
        {
        }
        /**
         * Get the column values for export.
         *
         * @param array $item Single report item/row.
         * @return array Key value pair of Column ID => Row Value.
         */
        public function prepare_item_for_export($item)
        {
        }
    }
    /**
     * API\Reports\Variations\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        /**
         * Table used to get the data.
         *
         * @override ReportsDataStore::$table_name
         *
         * @var string
         */
        protected static $table_name = 'wc_order_product_lookup';
        /**
         * Cache identifier.
         *
         * @override ReportsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'variations';
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override ReportsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('date_start' => 'strval', 'date_end' => 'strval', 'product_id' => 'intval', 'variation_id' => 'intval', 'items_sold' => 'intval', 'net_revenue' => 'floatval', 'orders_count' => 'intval', 'name' => 'strval', 'price' => 'floatval', 'image' => 'strval', 'permalink' => 'strval', 'sku' => 'strval');
        /**
         * Extended product attributes to include in the data.
         *
         * @var array
         */
        protected $extended_attributes = array('name', 'price', 'image', 'permalink', 'stock_status', 'stock_quantity', 'low_stock_amount', 'sku');
        /**
         * Data store context used to pass to filters.
         *
         * @override ReportsDataStore::$context
         *
         * @var string
         */
        protected $context = 'variations';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override ReportsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Fills FROM clause of SQL request based on user supplied parameters.
         *
         * @param array  $query_args Parameters supplied by the user.
         * @param string $arg_name   Target of the JOIN sql param.
         */
        protected function add_from_sql_params($query_args, $arg_name)
        {
        }
        /**
         * Generate a subquery for order_item_id based on the attribute filters.
         *
         * @param array $query_args Query arguments supplied by the user.
         * @return string
         */
        protected function get_order_item_by_attribute_subquery($query_args)
        {
        }
        /**
         * Updates the database query with parameters used for Products report: categories and order status.
         *
         * @param array $query_args Query arguments supplied by the user.
         */
        protected function add_sql_query_params($query_args)
        {
        }
        /**
         * Maps ordering specified by the user to columns in the database/fields in the data.
         *
         * @override ReportsDataStore::normalize_order_by()
         *
         * @param string $order_by Sorting criterion.
         *
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
        /**
         * Enriches the product data with attributes specified by the extended_attributes.
         *
         * @param array $products_data Product data.
         * @param array $query_args Query parameters.
         */
        protected function include_extended_info(&$products_data, $query_args)
        {
        }
        /**
         * Returns if simple products should be excluded from the report.
         *
         * @internal
         *
         * @param array $query_args Query parameters.
         *
         * @return boolean
         */
        protected function should_exclude_simple_products(array $query_args)
        {
        }
        /**
         * Fill missing extended_info.name for the deleted products.
         *
         * @param array $products Product data.
         */
        protected function fill_deleted_product_name(array &$products)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override ReportsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override ReportsDataStore::get_noncached_data()
         *
         * @see get_data
         * @param array $query_args Query parameters.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_data($query_args)
        {
        }
        /**
         * Initialize query objects.
         */
        protected function initialize_queries()
        {
        }
    }
    /**
     * API\Reports\Variations\Query
     *
     * @deprecated 9.3.0 Variations\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Products report.
         *
         * @deprecated 9.3.0 Variations\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get product data based on the current query vars.
         *
         * @deprecated 9.3.0 Variations\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API\Reports\Variations\Stats {
    /**
     * REST API Reports variations stats controller class.
     *
     * @internal
     * @extends GenericStatsController
     */
    class Controller extends \Automattic\WooCommerce\Admin\API\Reports\GenericStatsController
    {
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'reports/variations/stats';
        /**
         * Mapping between external parameter name and name used in query class.
         *
         * @var array
         */
        protected $param_mapping = array('variations' => 'variation_includes');
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get data from `'variations-stats'` GenericQuery.
         *
         * @override GenericController::get_datastore_data()
         *
         * @param array $query_args Query arguments.
         * @return mixed Results from the data store.
         */
        protected function get_datastore_data($query_args = array())
        {
        }
        /**
         * Maps query arguments from the REST request, to be fed to Query.
         *
         * @param \WP_REST_Request $request Full request object.
         * @return array Simplified array of params.
         */
        protected function prepare_reports_query($request)
        {
        }
        /**
         * Prepare a report data item for serialization.
         *
         * @param array           $report  Report data item as returned from Data Store.
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function prepare_item_for_response($report, $request)
        {
        }
        /**
         * Get the Report's item properties schema.
         * Will be used by `get_item_schema` as `totals` and `subtotals`.
         *
         * @return array
         */
        protected function get_item_properties_schema()
        {
        }
        /**
         * Get the Report's schema, conforming to JSON Schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Set the default results to 0 if API returns an empty array
         *
         * @param Mixed $results Report data.
         * @return object
         */
        public function set_default_report_data($results)
        {
        }
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * API\Reports\Variations\Stats\DataStore.
     */
    class DataStore extends \Automattic\WooCommerce\Admin\API\Reports\Variations\DataStore implements \Automattic\WooCommerce\Admin\API\Reports\DataStoreInterface
    {
        use \Automattic\WooCommerce\Admin\API\Reports\StatsDataStoreTrait;
        /**
         * Mapping columns to data type to return correct response types.
         *
         * @override VariationsDataStore::$column_types
         *
         * @var array
         */
        protected $column_types = array('items_sold' => 'intval', 'net_revenue' => 'floatval', 'orders_count' => 'intval', 'variations_count' => 'intval');
        /**
         * Cache identifier.
         *
         * @override VariationsDataStore::$cache_key
         *
         * @var string
         */
        protected $cache_key = 'variations_stats';
        /**
         * Data store context used to pass to filters.
         *
         * @override VariationsDataStore::$context
         *
         * @var string
         */
        protected $context = 'variations_stats';
        /**
         * Assign report columns once full table name has been assigned.
         *
         * @override VariationsDataStore::assign_report_columns()
         */
        protected function assign_report_columns()
        {
        }
        /**
         * Updates the database query with parameters used for Products Stats report: categories and order status.
         *
         * @param array $query_args       Query arguments supplied by the user.
         */
        protected function update_sql_query_params($query_args)
        {
        }
        /**
         * Returns if simple products should be excluded from the report.
         *
         * @internal
         *
         * @param array $query_args Query parameters.
         *
         * @return boolean
         */
        protected function should_exclude_simple_products(array $query_args)
        {
        }
        /**
         * Get the default query arguments to be used by get_data().
         * These defaults are only partially applied when used via REST API, as that has its own defaults.
         *
         * @override VariationsDataStore::get_default_query_vars()
         *
         * @return array Query parameters.
         */
        public function get_default_query_vars()
        {
        }
        /**
         * Returns the report data based on normalized parameters.
         * Will be called by `get_data` if there is no data in cache.
         *
         * @override VariationsDataStore::get_noncached_stats_data()
         *
         * @see get_data
         * @see get_noncached_stats_data
         * @param array    $query_args Query parameters.
         * @param array    $params                  Query limit parameters.
         * @param stdClass $data                    Reference to the data object to fill.
         * @param int      $expected_interval_count Number of expected intervals.
         * @return stdClass|WP_Error Data object `{ totals: *, intervals: array, total: int, pages: int, page_no: int }`, or error.
         */
        public function get_noncached_stats_data($query_args, $params, &$data, $expected_interval_count)
        {
        }
        /**
         * Normalizes order_by clause to match to SQL query.
         *
         * @override VariationsDataStore::normalize_order_by()
         *
         * @param string $order_by Order by option requeste by user.
         * @return string
         */
        protected function normalize_order_by($order_by)
        {
        }
    }
    /**
     * API\Reports\Variations\Stats\Query
     *
     * @deprecated 9.3.0 Variations\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
     */
    class Query extends \Automattic\WooCommerce\Admin\API\Reports\Query
    {
        /**
         * Valid fields for Products report.
         *
         * @deprecated 9.3.0 Variations\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        protected function get_default_query_vars()
        {
        }
        /**
         * Get variations data based on the current query vars.
         *
         * @deprecated 9.3.0 Variations\Stats\Query class is deprecated. Please use `GenericQuery`, \WC_Object_Query`, or use `DataStore` directly.
         *
         * @return array
         */
        public function get_data()
        {
        }
    }
    /**
     * Date & time interval and numeric range handling class for Reporting API.
     */
    class Segmenter extends \Automattic\WooCommerce\Admin\API\Reports\Segmenter
    {
        /**
         * Returns column => query mapping to be used for product-related product-level segmenting query
         * (e.g. products sold, revenue from product X when segmenting by category).
         *
         * @param string $products_table Name of SQL table containing the product-level segmenting info.
         *
         * @return array Column => SELECT query mapping.
         */
        protected function get_segment_selections_product_level($products_table)
        {
        }
        /**
         * Calculate segments for totals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $totals_query Array of SQL clauses for totals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_totals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $totals_query, $unique_orders_table)
        {
        }
        /**
         * Calculate segments for intervals where the segmenting property is bound to product (e.g. category, product_id, variation_id).
         *
         * @param array  $segmenting_selections SELECT part of segmenting SQL query--one for 'product_level' and one for 'order_level'.
         * @param string $segmenting_from FROM part of segmenting SQL query.
         * @param string $segmenting_where WHERE part of segmenting SQL query.
         * @param string $segmenting_groupby GROUP BY part of segmenting SQL query.
         * @param string $segmenting_dimension_name Name of the segmenting dimension.
         * @param string $table_name Name of SQL table which is the stats table for orders.
         * @param array  $intervals_query Array of SQL clauses for intervals query.
         * @param string $unique_orders_table Name of temporary SQL table that holds unique orders.
         *
         * @return array
         */
        protected function get_product_related_intervals_segments($segmenting_selections, $segmenting_from, $segmenting_where, $segmenting_groupby, $segmenting_dimension_name, $table_name, $intervals_query, $unique_orders_table)
        {
        }
        /**
         * Return array of segments formatted for REST response.
         *
         * @param string $type Type of segments to return--'totals' or 'intervals'.
         * @param array  $query_params SQL query parameter array.
         * @param string $table_name Name of main SQL table for the data store (used as basis for JOINS).
         *
         * @return array|null
         * @throws \Automattic\WooCommerce\Admin\API\Reports\ParameterException In case of segmenting by variations, when no parent product is specified.
         */
        protected function get_segments($type, $query_params, $table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\API {
    /**
     * Setting Options controller.
     *
     * @internal
     * @extends WC_REST_Setting_Options_Controller
     */
    class SettingOptions extends \WC_REST_Setting_Options_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Invalidates API cache when updating settings options.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return array Of WP_Error or WP_REST_Response.
         */
        public function batch_items($request)
        {
        }
    }
    /**
     * ShippingPartnerSuggestions Controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class ShippingPartnerSuggestions extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'shipping-partner-suggestions';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check if a given request has access to manage plugins.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function get_permission_check($request)
        {
        }
        /**
         * Check if suggestions should be shown in the settings screen.
         *
         * @return bool
         */
        private function should_display()
        {
        }
        /**
         * Return suggested shipping partners.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return \WP_Error|\WP_HTTP_Response|\WP_REST_Response
         */
        public function get_suggestions($request)
        {
        }
        /**
         * Get the schema, conforming to JSON Schema.
         *
         * @return array
         */
        public static function get_suggestions_schema()
        {
        }
    }
    /**
     * Taxes controller.
     *
     * @internal
     * @extends WC_REST_Taxes_Controller
     */
    class Taxes extends \WC_REST_Taxes_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-analytics';
        /**
         * Get the query params for collections.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get all taxes and allow filtering by tax code.
         *
         * @param WP_REST_Request $request Full details about the request.
         * @return WP_Error|WP_REST_Response
         */
        public function get_items($request)
        {
        }
    }
    /**
     * Themes controller.
     *
     * @internal
     * @extends WC_REST_Data_Controller
     */
    class Themes extends \WC_REST_Data_Controller
    {
        /**
         * Endpoint namespace.
         *
         * @var string
         */
        protected $namespace = 'wc-admin';
        /**
         * Route base.
         *
         * @var string
         */
        protected $rest_base = 'themes';
        /**
         * Register routes.
         */
        public function register_routes()
        {
        }
        /**
         * Check whether a given request has permission to edit upload plugins/themes.
         *
         * @param  WP_REST_Request $request Full details about the request.
         * @return WP_Error|boolean
         */
        public function upload_theme_permissions_check($request)
        {
        }
        /**
         * Upload and install a theme.
         *
         * @param  WP_REST_Request $request Request data.
         * @return WP_Error|WP_REST_Response
         */
        public function upload_theme($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)
        {
        }
        /**
         * Get the 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()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\BlockTemplates {
    /**
     * Interface for block configuration used to specify blocks in BlockTemplate.
     */
    interface BlockInterface
    {
        /**
         * Key for the block name in the block configuration.
         */
        public const NAME_KEY = 'blockName';
        /**
         * Key for the block ID in the block configuration.
         */
        public const ID_KEY = 'id';
        /**
         * Key for the internal order in the block configuration.
         */
        public const ORDER_KEY = 'order';
        /**
         * Key for the block attributes in the block configuration.
         */
        public const ATTRIBUTES_KEY = 'attributes';
        /**
         * Key for the block hide conditions in the block configuration.
         */
        public const HIDE_CONDITIONS_KEY = 'hideConditions';
        /**
         * Key for the block disable conditions in the block configuration.
         */
        public const DISABLE_CONDITIONS_KEY = 'disableConditions';
        /**
         * Get the block name.
         */
        public function get_name() : string;
        /**
         * Get the block ID.
         */
        public function get_id() : string;
        /**
         * Get the block order.
         */
        public function get_order() : int;
        /**
         * Set the block order.
         *
         * @param int $order The block order.
         */
        public function set_order(int $order);
        /**
         * Get the block attributes.
         */
        public function get_attributes() : array;
        /**
         * Set the block attributes.
         *
         * @param array $attributes The block attributes.
         */
        public function set_attributes(array $attributes);
        /**
         * Set a block attribute value without replacing the entire attributes object.
         *
         * @param string $key The attribute key.
         * @param mixed  $value The attribute value.
         */
        public function set_attribute(string $key, $value);
        /**
         * Get the parent container that the block belongs to.
         */
        public function &get_parent() : \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface;
        /**
         * Get the root template that the block belongs to.
         */
        public function &get_root_template() : \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface;
        /**
         * Remove the block from its parent.
         */
        public function remove();
        /**
         * Check if the block is detached from its parent or root template.
         *
         * @return bool True if the block is detached from its parent or root template.
         */
        public function is_detached() : bool;
        /**
         * Add a hide condition to the block.
         *
         * The hide condition is a JavaScript-like expression that will be evaluated on the client to determine if the block should be hidden.
         * See [@woocommerce/expression-evaluation](https://github.com/woocommerce/woocommerce/blob/trunk/packages/js/expression-evaluation/README.md) for more details.
         *
         * @param string $expression An expression, which if true, will hide the block.
         * @return string The key of the hide condition, which can be used to remove the hide condition.
         */
        public function add_hide_condition(string $expression) : string;
        /**
         * Remove a hide condition from the block.
         *
         * @param string $key The key of the hide condition to remove.
         */
        public function remove_hide_condition(string $key);
        /**
         * Get the hide conditions of the block.
         */
        public function get_hide_conditions() : array;
        /**
         * Add a disable condition to the block.
         *
         * The disable condition is a JavaScript-like expression that will be evaluated on the client to determine if the block should be disabled.
         * See [@woocommerce/expression-evaluation](https://github.com/woocommerce/woocommerce/blob/trunk/packages/js/expression-evaluation/README.md) for more details.
         *
         * @param string $expression An expression, which if true, will disable the block.
         * @return string The key of the disable condition, which can be used to remove the disable condition.
         */
        public function add_disable_condition(string $expression) : string;
        /**
         * Remove a disable condition from the block.
         *
         * @param string $key The key of the disable condition to remove.
         */
        public function remove_disable_condition(string $key);
        /**
         * Get the disable conditions of the block.
         */
        public function get_disable_conditions() : array;
        /**
         * Get the block configuration as a formatted template.
         *
         * @return array The block configuration as a formatted template.
         */
        public function get_formatted_template() : array;
    }
    /**
     * Interface for block containers.
     */
    interface ContainerInterface
    {
        /**
         * Get the root template that the block belongs to.
         */
        public function &get_root_template() : \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface;
        /**
         * Get the block configuration as a formatted template.
         */
        public function get_formatted_template() : array;
        /**
         * Get a block by ID.
         *
         * @param string $block_id The block ID.
         */
        public function get_block(string $block_id) : ?\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface;
        /**
         * Removes a block from the container.
         *
         * @param string $block_id The block ID.
         *
         * @throws \UnexpectedValueException If the block container is not an ancestor of the block.
         */
        public function remove_block(string $block_id);
        /**
         * Removes all blocks from the container.
         */
        public function remove_blocks();
    }
    /**
     * Interface for block containers.
     */
    interface BlockContainerInterface extends \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface, \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface
    {
    }
    /**
     * Interface for block-based template.
     */
    interface BlockTemplateInterface extends \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface
    {
        /**
         * Get the template ID.
         */
        public function get_id() : string;
        /**
         * Get the template title.
         */
        public function get_title() : string;
        /**
         * Get the template description.
         */
        public function get_description() : string;
        /**
         * Get the template area.
         */
        public function get_area() : string;
        /**
         * Generate a block ID based on a base.
         *
         * @param string $id_base The base to use when generating an ID.
         * @return string
         */
        public function generate_block_id(string $id_base) : string;
        /**
         * Get the template as JSON like array.
         *
         * @return array The JSON.
         */
        public function to_json() : array;
    }
}
namespace Automattic\WooCommerce\Admin\Composer {
    /**
     * Main package class.
     */
    class Package
    {
        /**
         * Version.
         *
         * @var string
         */
        const VERSION = '3.3.0';
        /**
         * Package active.
         *
         * @var bool
         */
        private static $package_active = false;
        /**
         * Active version
         *
         * @var bool
         */
        private static $active_version = null;
        /**
         * Init the package.
         *
         * Only initialize for WP 5.3 or greater.
         */
        public static function init()
        {
        }
        /**
         * Return the version of the package.
         *
         * @return string
         */
        public static function get_version()
        {
        }
        /**
         * Return the active version of WC Admin.
         *
         * @return string
         */
        public static function get_active_version()
        {
        }
        /**
         * Return whether the package is active.
         *
         * @return bool
         */
        public static function is_package_active()
        {
        }
        /**
         * Return the path to the package.
         *
         * @return string
         */
        public static function get_path()
        {
        }
        /**
         * Checks if notes have been initialized.
         */
        private static function is_notes_initialized()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\RemoteSpecs {
    /**
     * Specs data source poller class.
     * This handles polling specs from JSON endpoints, and
     * stores the specs in to the database as an option.
     */
    abstract class DataSourcePoller
    {
        /**
         * Get class instance.
         */
        public static abstract function get_instance();
        /**
         * Name of data sources filter.
         */
        const FILTER_NAME = 'data_source_poller_data_sources';
        /**
         * Name of data source specs filter.
         */
        const FILTER_NAME_SPECS = 'data_source_poller_specs';
        /**
         * Id of DataSourcePoller.
         *
         * @var string
         */
        protected $id = array();
        /**
         * Default data sources array.
         *
         * @var array
         */
        protected $data_sources = array();
        /**
         * Default args.
         *
         * @var array
         */
        protected $args = array();
        /**
         * The logger instance.
         *
         * @var WC_Logger|null
         */
        protected static $logger = null;
        /**
         * Constructor.
         *
         * @param string $id id of DataSourcePoller.
         * @param array  $data_sources urls for data sources.
         * @param array  $args Options for DataSourcePoller.
         */
        public function __construct($id, $data_sources = array(), $args = array())
        {
        }
        /**
         * Get the logger instance.
         *
         * @return WC_Logger
         */
        protected static function get_logger()
        {
        }
        /**
         * Returns the key identifier of spec, this can easily be overwritten. Defaults to id.
         *
         * @param mixed $spec a JSON parsed spec coming from the JSON feed.
         * @return string|boolean
         */
        protected function get_spec_key($spec)
        {
        }
        /**
         * Reads the data sources for specs and persists those specs.
         *
         * @return array list of specs.
         */
        public function get_specs_from_data_sources()
        {
        }
        /**
         * Gets specs from cache if it exists.
         *
         * @return array list of specs.
         */
        public function get_cached_specs()
        {
        }
        /**
         * Reads the data sources for specs and persists those specs.
         *
         * @return bool Whether any specs were read.
         */
        public function read_specs_from_data_sources()
        {
        }
        /**
         * Delete the specs transient.
         *
         * @return bool success of failure of transient deletion.
         */
        public function delete_specs_transient()
        {
        }
        /**
         * Set the specs transient.
         *
         * @param array $specs The specs to set in the transient.
         * @param int   $expiration The expiration time for the transient.
         */
        public function set_specs_transient($specs, $expiration = 0)
        {
        }
        /**
         * Read a single data source and return the read specs
         *
         * @param string $url The URL to read the specs from.
         *
         * @return array The specs that have been read from the data source.
         */
        protected static function read_data_source($url)
        {
        }
        /**
         * Merge the specs.
         *
         * @param Array  $specs_to_merge_in The specs to merge in to $specs.
         * @param Array  $specs             The list of specs being merged into.
         * @param string $url               The url of the feed being merged in (for error reporting).
         */
        protected function merge_specs($specs_to_merge_in, &$specs, $url)
        {
        }
        /**
         * Validate the spec.
         *
         * @param object $spec The spec to validate.
         * @param string $url  The url of the feed that provided the spec.
         *
         * @return bool The result of the validation.
         */
        protected function validate_spec($spec, $url)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    /**
     * Specs data source poller class.
     * This handles polling specs from JSON endpoints, and
     * stores the specs in to the database as an option.
     *
     * @deprecated since 8.8.0
     */
    abstract class DataSourcePoller extends \Automattic\WooCommerce\Admin\RemoteSpecs\DataSourcePoller
    {
        /**
         * Log a deprecation to the error log.
         */
        private static function log_deprecation()
        {
        }
        /**
         * Constructor.
         *
         * @param string $id id of DataSourcePoller.
         * @param array  $data_sources urls for data sources.
         * @param array  $args Options for DataSourcePoller.
         */
        public function __construct($id, $data_sources = array(), $args = array())
        {
        }
        /**
         * Reads the data sources for specs and persists those specs.
         *
         * @deprecated 8.8.0
         * @return array list of specs.
         */
        public function get_specs_from_data_sources()
        {
        }
        /**
         * Reads the data sources for specs and persists those specs.
         *
         * @deprecated 8.8.0
         * @return bool Whether any specs were read.
         */
        public function read_specs_from_data_sources()
        {
        }
        /**
         * Delete the specs transient.
         *
         * @deprecated 8.8.0
         * @return bool success of failure of transient deletion.
         */
        public function delete_specs_transient()
        {
        }
        /**
         * Set the specs transient.
         *
         * @param array $specs The specs to set in the transient.
         * @param int   $expiration The expiration time for the transient.
         *
         * @deprecated 8.8.0
         */
        public function set_specs_transient($specs, $expiration = 0)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\DateTimeProvider {
    /**
     * DateTime Provider Interface.
     */
    interface DateTimeProviderInterface
    {
        /**
         * Returns the current DateTime.
         *
         * @return DateTime
         */
        public function get_now();
    }
    /**
     * Current DateTime Provider.
     *
     * Uses the current DateTime.
     */
    class CurrentDateTimeProvider implements \Automattic\WooCommerce\Admin\DateTimeProvider\DateTimeProviderInterface
    {
        /**
         * Returns the current DateTime.
         *
         * @return DateTime
         */
        public function get_now()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
    /**
     * A facade to allow deprecating an entire class.
     */
    class DeprecatedClassFacade
    {
        /**
         * The instance that this facade covers over.
         *
         * @var object
         */
        protected $instance;
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname;
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '';
        /**
         * Static array of logged messages.
         *
         * @var array
         */
        private static $logged_messages = array();
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Log a deprecation to the error log.
         *
         * @param string $function The name of the deprecated function being called.
         */
        private static function log_deprecation($function)
        {
        }
        /**
         * Executes when calling any function on an instance of this class.
         *
         * @param string $name      The name of the function being called.
         * @param array  $arguments An array of the arguments to the function call.
         */
        public function __call($name, $arguments)
        {
        }
        /**
         * Executes when calling any static function on this class.
         *
         * @param string $name      The name of the function being called.
         * @param array  $arguments An array of the arguments to the function call.
         */
        public static function __callStatic($name, $arguments)
        {
        }
    }
    /**
     * Feature plugin main class.
     *
     * @deprecated since 6.4.0
     */
    class FeaturePlugin extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\FeaturePlugin';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '6.4.0';
        /**
         * Constructor
         *
         * @return void
         */
        protected function __construct()
        {
        }
        /**
         * Get class instance.
         *
         * @return object Instance.
         */
        public static final function instance()
        {
        }
        /**
         * Init the feature plugin, only if we can detect both Gutenberg and WooCommerce.
         *
         * @deprecated 6.4.0
         */
        public function init()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\AsyncProductEditorCategoryField {
    /**
     * Loads assets related to the async category field for the product editor.
     */
    class Init
    {
        const FEATURE_ID = 'async-product-editor-category-field';
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Adds meta_box_cb callback arguments for custom metabox.
         *
         * @param array $args Category taxonomy args.
         * @return array $args category taxonomy args.
         */
        public function add_metabox_args($args)
        {
        }
        /**
         * Enqueue scripts needed for the product form block editor.
         */
        public function enqueue_scripts()
        {
        }
        /**
         * Enqueue styles needed for the rich text editor.
         */
        public function enqueue_styles()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features {
    /**
     * Features Class.
     */
    class Features
    {
        /**
         * Class instance.
         *
         * @var Loader instance
         */
        protected static $instance = null;
        /**
         * Optional features
         *
         * @var array
         */
        protected static $optional_features = array('analytics' => array('default' => 'yes'), 'remote-inbox-notifications' => array('default' => 'yes'));
        /**
         * Beta features
         *
         * @var array
         */
        protected static $beta_features = array('settings');
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Gets a build configured array of enabled WooCommerce Admin features/sections, but does not respect optionally disabled features.
         *
         * @return array Enabled Woocommerce Admin features/sections.
         */
        public static function get_features()
        {
        }
        /**
         * Gets the optional feature options as an associative array that can be toggled on or off.
         *
         * @return array
         */
        public static function get_optional_feature_options()
        {
        }
        /**
         * Returns if a specific wc-admin feature exists in the current environment.
         *
         * @param  string $feature Feature slug.
         * @return bool Returns true if the feature exists.
         */
        public static function exists($feature)
        {
        }
        /**
         * Get the feature class as a string.
         *
         * @param string $feature Feature name.
         * @return string|null
         */
        public static function get_feature_class($feature)
        {
        }
        /**
         * Class loader for enabled WooCommerce Admin features/sections.
         */
        public static function load_features()
        {
        }
        /**
         * Gets a build configured array of enabled WooCommerce Admin respecting optionally disabled features.
         *
         * @return array Enabled Woocommerce Admin features/sections.
         */
        public static function get_available_features()
        {
        }
        /**
         * Check if a feature is enabled.
         *
         * @param string $feature Feature slug.
         * @return bool
         */
        public static function is_enabled($feature)
        {
        }
        /**
         * Enable a toggleable optional feature.
         *
         * @param string $feature Feature name.
         * @return bool
         */
        public static function enable($feature)
        {
        }
        /**
         * Disable a toggleable optional feature.
         *
         * @param string $feature Feature name.
         * @return bool
         */
        public static function disable($feature)
        {
        }
        /**
         * Disable features when opting out of tracking.
         *
         * @param string $old_value Old value.
         * @param string $value New value.
         */
        public static function maybe_disable_features($old_value, $value)
        {
        }
        /**
         * Adds the Features section to the advanced tab of WooCommerce Settings
         *
         * @deprecated 7.0 The WooCommerce Admin features are now handled by the WooCommerce features engine (see the FeaturesController class).
         *
         * @param array $sections Sections.
         * @return array
         */
        public static function add_features_section($sections)
        {
        }
        /**
         * Adds the Features settings.
         *
         * @deprecated 7.0 The WooCommerce Admin features are now handled by the WooCommerce features engine (see the FeaturesController class).
         *
         * @param array  $settings Settings.
         * @param string $current_section Current section slug.
         * @return array
         */
        public static function add_features_settings($settings, $current_section)
        {
        }
        /**
         * Conditionally loads the beta features tracking modal.
         *
         * @param string $hook Page hook.
         */
        public static function maybe_load_beta_features_modal($hook)
        {
        }
        /**
         * Loads the required scripts on the correct pages.
         */
        public static function load_scripts()
        {
        }
        /**
         * Adds body classes to the main wp-admin wrapper, allowing us to better target elements in specific scenarios.
         *
         * @param string $admin_body_class Body class to add.
         */
        public static function add_admin_body_classes($admin_body_class = '')
        {
        }
        /**
         * Alias internal features classes to make them backward compatible.
         * We've moved our feature classes to src-internal as part of merging this
         * repository with WooCommerce Core to form a monorepo.
         * See https://wp.me/p90Yrv-2HY for details.
         */
        private function register_internal_class_aliases()
        {
        }
    }
    /**
     * Takes care of Launch Your Store related actions.
     */
    class LaunchYourStore
    {
        const BANNER_DISMISS_USER_META_KEY = 'coming_soon_banner_dismissed';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Save values submitted from WooCommerce -> Settings -> General.
         *
         * @return void
         */
        public function save_site_visibility_options()
        {
        }
        /**
         * Append coming soon prop tracks globally.
         *
         * @param array $event_properties Event properties array.
         *
         * @return array
         */
        public function append_coming_soon_global_tracks($event_properties)
        {
        }
        /**
         * Preload settings for Site Visibility.
         *
         * @param array $settings settings array.
         *
         * @return mixed
         */
        public function preload_settings($settings)
        {
        }
        /**
         * User must be an admin or editor.
         *
         * @return bool
         */
        private function is_manager_or_admin()
        {
        }
        /**
         * Add 'coming soon' banner on the frontend when the following conditions met.
         *
         * - User must be either an admin or store editor (must be logged in).
         * - 'woocommerce_coming_soon' option value must be 'yes'
         * - The page must not be the Coming soon page itself.
         */
        public function maybe_add_coming_soon_banner_on_frontend()
        {
        }
        /**
         * Register user meta fields for Launch Your Store.
         *
         * This should be removed in WC 9.4.
         */
        public function register_launch_your_store_user_meta_fields()
        {
        }
        /**
         * Register user meta fields for Launch Your Store.
         *
         * @param array $user_data_fields user data fields.
         * @return array
         */
        public function add_user_data_fields($user_data_fields)
        {
        }
        /**
         * Reset 'woocommerce_coming_soon_banner_dismissed' user meta to 'no'.
         *
         * Runs when a user logs-in successfully.
         *
         * @param string $user_login user login.
         * @param object $user user object.
         */
        public function reset_woocommerce_coming_soon_banner_dismissed($user_login, $user)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\MarketingRecommendations {
    /**
     * Default Marketing Recommendations
     */
    class DefaultMarketingRecommendations
    {
        /**
         * Get default specs.
         *
         * @return array Default specs.
         */
        public static function get_all()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\RemoteSpecs {
    /**
     * RemoteSpecsEngine class.
     */
    abstract class RemoteSpecsEngine
    {
        /**
         * Log errors.
         *
         * @param array $errors Array of errors from \Throwable interface.
         */
        public static function log_errors($errors = array())
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\MarketingRecommendations {
    /**
     * Marketing Recommendations engine.
     * This goes through the specs and gets marketing recommendations.
     */
    class Init extends \Automattic\WooCommerce\Admin\RemoteSpecs\RemoteSpecsEngine
    {
        /**
         * Slug of the category specifying marketing extensions on the WooCommerce.com store.
         *
         * @var string
         */
        const MARKETING_EXTENSION_CATEGORY_SLUG = 'marketing';
        /**
         * Slug of the subcategory specifying marketing channels on the WooCommerce.com store.
         *
         * @var string
         */
        const MARKETING_CHANNEL_SUBCATEGORY_SLUG = 'sales-channels';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Delete the specs transient.
         */
        public static function delete_specs_transient()
        {
        }
        /**
         * Get specs or fetch remotely if they don't exist.
         */
        public static function get_specs()
        {
        }
        /**
         * Get misc recommendations specs or fetch remotely if they don't exist.
         *
         * @since 9.5.0
         */
        public static function get_misc_recommendations_specs()
        {
        }
        /**
         * Process specs.
         *
         * @param array|null $specs Marketing recommendations spec array.
         * @return array
         */
        protected static function evaluate_specs(array $specs = null)
        {
        }
        /**
         * Load recommended plugins from WooCommerce.com
         *
         * @return array
         */
        public static function get_recommended_plugins() : array
        {
        }
        /**
         * Return only the recommended marketing channels from WooCommerce.com.
         *
         * @return array
         */
        public static function get_recommended_marketing_channels() : array
        {
        }
        /**
         * Return all recommended marketing extensions EXCEPT the marketing channels from WooCommerce.com.
         *
         * @return array
         */
        public static function get_recommended_marketing_extensions_excluding_channels() : array
        {
        }
        /**
         * Load misc recommendations from WooCommerce.com
         *
         * @since 9.5.0
         * @return array
         */
        public static function get_misc_recommendations() : array
        {
        }
        /**
         * Returns whether a plugin is a marketing extension.
         *
         * @param array $plugin_data The plugin properties returned by the API.
         *
         * @return bool
         */
        protected static function is_marketing_plugin(array $plugin_data) : bool
        {
        }
        /**
         * Returns whether a plugin is a marketing channel.
         *
         * @param array $plugin_data The plugin properties returned by the API.
         *
         * @return bool
         */
        protected static function is_marketing_channel_plugin(array $plugin_data) : bool
        {
        }
        /**
         * Convert an object to an array.
         * This is used to convert the specs to an array so that they can be returned by the API.
         *
         * @param mixed $obj Object to convert.
         * @param array &$visited Reference to an array keeping track of all seen objects to detect circular references.
         * @return array
         */
        public static function object_to_array($obj, &$visited = array())
        {
        }
    }
    /**
     * Specs data source poller class for marketing recommendations.
     */
    class MarketingRecommendationsDataSourcePoller extends \Automattic\WooCommerce\Admin\RemoteSpecs\DataSourcePoller
    {
        /**
         * Data Source Poller ID.
         */
        const ID = 'marketing_recommendations';
        /**
         * Default data sources array.
         *
         * @deprecated since 9.5.0. Use get_data_sources() instead.
         */
        const DATA_SOURCES = array();
        /**
         * Class instance.
         *
         * @var MarketingRecommendationsDataSourcePoller instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Get data sources.
         *
         * @return array
         */
        public static function get_data_sources()
        {
        }
    }
    /**
     * Specs data source poller class for misc recommendations.
     *
     * The misc recommendations are fetched from the WooCommerce.com API, the data structure looks like this:
     *
     * [
     *   {
     *     "id": "woocommerce-analytics",
     *     "order_attribution_promotion_percentage": [
     *       [ "9.7", 100 ],
     *       [ "9.6", 60 ],
     *       [ "9.5", 10 ]
     *     ]
     *   }
     * ]
     *
     * @since 9.5.0
     */
    class MiscRecommendationsDataSourcePoller extends \Automattic\WooCommerce\Admin\RemoteSpecs\DataSourcePoller
    {
        /**
         * Data Source Poller ID.
         */
        const ID = 'misc_recommendations';
        /**
         * Class instance.
         *
         * @var MiscRecommendationsDataSourcePoller instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Get data sources.
         *
         * @return array
         */
        public static function get_data_sources()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\Navigation {
    /**
     * Handle calls to deprecated methods.
     */
    class RemovedDeprecated
    {
        /**
         * Handle deprecated method calls.
         *
         * @param string $name The name of the deprecated method.
         */
        private static function handle_deprecated_method_call($name)
        {
        }
        /**
         * Handle calls to deprecated methods.
         *
         * @param string $name The name of the deprecated method.
         * @param array  $arguments The arguments passed to the deprecated method.
         */
        public function __call($name, $arguments)
        {
        }
        /**
         * Handle static calls to deprecated methods.
         *
         * @param string $name The name of the deprecated method.
         * @param array  $arguments The arguments passed to the deprecated method.
         */
        public static function __callStatic($name, $arguments)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features {
    /**
     * Contains backend logic for the onboarding profile and checklist feature.
     *
     * @deprecated since 6.3.0, use WooCommerce\Internal\Admin\Onboarding.
     */
    class Onboarding extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Admin\\Features\\Onboarding';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '6.3.0';
        /**
         * Hook into WooCommerce.
         */
        public function __construct()
        {
        }
        /**
         * Get a list of allowed industries for the onboarding wizard.
         *
         * @deprecated 6.3.0
         * @return array
         */
        public static function get_allowed_industries()
        {
        }
        /**
         * Get a list of allowed product types for the onboarding wizard.
         *
         * @deprecated 6.3.0
         * @return array
         */
        public static function get_allowed_product_types()
        {
        }
        /**
         * Get a list of themes for the onboarding wizard.
         *
         * @deprecated 6.3.0
         * @return array
         */
        public static function get_themes()
        {
        }
        /**
         * Get theme data used in onboarding theme browser.
         *
         * @deprecated 6.3.0
         * @param WP_Theme $theme Theme to gather data from.
         * @return array
         */
        public static function get_theme_data($theme)
        {
        }
        /**
         * Gets an array of themes that can be installed & activated via the onboarding wizard.
         *
         * @deprecated 6.3.0
         * @return array
         */
        public static function get_allowed_themes()
        {
        }
        /**
         * Get dynamic product data from API.
         *
         * @deprecated 6.3.0
         * @param array $product_types Array of product types.
         * @return array
         */
        public static function get_product_data($product_types)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\OnboardingTasks {
    /**
     * TaskTraits class.
     */
    trait TaskTraits
    {
        /**
         * Record a tracks event with the prefixed event name.
         *
         * @param string $event_name Event name.
         * @param array  $args Array of tracks arguments.
         * @return string Prefixed event name.
         */
        public function record_tracks_event($event_name, $args = array())
        {
        }
        /**
         * Get the task list ID.
         *
         * @return string
         */
        public function get_list_id()
        {
        }
    }
    /**
     * Task class.
     */
    abstract class Task
    {
        /**
         * Task traits.
         */
        use \Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskTraits;
        /**
         * Name of the dismiss option.
         *
         * @var string
         */
        const DISMISSED_OPTION = 'woocommerce_task_list_dismissed_tasks';
        /**
         * Name of the snooze option.
         *
         * @var string
         *
         * @deprecated 7.2.0
         */
        const SNOOZED_OPTION = 'woocommerce_task_list_remind_me_later_tasks';
        /**
         * Name of the actioned option.
         *
         * @var string
         */
        const ACTIONED_OPTION = 'woocommerce_task_list_tracked_completed_actions';
        /**
         * Option name of completed tasks.
         *
         * @var string
         */
        const COMPLETED_OPTION = 'woocommerce_task_list_tracked_completed_tasks';
        /**
         * Name of the active task transient.
         *
         * @var string
         */
        const ACTIVE_TASK_TRANSIENT = 'wc_onboarding_active_task';
        /**
         * Parent task list.
         *
         * @var TaskList
         */
        protected $task_list;
        /**
         * Duration to millisecond mapping.
         *
         * @var string
         */
        protected $duration_to_ms = array('day' => DAY_IN_SECONDS * 1000, 'hour' => HOUR_IN_SECONDS * 1000, 'week' => WEEK_IN_SECONDS * 1000);
        /**
         * Constructor
         *
         * @param TaskList|null $task_list Parent task list.
         */
        public function __construct($task_list = null)
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public abstract function get_id();
        /**
         * Title.
         *
         * @return string
         */
        public abstract function get_title();
        /**
         * Content.
         *
         * @return string
         */
        public abstract function get_content();
        /**
         * Time.
         *
         * @return string
         */
        public abstract function get_time();
        /**
         * Parent ID.
         *
         * @return string
         */
        public function get_parent_id()
        {
        }
        /**
         * Get task list options.
         *
         * @return array
         */
        public function get_parent_options()
        {
        }
        /**
         * Get custom option.
         *
         * @param string $option_name name of custom option.
         * @return mixed|null
         */
        public function get_parent_option($option_name)
        {
        }
        /**
         * Prefix event for track event naming.
         *
         * @param string $event_name Event name.
         * @return string
         */
        public function prefix_event($event_name)
        {
        }
        /**
         * Additional info.
         *
         * @return string
         */
        public function get_additional_info()
        {
        }
        /**
         * Additional data.
         *
         * @return mixed
         */
        public function get_additional_data()
        {
        }
        /**
         * Badge.
         *
         * @return string
         */
        public function get_badge()
        {
        }
        /**
         * Level.
         *
         * @deprecated 7.2.0
         *
         * @return string
         */
        public function get_level()
        {
        }
        /**
         * Action label.
         *
         * @return string
         */
        public function get_action_label()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Check if a task is dismissable.
         *
         * @return bool
         */
        public function is_dismissable()
        {
        }
        /**
         * Bool for task dismissal.
         *
         * @return bool
         */
        public function is_dismissed()
        {
        }
        /**
         * Dismiss the task.
         *
         * @return bool
         */
        public function dismiss()
        {
        }
        /**
         * Undo task dismissal.
         *
         * @return bool
         */
        public function undo_dismiss()
        {
        }
        /**
         * Check if a task is snoozeable.
         *
         * @deprecated 7.2.0
         *
         * @return bool
         */
        public function is_snoozeable()
        {
        }
        /**
         * Get the snoozed until datetime.
         *
         * @deprecated 7.2.0
         *
         * @return string
         */
        public function get_snoozed_until()
        {
        }
        /**
         * Bool for task snoozed.
         *
         * @deprecated 7.2.0
         *
         * @return bool
         */
        public function is_snoozed()
        {
        }
        /**
         * Snooze the task.
         *
         * @param string $duration Duration to snooze. day|hour|week.
         *
         * @deprecated 7.2.0
         *
         * @return bool
         */
        public function snooze($duration = 'day')
        {
        }
        /**
         * Undo task snooze.
         *
         * @deprecated 7.2.0
         *
         * @return bool
         */
        public function undo_snooze()
        {
        }
        /**
         * Check if a task list has previously been marked as complete.
         *
         * @return bool
         */
        public function has_previously_completed()
        {
        }
        /**
         * Track task completion if task is viewable.
         */
        public function possibly_track_completion()
        {
        }
        /**
         * Set this as the active task across page loads.
         */
        public function set_active()
        {
        }
        /**
         * Check if this is the active task.
         */
        public function is_active()
        {
        }
        /**
         * Check if the store is capable of viewing the task.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Check if task is disabled.
         *
         * @deprecated 7.2.0
         *
         * @return bool
         */
        public function is_disabled()
        {
        }
        /**
         * Check if the task is complete.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Check if the task has been visited.
         *
         * @return bool
         */
        public function is_visited()
        {
        }
        /**
         * Check if should record event when task is viewed
         *
         * @return bool
         */
        public function get_record_view_event() : bool
        {
        }
        /**
         * Get the task as JSON.
         *
         * @return array
         */
        public function get_json()
        {
        }
        /**
         * Convert object keys to camelcase.
         *
         * @param array $data Data to convert.
         * @return object
         */
        public static function convert_object_to_camelcase($data)
        {
        }
        /**
         * Mark a task as actioned.  Used to verify an action has taken place in some tasks.
         *
         * @return bool
         */
        public function mark_actioned()
        {
        }
        /**
         * Check if a task has been actioned.
         *
         * @return bool
         */
        public function is_actioned()
        {
        }
        /**
         * Check if a provided task ID has been actioned.
         *
         * @param string $id Task ID.
         * @return bool
         */
        public static function is_task_actioned($id)
        {
        }
        /**
         * Sorting function for tasks.
         *
         * @param Task  $a Task a.
         * @param Task  $b Task b.
         * @param array $sort_by list of columns with sort order.
         * @return int
         */
        public static function sort($a, $b, $sort_by = array())
        {
        }
    }
    /**
     * DeprecatedExtendedTask class.
     */
    class DeprecatedExtendedTask extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @var string
         */
        public $id = '';
        /**
         * Additional info.
         *
         * @var string|null
         */
        public $additional_info = '';
        /**
         * Content.
         *
         * @var string
         */
        public $content = '';
        /**
         * Whether the task is complete or not.
         *
         * @var boolean
         */
        public $is_complete = false;
        /**
         * Snoozeable.
         *
         * @var boolean
         */
        public $is_snoozeable = false;
        /**
         * Dismissable.
         *
         * @var boolean
         */
        public $is_dismissable = false;
        /**
         * Whether the store is capable of viewing the task.
         *
         * @var bool
         */
        public $can_view = true;
        /**
         * Level.
         *
         * @var int
         */
        public $level = 3;
        /**
         * Time.
         *
         * @var string|null
         */
        public $time;
        /**
         * Title.
         *
         * @var string
         */
        public $title = '';
        /**
         * Constructor.
         *
         * @param TaskList $task_list Parent task list.
         * @param array    $args Array of task args.
         */
        public function __construct($task_list, $args)
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Additional info.
         *
         * @return string
         */
        public function get_additional_info()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Level.
         *
         * @return int
         */
        public function get_level()
        {
        }
        /**
         * Title
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Time
         *
         * @return string|null
         */
        public function get_time()
        {
        }
        /**
         * Check if a task is snoozeable.
         *
         * @return bool
         */
        public function is_snoozeable()
        {
        }
        /**
         * Check if a task is dismissable.
         *
         * @return bool
         */
        public function is_dismissable()
        {
        }
        /**
         * Check if a task is dismissable.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Check if a task is dismissable.
         *
         * @return bool
         */
        public function can_view()
        {
        }
    }
    /**
     * DeprecatedOptions class.
     */
    class DeprecatedOptions
    {
        /**
         * Initialize.
         */
        public static function init()
        {
        }
        /**
         * Get the values from the correct source when attempting to retrieve deprecated options.
         *
         * @param string $pre_option Pre option value.
         * @param string $option Option name.
         * @return string
         */
        public static function get_deprecated_options($pre_option, $option)
        {
        }
        /**
         * Updates the new option names when deprecated options are updated.
         * This is a temporary fallback until we can fully remove the old task list components.
         *
         * @param string $value New value.
         * @param string $old_value Old value.
         * @param string $option Option name.
         * @return string
         */
        public static function update_deprecated_options($value, $old_value, $option)
        {
        }
    }
    /**
     * Contains the logic for completing onboarding tasks.
     */
    class Init
    {
        /**
         * Class instance.
         *
         * @var OnboardingTasks instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Get task item data for settings filter.
         *
         * @return array
         */
        public static function get_settings()
        {
        }
    }
    /**
     * Task List class.
     */
    class TaskList
    {
        /**
         * Task traits.
         */
        use \Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskTraits;
        /**
         * Option name hidden task lists.
         */
        const HIDDEN_OPTION = 'woocommerce_task_list_hidden_lists';
        /**
         * Option name of completed task lists.
         */
        const COMPLETED_OPTION = 'woocommerce_task_list_completed_lists';
        /**
         * Option name of hidden reminder bar.
         */
        const REMINDER_BAR_HIDDEN_OPTION = 'woocommerce_task_list_reminder_bar_hidden';
        /**
         * ID.
         *
         * @var string
         */
        public $id = '';
        /**
         * ID.
         *
         * @var string
         */
        public $hidden_id = '';
        /**
         * ID.
         *
         * @var boolean
         */
        public $display_progress_header = false;
        /**
         * Title.
         *
         * @var string
         */
        public $title = '';
        /**
         * Tasks.
         *
         * @var array
         */
        public $tasks = array();
        /**
         * Sort keys.
         *
         * @var array
         */
        public $sort_by = array();
        /**
         * Event prefix.
         *
         * @var string|null
         */
        public $event_prefix = null;
        /**
         * Task list visibility.
         *
         * @var boolean
         */
        public $visible = true;
        /**
         * Array of custom options.
         *
         * @var array
         */
        public $options = array();
        /**
         * Array of TaskListSection.
         *
         * @deprecated 7.2.0
         *
         * @var array
         */
        private $sections = array();
        /**
         * Key value map of task class and id used for sections.
         *
         * @deprecated 7.2.0
         *
         * @var array
         */
        public $task_class_id_map = array();
        /**
         * Constructor
         *
         * @param array $data Task list data.
         */
        public function __construct($data = array())
        {
        }
        /**
         * Check if the task list is hidden.
         *
         * @return bool
         */
        public function is_hidden()
        {
        }
        /**
         * Check if the task list is visible.
         *
         * @return bool
         */
        public function is_visible()
        {
        }
        /**
         * Hide the task list.
         *
         * @return bool
         */
        public function hide()
        {
        }
        /**
         * Sets the default homepage layout to two_columns if "setup" tasklist is completed or hidden.
         *
         * @param array $completed_or_hidden_tasklist_ids Array of tasklist ids.
         */
        public function maybe_set_default_layout($completed_or_hidden_tasklist_ids)
        {
        }
        /**
         * Undo hiding of the task list.
         *
         * @return bool
         */
        public function unhide()
        {
        }
        /**
         * Check if all viewable tasks are complete.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Check if a task list has previously been marked as complete.
         *
         * @return bool
         */
        public function has_previously_completed()
        {
        }
        /**
         * Add task to the task list.
         *
         * @param Task $task Task class.
         */
        public function add_task($task)
        {
        }
        /**
         * Get only visible tasks in list.
         *
         * @param string $task_id id of task.
         * @return Task
         */
        public function get_task($task_id)
        {
        }
        /**
         * Get only visible tasks in list.
         *
         * @return array
         */
        public function get_viewable_tasks()
        {
        }
        /**
         * Get task list sections.
         *
         * @deprecated 7.2.0
         *
         * @return array
         */
        public function get_sections()
        {
        }
        /**
         * Track list completion of viewable tasks.
         */
        public function possibly_track_completion()
        {
        }
        /**
         * Sorts the attached tasks array.
         *
         * @param array $sort_by list of columns with sort order.
         * @return TaskList returns $this, for chaining.
         */
        public function sort_tasks($sort_by = array())
        {
        }
        /**
         * Prefix event for track event naming.
         *
         * @param string $event_name Event name.
         * @return string
         */
        public function prefix_event($event_name)
        {
        }
        /**
         * Returns option to keep completed task list.
         *
         * @return string
         */
        public function get_keep_completed_task_list()
        {
        }
        /**
         * Remove reminder bar four weeks after store creation.
         */
        public static function possibly_remove_reminder_bar()
        {
        }
        /**
         * Get the list for use in JSON.
         *
         * @return array
         */
        public function get_json()
        {
        }
    }
    /**
     * Task List section class.
     *
     * @deprecated 7.2.0
     */
    class TaskListSection
    {
        /**
         * Title.
         *
         * @var string
         */
        public $id = '';
        /**
         * Title.
         *
         * @var string
         */
        public $title = '';
        /**
         * Description.
         *
         * @var string
         */
        public $description = '';
        /**
         * Image.
         *
         * @var string
         */
        public $image = '';
        /**
         * Tasks.
         *
         * @var array
         */
        public $task_names = array();
        /**
         * Parent task list.
         *
         * @var TaskList
         */
        protected $task_list;
        /**
         * Constructor
         *
         * @param array         $data Task list data.
         * @param TaskList|null $task_list Parent task list.
         */
        public function __construct($data = array(), $task_list = null)
        {
        }
        /**
         * Returns if section is complete.
         *
         * @return boolean;
         */
        private function is_complete()
        {
        }
        /**
         * Get the list for use in JSON.
         *
         * @return array
         */
        public function get_json()
        {
        }
    }
    /**
     * Task Lists class.
     */
    class TaskLists
    {
        /**
         * Class instance.
         *
         * @var TaskLists instance
         */
        protected static $instance = null;
        /**
         * An array of all registered lists.
         *
         * @var array
         */
        protected static $lists = array();
        /**
         * Boolean value to indicate if default tasks have been added.
         *
         * @var boolean
         */
        protected static $default_tasks_loaded = false;
        /**
         * The contents of this array is used in init_tasks() to run their init() methods.
         * If the classes do not have an init() method then nothing is executed.
         * Beyond that, adding tasks to this list has no effect, see init_default_lists() for the list of tasks.
         * that are added for each task list.
         *
         * @var array
         */
        const DEFAULT_TASKS = array('StoreDetails', 'Products', 'WooCommercePayments', 'Payments', 'Tax', 'Shipping', 'Marketing', 'Appearance', 'AdditionalPayments', 'ReviewShippingOptions', 'GetMobileApp');
        /**
         * Get class instance.
         */
        public static final function instance()
        {
        }
        /**
         * Initialize the task lists.
         */
        public static function init()
        {
        }
        /**
         * Check if an experiment is the treatment or control.
         *
         * @param string $name Name prefix of experiment.
         * @return bool
         */
        public static function is_experiment_treatment($name)
        {
        }
        /**
         * Initialize default lists.
         */
        public static function init_default_lists()
        {
        }
        /**
         * Initialize tasks.
         */
        public static function init_tasks()
        {
        }
        /**
         * Temporarily store the active task to persist across page loads when necessary.
         * Most tasks do not need this.
         */
        public static function set_active_task()
        {
        }
        /**
         * Add a task list.
         *
         * @param array $args Task list properties.
         * @return \WP_Error|TaskList
         */
        public static function add_list($args)
        {
        }
        /**
         * Add task to a given task list.
         *
         * @param string $list_id List ID to add the task to.
         * @param Task   $task Task object.
         *
         * @return \WP_Error|Task
         */
        public static function add_task($list_id, $task)
        {
        }
        /**
         * Add default extended task lists.
         *
         * @param array $extended_tasks list of extended tasks.
         */
        public static function maybe_add_extended_tasks($extended_tasks)
        {
        }
        /**
         * Get all task lists.
         *
         * @return array
         */
        public static function get_lists()
        {
        }
        /**
         * Get all task lists.
         *
         * @param array $ids list of task list ids.
         * @return array
         */
        public static function get_lists_by_ids($ids)
        {
        }
        /**
         * Get all task list ids.
         *
         * @return array
         */
        public static function get_list_ids()
        {
        }
        /**
         * Clear all task lists.
         */
        public static function clear_lists()
        {
        }
        /**
         * Get visible task lists.
         */
        public static function get_visible()
        {
        }
        /**
         * Retrieve a task list by ID.
         *
         * @param String $id Task list ID.
         *
         * @return TaskList|null
         */
        public static function get_list($id)
        {
        }
        /**
         * Retrieve single task.
         *
         * @param String $id Task ID.
         * @param String $task_list_id Task list ID.
         *
         * @return Object
         */
        public static function get_task($id, $task_list_id = null)
        {
        }
        /**
         * Return number of setup tasks remaining
         *
         * This is not updated immediately when a task is completed, but rather when task is marked as complete in the database to reduce performance impact.
         *
         * @return int|null
         */
        public static function setup_tasks_remaining()
        {
        }
        /**
         * Add badge to homescreen menu item for remaining tasks
         */
        public static function menu_task_count()
        {
        }
        /**
         * Add visible list ids to component settings.
         *
         * @param array $settings Component settings.
         *
         * @return array
         */
        public static function task_list_preloaded_settings($settings)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\OnboardingTasks\Tasks {
    /**
     * Payments Task
     */
    class Payments extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Used to cache is_complete() method result.
         *
         * @var null
         */
        private $is_complete_result = null;
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Check if the store has any enabled gateways.
         *
         * @return bool
         */
        public static function has_gateways()
        {
        }
    }
    /**
     * Payments Task
     */
    class AdditionalPayments extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Tasks\Payments
    {
        /**
         * Used to cache is_complete() method result.
         *
         * @var null
         */
        private $is_complete_result = null;
        /**
         * Used to cache can_view() method result.
         *
         * @var null
         */
        private $can_view_result = null;
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Check if the store has any enabled gateways in other category.
         *
         * @return bool
         */
        private static function has_enabled_other_category_gateways()
        {
        }
        /**
         * Check if the store has any enabled gateways in additional category.
         *
         * @return bool
         */
        private static function has_enabled_additional_gateways()
        {
        }
        /**
         * Check if the store has any enabled gateways based on the given criteria.
         *
         * @param callable|null $filter A callback function to filter the gateways.
         * @return bool
         */
        private static function has_enabled_gateways($filter = null)
        {
        }
        /**
         * Get the list of gateways to suggest.
         *
         * @param string $filter_by Filter by category. "category_additional" or "category_other".
         *
         * @return array
         */
        private static function get_suggestion_gateways($filter_by = 'category_additional')
        {
        }
    }
    /**
     * Appearance Task
     */
    class Appearance extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Action label.
         *
         * @return string
         */
        public function get_action_label()
        {
        }
    }
    /**
     * Customize Your Store Task
     *
     * @internal
     */
    class CustomizeStore extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Constructor
         *
         * @param TaskList $task_list Parent task list.
         */
        public function __construct($task_list)
        {
        }
        /**
         * Mark the CYS task as complete whenever the user updates their global styles.
         *
         * @param int     $post_id Post ID.
         * @param WP_Post $post Post object.
         * @param bool    $update Whether this is an existing post being updated.
         *
         * @return void
         */
        public function mark_task_as_complete_block_theme($post_id, $post, $update)
        {
        }
        /**
         * Mark the CYS task as complete whenever the user saves the customizer changes.
         *
         * @return void
         */
        public function mark_task_as_complete_classic_theme()
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Possibly add site editor scripts.
         */
        public function possibly_add_site_editor_scripts()
        {
        }
        /**
         * Appends a small style to hide admin bar
         *
         * @param bool $show Whether to show the admin bar.
         */
        public function possibly_hide_wp_admin_bar($show)
        {
        }
        /**
         * Runs script and add styles to remove unwanted elements and hide scrollbar
         * when users are viewing with ?cys-hide-admin-bar=true.
         *
         * @return void
         */
        public function possibly_remove_unwanted_ui_elements()
        {
        }
        /**
         * Checks if the post has custom global styles stored (if it is different from the default global styles).
         *
         * @param WP_Post $post The post object.
         * @return bool
         */
        private function has_custom_global_styles(\WP_Post $post)
        {
        }
        /**
         * Checks if the post is a template or a template part.
         *
         * @param WP_Post $post The post object.
         * @return bool Whether the post is a template or a template part.
         */
        private function has_custom_template(\WP_Post $post)
        {
        }
    }
    /**
     * Shipping Task
     */
    class ExperimentalShippingRecommendation extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Check if the store has any shipping zones.
         *
         * @return bool
         */
        public static function has_plugins_active()
        {
        }
        /**
         * Check if the Jetpack is connected.
         *
         * @return bool
         */
        public static function has_jetpack_connected()
        {
        }
    }
    /**
     * ExtendStore Task
     */
    class ExtendStore extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Always dismissable.
         *
         * @return bool
         */
        public function is_dismissable()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
    }
    // https://github.com/Automattic/jetpack/blob/trunk/projects/packages/connection/src/class-manager.php .
    /**
     * Get Mobile App Task
     */
    class GetMobileApp extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         * Can view under these conditions:
         *  - Jetpack is installed and connected && current site user has a wordpress.com account connected to jetpack
         *  - Jetpack is not connected && current user is capable of installing plugins
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Determines if site has any users connected to WordPress.com via JetPack
         *
         * @return bool
         */
        private static function is_jetpack_connected()
        {
        }
        /**
         * Determines if the current user is connected to Jetpack.
         *
         * @return bool
         */
        private static function is_current_user_connected()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
    }
    /**
     * Launch Your Store Task
     */
    class LaunchYourStore extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Constructor
         *
         * @param TaskList $task_list Parent task list.
         */
        public function __construct($task_list)
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Hide the WP admin bar when the user is previewing the site.
         *
         * @param bool $show Whether to show the admin bar.
         */
        public function possibly_hide_wp_admin_bar($show)
        {
        }
    }
    /**
     * Marketing Task
     */
    class Marketing extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Used to cache is_complete() method result.
         *
         * @var null
         */
        private $is_complete_result = null;
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Get the marketing plugins.
         *
         * @deprecated 9.3.0 Removed to improve performance.
         * @return array
         */
        public static function get_plugins()
        {
        }
        /**
         * Check if the store has installed marketing extensions.
         *
         * @deprecated 9.3.0 Removed to improve performance.
         * @return bool
         */
        public static function has_installed_extensions()
        {
        }
    }
    /**
     * Products Task
     */
    class Products extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        const PRODUCT_COUNT_TRANSIENT_NAME = 'woocommerce_product_task_product_count_transient';
        /**
         * Constructor
         *
         * @param TaskList $task_list Parent task list.
         */
        public function __construct($task_list)
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Additional data.
         *
         * @return array
         */
        public function get_additional_data()
        {
        }
        /**
         * Adds a return to task list notice when completing the manual product task.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_manual_return_notice_script($hook)
        {
        }
        /**
         * Adds a return to task list notice when completing the import product task.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_import_return_notice_script($hook)
        {
        }
        /**
         * Adds a return to task list notice when completing the loading sample products action.
         *
         * @param string $hook Page hook.
         */
        public function possibly_add_load_sample_return_notice_script($hook)
        {
        }
        /**
         * Delete the product count transient used in has_products() method to refresh the cache.
         *
         * @return void
         */
        public static function delete_product_count_cache()
        {
        }
        /**
         * Check if the store has any user created published products.
         *
         * @return bool
         */
        public static function has_products()
        {
        }
        /**
         * Count the number of user created products.
         * Generated products have the _headstart_post meta key.
         *
         * @return int The number of user created products.
         */
        private static function count_user_products()
        {
        }
    }
    /**
     * Review Shipping Options Task
     */
    class ReviewShippingOptions extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
    }
    /**
     * Shipping Task
     */
    class Shipping extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        const ZONE_COUNT_TRANSIENT_NAME = 'woocommerce_shipping_task_zone_count_transient';
        /**
         * Constructor
         *
         * @param TaskList $task_list Parent task list.
         */
        public function __construct($task_list = null)
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Check if the store has any shipping zones.
         *
         * @return bool
         */
        public static function has_shipping_zones()
        {
        }
        /**
         * Check if the store has physical products.
         *
         * @return bool
         */
        public static function has_physical_products()
        {
        }
        /**
         * Delete the zone count transient used in has_shipping_zones() method
         * to refresh the cache.
         */
        public static function delete_zone_count_transient()
        {
        }
        /**
         * Check if the store sells digital products only.
         *
         * @return bool
         */
        private static function is_selling_digital_type_only()
        {
        }
    }
    /**
     * Store Details Task
     */
    class StoreCreation extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Check if task is disabled.
         *
         * @return bool
         */
        public function is_disabled()
        {
        }
    }
    /**
     * Store Details Task
     */
    class StoreDetails extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
    }
    /**
     * Tax Task
     */
    class Tax extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Used to cache is_complete() method result.
         *
         * @var null
         */
        private $is_complete_result = null;
        /**
         * Constructor
         *
         * @param TaskList $task_list Parent task list.
         */
        public function __construct($task_list)
        {
        }
        /**
         * Adds a return to task list notice when completing the task.
         */
        public function possibly_add_return_notice_script()
        {
        }
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Action label.
         *
         * @return string
         */
        public function get_action_label()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Additional data.
         *
         * @return array
         */
        public function get_additional_data()
        {
        }
        /**
         * Check if the store has any enabled gateways.
         *
         * @return bool
         */
        public static function can_use_automated_taxes()
        {
        }
        /**
         * Get an array of countries that support automated tax.
         *
         * @return array
         */
        public static function get_automated_support_countries()
        {
        }
        /**
         * Get an array of countries that support Stripe tax.
         *
         * @return array
         */
        private static function get_stripe_tax_support_countries()
        {
        }
    }
    /**
     * Tour In-App Marketplace task
     */
    class TourInAppMarketplace extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
        /**
         * Check if should record event when task is viewed
         *
         * @return bool
         */
        public function get_record_view_event() : bool
        {
        }
    }
    /**
     * WooCommercePayments Task
     */
    class WooCommercePayments extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * Used to cache is_complete() method result.
         *
         * @var null
         */
        private $is_complete_result = null;
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Badge.
         *
         * @return string
         */
        public function get_badge()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Additional data.
         *
         * @return mixed
         */
        public function get_additional_data()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Action label.
         *
         * @return string
         */
        public function get_action_label()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Check if the WooPayments plugin was requested during onboarding.
         *
         * @return bool
         */
        public static function is_requested()
        {
        }
        /**
         * Check if the WooPayments plugin is installed.
         *
         * @return bool
         */
        public static function is_installed()
        {
        }
        /**
         * Check if the WooPayments plugin is active.
         *
         * @return bool
         */
        public static function is_wcpay_active()
        {
        }
        /**
         * Check if WooPayments is connected.
         *
         * @return bool
         */
        public static function is_connected()
        {
        }
        /**
         * Check if WooPayments needs setup.
         * Errored data or payments not enabled.
         *
         * @return bool
         */
        public static function is_account_partially_onboarded()
        {
        }
        /**
         * Get the WooPayments payment gateway suggestion.
         *
         * @return object|null The WooPayments suggestion, or null if none found.
         */
        public static function get_suggestion()
        {
        }
        /**
         * Check if the store location is in a WooPayments supported country.
         *
         * We infer this from the availability of a WooPayments payment gateways suggestion.
         *
         * @return bool True if the store location is in a WooPayments supported country, false otherwise.
         */
        public static function is_supported()
        {
        }
        /**
         * Get the WooPayments gateway.
         *
         * @return \WC_Payments|null
         */
        private static function get_gateway()
        {
        }
        /**
         * Check if the store has any enabled ecommerce gateways, other than WooPayments.
         *
         * We exclude offline payment methods from this check.
         *
         * @return bool
         */
        public static function has_other_ecommerce_gateways() : bool
        {
        }
        /**
         * The task action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\PaymentGatewaySuggestions {
    /**
     * Default Payment Gateways
     */
    class DefaultPaymentGateways
    {
        /**
         * This is the default priority for countries that are not in the $recommendation_priority_map.
         * Priority is used to determine which payment gateway to recommend first.
         * The lower the number, the higher the priority.
         *
         * @var array
         */
        private static $recommendation_priority = array(
            'woocommerce_payments' => 1,
            'woocommerce_payments:with-in-person-payments' => 1,
            'woocommerce_payments:without-in-person-payments' => 1,
            'stripe' => 2,
            'woo-mercado-pago-custom' => 3,
            // PayPal Payments.
            'ppcp-gateway' => 4,
            'mollie_wc_gateway_banktransfer' => 5,
            'razorpay' => 5,
            'payfast' => 5,
            'payubiz' => 6,
            'square_credit_card' => 6,
            'klarna_payments' => 6,
            // Klarna Checkout.
            'kco' => 6,
            'paystack' => 6,
            'eway' => 7,
            'amazon_payments_advanced' => 7,
            'affirm' => 8,
            'afterpay' => 9,
            'zipmoney' => 10,
            'payoneer-checkout' => 11,
        );
        /**
         * Get default specs.
         *
         * @return array Default specs.
         */
        public static function get_all()
        {
        }
        /**
         * Get array of countries supported by WCPay depending on feature flag.
         *
         * @return array Array of countries.
         */
        public static function get_wcpay_countries()
        {
        }
        /**
         * Get rules that match the store base location to one of the provided countries.
         *
         * @param array $countries Array of countries to match.
         * @return object Rules to match.
         */
        public static function get_rules_for_countries($countries)
        {
        }
        /**
         * Get rules that match the store's selling venues.
         *
         * @param array $selling_venues Array of venues to match.
         * @return object Rules to match.
         */
        public static function get_rules_for_selling_venues($selling_venues)
        {
        }
        /**
         * Get rules for when selling offline for core profiler.
         *
         * @return object Rules to match.
         */
        public static function get_rules_selling_offline()
        {
        }
        /**
         * Get default rules for CBD based on given argument.
         *
         * @param bool $should_have Whether or not the store should have CBD as an industry (true) or not (false).
         * @return object Rules to match.
         */
        public static function get_rules_for_cbd($should_have)
        {
        }
        /**
         * Get default rules for the WooPayments plugin being installed and activated.
         *
         * @param bool $should_be Whether WooPayments should be activated.
         *
         * @return object Rules to match.
         */
        public static function get_rules_for_wcpay_activated($should_be)
        {
        }
        /**
         * Get default rules for WooPayments being connected or not.
         *
         * This does not include the check for the WooPayments plugin to be active.
         *
         * @param bool $should_be Whether WooPayments should be connected.
         *
         * @return object Rules to match.
         */
        public static function get_rules_for_wcpay_connected($should_be)
        {
        }
        /**
         * Get recommendation priority for a given payment gateway by id and country.
         * If country is not supported, return null.
         *
         * @param string $gateway_id Payment gateway id.
         * @param string $country_code Store country code.
         * @return int|null Priority. Priority is 0-indexed, so 0 is the highest priority.
         */
        private static function get_recommendation_priority($gateway_id, $country_code)
        {
        }
        /**
         * Get the default recommendation priority for a payment gateway.
         * This is used when a country is not in the $recommendation_priority_map array.
         *
         * @param string $id Payment gateway id.
         * @return int Priority.
         */
        private static function get_default_recommendation_priority($id)
        {
        }
    }
    /**
     * Evaluates the spec and returns the evaluated suggestion.
     */
    class EvaluateSuggestion
    {
        /**
         * Stores memoized results of evaluate_specs.
         *
         * @var array
         */
        protected static $memo = array();
        /**
         * Evaluates the spec and returns the suggestion.
         *
         * @param object|array $spec        The suggestion to evaluate.
         * @param array        $logger_args Optional. Arguments for the rule evaluator logger.
         *
         * @return object The evaluated suggestion.
         */
        public static function evaluate($spec, $logger_args = array())
        {
        }
        /**
         * Evaluates the specs and returns the visible suggestions.
         *
         * @param array $specs payment suggestion spec array.
         * @param array $logger_args Optional. Arguments for the rule evaluator logger.
         *
         * @return array The visible suggestions and errors.
         */
        public static function evaluate_specs($specs, $logger_args = array())
        {
        }
        /**
         * Resets the memoized results. Useful for testing.
         */
        public static function reset_memo()
        {
        }
        /**
         * Returns a memoization key for the given specs.
         *
         * @param array $specs The specs to generate a key for.
         *
         * @return string The memoization key.
         */
        private static function get_memo_key($specs)
        {
        }
    }
    /**
     * Remote Payment Methods engine.
     * This goes through the specs and gets eligible payment gateways.
     */
    class Init extends \Automattic\WooCommerce\Admin\RemoteSpecs\RemoteSpecsEngine
    {
        /**
         * Option name for dismissed payment method suggestions.
         */
        const RECOMMENDED_PAYMENT_PLUGINS_DISMISS_OPTION = 'woocommerce_setting_payments_recommendations_hidden';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Go through the specs and run them.
         *
         * @param array|null $specs payment suggestion spec array.
         * @return array
         */
        public static function get_suggestions(array $specs = null)
        {
        }
        /**
         * Gets either cached or default suggestions.
         *
         * @return array
         */
        public static function get_cached_or_default_suggestions()
        {
        }
        /**
         * Delete the specs transient.
         */
        public static function delete_specs_transient()
        {
        }
        /**
         * Get specs or fetch remotely if they don't exist.
         */
        public static function get_specs()
        {
        }
        /**
         * Check if suggestions should be shown in the settings screen.
         *
         * @return bool
         */
        public static function should_display()
        {
        }
        /**
         * Dismiss the suggestions.
         */
        public static function dismiss()
        {
        }
    }
    /**
     * Specs data source poller class for payment gateway suggestions.
     */
    class PaymentGatewaySuggestionsDataSourcePoller extends \Automattic\WooCommerce\Admin\RemoteSpecs\DataSourcePoller
    {
        /**
         * Data Source Poller ID.
         */
        const ID = 'payment_gateway_suggestions';
        /**
         * Default data sources array.
         *
         * @deprecated since 9.5.0. Use get_data_sources() instead.
         */
        const DATA_SOURCES = array();
        /**
         * Class instance.
         *
         * @var PaymentGatewaySuggestionsDataSourcePoller instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Get data sources with dynamic base URL.
         *
         * @return array
         */
        public static function get_data_sources()
        {
        }
    }
    /**
     * PaymentGateway class
     */
    class PaymentGatewaysController
    {
        /**
         * Initialize payment gateway changes.
         */
        public static function init()
        {
        }
        /**
         * Add necessary fields to REST API response.
         *
         * @param  WP_REST_Response   $response   Response data.
         * @param  WC_Payment_Gateway $gateway    Payment gateway object.
         * @param  WP_REST_Request    $request    Request object.
         * @return WP_REST_Response
         */
        public static function extend_response($response, $gateway, $request)
        {
        }
        /**
         * Get payment gateway scripts for post-install.
         *
         * @param  WC_Payment_Gateway $gateway Payment gateway object.
         * @return array Install scripts.
         */
        public static function get_post_install_scripts($gateway)
        {
        }
        /**
         * Call an action after a gating has been successfully returned.
         */
        public static function possibly_do_connection_return_action()
        {
        }
        /**
         * Handle a successful gateway connection.
         *
         * @param string $gateway_id Gateway ID.
         */
        public static function handle_successfull_connection($gateway_id)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\ProductBlockEditor {
    /**
     * Product block registration and style registration functionality.
     */
    class BlockRegistry
    {
        /**
         * Generic blocks directory.
         */
        const GENERIC_BLOCKS_DIR = 'product-editor/blocks/generic';
        /**
         * Product fields blocks directory.
         */
        const PRODUCT_FIELDS_BLOCKS_DIR = 'product-editor/blocks/product-fields';
        /**
         * Array of all available generic blocks.
         */
        const GENERIC_BLOCKS = array('woocommerce/conditional', 'woocommerce/product-checkbox-field', 'woocommerce/product-collapsible', 'woocommerce/product-radio-field', 'woocommerce/product-pricing-field', 'woocommerce/product-section', 'woocommerce/product-section-description', 'woocommerce/product-subsection', 'woocommerce/product-subsection-description', 'woocommerce/product-details-section-description', 'woocommerce/product-tab', 'woocommerce/product-toggle-field', 'woocommerce/product-taxonomy-field', 'woocommerce/product-text-field', 'woocommerce/product-text-area-field', 'woocommerce/product-number-field', 'woocommerce/product-linked-list-field', 'woocommerce/product-select-field', 'woocommerce/product-notice-field');
        /**
         * Array of all available product fields blocks.
         */
        const PRODUCT_FIELDS_BLOCKS = array('woocommerce/product-catalog-visibility-field', 'woocommerce/product-custom-fields', 'woocommerce/product-custom-fields-toggle-field', 'woocommerce/product-description-field', 'woocommerce/product-downloads-field', 'woocommerce/product-images-field', 'woocommerce/product-inventory-email-field', 'woocommerce/product-sku-field', 'woocommerce/product-name-field', 'woocommerce/product-regular-price-field', 'woocommerce/product-sale-price-field', 'woocommerce/product-schedule-sale-fields', 'woocommerce/product-shipping-class-field', 'woocommerce/product-shipping-dimensions-fields', 'woocommerce/product-summary-field', 'woocommerce/product-tag-field', 'woocommerce/product-inventory-quantity-field', 'woocommerce/product-variation-items-field', 'woocommerce/product-password-field', 'woocommerce/product-list-field', 'woocommerce/product-has-variations-notice', 'woocommerce/product-single-variation-notice');
        /**
         * Singleton instance.
         *
         * @var BlockRegistry
         */
        private static $instance = null;
        /**
         * Get the singleton instance.
         */
        public static function get_instance() : \Automattic\WooCommerce\Admin\Features\ProductBlockEditor\BlockRegistry
        {
        }
        /**
         * Constructor
         */
        protected function __construct()
        {
        }
        /**
         * Get a file path for a given block file.
         *
         * @param string $path File path.
         * @param string $dir File directory.
         */
        private function get_file_path($path, $dir)
        {
        }
        /**
         * Register all the product blocks.
         */
        private function register_product_blocks()
        {
        }
        /**
         * Register product related block categories.
         *
         * @param array[]                 $block_categories Array of categories for block types.
         * @param WP_Block_Editor_Context $editor_context   The current block editor context.
         */
        public function register_categories($block_categories, $editor_context)
        {
        }
        /**
         * Get the block name without the "woocommerce/" prefix.
         *
         * @param string $block_name Block name.
         *
         * @return string
         */
        private function remove_block_prefix($block_name)
        {
        }
        /**
         * Augment the attributes of a block by adding attributes that are used by the product editor.
         *
         * @param array $attributes Block attributes.
         */
        private function augment_attributes($attributes)
        {
        }
        /**
         * Augment the uses_context of a block by adding attributes that are used by the product editor.
         *
         * @param array $uses_context Block uses_context.
         */
        private function augment_uses_context($uses_context)
        {
        }
        /**
         * Register a single block.
         *
         * @param string $block_name Block name.
         * @param string $block_dir Block directory.
         *
         * @return WP_Block_Type|false The registered block type on success, or false on failure.
         */
        private function register_block($block_name, $block_dir)
        {
        }
        /**
         * Check if a block is registered.
         *
         * @param string $block_name Block name.
         */
        public function is_registered($block_name) : bool
        {
        }
        /**
         * Unregister a block.
         *
         * @param string $block_name Block name.
         */
        public function unregister($block_name)
        {
        }
        /**
         * Register a block type from metadata stored in the block.json file.
         *
         * @param string $file_or_folder Path to the JSON file with metadata definition for the block or
         * path to the folder where the `block.json` file is located.
         *
         * @return \WP_Block_Type|false The registered block type on success, or false on failure.
         */
        public function register_block_type_from_metadata($file_or_folder)
        {
        }
    }
    /**
     * Utils for block templates.
     */
    class BlockTemplateUtils
    {
        /**
         * Directory which contains all templates
         *
         * @var string
         */
        const TEMPLATES_ROOT_DIR = 'templates';
        /**
         * Directory names.
         *
         * @var array
         */
        const DIRECTORY_NAMES = array('TEMPLATES' => 'product-form', 'TEMPLATE_PARTS' => 'product-form/parts');
        /**
         * Gets the directory where templates of a specific template type can be found.
         *
         * @param string $template_type wp_template or wp_template_part.
         * @return string
         */
        private static function get_templates_directory($template_type = 'wp_template')
        {
        }
        /**
         * Return the path to a block template file.
         * Otherwise, False.
         *
         * @param string $slug - Template slug.
         * @return string|bool   Path to the template file or false.
         */
        public static function get_block_template_path($slug)
        {
        }
        /**
         * Get the template data from the headers.
         *
         * @param string $file_path - File path.
         * @return array              Template data.
         */
        public static function get_template_file_data($file_path)
        {
        }
        /**
         * Get the template content from the file.
         *
         * @param string $file_path - File path.
         * @return string Content.
         */
        public static function get_template_content($file_path)
        {
        }
    }
    /**
     * Loads assets related to the product block editor.
     */
    class Init
    {
        /**
         * The context name used to identify the editor.
         */
        const EDITOR_CONTEXT_NAME = 'woocommerce/edit-product';
        /**
         * Supported product types.
         *
         * @var array
         */
        private $supported_product_types = array('simple');
        /**
         * Registered product templates.
         *
         * @var array
         */
        private $product_templates = array();
        /**
         * Redirection controller.
         *
         * @var RedirectionController
         */
        private $redirection_controller;
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Adds the product template ID to the product if it doesn't exist.
         *
         * @param WP_REST_Response $response The response object.
         * @param WC_Product       $product The product.
         */
        public function possibly_add_template_id($response, $product)
        {
        }
        /**
         * Enqueue scripts needed for the product form block editor.
         */
        public function enqueue_scripts()
        {
        }
        /**
         * Enqueue styles needed for the rich text editor.
         */
        public function enqueue_styles()
        {
        }
        /**
         * Dequeue conflicting styles.
         */
        public function dequeue_conflicting_styles()
        {
        }
        /**
         * Update the edit product links when the new experience is enabled.
         *
         * @param string $link    The edit link.
         * @param int    $post_id Post ID.
         * @return string
         */
        public function update_edit_product_link($link, $post_id)
        {
        }
        /**
         * Enables variation post type in REST API.
         *
         * @param array $args Array of post type arguments.
         * @return array Array of post type arguments.
         */
        public function enable_rest_api_for_product_variation($args)
        {
        }
        /**
         * Adds fields so that we can store user preferences for the variations block.
         *
         * @param array $user_data_fields User data fields.
         * @return array
         */
        public function add_user_data_fields($user_data_fields)
        {
        }
        /**
         * Sets the current screen to the block editor if a wc-admin page.
         */
        public function set_current_screen_to_block_editor_if_wc_admin()
        {
        }
        /**
         * Get the product editor settings.
         */
        private function get_product_editor_settings()
        {
        }
        /**
         * Get default product templates.
         *
         * @return array The default templates.
         */
        private function get_default_product_templates()
        {
        }
        /**
         * Create default product template by custom product type if it does not have a
         * template associated yet.
         *
         * @param array $templates The registered product templates.
         * @return array The new templates.
         */
        private function create_default_product_template_by_custom_product_type(array $templates)
        {
        }
        /**
         * Register layout templates.
         */
        public function register_layout_templates()
        {
        }
        /**
         * Register product templates.
         */
        public function register_product_templates()
        {
        }
        /**
         * Register user metas.
         */
        public function register_user_metas()
        {
        }
        /**
         * Registers the metadata block attribute for all block types.
         * This is a fallback/temporary solution until
         * the Gutenberg core version registers the metadata attribute.
         *
         * @see https://github.com/WordPress/gutenberg/blob/6aaa3686ae67adc1a6a6b08096d3312859733e1b/lib/compat/wordpress-6.5/blocks.php#L27-L47
         * To do: Remove this method once the Gutenberg core version registers the metadata attribute.
         *
         * @param array $args Array of arguments for registering a block type.
         * @return array $args
         */
        public function register_metadata_attribute($args)
        {
        }
        /**
         * Filters woocommerce block types.
         *
         * @param string[] $block_types Array of woocommerce block types.
         * @return array
         */
        public function get_block_types($block_types)
        {
        }
    }
    /**
     * Handle retrieval of product forms.
     */
    class ProductFormsController
    {
        /**
         * Product form templates.
         *
         * @var array
         */
        private $product_form_templates = array('simple');
        /**
         * Set up the product forms controller.
         */
        public function init()
        {
        }
        /**
         * Migrate form templates after WooCommerce plugin update.
         *
         * @param \WP_Upgrader $upgrader The WP_Upgrader instance.
         * @param array        $hook_extra Extra arguments passed to hooked filters.
         * @return void
         */
        public function migrate_templates_when_plugin_updated(\WP_Upgrader $upgrader, array $hook_extra)
        {
        }
        /**
         * Create or update a product_form post for each product form template.
         * If the post already exists, it will be updated.
         * If the post does not exist, it will be created even if the action is `update`.
         *
         * @param string $action - The action to perform. `insert` | `update`.
         * @return void
         */
        public function migrate_product_form_posts($action)
        {
        }
    }
    /**
     * The Product Template that represents the relation between the Product and
     * the LayoutTemplate (ProductFormTemplateInterface)
     *
     * @see ProductFormTemplateInterface
     */
    class ProductTemplate
    {
        /**
         * The template id.
         *
         * @var string
         */
        private $id;
        /**
         * The template title.
         *
         * @var string
         */
        private $title;
        /**
         * The product data.
         *
         * @var array
         */
        private $product_data;
        /**
         * The template order.
         *
         * @var Integer
         */
        private $order = 999;
        /**
         * The layout template id.
         *
         * @var string
         */
        private $layout_template_id = null;
        /**
         * The template description.
         *
         * @var string
         */
        private $description = null;
        /**
         * The template icon.
         *
         * @var string
         */
        private $icon = null;
        /**
         * If the template is directly selectable through the UI.
         *
         * @var boolean
         */
        private $is_selectable_by_user = true;
        /**
         * ProductTemplate constructor
         *
         * @param array $data The data.
         */
        public function __construct(array $data)
        {
        }
        /**
         * Get the template ID.
         *
         * @return string The ID.
         */
        public function get_id()
        {
        }
        /**
         * Get the template title.
         *
         * @return string The title.
         */
        public function get_title()
        {
        }
        /**
         * Get the layout template ID.
         *
         * @return string The layout template ID.
         */
        public function get_layout_template_id()
        {
        }
        /**
         * Set the layout template ID.
         *
         * @param string $layout_template_id The layout template ID.
         */
        public function set_layout_template_id(string $layout_template_id)
        {
        }
        /**
         * Get the product data.
         *
         * @return array The product data.
         */
        public function get_product_data()
        {
        }
        /**
         * Get the template description.
         *
         * @return string The description.
         */
        public function get_description()
        {
        }
        /**
         * Set the template description.
         *
         * @param string $description The template description.
         */
        public function set_description(string $description)
        {
        }
        /**
         * Get the template icon.
         *
         * @return string The icon.
         */
        public function get_icon()
        {
        }
        /**
         * Set the template icon.
         *
         * @see https://github.com/WordPress/gutenberg/tree/trunk/packages/icons.
         *
         * @param string $icon The icon name from the @wordpress/components or a url for an external image resource.
         */
        public function set_icon(string $icon)
        {
        }
        /**
         * Get the template order.
         *
         * @return int The order.
         */
        public function get_order()
        {
        }
        /**
         * Get the selectable attribute.
         *
         * @return boolean Selectable.
         */
        public function get_is_selectable_by_user()
        {
        }
        /**
         * Set the template order.
         *
         * @param int $order The template order.
         */
        public function set_order(int $order)
        {
        }
        /**
         * Get the product template as JSON like.
         *
         * @return array The JSON.
         */
        public function to_json()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates {
    /**
     * Interface for group containers, which contain sections and blocks.
     */
    interface GroupInterface extends \Automattic\WooCommerce\Admin\BlockTemplates\BlockContainerInterface
    {
        /**
         * Adds a new section to the group
         *
         * @param array $block_config block config.
         * @return SectionInterface new block section.
         */
        public function add_section(array $block_config) : \Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\SectionInterface;
        /**
         * Adds a new block to the group.
         *
         * @param array $block_config block config.
         */
        public function add_block(array $block_config) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface;
    }
    /**
     * Interface for block containers.
     */
    interface ProductFormTemplateInterface extends \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface
    {
        /**
         * Adds a new group block.
         *
         * @param array $block_config block config.
         * @return GroupInterface new group block.
         */
        public function add_group(array $block_config) : \Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\GroupInterface;
        /**
         * Gets Group block by id.
         *
         * @param string $group_id group id.
         * @return GroupInterface|null
         */
        public function get_group_by_id(string $group_id) : ?\Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\GroupInterface;
        /**
         * Gets Section block by id.
         *
         * @param string $section_id section id.
         * @return SectionInterface|null
         */
        public function get_section_by_id(string $section_id) : ?\Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\SectionInterface;
        /**
         * Gets subsection block by id.
         *
         * @param string $subsection_id subsection id.
         * @return SubsectionInterface|null
         */
        public function get_subsection_by_id(string $subsection_id) : ?\Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\SubsectionInterface;
        /**
         * Gets Block by id.
         *
         * @param string $block_id block id.
         * @return BlockInterface|null
         */
        public function get_block_by_id(string $block_id) : ?\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface;
    }
    /**
     * Interface for section containers, which contain sub-sections and blocks.
     */
    interface SectionInterface extends \Automattic\WooCommerce\Admin\BlockTemplates\BlockContainerInterface
    {
        /**
         * Adds a new sub-section to the section.
         *
         * @param array $block_config block config.
         * @return SubsectionInterface new block sub-section.
         */
        public function add_subsection(array $block_config) : \Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\SubsectionInterface;
        /**
         * Adds a new block to the section.
         *
         * @param array $block_config block config.
         */
        public function add_block(array $block_config) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface;
        /**
         * Adds a new sub-section to the section.
         *
         * @deprecated 8.6.0
         *
         * @param array $block_config The block data.
         */
        public function add_section(array $block_config) : \Automattic\WooCommerce\Admin\Features\ProductBlockEditor\ProductTemplates\SubsectionInterface;
    }
    /**
     * Interface for subsection containers, which contain sub-sections and blocks.
     */
    interface SubsectionInterface extends \Automattic\WooCommerce\Admin\BlockTemplates\BlockContainerInterface
    {
        /**
         * Adds a new block to the sub-section.
         *
         * @param array $block_config block config.
         */
        public function add_block(array $block_config) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface;
    }
}
namespace Automattic\WooCommerce\Admin\Features\ProductBlockEditor {
    /**
     * Handle redirecting to the old or new editor based on features and support.
     */
    class RedirectionController
    {
        /**
         * Registered product templates.
         *
         * @var array
         */
        private $product_templates = array();
        /**
         * Set up the hooks used for redirection.
         */
        public function __construct()
        {
        }
        /**
         * Check if the current screen is the legacy add product screen.
         */
        protected function is_legacy_add_new_screen() : bool
        {
        }
        /**
         * Check if the current screen is the legacy edit product screen.
         */
        protected function is_legacy_edit_screen() : bool
        {
        }
        /**
         * Check if a product is supported by the new experience.
         *
         * @param integer $product_id Product ID.
         */
        protected function is_product_supported($product_id) : bool
        {
        }
        /**
         * Check if a product is supported by the new experience.
         *
         * @param array $product_templates The registered product templates.
         */
        public function set_product_templates(array $product_templates) : void
        {
        }
        /**
         * Redirects from old product form to the new product form if the
         * feature `product_block_editor` is enabled.
         */
        public function maybe_redirect_to_new_editor() : void
        {
        }
        /**
         * Redirects from new product form to the old product form if the
         * feature `product_block_editor` is enabled.
         */
        public function maybe_redirect_to_old_editor() : void
        {
        }
        /**
         * Get the parsed WooCommerce Admin path.
         */
        protected function get_parsed_route() : array
        {
        }
        /**
         * Redirect non supported product types to legacy editor.
         */
        public function redirect_non_supported_product_types() : void
        {
        }
    }
    /**
     * Add tracks for the product block editor.
     */
    class Tracks
    {
        /**
         * Initialize the tracks.
         */
        public function init()
        {
        }
        /**
         * Check if a URL is a product editor page.
         *
         * @param string $url Url to check.
         * @return boolean
         */
        protected function is_product_editor_page($url)
        {
        }
        /**
         * Update the product source if we're on the product editor page.
         *
         * @param string $source Source of product.
         * @return string
         */
        public function add_product_source($source)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\ProductDataViews {
    /**
     * Loads assets related to the product block editor.
     */
    class Init
    {
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Returns true if we are on a JS powered admin page.
         */
        private static function is_product_data_view_page()
        {
        }
        /**
         * Checks for data views support.
         */
        private function has_data_views_support()
        {
        }
        /**
         * Enqueue styles needed for the rich text editor.
         */
        public function enqueue_styles()
        {
        }
        /**
         * Enqueue scripts needed for the product form block editor.
         */
        public function enqueue_scripts()
        {
        }
        /**
         * Replaces the default posts menu item with the new posts dashboard.
         */
        public function woocommerce_add_new_products_dashboard()
        {
        }
        /**
         * Renders the new posts dashboard page.
         */
        public function woocommerce_products_dashboard()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features {
    /**
     * Contains backend logic for the Settings feature.
     */
    class Settings
    {
        /**
         * Class instance.
         *
         * @var Settings instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Hook into WooCommerce.
         */
        public function __construct()
        {
        }
        /**
         * Check if the current screen is the WooCommerce settings page.
         *
         * @return bool
         */
        public function is_settings_page()
        {
        }
        /**
         * Enqueue styles for the settings editor.
         */
        public function enqueue_settings_editor_styles()
        {
        }
        /**
         * Enqueue scripts for the settings editor.
         */
        public function enqueue_settings_editor_scripts()
        {
        }
        /**
         * Add the necessary data to initially load the WooCommerce Settings pages.
         *
         * @param array $settings Array of component settings.
         * @return array Array of component settings.
         */
        public static function add_component_settings($settings)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features\ShippingPartnerSuggestions {
    /**
     * Default Shipping Partners
     */
    class DefaultShippingPartners
    {
        /**
         * Get default specs.
         *
         * @return array Default specs.
         */
        public static function get_all()
        {
        }
        /**
         * Get rules that match the store base location to one of the provided countries.
         *
         * @param array $countries Array of countries to match.
         * @return object Rules to match.
         */
        public static function get_rules_for_countries($countries)
        {
        }
    }
    /**
     * Class ShippingPartnerSuggestions
     */
    class ShippingPartnerSuggestions extends \Automattic\WooCommerce\Admin\RemoteSpecs\RemoteSpecsEngine
    {
        /**
         * Go through the specs and run them.
         *
         * @param array|null $specs shipping partner suggestion spec array.
         * @return array
         */
        public static function get_suggestions(array $specs = null)
        {
        }
        /**
         * Get specs or fetch remotely if they don't exist.
         */
        public static function get_specs()
        {
        }
    }
    /**
     * Specs data source poller class for shipping partner suggestions.
     */
    class ShippingPartnerSuggestionsDataSourcePoller extends \Automattic\WooCommerce\Admin\RemoteSpecs\DataSourcePoller
    {
        /**
         * Data Source Poller ID.
         */
        const ID = 'shipping_partner_suggestions';
        /**
         * Default data sources array.
         *
         * @deprecated since 9.5.0. Use get_data_sources() instead.
         */
        const DATA_SOURCES = array();
        /**
         * Class instance.
         *
         * @var ShippingPartnerSuggestionsDataSourcePoller instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Get data sources.
         *
         * @return array
         */
        public static function get_data_sources()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Features {
    /**
     * Shows print shipping label banner on edit order page.
     */
    class TransientNotices
    {
        /**
         * Option name for the queue.
         */
        const QUEUE_OPTION = 'woocommerce_admin_transient_notices_queue';
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Get all notices in the queue.
         *
         * @return array
         */
        public static function get_queue()
        {
        }
        /**
         * Get all notices in the queue by a given user ID.
         *
         * @param int $user_id User ID.
         * @return array
         */
        public static function get_queue_by_user($user_id)
        {
        }
        /**
         * Get a notice by ID.
         *
         * @param array $notice_id Notice of ID to get.
         * @return array|null
         */
        public static function get($notice_id)
        {
        }
        /**
         * Add a notice to be shown.
         *
         * @param array $notice Notice.
         *    $notice = array(
         *      'id'      => (string) Unique ID for the notice. Required.
         *      'user_id' => (int|null) User ID to show the notice to.
         *      'status'  => (string) info|error|success
         *      'content' => (string) Content to be shown for the notice. Required.
         *      'options' => (array) Array of options to be passed to the notice component.
         *       See https://developer.wordpress.org/block-editor/reference-guides/data/data-core-notices/#createNotice for available options.
         *    ).
         */
        public static function add($notice)
        {
        }
        /**
         * Remove a notice by ID.
         *
         * @param array $notice_id Notice of ID to remove.
         */
        public static function remove($notice_id)
        {
        }
        /**
         * Preload options to prime state of the application.
         *
         * @param array $options Array of options to preload.
         * @return array
         */
        public function preload_options($options)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    /**
     * Loader Class.
     *
     * @deprecated since 6.3.0, use WooCommerce\Internal\Admin\Loader.
     */
    class Loader extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Loader';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '6.3.0';
        /**
         * Returns if a specific wc-admin feature is enabled.
         *
         * @param  string $feature Feature slug.
         * @return bool Returns true if the feature is enabled.
         *
         * @deprecated since 5.0.0, use Features::is_enabled( $feature )
         */
        public static function is_feature_enabled($feature)
        {
        }
        /**
         * Returns true if we are on a JS powered admin page or
         * a "classic" (non JS app) powered admin page (an embedded page).
         *
         * @deprecated 6.3.0
         */
        public static function is_admin_or_embed_page()
        {
        }
        /**
         * Returns true if we are on a JS powered admin page.
         *
         * @deprecated 6.3.0
         */
        public static function is_admin_page()
        {
        }
        /**
         * Returns true if we are on a "classic" (non JS app) powered admin page.
         *
         * @deprecated 6.3.0
         */
        public static function is_embed_page()
        {
        }
        /**
         * Determines if a minified JS file should be served.
         *
         * @param  boolean $script_debug Only serve unminified files if script debug is on.
         * @return boolean If js asset should use minified version.
         *
         * @deprecated since 6.3.0, use WCAdminAssets::should_use_minified_js_file( $script_debug )
         */
        public static function should_use_minified_js_file($script_debug)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Marketing {
    /**
     * Installed Marketing Extensions class.
     */
    class InstalledExtensions
    {
        /**
         * Gets an array of plugin data for the "Installed marketing extensions" card.
         *
         * Valid extensions statuses are: installed, activated, configured
         */
        public static function get_data()
        {
        }
        /**
         * Get allowed plugins.
         *
         * @return array
         */
        public static function get_allowed_plugins()
        {
        }
        /**
         * Get AutomateWoo extension data.
         *
         * @return array|bool
         */
        protected static function get_automatewoo_extension_data()
        {
        }
        /**
         * Get AutomateWoo Refer a Friend extension data.
         *
         * @return array|bool
         */
        protected static function get_aw_referral_extension_data()
        {
        }
        /**
         * Get AutomateWoo Birthdays extension data.
         *
         * @return array|bool
         */
        protected static function get_aw_birthdays_extension_data()
        {
        }
        /**
         * Get MailChimp extension data.
         *
         * @return array|bool
         */
        protected static function get_mailchimp_extension_data()
        {
        }
        /**
         * Get Facebook extension data.
         *
         * @return array|bool
         */
        protected static function get_facebook_extension_data()
        {
        }
        /**
         * Get Pinterest extension data.
         *
         * @return array|bool
         */
        protected static function get_pinterest_extension_data()
        {
        }
        /**
         * Get Google extension data.
         *
         * @return array|bool
         */
        protected static function get_google_extension_data()
        {
        }
        /**
         * Get Amazon / Ebay extension data.
         *
         * @return array|bool
         */
        protected static function get_amazon_ebay_extension_data()
        {
        }
        /**
         * Get MailPoet extension data.
         *
         * @return array|bool
         */
        protected static function get_mailpoet_extension_data()
        {
        }
        /**
         * Get Klaviyo extension data.
         *
         * @return array|bool
         */
        protected static function get_klaviyo_extension_data()
        {
        }
        /**
         * Get Creative Mail for WooCommerce extension data.
         *
         * @return array|bool
         */
        protected static function get_creative_mail_extension_data()
        {
        }
        /**
         * Get TikTok for WooCommerce extension data.
         *
         * @return array|bool
         */
        protected static function get_tiktok_extension_data()
        {
        }
        /**
         * Get Jetpack CRM for WooCommerce extension data.
         *
         * @return array|bool
         */
        protected static function get_jetpack_crm_extension_data()
        {
        }
        /**
         * Get WooCommerce Zapier extension data.
         *
         * @return array|bool
         */
        protected static function get_zapier_extension_data()
        {
        }
        /**
         * Get Salesforce extension data.
         *
         * @return array|bool
         */
        protected static function get_salesforce_extension_data()
        {
        }
        /**
         * Get Vimeo extension data.
         *
         * @return array|bool
         */
        protected static function get_vimeo_extension_data()
        {
        }
        /**
         * Get Trustpilot extension data.
         *
         * @return array|bool
         */
        protected static function get_trustpilot_extension_data()
        {
        }
        /**
         * Get an array of basic data for a given extension.
         *
         * @param string $slug Plugin slug.
         *
         * @return array|false
         */
        protected static function get_extension_base_data($slug)
        {
        }
    }
    /**
     * MarketingCampaign class
     *
     * @since x.x.x
     */
    class MarketingCampaign
    {
        /**
         * The unique identifier.
         *
         * @var string
         */
        protected $id;
        /**
         * The marketing campaign type.
         *
         * @var MarketingCampaignType
         */
        protected $type;
        /**
         * Title of the marketing campaign.
         *
         * @var string
         */
        protected $title;
        /**
         * The URL to the channel's campaign management page.
         *
         * @var string
         */
        protected $manage_url;
        /**
         * The cost of the marketing campaign with the currency.
         *
         * @var Price
         */
        protected $cost;
        /**
         * The sales of the marketing campaign with the currency.
         *
         * @var Price
         */
        protected $sales;
        /**
         * MarketingCampaign constructor.
         *
         * @param string                $id         The marketing campaign's unique identifier.
         * @param MarketingCampaignType $type       The marketing campaign type.
         * @param string                $title      The title of the marketing campaign.
         * @param string                $manage_url The URL to the channel's campaign management page.
         * @param Price|null            $cost       The cost of the marketing campaign with the currency.
         * @param Price|null            $sales      The sales of the marketing campaign with the currency.
         */
        public function __construct(string $id, \Automattic\WooCommerce\Admin\Marketing\MarketingCampaignType $type, string $title, string $manage_url, \Automattic\WooCommerce\Admin\Marketing\Price $cost = null, \Automattic\WooCommerce\Admin\Marketing\Price $sales = null)
        {
        }
        /**
         * Returns the marketing campaign's unique identifier.
         *
         * @return string
         */
        public function get_id() : string
        {
        }
        /**
         * Returns the marketing campaign type.
         *
         * @return MarketingCampaignType
         */
        public function get_type() : \Automattic\WooCommerce\Admin\Marketing\MarketingCampaignType
        {
        }
        /**
         * Returns the title of the marketing campaign.
         *
         * @return string
         */
        public function get_title() : string
        {
        }
        /**
         * Returns the URL to manage the marketing campaign.
         *
         * @return string
         */
        public function get_manage_url() : string
        {
        }
        /**
         * Returns the cost of the marketing campaign with the currency.
         *
         * @return Price|null
         */
        public function get_cost() : ?\Automattic\WooCommerce\Admin\Marketing\Price
        {
        }
        /**
         * Returns the sales of the marketing campaign with the currency.
         *
         * @return Price|null
         */
        public function get_sales() : ?\Automattic\WooCommerce\Admin\Marketing\Price
        {
        }
    }
    /**
     * MarketingCampaignType class
     *
     * @since x.x.x
     */
    class MarketingCampaignType
    {
        /**
         * The unique identifier.
         *
         * @var string
         */
        protected $id;
        /**
         * The marketing channel that this campaign type belongs to.
         *
         * @var MarketingChannelInterface
         */
        protected $channel;
        /**
         * Name of the marketing campaign type.
         *
         * @var string
         */
        protected $name;
        /**
         * Description of the marketing campaign type.
         *
         * @var string
         */
        protected $description;
        /**
         * The URL to the create campaign page.
         *
         * @var string
         */
        protected $create_url;
        /**
         * The URL to an image/icon for the campaign type.
         *
         * @var string
         */
        protected $icon_url;
        /**
         * MarketingCampaignType constructor.
         *
         * @param string                    $id          A unique identifier for the campaign type.
         * @param MarketingChannelInterface $channel     The marketing channel that this campaign type belongs to.
         * @param string                    $name        Name of the marketing campaign type.
         * @param string                    $description Description of the marketing campaign type.
         * @param string                    $create_url  The URL to the create campaign page.
         * @param string                    $icon_url    The URL to an image/icon for the campaign type.
         */
        public function __construct(string $id, \Automattic\WooCommerce\Admin\Marketing\MarketingChannelInterface $channel, string $name, string $description, string $create_url, string $icon_url)
        {
        }
        /**
         * Returns the marketing campaign's unique identifier.
         *
         * @return string
         */
        public function get_id() : string
        {
        }
        /**
         * Returns the marketing channel that this campaign type belongs to.
         *
         * @return MarketingChannelInterface
         */
        public function get_channel() : \Automattic\WooCommerce\Admin\Marketing\MarketingChannelInterface
        {
        }
        /**
         * Returns the name of the marketing campaign type.
         *
         * @return string
         */
        public function get_name() : string
        {
        }
        /**
         * Returns the description of the marketing campaign type.
         *
         * @return string
         */
        public function get_description() : string
        {
        }
        /**
         * Returns the URL to the create campaign page.
         *
         * @return string
         */
        public function get_create_url() : string
        {
        }
        /**
         * Returns the URL to an image/icon for the campaign type.
         *
         * @return string
         */
        public function get_icon_url() : string
        {
        }
    }
    /**
     * MarketingChannelInterface interface
     *
     * @since x.x.x
     */
    interface MarketingChannelInterface
    {
        public const PRODUCT_LISTINGS_NOT_APPLICABLE = 'not-applicable';
        public const PRODUCT_LISTINGS_SYNC_IN_PROGRESS = 'sync-in-progress';
        public const PRODUCT_LISTINGS_SYNC_FAILED = 'sync-failed';
        public const PRODUCT_LISTINGS_SYNCED = 'synced';
        /**
         * Returns the unique identifier string for the marketing channel extension, also known as the plugin slug.
         *
         * @return string
         */
        public function get_slug() : string;
        /**
         * Returns the name of the marketing channel.
         *
         * @return string
         */
        public function get_name() : string;
        /**
         * Returns the description of the marketing channel.
         *
         * @return string
         */
        public function get_description() : string;
        /**
         * Returns the path to the channel icon.
         *
         * @return string
         */
        public function get_icon_url() : string;
        /**
         * Returns the setup status of the marketing channel.
         *
         * @return bool
         */
        public function is_setup_completed() : bool;
        /**
         * Returns the URL to the settings page, or the link to complete the setup/onboarding if the channel has not been set up yet.
         *
         * @return string
         */
        public function get_setup_url() : string;
        /**
         * Returns the status of the marketing channel's product listings.
         *
         * @return string
         */
        public function get_product_listings_status() : string;
        /**
         * Returns the number of channel issues/errors (e.g. account-related errors, product synchronization issues, etc.).
         *
         * @return int The number of issues to resolve, or 0 if there are no issues with the channel.
         */
        public function get_errors_count() : int;
        /**
         * Returns an array of marketing campaign types that the channel supports.
         *
         * @return MarketingCampaignType[] Array of marketing campaign type objects.
         */
        public function get_supported_campaign_types() : array;
        /**
         * Returns an array of the channel's marketing campaigns.
         *
         * @return MarketingCampaign[]
         */
        public function get_campaigns() : array;
    }
    /**
     * MarketingChannels repository class
     *
     * @since x.x.x
     */
    class MarketingChannels
    {
        /**
         * The registered marketing channels.
         *
         * @var MarketingChannelInterface[]
         */
        private $registered_channels = [];
        /**
         * Registers a marketing channel.
         *
         * @param MarketingChannelInterface $channel The marketing channel to register.
         *
         * @return void
         *
         * @throws Exception If the given marketing channel is already registered.
         */
        public function register(\Automattic\WooCommerce\Admin\Marketing\MarketingChannelInterface $channel) : void
        {
        }
        /**
         * Unregisters all marketing channels.
         *
         * @return void
         */
        public function unregister_all() : void
        {
        }
        /**
         * Returns an array of all registered marketing channels.
         *
         * @return MarketingChannelInterface[]
         */
        public function get_registered_channels() : array
        {
        }
    }
    /**
     * Price class
     *
     * @since x.x.x
     */
    class Price
    {
        /**
         * The price.
         *
         * @var string
         */
        protected $value;
        /**
         * The currency of the price.
         *
         * @var string
         */
        protected $currency;
        /**
         * Price constructor.
         *
         * @param string $value    The value of the price.
         * @param string $currency The currency of the price.
         */
        public function __construct(string $value, string $currency)
        {
        }
        /**
         * Get value of the price.
         *
         * @return string
         */
        public function get_value() : string
        {
        }
        /**
         * Get the currency of the price.
         *
         * @return string
         */
        public function get_currency() : string
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Notes {
    /**
     * WC Admin Note Data Store (Custom Tables)
     */
    class DataStore extends \WC_Data_Store_WP implements \WC_Object_Data_Store_Interface
    {
        // Extensions should define their own contexts and use them to avoid applying woocommerce_note_where_clauses when not needed.
        const WC_ADMIN_NOTE_OPER_GLOBAL = 'global';
        /**
         * Method to create a new note in the database.
         *
         * @param Note $note Admin note.
         */
        public function create(&$note)
        {
        }
        /**
         * Method to read a note.
         *
         * @param Note $note Admin note.
         * @throws \Exception Throws exception when invalid data is found.
         */
        public function read(&$note)
        {
        }
        /**
         * Updates a note in the database.
         *
         * @param Note $note Admin note.
         */
        public function update(&$note)
        {
        }
        /**
         * Deletes a note from the database.
         *
         * @param Note  $note Admin note.
         * @param array $args Array of args to pass to the delete method (not used).
         */
        public function delete(&$note, $args = array())
        {
        }
        /**
         * Read actions from the database.
         *
         * @param Note $note Admin note.
         */
        private function read_actions(&$note)
        {
        }
        /**
         * Save actions to the database.
         * This function clears old actions, then re-inserts new if any changes are found.
         *
         * @param Note $note Note object.
         *
         * @return bool|void
         */
        private function save_actions(&$note)
        {
        }
        /**
         * Return an ordered list of notes.
         *
         * @param array  $args Query arguments.
         * @param string $context Optional argument that the woocommerce_note_where_clauses filter can use to determine whether to apply extra conditions. Extensions should define their own contexts and use them to avoid adding to notes where clauses when not needed.
         * @return array An array of objects containing a note id.
         */
        public function get_notes($args = array(), $context = self::WC_ADMIN_NOTE_OPER_GLOBAL)
        {
        }
        /**
         * Return an ordered list of notes, without paging or applying the 'woocommerce_note_where_clauses' filter.
         * INTERNAL: This method is not intended to be used by external code, and may change without notice.
         *
         * @param array $args Query arguments.
         * @return array An array of database records.
         */
        public function lookup_notes($args = array())
        {
        }
        /**
         * Return a count of notes.
         *
         * @param string $type Comma separated list of note types.
         * @param string $status Comma separated list of statuses.
         * @param string $context Optional argument that the woocommerce_note_where_clauses filter can use to determine whether to apply extra conditions. Extensions should define their own contexts and use them to avoid adding to notes where clauses when not needed.
         * @return string Count of objects with given type, status and context.
         */
        public function get_notes_count($type = array(), $status = array(), $context = self::WC_ADMIN_NOTE_OPER_GLOBAL)
        {
        }
        /**
         * Parses the query arguments passed in as arrays and escapes the values.
         *
         * @param array      $args the query arguments.
         * @param string     $key the key of the specific argument.
         * @param array|null $allowed_types optional allowed_types if only a specific set is allowed.
         * @return array the escaped array of argument values.
         */
        private function get_escaped_arguments_array_by_key($args = array(), $key = '', $allowed_types = null)
        {
        }
        /**
         * Return where clauses for getting notes by status and type. For use in both the count and listing queries.
         * Applies woocommerce_note_where_clauses filter.
         *
         * @uses args_to_where_clauses
         * @param array  $args Array of args to pass.
         * @param string $context Optional argument that the woocommerce_note_where_clauses filter can use to determine whether to apply extra conditions. Extensions should define their own contexts and use them to avoid adding to notes where clauses when not needed.
         * @return string Where clauses for the query.
         */
        public function get_notes_where_clauses($args = array(), $context = self::WC_ADMIN_NOTE_OPER_GLOBAL)
        {
        }
        /**
         * Return where clauses for notes queries without applying woocommerce_note_where_clauses filter.
         * INTERNAL: This method is not intended to be used by external code, and may change without notice.
         *
         * @param array $args Array of arguments for query conditionals.
         * @return string Where clauses.
         */
        protected function args_to_where_clauses($args = array())
        {
        }
        /**
         * Find all the notes with a given name.
         *
         * @param string $name Name to search for.
         * @return array An array of matching note ids.
         */
        public function get_notes_with_name($name)
        {
        }
        /**
         * Find the ids of all notes with a given type.
         *
         * @param string $note_type Type to search for.
         * @return array An array of matching note ids.
         */
        public function get_note_ids_by_type($note_type)
        {
        }
    }
    // phpcs:disable Generic.Files.OneObjectStructurePerFile.MultipleFound
    /**
     * WC_Admin_Note.
     *
     * @deprecated since 4.8.0, use Note
     */
    class WC_Admin_Note extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        // These constants must be redeclared as to not break plugins that use them.
        const E_WC_ADMIN_NOTE_ERROR = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_ERROR;
        const E_WC_ADMIN_NOTE_WARNING = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_WARNING;
        const E_WC_ADMIN_NOTE_UPDATE = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_UPDATE;
        const E_WC_ADMIN_NOTE_INFORMATIONAL = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_INFORMATIONAL;
        const E_WC_ADMIN_NOTE_MARKETING = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_MARKETING;
        const E_WC_ADMIN_NOTE_SURVEY = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_SURVEY;
        const E_WC_ADMIN_NOTE_PENDING = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_PENDING;
        const E_WC_ADMIN_NOTE_UNACTIONED = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_UNACTIONED;
        const E_WC_ADMIN_NOTE_ACTIONED = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_ACTIONED;
        const E_WC_ADMIN_NOTE_SNOOZED = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_SNOOZED;
        const E_WC_ADMIN_NOTE_EMAIL = \Automattic\WooCommerce\Admin\Notes\Note::E_WC_ADMIN_NOTE_EMAIL;
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Admin\\Notes\\Note';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
        /**
         * Note constructor. Loads note data.
         *
         * @param mixed $data Note data, object, or ID.
         */
        public function __construct($data = '')
        {
        }
    }
    /**
     * WC_Admin_Notes.
     *
     * @deprecated since 4.8.0, use Notes
     */
    class WC_Admin_Notes extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Admin\\Notes\\Notes';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Customize_Store_With_Blocks.
     *
     * @deprecated since 4.8.0, use CustomizeStoreWithBlocks
     */
    class WC_Admin_Notes_Customize_Store_With_Blocks extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\CustomizeStoreWithBlocks';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Edit_Products_On_The_Move.
     *
     * @deprecated since 4.8.0, use EditProductsOnTheMove
     */
    class WC_Admin_Notes_Edit_Products_On_The_Move extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\EditProductsOnTheMove';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_EU_VAT_Number.
     *
     * @deprecated since 4.8.0, use EUVATNumber
     */
    class WC_Admin_Notes_EU_VAT_Number extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\EUVATNumber';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Facebook_Marketing_Expert.
     *
     * @deprecated since 4.8.0, use FacebookMarketingExpert
     */
    class WC_Admin_Notes_Facebook_Marketing_Expert extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Admin\\Notes\\FacebookMarketingExpert';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_First_Product.
     *
     * @deprecated since 4.8.0, use FirstProduct
     */
    class WC_Admin_Notes_First_Product extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\FirstProduct';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Giving_Feedback_Notes.
     *
     * @deprecated since 4.8.0, use GivingFeedbackNotes
     */
    class WC_Admin_Notes_Giving_Feedback_Notes extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\GivingFeedbackNotes';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Install_JP_And_WCS_Plugins.
     *
     * @deprecated since 4.8.0, use InstallJPAndWCSPlugins
     */
    class WC_Admin_Notes_Install_JP_And_WCS_Plugins extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\InstallJPAndWCSPlugins';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Launch_Checklist.
     *
     * @deprecated since 4.8.0, use LaunchChecklist
     */
    class WC_Admin_Notes_Launch_Checklist extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\LaunchChecklist';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Migrate_From_Shopify.
     *
     * @deprecated since 4.8.0, use MigrateFromShopify
     */
    class WC_Admin_Notes_Migrate_From_Shopify extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\MigrateFromShopify';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Mobile_App.
     *
     * @deprecated since 4.8.0, use MobileApp
     */
    class WC_Admin_Notes_Mobile_App extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\MobileApp';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_New_Sales_Record.
     *
     * @deprecated since 4.8.0, use NewSalesRecord
     */
    class WC_Admin_Notes_New_Sales_Record extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\NewSalesRecord';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Onboarding_Email_Marketing.
     *
     * @deprecated since 4.8.0, use OnboardingEmailMarketing
     */
    class WC_Admin_Notes_Onboarding_Email_Marketing extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Admin\\Notes\\OnboardingEmailMarketing';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Onboarding_Payments.
     *
     * @deprecated since 4.8.0, use OnboardingPayments
     */
    class WC_Admin_Notes_Onboarding_Payments extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\OnboardingPayments';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Online_Clothing_Store.
     *
     * @deprecated since 4.8.0, use OnlineClothingStore
     */
    class WC_Admin_Notes_Online_Clothing_Store extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\OnlineClothingStore';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Order_Milestones.
     *
     * @deprecated since 4.8.0, use OrderMilestones
     */
    class WC_Admin_Notes_Order_Milestones extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\OrderMilestones';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Performance_On_Mobile.
     *
     * @deprecated since 4.8.0, use PerformanceOnMobile
     */
    class WC_Admin_Notes_Performance_On_Mobile extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\PerformanceOnMobile';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Personalize_Store.
     *
     * @deprecated since 4.8.0, use PersonalizeStore
     */
    class WC_Admin_Notes_Personalize_Store extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\PersonalizeStore';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Real_Time_Order_Alerts.
     *
     * @deprecated since 4.8.0, use RealTimeOrderAlerts
     */
    class WC_Admin_Notes_Real_Time_Order_Alerts extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\RealTimeOrderAlerts';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Selling_Online_Courses.
     *
     * @deprecated since 4.8.0, use SellingOnlineCourses
     */
    class WC_Admin_Notes_Selling_Online_Courses extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\SellingOnlineCourses';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Tracking_Opt_In.
     *
     * @deprecated since 4.8.0, use TrackingOptIn
     */
    class WC_Admin_Notes_Tracking_Opt_In extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\TrackingOptIn';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_Woo_Subscriptions_Notes.
     *
     * @deprecated since 4.8.0, use WooSubscriptionsNotes
     */
    class WC_Admin_Notes_Woo_Subscriptions_Notes extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\WooSubscriptionsNotes';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_WooCommerce_Payments.
     *
     * @deprecated since 4.8.0, use WooCommercePayments
     */
    class WC_Admin_Notes_WooCommerce_Payments extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\WooCommercePayments';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * WC_Admin_Notes_WooCommerce_Subscriptions.
     *
     * @deprecated since 4.8.0, use WooCommerceSubscriptions
     */
    class WC_Admin_Notes_WooCommerce_Subscriptions extends \Automattic\WooCommerce\Admin\DeprecatedClassFacade
    {
        /**
         * The name of the non-deprecated class that this facade covers.
         *
         * @var string
         */
        protected static $facade_over_classname = 'Automattic\\WooCommerce\\Internal\\Admin\\Notes\\WooCommerceSubscriptions';
        /**
         * The version that this class was deprecated in.
         *
         * @var string
         */
        protected static $deprecated_in_version = '4.8.0';
    }
    /**
     * Note class.
     */
    class Note extends \WC_Data
    {
        // Note types.
        const E_WC_ADMIN_NOTE_ERROR = 'error';
        // used for presenting error conditions.
        const E_WC_ADMIN_NOTE_WARNING = 'warning';
        // used for presenting warning conditions.
        const E_WC_ADMIN_NOTE_UPDATE = 'update';
        // i.e. used when a new version is available.
        const E_WC_ADMIN_NOTE_INFORMATIONAL = 'info';
        // used for presenting informational messages.
        const E_WC_ADMIN_NOTE_MARKETING = 'marketing';
        // used for adding marketing messages.
        const E_WC_ADMIN_NOTE_SURVEY = 'survey';
        // used for adding survey messages.
        const E_WC_ADMIN_NOTE_EMAIL = 'email';
        // used for adding notes that will be sent by email.
        // Note status codes.
        const E_WC_ADMIN_NOTE_PENDING = 'pending';
        // the note is pending - hidden but not actioned.
        const E_WC_ADMIN_NOTE_UNACTIONED = 'unactioned';
        // the note has not yet been actioned by a user.
        const E_WC_ADMIN_NOTE_ACTIONED = 'actioned';
        // the note has had its action completed by a user.
        const E_WC_ADMIN_NOTE_SNOOZED = 'snoozed';
        // the note has been snoozed by a user.
        const E_WC_ADMIN_NOTE_SENT = 'sent';
        // the note has been sent by email to the user.
        /**
         * This is the name of this object type.
         *
         * @var string
         */
        protected $object_type = 'admin-note';
        /**
         * Cache group.
         *
         * @var string
         */
        protected $cache_group = 'admin-note';
        /**
         * Note constructor. Loads note data.
         *
         * @param mixed $data Note data, object, or ID.
         */
        public function __construct($data = '')
        {
        }
        /**
         * Merge changes with data and clear.
         *
         * @since 3.0.0
         */
        public function apply_changes()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Helpers
        |--------------------------------------------------------------------------
        |
        | Methods for getting allowed types, statuses.
        |
        */
        /**
         * Get allowed types.
         *
         * @return array
         */
        public static function get_allowed_types()
        {
        }
        /**
         * Get allowed statuses.
         *
         * @return array
         */
        public static function get_allowed_statuses()
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Getters
        |--------------------------------------------------------------------------
        |
        | Methods for getting data from the note object.
        |
        */
        /**
         * Returns all data for this object.
         *
         * Override \WC_Data::get_data() to avoid errantly including meta data
         * from ID collisions with the posts table.
         *
         * @return array
         */
        public function get_data()
        {
        }
        /**
         * Get note name.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_name($context = 'view')
        {
        }
        /**
         * Get note type.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_type($context = 'view')
        {
        }
        /**
         * Get note locale.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_locale($context = 'view')
        {
        }
        /**
         * Get note title.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_title($context = 'view')
        {
        }
        /**
         * Get note content.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_content($context = 'view')
        {
        }
        /**
         * Get note content data (i.e. values that would be needed for re-localization)
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return object
         */
        public function get_content_data($context = 'view')
        {
        }
        /**
         * Get note status.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_status($context = 'view')
        {
        }
        /**
         * Get note source.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return string
         */
        public function get_source($context = 'view')
        {
        }
        /**
         * Get date note was created.
         *
         * @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 on which user should be reminded of the note (if any).
         *
         * @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_reminder($context = 'view')
        {
        }
        /**
         * Get note snoozability.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool   Whether or not the note can be snoozed.
         */
        public function get_is_snoozable($context = 'view')
        {
        }
        /**
         * Get actions on the note (if any).
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_actions($context = 'view')
        {
        }
        /**
         * Get action by action name on the note.
         *
         * @param  string $action_name The action name.
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return object the action.
         */
        public function get_action($action_name, $context = 'view')
        {
        }
        /**
         * Get note layout (the old notes won't have one).
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_layout($context = 'view')
        {
        }
        /**
         * Get note image (if any).
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return array
         */
        public function get_image($context = 'view')
        {
        }
        /**
         * Get deleted status.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_is_deleted($context = 'view')
        {
        }
        /**
         * Get is_read status.
         *
         * @param  string $context What the value is for. Valid values are 'view' and 'edit'.
         * @return bool
         */
        public function get_is_read($context = 'view')
        {
        }
        /*
        |--------------------------------------------------------------------------
        | Setters
        |--------------------------------------------------------------------------
        |
        | Methods for setting note data. These should not update anything in the
        | database itself and should only change what is stored in the class
        | object.
        |
        */
        /**
         * Set note name.
         *
         * @param string $name Note name.
         */
        public function set_name($name)
        {
        }
        /**
         * Set note type.
         *
         * @param string $type Note type.
         */
        public function set_type($type)
        {
        }
        /**
         * Set note locale.
         *
         * @param string $locale Note locale.
         */
        public function set_locale($locale)
        {
        }
        /**
         * Set note title.
         *
         * @param string $title Note title.
         */
        public function set_title($title)
        {
        }
        /**
         * Set note icon (Deprecated).
         *
         * @param string $icon Note icon.
         */
        public function set_icon($icon)
        {
        }
        /**
         * Set note content.
         *
         * @param string $content Note content.
         */
        public function set_content($content)
        {
        }
        /**
         * Set note data for potential re-localization.
         *
         * @todo Set a default empty array? https://github.com/woocommerce/woocommerce-admin/pull/1763#pullrequestreview-212442921.
         * @param object $content_data Note data.
         */
        public function set_content_data($content_data)
        {
        }
        /**
         * Set note status.
         *
         * @param string $status Note status.
         */
        public function set_status($status)
        {
        }
        /**
         * Set note source.
         *
         * @param string $source Note source.
         */
        public function set_source($source)
        {
        }
        /**
         * Set date note was created. NULL is not allowed
         *
         * @param string|integer $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed.
         */
        public function set_date_created($date)
        {
        }
        /**
         * Set date admin should be reminded of note. NULL IS allowed
         *
         * @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_reminder($date)
        {
        }
        /**
         * Set note snoozability.
         *
         * @param bool $is_snoozable Whether or not the note can be snoozed.
         */
        public function set_is_snoozable($is_snoozable)
        {
        }
        /**
         * Clear actions from a note.
         */
        public function clear_actions()
        {
        }
        /**
         * Set note layout.
         *
         * @param string $layout Note layout.
         */
        public function set_layout($layout)
        {
        }
        /**
         * Set note image.
         *
         * @param string $image Note image.
         */
        public function set_image($image)
        {
        }
        /**
         * Set note deleted status. NULL is not allowed
         *
         * @param bool $is_deleted Note deleted status.
         */
        public function set_is_deleted($is_deleted)
        {
        }
        /**
         * Set note is_read status. NULL is not allowed
         *
         * @param bool $is_read Note is_read status.
         */
        public function set_is_read($is_read)
        {
        }
        /**
         * Add an action to the note
         *
         * @param string  $name           Action name (not presented to user).
         * @param string  $label          Action label (presented as button label).
         * @param string  $url            Action URL, if navigation needed. Optional.
         * @param string  $status         Status to transition parent Note to upon click. Defaults to 'actioned'.
         * @param boolean $primary        Deprecated since version 3.4.0.
         * @param string  $actioned_text The label to display after the note has been actioned but before it is dismissed in the UI.
         */
        public function add_action($name, $label, $url = '', $status = self::E_WC_ADMIN_NOTE_ACTIONED, $primary = false, $actioned_text = '')
        {
        }
        /**
         * Set actions on a note.
         *
         * @param array $actions Note actions.
         */
        public function set_actions($actions)
        {
        }
        /**
         * Add a nonce to an existing note action.
         *
         * @link https://codex.wordpress.org/WordPress_Nonces
         *
         * @param string $note_action_name Name of action to add a nonce to.
         * @param string $nonce_action The nonce action.
         * @param string $nonce_name The nonce Name. This is used as the parameter name in the resulting URL for the action.
         * @return void
         * @throws \Exception If note name cannot be found.
         */
        public function add_nonce_to_action(string $note_action_name, string $nonce_action, string $nonce_name)
        {
        }
    }
    /**
     * NoteTraits class.
     */
    trait NoteTraits
    {
        /**
         * Test how long WooCommerce Admin has been active.
         *
         * @param int $seconds Time in seconds to check.
         * @return bool Whether or not WooCommerce admin has been active for $seconds.
         */
        private static function wc_admin_active_for($seconds)
        {
        }
        /**
         * Test if WooCommerce Admin has been active within a pre-defined range.
         *
         * @param string $range range available in WC_ADMIN_STORE_AGE_RANGES.
         * @param int    $custom_start custom start in range.
         * @return bool Whether or not WooCommerce admin has been active within the range.
         */
        private static function is_wc_admin_active_in_date_range($range, $custom_start = null)
        {
        }
        /**
         * Check if the note has been previously added.
         *
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function note_exists()
        {
        }
        /**
         * Checks if a note can and should be added.
         *
         * @return bool
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function can_be_added()
        {
        }
        /**
         * Add the note if it passes predefined conditions.
         *
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function possibly_add_note()
        {
        }
        /**
         * Alias this method for backwards compatibility.
         *
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function add_note()
        {
        }
        /**
         * Should this note exist? (Default implementation is generous. Override as needed.)
         */
        public static function is_applicable()
        {
        }
        /**
         * Delete this note if it is not applicable, unless has been soft-deleted or actioned already.
         */
        public static function delete_if_not_applicable()
        {
        }
        /**
         * Possibly delete the note, if it exists in the database. Note that this
         * is a hard delete, for where it doesn't make sense to soft delete or
         * action the note.
         *
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function possibly_delete_note()
        {
        }
        /**
         * Update the note if it passes predefined conditions.
         *
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function possibly_update_note()
        {
        }
        /**
         * Get if the note has been actioned.
         *
         * @return bool
         * @throws NotesUnavailableException Throws exception when notes are unavailable.
         */
        public static function has_note_been_actioned()
        {
        }
        /**
         * Update a note field of note1 if it's different from note2 with getter and setter.
         *
         * @param Note   $note1 Note to update.
         * @param Note   $note2 Note to compare against.
         * @param string $field_name Field to update.
         * @return bool True if the field was updated.
         */
        private static function update_note_field_if_changed($note1, $note2, $field_name)
        {
        }
        /**
         * Convert a value to array if it's a stdClass.
         *
         * @param mixed $obj variable to convert.
         * @return mixed
         */
        private static function possibly_convert_object_to_array($obj)
        {
        }
    }
    /**
     * Admin Notes class.
     */
    class Notes
    {
        /**
         * Hook used for recurring "unsnooze" action.
         */
        const UNSNOOZE_HOOK = 'wc_admin_unsnooze_admin_notes';
        /**
         * Hook appropriate actions.
         */
        public static function init()
        {
        }
        /**
         * Get notes from the database.
         *
         * @param string $context Getting notes for what context. Valid values: view, edit.
         * @param array  $args Arguments to pass to the query( e.g. per_page and page).
         * @return array Array of arrays.
         */
        public static function get_notes($context = 'edit', $args = array())
        {
        }
        /**
         * Get admin note using it's ID
         *
         * @param int $note_id Note ID.
         * @return Note|bool
         */
        public static function get_note($note_id)
        {
        }
        /**
         * Get admin note using its name.
         *
         * This is a shortcut for the common pattern of looking up note ids by name and then passing the first id to get_note().
         * It will behave unpredictably when more than one note with the given name exists.
         *
         * @param string $note_name Note name.
         * @return Note|bool
         **/
        public static function get_note_by_name($note_name)
        {
        }
        /**
         * Get the total number of notes
         *
         * @param string $type Comma separated list of note types.
         * @param string $status Comma separated list of statuses.
         * @return int
         */
        public static function get_notes_count($type = array(), $status = array())
        {
        }
        /**
         * Deletes admin notes with a given name.
         *
         * @param string|array $names Name(s) to search for.
         */
        public static function delete_notes_with_name($names)
        {
        }
        /**
         * Update a note.
         *
         * @param Note  $note              The note that will be updated.
         * @param array $requested_updates a list of requested updates.
         */
        public static function update_note($note, $requested_updates)
        {
        }
        /**
         * Soft delete of a note.
         *
         * @param Note $note The note that will be deleted.
         */
        public static function delete_note($note)
        {
        }
        /**
         * Soft delete of all the admin notes. Returns the deleted items.
         *
         * @param array $args Arguments to pass to the query (ex: status).
         * @return array Array of notes.
         */
        public static function delete_all_notes($args = array())
        {
        }
        /**
         * Clear note snooze status if the reminder date has been reached.
         */
        public static function unsnooze_notes()
        {
        }
        /**
         * Schedule unsnooze notes event.
         */
        public static function schedule_unsnooze_notes()
        {
        }
        /**
         * Unschedule unsnooze notes event.
         */
        public static function clear_queued_actions()
        {
        }
        /**
         * Delete marketing notes if marketing has been opted out.
         *
         * @param string $old_value Old value.
         * @param string $value New value.
         */
        public static function possibly_delete_marketing_notes($old_value, $value)
        {
        }
        /**
         * Delete actioned survey notes.
         */
        public static function possibly_delete_survey_notes()
        {
        }
        /**
         * Get the status of a given note by name.
         *
         * @param string $note_name Name of the note.
         * @return string|bool The note status.
         */
        public static function get_note_status($note_name)
        {
        }
        /**
         * Get action by id.
         *
         * @param Note $note The note that has of the action.
         * @param int  $action_id Action ID.
         * @return object|bool The found action.
         */
        public static function get_action_by_id($note, $action_id)
        {
        }
        /**
         * Trigger note action.
         *
         * @param Note   $note The note that has the triggered action.
         * @param object $triggered_action The triggered action.
         * @return Note|bool
         */
        public static function trigger_note_action($note, $triggered_action)
        {
        }
        /**
         * Record tracks event for a specific user.
         *
         * @param int    $user_id The user id we want to record for the event.
         * @param string $event_name Name of the event to record.
         * @param array  $params The params to send to the event recording.
         */
        public static function record_tracks_event_with_user($user_id, $event_name, $params)
        {
        }
        /**
         * Record tracks event without using cookies.
         *
         * @param string $event_name Name of the event to record.
         * @param array  $params The params to send to the event recording.
         */
        private static function record_tracks_event_without_cookies($event_name, $params)
        {
        }
        /**
         * Get screen name.
         *
         * @return string The screen name.
         */
        public static function get_screen_name()
        {
        }
        /**
         * Loads the data store.
         *
         * If the "admin-note" data store is unavailable, attempts to load it
         * will result in an exception.
         * This method catches that exception and throws a custom one instead.
         *
         * @return \WC_Data_Store The "admin-note" data store.
         * @throws NotesUnavailableException Throws exception if data store loading fails.
         */
        public static function load_data_store()
        {
        }
    }
    /**
     * Notes\NotesUnavailableException class.
     */
    class NotesUnavailableException extends \WC_Data_Exception
    {
    }
}
namespace Automattic\WooCommerce\Admin\Overrides {
    /**
     * OrderTraits class.
     */
    trait OrderTraits
    {
        /**
         * Calculate shipping amount for line item/product as a total shipping amount ratio based on quantity.
         *
         * @param WC_Order_Item $item Line item from order.
         *
         * @return float|int
         */
        public function get_item_shipping_amount($item)
        {
        }
        /**
         * Calculate shipping tax amount for line item/product as a total shipping tax amount ratio based on quantity.
         *
         * Loosely based on code in includes/admin/meta-boxes/views/html-order-item(s).php.
         *
         * @todo If WC is currently not tax enabled, but it was before (or vice versa), would this work correctly?
         *
         * @param WC_Order_Item $item Line item from order.
         *
         * @return float|int
         */
        public function get_item_shipping_tax_amount($item)
        {
        }
        /**
         * Calculates coupon amount for specified line item/product.
         *
         * Coupon calculation based on woocommerce code in includes/admin/meta-boxes/views/html-order-item.php.
         *
         * @param WC_Order_Item $item Line item from order.
         *
         * @return float
         */
        public function get_item_coupon_amount($item)
        {
        }
    }
    /**
     * WC_Order subclass.
     */
    class Order extends \WC_Order
    {
        /**
         * Order traits.
         */
        use \Automattic\WooCommerce\Admin\Overrides\OrderTraits;
        /**
         * Holds refund amounts and quantities for the order.
         *
         * @var void|array
         */
        protected $refunded_line_items;
        /**
         * Caches the customer ID.
         *
         * @var int
         */
        public $customer_id = null;
        /**
         * Get only core class data in array format.
         *
         * @return array
         */
        public function get_data_without_line_items()
        {
        }
        /**
         * Get order line item data by type.
         *
         * @param string $type Order line item type.
         * @return array|bool Array of line items on success, boolean false on failure.
         */
        public function get_line_item_data($type)
        {
        }
        /**
         * Add filter(s) required to hook this class to substitute WC_Order.
         */
        public static function add_filters()
        {
        }
        /**
         * Filter function to swap class WC_Order for this one in cases when it's suitable.
         *
         * @param string $classname Name of the class to be created.
         * @param string $order_type Type of order object to be created.
         * @param number $order_id Order id to create.
         *
         * @return string
         */
        public static function order_class_name($classname, $order_type, $order_id)
        {
        }
        /**
         * Get the customer ID used for reports in the customer lookup table.
         *
         * @return int
         */
        public function get_report_customer_id()
        {
        }
        /**
         * Returns true if the customer has made an earlier order.
         *
         * @return bool
         */
        public function is_returning_customer()
        {
        }
        /**
         * Get the customer's first name.
         */
        public function get_customer_first_name()
        {
        }
        /**
         * Get the customer's last name.
         */
        public function get_customer_last_name()
        {
        }
    }
    /**
     * WC_Order_Refund subclass.
     */
    class OrderRefund extends \WC_Order_Refund
    {
        /**
         * Order traits.
         */
        use \Automattic\WooCommerce\Admin\Overrides\OrderTraits;
        /**
         * Caches the customer ID.
         *
         * @var int
         */
        public $customer_id = null;
        /**
         * Add filter(s) required to hook this class to substitute WC_Order_Refund.
         */
        public static function add_filters()
        {
        }
        /**
         * Filter function to swap class WC_Order_Refund for this one in cases when it's suitable.
         *
         * @param string $classname Name of the class to be created.
         * @param string $order_type Type of order object to be created.
         * @param number $order_id Order id to create.
         *
         * @return string
         */
        public static function order_class_name($classname, $order_type, $order_id)
        {
        }
        /**
         * Get the customer ID of the parent order used for reports in the customer lookup table.
         *
         * @return int|bool Customer ID of parent order, or false if parent order not found.
         */
        public function get_report_customer_id()
        {
        }
        /**
         * Returns null since refunds should not be counted towards returning customer counts.
         *
         * @return null
         */
        public function is_returning_customer()
        {
        }
    }
    /**
     * Admin\Overrides\ThemeUpgrader Class.
     */
    class ThemeUpgrader extends \Theme_Upgrader
    {
        /**
         * Install a theme package.
         *
         * @param string $package The full local path or URI of the package.
         * @param array  $args {
         *     Optional. Other arguments for installing a theme package. Default empty array.
         *
         *     @type bool $clear_update_cache Whether to clear the updates cache if successful.
         *                                    Default true.
         * }
         *
         * @return bool|WP_Error True if the installation was successful, false or a WP_Error object otherwise.
         */
        public function install($package, $args = array())
        {
        }
    }
    /**
     * Admin\Overrides\ThemeUpgraderSkin Class.
     */
    class ThemeUpgraderSkin extends \Theme_Upgrader_Skin
    {
        /**
         * Avoid undefined property error from \Theme_Upgrader::check_parent_theme_filter().
         *
         * @var array
         */
        public $api;
        /**
         * Hide the skin header display.
         */
        public function header()
        {
        }
        /**
         * Hide the skin footer display.
         */
        public function footer()
        {
        }
        /**
         * Hide the skin feedback display.
         *
         * @param string $string String to display.
         * @param mixed  ...$args Optional text replacements.
         */
        public function feedback($string, ...$args)
        {
        }
        /**
         * Hide the skin after display.
         */
        public function after()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    /**
     * PageController
     */
    class PageController
    {
        /**
         * App entry point.
         */
        const APP_ENTRY_POINT = 'wc-admin';
        // JS-powered page root.
        const PAGE_ROOT = 'wc-admin';
        /**
         * Singleton instance of self.
         *
         * @var PageController
         */
        private static $instance = false;
        /**
         * Current page ID (or false if not registered with this controller).
         *
         * @var string
         */
        private $current_page = null;
        /**
         * Registered pages
         * Contains information (breadcrumbs, menu info) about JS powered pages and classic WooCommerce pages.
         *
         * @var array
         */
        private $pages = array();
        /**
         * We want a single instance of this class so we can accurately track registered menus and pages.
         */
        public static function get_instance()
        {
        }
        /**
         * Constructor.
         * Hooks added here should be removed in `wc_admin_initialize` via the feature plugin.
         */
        public function __construct()
        {
        }
        /**
         * Connect an existing page to wc-admin.
         *
         * @param array $options {
         *   Array describing the page.
         *
         *   @type string       id           Id to reference the page.
         *   @type string|array title        Page title. Used in menus and breadcrumbs.
         *   @type string|null  parent       Parent ID. Null for new top level page.
         *   @type string       path         Path for this page. E.g. admin.php?page=wc-settings&tab=checkout
         *   @type string       capability   Capability needed to access the page.
         *   @type string       icon         Icon. Dashicons helper class, base64-encoded SVG, or 'none'.
         *   @type int          position     Menu item position.
         *   @type boolean      js_page      If this is a JS-powered page.
         * }
         */
        public function connect_page($options)
        {
        }
        /**
         * Determine the current page ID, if it was registered with this controller.
         */
        public function determine_current_page()
        {
        }
        /**
         * Get breadcrumbs for WooCommerce Admin Page navigation.
         *
         * @return array Navigation pieces (breadcrumbs).
         */
        public function get_breadcrumbs()
        {
        }
        /**
         * Get the current page.
         *
         * @return array|boolean Current page or false if not registered with this controller.
         */
        public function get_current_page()
        {
        }
        /**
         * Returns the current screen ID.
         *
         * This is slightly different from WP's get_current_screen, in that it attaches an action,
         * so certain pages like 'add new' pages can have different breadcrumbs or handling.
         * It also catches some more unique dynamic pages like taxonomy/attribute management.
         *
         * Format:
         * - {$current_screen->action}-{$current_screen->action}-tab-section
         * - {$current_screen->action}-{$current_screen->action}-tab
         * - {$current_screen->action}-{$current_screen->action} if no tab is present
         * - {$current_screen->action} if no action or tab is present
         *
         * @return string Current screen ID.
         */
        public function get_current_screen_id()
        {
        }
        /**
         * Returns the path from an ID.
         *
         * @param  string $id  ID to get path for.
         * @return string Path for the given ID, or the ID on lookup miss.
         */
        public function get_path_from_id($id)
        {
        }
        /**
         * Returns true if we are on a page connected to this controller.
         *
         * @return boolean
         */
        public function is_connected_page()
        {
        }
        /**
         * Returns true if we are on a page registered with this controller.
         *
         * @return boolean
         */
        public function is_registered_page()
        {
        }
        /**
         * Adds a JS powered page to wc-admin.
         *
         * @param array $options {
         *   Array describing the page.
         *
         *   @type string      id           Id to reference the page.
         *   @type string      title        Page title. Used in menus and breadcrumbs.
         *   @type string|null parent       Parent ID. Null for new top level page.
         *   @type string      path         Path for this page, full path in app context; ex /analytics/report
         *   @type string      capability   Capability needed to access the page.
         *   @type string      icon         Icon. Dashicons helper class, base64-encoded SVG, or 'none'.
         *   @type int         position     Menu item position.
         *   @type int         order        Navigation item order.
         * }
         */
        public function register_page($options)
        {
        }
        /**
         * Get registered pages.
         *
         * @return array
         */
        public function get_pages()
        {
        }
        /**
         * Set up a div for the app to render into.
         */
        public static function page_wrapper()
        {
        }
        /**
         * Connects existing WooCommerce pages.
         *
         * @todo The entry point for the embed needs moved to this class as well.
         */
        public function register_page_handler()
        {
        }
        /**
         * Registers the store details (profiler) page.
         */
        public function register_store_details_page()
        {
        }
        /**
         * Remove the menu item for the app entry point page.
         */
        public function remove_app_entry_page_menu_item()
        {
        }
        /**
         * Returns true if we are on a JS powered admin page or
         * a "classic" (non JS app) powered admin page (an embedded page).
         */
        public static function is_admin_or_embed_page()
        {
        }
        /**
         * Returns true if we are on a JS powered admin page.
         */
        public static function is_admin_page()
        {
        }
        /**
         *  Returns true if we are on a "classic" (non JS app) powered admin page.
         *
         * TODO: See usage in `admin.php`. This needs refactored and implemented properly in core.
         */
        public static function is_embed_page()
        {
        }
    }
    /**
     * Class PluginsHelper
     */
    class PluginsHelper
    {
        /**
         * Subscription notices in Woo screens are shown in clear priority order, first
         * expired, and if those don't exist, expiring, and finally if none of those exist,
         * then missing. This keeps track of whether we can show the next set of notices.
         *
         * @var bool
         */
        public static $subscription_usage_notices_already_shown = false;
        /**
         * The URL for the WooCommerce subscription page.
         */
        const WOO_SUBSCRIPTION_PAGE_URL = 'https://woocommerce.com/my-account/my-subscriptions/';
        /**
         * The URL for the WooCommerce.com cart page.
         */
        const WOO_CART_PAGE_URL = 'https://woocommerce.com/cart/';
        /**
         * The URL for the WooCommerce.com add payment method page.
         */
        const WOO_ADD_PAYMENT_METHOD_URL = 'https://woocommerce.com/my-account/add-payment-method/';
        /**
         * Meta key for dismissing expired subscription notices.
         */
        const DISMISS_EXPIRED_SUBS_NOTICE = 'woo_subscription_expired_notice_dismiss';
        /**
         * Meta key for dismissing expiring subscription notices
         */
        const DISMISS_EXPIRING_SUBS_NOTICE = 'woo_subscription_expiring_notice_dismiss';
        /**
         * Meta key for dismissing missing subscription notices
         */
        const DISMISS_MISSING_SUBS_NOTICE = 'woo_subscription_missing_notice_dismiss';
        /**
         * Initialize hooks.
         */
        public static function init()
        {
        }
        /**
         * Get the path to the plugin file relative to the plugins directory from the plugin slug.
         *
         * E.g. 'woocommerce' returns 'woocommerce/woocommerce.php'
         *
         * @param string $slug Plugin slug to get path for.
         *
         * @return string|false The plugin path or false if the plugin is not installed.
         */
        public static function get_plugin_path_from_slug($slug)
        {
        }
        /**
         * Get an array of installed plugin slugs.
         *
         * @return array
         */
        public static function get_installed_plugin_slugs()
        {
        }
        /**
         * Get an array of installed plugins with their file paths as a key value pair.
         *
         * @return array
         */
        public static function get_installed_plugins_paths()
        {
        }
        /**
         * Get an array of active plugin slugs.
         *
         * The list will include both network active and site active plugins.
         *
         * @return array The list of active plugin slugs.
         */
        public static function get_active_plugin_slugs()
        {
        }
        /**
         * Checks if a plugin is installed.
         *
         * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
         *
         * @return bool
         */
        public static function is_plugin_installed($plugin)
        {
        }
        /**
         * Checks if a plugin is active.
         *
         * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
         *
         * @return bool
         */
        public static function is_plugin_active($plugin)
        {
        }
        /**
         * Get plugin data.
         *
         * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
         *
         * @return array|false
         */
        public static function get_plugin_data($plugin)
        {
        }
        /**
         * Install an array of plugins.
         *
         * @param array                     $plugins Plugins to install.
         * @param PluginsInstallLogger|null $logger an optional logger.
         *
         * @return array
         */
        public static function install_plugins($plugins, \Automattic\WooCommerce\Admin\PluginsInstallLoggers\PluginsInstallLogger $logger = null)
        {
        }
        /**
         * Callback registered by OnboardingPlugins::install_and_activate_async.
         *
         * It is used to call install_plugins and activate_plugins with a custom logger.
         *
         * @param array  $plugins A list of plugins to install.
         * @param string $job_id An unique job I.D.
         * @return bool
         */
        public static function install_and_activate_plugins_async_callback(array $plugins, string $job_id)
        {
        }
        /**
         * Schedule plugin installation.
         *
         * @param array $plugins Plugins to install.
         *
         * @return string Job ID.
         */
        public static function schedule_install_plugins($plugins)
        {
        }
        /**
         * Activate the requested plugins.
         *
         * @param array                     $plugins Plugins.
         * @param PluginsInstallLogger|null $logger Logger.
         *
         * @return WP_Error|array Plugin Status
         */
        public static function activate_plugins($plugins, \Automattic\WooCommerce\Admin\PluginsInstallLoggers\PluginsInstallLogger $logger = null)
        {
        }
        /**
         * Schedule plugin activation.
         *
         * @param array $plugins Plugins to activate.
         *
         * @return string Job ID.
         */
        public static function schedule_activate_plugins($plugins)
        {
        }
        /**
         * Installation status.
         *
         * @param int $job_id Job ID.
         *
         * @return array Job data.
         */
        public static function get_installation_status($job_id = null)
        {
        }
        /**
         * Gets the plugin data for the first action.
         *
         * @param array $actions Array of AS actions.
         *
         * @return array Array of action data.
         */
        public static function get_action_data($actions)
        {
        }
        /**
         * Activation status.
         *
         * @param int $job_id Job ID.
         *
         * @return array Array of action data.
         */
        public static function get_activation_status($job_id = null)
        {
        }
        /**
         * Show notices to connect to woocommerce.com for unconnected store in the plugin list.
         *
         * @return void
         */
        public static function maybe_show_connect_notice_in_plugin_list()
        {
        }
        /**
         * Enqueue scripts for connect notice in WooCommerce settings page.
         *
         * @return void
         */
        public static function maybe_enqueue_scripts_for_connect_notice()
        {
        }
        /**
         * Enqueue scripts for notices in plugin list page.
         *
         * @return void
         */
        public static function maybe_enqueue_scripts_for_notices_in_plugins()
        {
        }
        /**
         * Show notice about to expired subscription on WC settings page.
         *
         * @return void
         */
        public static function maybe_show_expired_subscriptions_notice()
        {
        }
        /**
         * Show notice about to expiring subscription on WC settings page.
         *
         * @return void
         */
        public static function maybe_show_expiring_subscriptions_notice()
        {
        }
        /**
         * Enqueue scripts for woo subscription notice.
         *
         * @return void
         */
        public static function maybe_enqueue_scripts_for_subscription_notice()
        {
        }
        /**
         * Construct the subscription notice data based on user subscriptions data.
         *
         * @param array  $all_subs all subscription data.
         * @param array  $subs_to_show filtered subscriptions as condition.
         * @param int    $total total subscription count.
         * @param array  $messages message.
         * @param string $type type of notice, whether it is for expiring or expired subscription.
         * @return array notice data to return. Contains type, parsed_message and product_id.
         */
        public static function get_subscriptions_notice_data(array $all_subs, array $subs_to_show, int $total, array $messages, string $type)
        {
        }
        /**
         * Get formatted notice information for expiring subscription.
         *
         * @param boolean $allowed_link whether the notice description should include a link.
         * @return array notice information.
         */
        public static function get_expiring_subscription_notice($allowed_link = true)
        {
        }
        /**
         * Get formatted notice information for expired subscription.
         *
         * @param boolean $allowed_link whether the notice description should include a link.
         * @return array notice information.
         */
        public static function get_expired_subscription_notice($allowed_link = true)
        {
        }
        /**
         * Get formatted notice information for missing subscription.
         *
         * @return array notice information.
         */
        public static function get_missing_subscription_notice()
        {
        }
        /**
         * Determine whether a specific notice should be shown to the current user.
         *
         * @param string $dismiss_notice_meta User meta that includes the timestamp when a store notice was dismissed.
         * @return bool True if the notice should be shown, false otherwise.
         */
        public static function should_show_notice($dismiss_notice_meta)
        {
        }
        /**
         * Get the notice data for missing payment method.
         *
         * @param bool $allowed_link whether should show link on the notice or not.
         * @param int  $total_expiring_subscriptions total expiring subscriptions.
         *
         * @return array the notices data.
         */
        public static function get_missing_payment_method_notice($allowed_link = true, $total_expiring_subscriptions = 1)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\PluginsInstallLoggers {
    /**
     * A logger used in PluginsHelper::install_plugins to log the installation progress.
     */
    interface PluginsInstallLogger
    {
        /**
         * Called when a plugin install requested.
         *
         * @param string $plugin_name plugin name.
         * @return mixed
         */
        public function install_requested(string $plugin_name);
        /**
         * Called when a plugin installed successfully.
         *
         * @param string $plugin_name plugin name.
         * @param int    $duration # of seconds it took to install $plugin_name.
         * @return mixed
         */
        public function installed(string $plugin_name, int $duration);
        /**
         * Called when a plugin activated successfully.
         *
         * @param string $plugin_name plugin name.
         * @return mixed
         */
        public function activated(string $plugin_name);
        /**
         * Called when an error occurred while installing a plugin.
         *
         * @param string      $plugin_name plugin name.
         * @param string|null $error_message error message.
         * @return mixed
         */
        public function add_error(string $plugin_name, string $error_message = null);
        /**
         * Called when all plugins are processed.
         *
         * @param array $data return data from install_plugins().
         * @return mixed
         */
        public function complete($data = array());
    }
    /**
     * A logger to log plugin installation progress in real time to an option.
     */
    class AsyncPluginsInstallLogger implements \Automattic\WooCommerce\Admin\PluginsInstallLoggers\PluginsInstallLogger
    {
        /**
         * Variable to store logs.
         *
         * @var string $option_name option name to store logs.
         */
        private $option_name;
        /**
         * Constructor.
         *
         * @param string $option_name option name.
         */
        public function __construct(string $option_name)
        {
        }
        /**
         * Update the option.
         *
         * @param array $data New data.
         *
         * @return bool
         */
        private function update(array $data)
        {
        }
        /**
         * Retrieve the option.
         *
         * @return false|mixed|void
         */
        private function get()
        {
        }
        /**
         * Add requested plugin.
         *
         * @param string $plugin_name plugin name.
         *
         * @return void
         */
        public function install_requested(string $plugin_name)
        {
        }
        /**
         * Add installed plugin.
         *
         * @param string $plugin_name plugin name.
         * @param int    $duration time took to install plugin.
         *
         * @return void
         */
        public function installed(string $plugin_name, int $duration)
        {
        }
        /**
         * Change status to activated.
         *
         * @param string $plugin_name plugin name.
         *
         * @return void
         */
        public function activated(string $plugin_name)
        {
        }
        /**
         * Add an error.
         *
         * @param string      $plugin_name plugin name.
         * @param string|null $error_message error message.
         *
         * @return void
         */
        public function add_error(string $plugin_name, string $error_message = null)
        {
        }
        /**
         * Record completed_time.
         *
         * @param array $data return data from install_plugins().
         * @return void
         */
        public function complete($data = array())
        {
        }
        private function get_plugin_track_key($id)
        {
        }
        /**
         * Returns time frame for a given time in milliseconds.
         *
         * @param int $timeInMs - time in milliseconds
         *
         * @return string - Time frame.
         */
        function get_timeframe($timeInMs)
        {
        }
        private function track($data)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    /**
     * Class PluginsInstaller
     */
    class PluginsInstaller
    {
        /**
         * Constructor
         */
        public static function init()
        {
        }
        /**
         * Check if an install or activation is being requested via URL query.
         */
        public static function possibly_install_activate_plugins()
        {
        }
        /**
         * Display the results of installation and activation on the page.
         *
         * @param string $plugins Comma separated list of plugins.
         * @param array  $install_result Result of installation.
         * @param array  $activate_result Result of activation.
         */
        public static function cache_results($plugins, $install_result, $activate_result)
        {
        }
        /**
         * Redirect back to the referring page if one exists.
         */
        public static function redirect_to_referer()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\PluginsProvider {
    /**
     * Plugins Provider Interface
     */
    interface PluginsProviderInterface
    {
        /**
         * Get an array of active plugin slugs.
         *
         * @return array
         */
        public function get_active_plugin_slugs();
        /**
         * Get plugin data.
         *
         * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
         *
         * @return array|false
         */
        public function get_plugin_data($plugin);
        /**
         * Get the path to the plugin file relative to the plugins directory from the plugin slug.
         *
         * E.g. 'woocommerce' returns 'woocommerce/woocommerce.php'
         *
         * @param string $slug Plugin slug to get path for.
         *
         * @return string|false
         */
        public function get_plugin_path_from_slug($slug);
    }
    /**
     * Plugins Provider.
     *
     * Uses the live PluginsHelper.
     */
    class PluginsProvider implements \Automattic\WooCommerce\Admin\PluginsProvider\PluginsProviderInterface
    {
        /**
         * The deactivated plugin slug.
         *
         * @var string
         */
        private static $deactivated_plugin_slug = '';
        /**
         * Get an array of active plugin slugs.
         *
         * @return array
         */
        public function get_active_plugin_slugs()
        {
        }
        /**
         * Set the deactivated plugin. This is needed because the deactivated_plugin
         * hook happens before the option is updated which means that getting the
         * active plugins includes the deactivated plugin.
         *
         * @param string $plugin_path The path to the plugin being deactivated.
         */
        public static function set_deactivated_plugin($plugin_path)
        {
        }
        /**
         * Get plugin data.
         *
         * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name.
         *
         * @return array|false
         */
        public function get_plugin_data($plugin)
        {
        }
        /**
         * Get the path to the plugin file relative to the plugins directory from the plugin slug.
         *
         * E.g. 'woocommerce' returns 'woocommerce/woocommerce.php'
         *
         * @param string $slug Plugin slug to get path for.
         *
         * @return string|false
         */
        public function get_plugin_path_from_slug($slug)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\RemoteInboxNotifications {
    /**
     * Specs data source poller class.
     * This handles polling specs from JSON endpoints, and
     * stores the specs in to the database as an option.
     */
    class RemoteInboxNotificationsDataSourcePoller extends \Automattic\WooCommerce\Admin\RemoteSpecs\DataSourcePoller
    {
        const ID = 'remote_inbox_notifications';
        /**
         * Default data sources array.
         *
         * @deprecated since 9.5.0. Use get_data_sources() instead.
         */
        const DATA_SOURCES = array();
        /**
         * Class instance.
         *
         * @var RemoteInboxNotificationsDataSourcePoller instance
         */
        protected static $instance = null;
        /**
         * Get class instance.
         */
        public static function get_instance()
        {
        }
        /**
         * Validate the spec.
         *
         * @param object $spec The spec to validate.
         * @param string $url  The url of the feed that provided the spec.
         *
         * @return bool The result of the validation.
         */
        protected function validate_spec($spec, $url)
        {
        }
        /**
         * Validate the action.
         *
         * @param object $action The action to validate.
         * @param string $url    The url of the feed containing the action (for error reporting).
         *
         * @return bool The result of the validation.
         */
        private function validate_action($action, $url)
        {
        }
        /**
         * Get data sources.
         *
         * @return array
         */
        public static function get_data_sources()
        {
        }
    }
    /**
     * Remote Inbox Notifications engine.
     * This goes through the specs and runs (creates admin notes) for those
     * specs that are able to be triggered.
     */
    class RemoteInboxNotificationsEngine extends \Automattic\WooCommerce\Admin\RemoteSpecs\RemoteSpecsEngine
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        const STORED_STATE_OPTION_NAME = 'wc_remote_inbox_notifications_stored_state';
        const WCA_UPDATED_OPTION_NAME = 'wc_remote_inbox_notifications_wca_updated';
        /**
         * Initialize the engine.
         * phpcs:disable WooCommerce.Functions.InternalInjectionMethod.MissingFinal
         * phpcs:disable WooCommerce.Functions.InternalInjectionMethod.MissingInternalTag
         */
        public static function init()
        {
        }
        /**
         * This is triggered when the profile option is updated and if the
         * profiler is being completed, triggers a run of the engine.
         *
         * @param mixed $old_value Old value.
         * @param mixed $new_value New value.
         */
        public static function update_profile_option($old_value, $new_value)
        {
        }
        /**
         * Init is continued via admin_init so that WC is loaded when the product
         * query is used, otherwise the query generates a "0 = 1" in the WHERE
         * condition and thus doesn't return any results.
         */
        public static function on_admin_init()
        {
        }
        /**
         * An init hook is used here so that StoredStateSetupForProducts can set
         * up a hook that gets triggered by action-scheduler - this is needed
         * because the admin_init hook doesn't get triggered by WP Cron.
         */
        public static function on_init()
        {
        }
        /**
         * Go through the specs and run them.
         */
        public static function run()
        {
        }
        /**
         * Set an option indicating that WooCommerce Admin has just been updated,
         * run the specs, then clear that option. This lets the
         * WooCommerceAdminUpdatedRuleProcessor trigger on WCA update.
         */
        public static function run_on_woocommerce_admin_updated()
        {
        }
        /**
         * Gets the stored state option, and does the initial set up if it doesn't
         * already exist.
         *
         * @return object The stored state option.
         */
        public static function get_stored_state()
        {
        }
        /**
         * The deactivated_plugin hook happens before the option is updated
         * (https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/plugin.php#L826)
         * so this captures the deactivated plugin path and pushes it into the
         * PluginsProvider.
         *
         * @param string $plugin Path to the plugin file relative to the plugins directory.
         */
        public static function run_on_deactivated_plugin($plugin)
        {
        }
        /**
         * Update the stored state option.
         *
         * @param object $stored_state The stored state.
         */
        public static function update_stored_state($stored_state)
        {
        }
        /**
         * Get the note. This is used to display localized note.
         *
         * @param Note $note_from_db The note object created from db.
         *
         * @return Note The note.
         */
        public static function get_note_from_db($note_from_db)
        {
        }
        /**
         * Add the debug tools to the WooCommerce debug tools (WooCommerce > Status > Tools).
         *
         * @param array $tools a list of tools.
         *
         * @return mixed
         */
        private static function add_debug_tools($tools)
        {
        }
        /**
         * Add ajax action for remote inbox notification search.
         *
         * @return void
         */
        private static function ajax_action_inbox_notification_search()
        {
        }
    }
    /**
     * Rule processor interface
     *
     * @deprecated 9.4.0 Use \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface instead.
     */
    interface RuleProcessorInterface
    {
        /**
         * Processes a rule, returning the boolean result of the processing.
         *
         * @param object $rule         The rule to process.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the processing.
         */
        public function process($rule, $stored_state);
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule);
    }
    /**
     * Runs a single spec.
     */
    class SpecRunner
    {
        /**
         * Run the spec.
         *
         * @param object $spec         The spec to run.
         * @param object $stored_state Stored state.
         */
        public static function run_spec($spec, $stored_state)
        {
        }
        /**
         * Get the URL for an action.
         *
         * @param object $action The action.
         *
         * @return string The URL for the action.
         */
        private static function get_url($action)
        {
        }
        /**
         * Get the locale for the WordPress locale, or fall back to the en_US
         * locale.
         *
         * @param Array $locales The locales to search through.
         *
         * @returns object The locale that was found, or null if no matching locale was found.
         */
        public static function get_locale($locales)
        {
        }
        /**
         * Get the action locale that matches the note locale, or fall back to the
         * en_US locale.
         *
         * @param Array $action_locales The locales from the spec's action.
         *
         * @return object The matching locale, or the en_US fallback locale, or null if neither was found.
         */
        public static function get_action_locale($action_locales)
        {
        }
        /**
         * Get the actions for a note.
         *
         * @param object $spec The spec.
         *
         * @return array The actions.
         */
        public static function get_actions($spec)
        {
        }
    }
    /**
     * An interface to define a transformer.
     *
     * Interface TransformerInterface
     *
     * @package Automattic\WooCommerce\Admin\RemoteInboxNotifications
     *
     * @deprecated 9.4.0 Use \Automattic\WooCommerce\Admin\RemoteSpecs\Transformers\TransformerInterface instead.
     */
    interface TransformerInterface
    {
        /**
         * Transform given value to a different value.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments arguments.
         * @param string|null   $default_value default value.
         *
         * @return mixed|null
         */
        public function transform($value, \stdClass $arguments = null, $default_value = null);
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null);
    }
}
namespace Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors {
    /**
     * Rule processor interface
     */
    interface RuleProcessorInterface
    {
        /**
         * Processes a rule, returning the boolean result of the processing.
         *
         * @param object $rule         The rule to process.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the processing.
         */
        public function process($rule, $stored_state);
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule);
    }
    /**
     * Rule processor that performs a comparison operation against the base
     * location - country.
     */
    class BaseLocationCountryRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Performs a comparison operation against the base location - country.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that performs a comparison operation against the base
     * location - state.
     */
    class BaseLocationStateRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Performs a comparison operation against the base location - state.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Compare two operands using the specified operation.
     */
    class ComparisonOperation
    {
        /**
         * Compare two operands using the specified operation.
         *
         * @param object $left_operand  The left hand operand.
         * @param object $right_operand The right hand operand -- 'value' from the rule definition.
         * @param string $operation     The operation used to compare the operands.
         */
        public static function compare($left_operand, $right_operand, $operation)
        {
        }
    }
    /**
     * Evaluates the spec and returns a status.
     */
    class EvaluateAndGetStatus
    {
        /**
         * Evaluates the spec and returns a status.
         *
         * @param array  $spec The spec to evaluate.
         * @param string $current_status The note's current status.
         * @param object $stored_state Stored state.
         * @param object $rule_evaluator Evaluates rules into true/false.
         *
         * @return string The evaluated status.
         */
        public static function evaluate($spec, $current_status, $stored_state, $rule_evaluator)
        {
        }
    }
    /**
     * Class EvaluationLogger
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors
     */
    class EvaluationLogger
    {
        /**
         * Slug of the spec.
         *
         * @var string
         */
        private $slug;
        /**
         * Results of rules in the given spec.
         *
         * @var array
         */
        private $results = array();
        /**
         * Logger class to use.
         *
         * @var \WC_Logger_Interface|null
         */
        private $logger;
        /**
         * Logger source.
         *
         * @var string Logger source.
         */
        private $source = '';
        /**
         * EvaluationLogger constructor.
         *
         * @param string                    $slug   Slug/ID of a spec that is being evaluated.
         * @param string|null               $source Logger source.
         * @param \WC_Logger_Interface|null $logger Logger class to use. Default to using the WC logger.
         */
        public function __construct($slug, $source = null, \WC_Logger_Interface $logger = null)
        {
        }
        /**
         * Add evaluation result of a rule.
         *
         * @param string  $rule_type Name of the rule being tested.
         * @param boolean $result    Result of a given rule.
         */
        public function add_result($rule_type, $result)
        {
        }
        /**
         * Log the results.
         */
        public function log()
        {
        }
    }
    /**
     * Rule processor that fails.
     */
    class FailRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Fails the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Always false.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Class encapsulating getting the processor for a given rule type.
     */
    class GetRuleProcessor
    {
        /**
         * Get the processor for the specified rule type.
         *
         * @param string $rule_type The rule type.
         *
         * @return RuleProcessorInterface The matching processor for the specified rule type, or a FailRuleProcessor if no matching processor is found.
         */
        public static function get_processor($rule_type)
        {
        }
    }
    /**
     * Rule processor that passes (or fails) when the site is on the eCommerce
     * plan.
     */
    class IsEcommerceRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Passes (or fails) based on whether the site is on the eCommerce plan or
         * not.
         *
         * @param object $rule         The rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validate the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that passes (or fails) when the site is on a Woo Express plan.
     * You may optionally pass a plan name to target a specific Woo Express plan.
     */
    class IsWooExpressRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Passes (or fails) based on whether the site is a Woo Express plan.
         *
         * @param object $rule         The rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validate the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that negates the rules in the rule's operand.
     */
    class NotRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * The rule evaluator to use.
         *
         * @var RuleEvaluator
         */
        protected $rule_evaluator;
        /**
         * Constructor.
         *
         * @param RuleEvaluator $rule_evaluator The rule evaluator to use.
         */
        public function __construct($rule_evaluator = null)
        {
        }
        /**
         * Evaluates the rules in the operand and negates the result.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that compares against the status of another note.
     */
    class NoteStatusRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Compare against the status of another note.
         *
         * @param object $rule         The rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that performs a comparison operation against a value in the
     * onboarding profile.
     */
    class OnboardingProfileRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Performs a comparison operation against a value in the onboarding
         * profile.
         *
         * @param object $rule         The rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that performs a comparison operation against an option value.
     */
    class OptionRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Performs a comparison operation against the option value.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Retrieves the option value and handles logging if necessary.
         *
         * @param object $rule         The specific rule being processed.
         * @param mixed  $default_value      The default value.
         * @param bool   $is_contains  Indicates whether the operation is "contains".
         *
         * @return mixed The option value.
         */
        private function get_option_value($rule, $default_value, $is_contains)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that performs an OR operation on the rule's left and right
     * operands.
     */
    class OrRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Rule evaluator to use.
         *
         * @var RuleEvaluator
         */
        private $rule_evaluator;
        /**
         * Constructor.
         *
         * @param RuleEvaluator $rule_evaluator The rule evaluator to use.
         */
        public function __construct($rule_evaluator = null)
        {
        }
        /**
         * Performs an OR operation on the rule's left and right operands.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor for publishing based on the number of orders.
     */
    class OrderCountRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * The orders provider.
         *
         * @var OrdersProvider
         */
        protected $orders_provider;
        /**
         * Constructor.
         *
         * @param object $orders_provider The orders provider.
         */
        public function __construct($orders_provider = null)
        {
        }
        /**
         * Process the rule.
         *
         * @param object $rule         The rule to process.
         * @param object $stored_state Stored state.
         *
         * @return bool Whether the rule passes or not.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Provider for order-related queries and operations.
     */
    class OrdersProvider
    {
        /**
         * Allowed order statuses for calculating milestones.
         *
         * @var array
         */
        protected $allowed_statuses = array('pending', 'processing', 'completed');
        /**
         * Returns the number of orders.
         *
         * @return integer The number of orders.
         */
        public function get_order_count()
        {
        }
    }
    /**
     * Rule processor that passes.
     */
    class PassRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Passes the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Always true.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor for sending when the provided plugin is activated and
     * matches the specified version.
     */
    class PluginVersionRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Plugins provider instance.
         *
         * @var PluginsProviderInterface
         */
        private $plugins_provider;
        /**
         * Constructor.
         *
         * @param PluginsProviderInterface $plugins_provider The plugins provider.
         */
        public function __construct($plugins_provider = null)
        {
        }
        /**
         * Process the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Whether the rule passes or not.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor for sending when the provided plugins are activated.
     */
    class PluginsActivatedRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * The plugins provider.
         *
         * @var PluginsProviderInterface
         */
        protected $plugins_provider;
        /**
         * Constructor.
         *
         * @param PluginsProviderInterface $plugins_provider The plugins provider.
         */
        public function __construct($plugins_provider = null)
        {
        }
        /**
         * Process the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Whether the rule passes or not.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor that performs a comparison operation against the number of
     * products.
     */
    class ProductCountRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * The product query.
         *
         * @var WC_Product_Query
         */
        protected $product_query;
        /**
         * Constructor.
         *
         * @param object $product_query The product query.
         */
        public function __construct($product_query = null)
        {
        }
        /**
         * Performs a comparison operation against the number of products.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor for sending after a specified date/time.
     */
    class PublishAfterTimeRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * The DateTime provider.
         *
         * @var DateTimeProviderInterface
         */
        protected $date_time_provider;
        /**
         * Constructor.
         *
         * @param DateTimeProviderInterface $date_time_provider The DateTime provider.
         */
        public function __construct($date_time_provider = null)
        {
        }
        /**
         * Process the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Whether the rule passes or not.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor for sending before a specified date/time.
     */
    class PublishBeforeTimeRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * The DateTime provider.
         *
         * @var DateTimeProviderInterface
         */
        protected $date_time_provider;
        /**
         * Constructor.
         *
         * @param DateTimeProviderInterface $date_time_provider The DateTime provider.
         */
        public function __construct($date_time_provider = null)
        {
        }
        /**
         * Process the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Whether the rule passes or not.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Evaluate the given rules as an AND operation - return false early if a
     * rule evaluates to false.
     */
    class RuleEvaluator
    {
        /**
         * GetRuleProcessor to use.
         *
         * @var GetRuleProcessor
         */
        private $get_rule_processor;
        /**
         * Constructor.
         *
         * @param GetRuleProcessor $get_rule_processor The GetRuleProcessor to use.
         */
        public function __construct($get_rule_processor = null)
        {
        }
        /**
         * Evaluate the given rules as an AND operation - return false early if a
         * rule evaluates to false.
         *
         * @param array|object $rules        The rule or rules being processed.
         * @param object|null  $stored_state Stored state.
         * @param array        $logger_args  Arguments for the rule evaluator logger. `slug` is required.
         *
         * @throws \InvalidArgumentException Thrown when $logger_args is missing slug.
         *
         * @return bool The result of the operation.
         */
        public function evaluate($rules, $stored_state = null, $logger_args = array())
        {
        }
    }
    /**
     * Rule processor that performs a comparison operation against a value in the
     * stored state object.
     */
    class StoredStateRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Performs a comparison operation against a value in the stored state object.
         *
         * @param object $rule         The rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Handles stored state setup for products.
     */
    class StoredStateSetupForProducts
    {
        const ASYNC_RUN_REMOTE_NOTIFICATIONS_ACTION_NAME = 'woocommerce_admin/stored_state_setup_for_products/async/run_remote_notifications';
        /**
         * Initialize the class via the admin_init hook.
         */
        public static function admin_init()
        {
        }
        /**
         * Initialize the class via the init hook.
         *
         * @internal
         */
        public static final function init()
        {
        }
        /**
         * Run the remote notifications engine. This is triggered by
         * action-scheduler after a product is added. It also cleans up from
         * setting the product count increment.
         */
        public static function run_remote_notifications()
        {
        }
        /**
         * Set initial stored state values.
         *
         * @param object $stored_state The stored state.
         *
         * @return object The stored state.
         */
        public static function init_stored_state($stored_state)
        {
        }
        /**
         * Are there products query.
         *
         * @return bool
         */
        private static function are_there_products()
        {
        }
        /**
         * Runs on product importer steps.
         */
        public static function run_on_product_importer()
        {
        }
        /**
         * Runs when a post status transitions, but we're only interested if it is
         * a product being published.
         *
         * @param string $new_status The new status.
         * @param string $old_status The old status.
         * @param Post   $post       The post.
         */
        public static function run_on_transition_post_status($new_status, $old_status, $post)
        {
        }
        /**
         * Enqueues an async action (using action-scheduler) to run remote
         * notifications.
         */
        private static function update_stored_state_and_possibly_run_remote_notifications()
        {
        }
    }
    /**
     * Rule processor that passes when a store's payments volume exceeds a provided amount.
     */
    class TotalPaymentsVolumeProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Compare against the store's total payments volume.
         *
         * @param object $rule         The rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
        /**
         * Get the report query.
         *
         * @param array $args The query args.
         *
         * @return RevenueQuery The report query.
         */
        protected function get_reports_query($args)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers {
    /**
     * An interface to define a transformer.
     *
     * Interface TransformerInterface
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    interface TransformerInterface
    {
        /**
         * Transform given value to a different value.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments arguments.
         * @param string|null   $default_value default value.
         *
         * @return mixed|null
         */
        public function transform($value, \stdClass $arguments = null, $default_value = null);
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null);
    }
    /**
     * Search array value by one of its key.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class ArrayColumn implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Search array value by one of its key.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments required arguments 'key'.
         * @param string|null   $default_value default value.
         *
         * @throws InvalidArgumentException Throws when the required argument 'key' is missing.
         *
         * @return mixed
         */
        public function transform($value, \stdClass $arguments = null, $default_value = array())
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Flatten nested array.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class ArrayFlatten implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Search a given value in the array.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments arguments.
         * @param string|null   $default_value default value.
         *
         * @return mixed|null
         */
        public function transform($value, \stdClass $arguments = null, $default_value = array())
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Search array value by one of its key.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class ArrayKeys implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Search array value by one of its key.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments arguments.
         * @param string|null   $default_value default value.
         *
         * @return mixed
         */
        public function transform($value, \stdClass $arguments = null, $default_value = array())
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Searches a given a given value in the array.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class ArraySearch implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Search a given value in the array.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments required argument 'value'.
         * @param string|null   $default_value default value.
         *
         * @throws InvalidArgumentException Throws when the required 'value' is missing.
         *
         * @return mixed|null
         */
        public function transform($value, \stdClass $arguments = null, $default_value = null)
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Search array value by one of its key.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class ArrayValues implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Search array value by one of its key.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments arguments.
         * @param string|null   $default_value default value.
         *
         * @return mixed
         */
        public function transform($value, \stdClass $arguments = null, $default_value = array())
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Count elements in Array or Countable object.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class Count implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         *  Count elements in Array or Countable object.
         *
         * @param array|Countable $value an array to count.
         * @param stdClass|null   $arguments arguments.
         * @param string|null     $default_value default value.
         *
         * @return number
         */
        public function transform($value, \stdClass $arguments = null, $default_value = null)
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Find an array value by dot notation.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class DotNotation implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Find given path from the given value.
         *
         * @param mixed         $value a value to transform.
         * @param stdClass|null $arguments required argument 'path'.
         * @param string|null   $default_value default value.
         *
         * @throws InvalidArgumentException Throws when the required 'path' is missing.
         *
         * @return mixed
         */
        public function transform($value, \stdClass $arguments = null, $default_value = null)
        {
        }
        /**
         * Find the given $path in $array_to_search by dot notation.
         *
         * @param array  $array_to_search an array to search in.
         * @param string $path a path in the given array.
         * @param null   $default_value default value to return if $path was not found.
         *
         * @return mixed|null
         */
        public function get($array_to_search, $path, $default_value = null)
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * Prepare site URL for comparison.
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class PrepareUrl implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers\TransformerInterface
    {
        /**
         * Prepares the site URL by removing the protocol and trailing slash.
         *
         * @param string        $value a value to transform.
         * @param stdClass|null $arguments arguments.
         * @param string|null   $default_value default value.
         *
         * @return mixed|null
         */
        public function transform($value, \stdClass $arguments = null, $default_value = null)
        {
        }
        /**
         * Validate Transformer arguments.
         *
         * @param stdClass|null $arguments arguments to validate.
         *
         * @return mixed
         */
        public function validate(\stdClass $arguments = null)
        {
        }
    }
    /**
     * A simple service class for the Transformer classes.
     *
     * Class TransformerService
     *
     * @package Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers
     */
    class TransformerService
    {
        /**
         * Create a transformer object by name.
         *
         * @param string $name name of the transformer.
         *
         * @return TransformerInterface|null
         */
        public static function create_transformer($name)
        {
        }
        /**
         * Apply transformers to the given value.
         *
         * @param mixed  $target_value a value to transform.
         * @param array  $transformer_configs transform configuration.
         * @param bool   $is_default_set flag on is default value set.
         * @param string $default_value default value.
         *
         * @throws InvalidArgumentException Throws when one of the required arguments is missing.
         * @return mixed|null
         */
        public static function apply($target_value, array $transformer_configs, $is_default_set, $default_value)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors {
    /**
     * WCAdminActiveForProvider class
     */
    class WCAdminActiveForProvider
    {
        /**
         * Get the number of seconds that the store has been active.
         *
         * @return number Number of seconds.
         */
        public function get_wcadmin_active_for_in_seconds()
        {
        }
    }
    /**
     * Rule processor for publishing if wc-admin has been active for at least the
     * given number of seconds.
     */
    class WCAdminActiveForRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Provides the amount of time wcadmin has been active for.
         *
         * @var WCAdminActiveForProvider
         */
        protected $wcadmin_active_for_provider;
        /**
         * Constructor
         *
         * @param object $wcadmin_active_for_provider Provides the amount of time wcadmin has been active for.
         */
        public function __construct($wcadmin_active_for_provider = null)
        {
        }
        /**
         * Performs a comparison operation against the amount of time wc-admin has
         * been active for in days.
         *
         * @param object $rule         The rule being processed.
         * @param object $stored_state Stored state.
         *
         * @return bool The result of the operation.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
    /**
     * Rule processor for sending when WooCommerce Admin has been updated.
     */
    class WooCommerceAdminUpdatedRuleProcessor implements \Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\RuleProcessorInterface
    {
        /**
         * Process the rule.
         *
         * @param object $rule         The specific rule being processed by this rule processor.
         * @param object $stored_state Stored state.
         *
         * @return bool Whether the rule passes or not.
         */
        public function process($rule, $stored_state)
        {
        }
        /**
         * Validates the rule.
         *
         * @param object $rule The rule to validate.
         *
         * @return bool Pass/fail.
         */
        public function validate($rule)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    /**
     * ReportCSVEmail Class.
     */
    class ReportCSVEmail extends \WC_Email
    {
        /**
         * Report labels.
         *
         * @var array
         */
        protected $report_labels;
        /**
         * Report type (e.g. 'customers').
         *
         * @var string
         */
        protected $report_type;
        /**
         * Download URL.
         *
         * @var string
         */
        protected $download_url;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * This email has no user-facing settings.
         */
        public function init_form_fields()
        {
        }
        /**
         * This email has no user-facing settings.
         */
        public function init_settings()
        {
        }
        /**
         * Return email type.
         *
         * @return string
         */
        public function get_email_type()
        {
        }
        /**
         * Get email heading.
         *
         * @return string
         */
        public function get_default_heading()
        {
        }
        /**
         * Get email subject.
         *
         * @return string
         */
        public function get_default_subject()
        {
        }
        /**
         * Get content html.
         *
         * @return string
         */
        public function get_content_html()
        {
        }
        /**
         * Get content plain.
         *
         * @return string
         */
        public function get_content_plain()
        {
        }
        /**
         * Trigger the sending of this email.
         *
         * @param int    $user_id User ID to email.
         * @param string $report_type The type of report export being emailed.
         * @param string $download_url The URL for downloading the report.
         */
        public function trigger($user_id, $report_type, $download_url)
        {
        }
    }
    /**
     * ReportCSVExporter Class.
     */
    class ReportCSVExporter extends \WC_CSV_Batch_Exporter
    {
        /**
         * Type of report being exported.
         *
         * @var string
         */
        protected $report_type;
        /**
         * Parameters for the report query.
         *
         * @var array
         */
        protected $report_args;
        /**
         * REST controller for the report.
         *
         * @var WC_REST_Reports_Controller
         */
        protected $controller;
        /**
         * Constructor.
         *
         * @param string $type Report type. E.g. 'customers'.
         * @param array  $args Report parameters.
         */
        public function __construct($type = false, $args = array())
        {
        }
        /**
         * Create the directory for reports if it does not yet exist.
         */
        public static function maybe_create_directory()
        {
        }
        /**
         * Get report uploads directory.
         *
         * @return string
         */
        public static function get_reports_directory()
        {
        }
        /**
         * Get file path to export to.
         *
         * @return string
         */
        protected function get_file_path()
        {
        }
        /**
         * Setter for report type.
         *
         * @param string $type The report type. E.g. customers.
         */
        public function set_report_type($type)
        {
        }
        /**
         * Setter for report args.
         *
         * @param array $args The report args.
         */
        public function set_report_args($args)
        {
        }
        /**
         * Get a REST controller instance for the report type.
         *
         * @return bool|WC_REST_Reports_Controller Report controller instance or boolean false on error.
         */
        protected function map_report_controller()
        {
        }
        /**
         * Get the report columns from the controller.
         *
         * @return array Array of report column names.
         */
        protected function get_report_columns()
        {
        }
        /**
         * Get total % complete.
         *
         * Forces an int from parent::get_percent_complete(), which can return a float.
         *
         * @return int Percent complete.
         */
        public function get_percent_complete()
        {
        }
        /**
         * Get total number of rows in export.
         *
         * @return int Number of rows to export.
         */
        public function get_total_rows()
        {
        }
        /**
         * Prepare data for export.
         */
        public function prepare_data_to_export()
        {
        }
        /**
         * Generate row data from a raw report item.
         *
         * @param object $item Report item data.
         * @return array CSV row data.
         */
        protected function get_raw_row_data($item)
        {
        }
        /**
         * Get the export row for a given report item.
         *
         * @param object $item Report item data.
         * @return array CSV row data.
         */
        protected function generate_row_data($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin\Schedulers {
    /**
     * SchedulerTraits class.
     */
    trait SchedulerTraits
    {
        /**
         * Action scheduler group.
         *
         * @var string|null
         */
        public static $group = 'wc-admin-data';
        /**
         * Queue instance.
         *
         * @var WC_Queue_Interface
         */
        protected static $queue = null;
        /**
         * Add all actions as hooks.
         */
        public static function init()
        {
        }
        /**
         * Get queue instance.
         *
         * @return WC_Queue_Interface
         */
        public static function queue()
        {
        }
        /**
         * Set queue instance.
         *
         * @param WC_Queue_Interface $queue Queue instance.
         */
        public static function set_queue($queue)
        {
        }
        /**
         * Gets the default scheduler actions for batching and scheduling actions.
         */
        public static function get_default_scheduler_actions()
        {
        }
        /**
         * Gets the actions for this specific scheduler.
         *
         * @return array
         */
        public static function get_scheduler_actions()
        {
        }
        /**
         * Get all available scheduling actions.
         * Used to determine action hook names and clear events.
         */
        public static function get_actions()
        {
        }
        /**
         * Get an action tag name from the action name.
         *
         * @param string $action_name The action name.
         * @return string|null
         */
        public static function get_action($action_name)
        {
        }
        /**
         * Returns an array of actions and dependencies as key => value pairs.
         *
         * @return array
         */
        public static function get_dependencies()
        {
        }
        /**
         * Get dependencies associated with an action.
         *
         * @param string $action_name The action slug.
         * @return string|null
         */
        public static function get_dependency($action_name)
        {
        }
        /**
         * Batch action size.
         */
        public static function get_batch_sizes()
        {
        }
        /**
         * Returns the batch size for an action.
         *
         * @param string $action Single batch action name.
         * @return int Batch size.
         */
        public static function get_batch_size($action)
        {
        }
        /**
         * Flatten multidimensional arrays to store for scheduling.
         *
         * @param array $args Argument array.
         * @return string
         */
        public static function flatten_args($args)
        {
        }
        /**
         * Check if existing jobs exist for an action and arguments.
         *
         * @param string $action_name Action name.
         * @param array  $args Array of arguments to pass to action.
         * @return bool
         */
        public static function has_existing_jobs($action_name, $args)
        {
        }
        /**
         * Get the next blocking job for an action.
         *
         * @param string $action_name Action name.
         * @return false|ActionScheduler_Action
         */
        public static function get_next_blocking_job($action_name)
        {
        }
        /**
         * Check for blocking jobs and reschedule if any exist.
         */
        public static function do_action_or_reschedule()
        {
        }
        /**
         * Get the DateTime for the next scheduled time an action should run.
         * This function allows backwards compatibility with Action Scheduler < v3.0.
         *
         * @param \ActionScheduler_Action $action Action.
         * @return DateTime|null
         */
        public static function get_next_action_time($action)
        {
        }
        /**
         * Schedule an action to run and check for dependencies.
         *
         * @param string $action_name Action name.
         * @param array  $args Array of arguments to pass to action.
         */
        public static function schedule_action($action_name, $args = array())
        {
        }
        /**
         * Queue a large number of batch jobs, respecting the batch size limit.
         * Reduces a range of batches down to "single batch" jobs.
         *
         * @param int    $range_start Starting batch number.
         * @param int    $range_end Ending batch number.
         * @param string $single_batch_action Action to schedule for a single batch.
         * @param array  $action_args Action arguments.
         * @return void
         */
        public static function queue_batches($range_start, $range_end, $single_batch_action, $action_args = array())
        {
        }
        /**
         * Clears all queued actions.
         */
        public static function clear_queued_actions()
        {
        }
    }
}
namespace Automattic\WooCommerce\Admin {
    /**
     * ReportExporter Class.
     */
    class ReportExporter
    {
        /**
         * Slug to identify the scheduler.
         *
         * @var string
         */
        public static $name = 'report_exporter';
        /**
         * Scheduler traits.
         */
        use \Automattic\WooCommerce\Admin\Schedulers\SchedulerTraits {
            init as scheduler_init;
        }
        /**
         * Export status option name.
         */
        const EXPORT_STATUS_OPTION = 'woocommerce_admin_report_export_status';
        /**
         * Export file download action.
         */
        const DOWNLOAD_EXPORT_ACTION = 'woocommerce_admin_download_report_csv';
        /**
         * Get all available scheduling actions.
         * Used to determine action hook names and clear events.
         *
         * @return array
         */
        public static function get_scheduler_actions()
        {
        }
        /**
         * Add action dependencies.
         *
         * @return array
         */
        public static function get_dependencies()
        {
        }
        /**
         * Hook in action methods.
         */
        public static function init()
        {
        }
        /**
         * Queue up actions for a full report export.
         *
         * @param string $export_id Unique ID for report (timestamp expected).
         * @param string $report_type Report type. E.g. 'customers'.
         * @param array  $report_args Report parameters, passed to data query.
         * @param bool   $send_email Optional. Send an email when the export is complete.
         * @return int Number of items to export.
         */
        public static function queue_report_export($export_id, $report_type, $report_args = array(), $send_email = false)
        {
        }
        /**
         * Process a report export action.
         *
         * @param int    $page_number Page number for this action.
         * @param string $export_id Unique ID for report (timestamp expected).
         * @param string $report_type Report type. E.g. 'customers'.
         * @param array  $report_args Report parameters, passed to data query.
         * @return void
         */
        public static function export_report($page_number, $export_id, $report_type, $report_args)
        {
        }
        /**
         * Generate a key to reference an export status.
         *
         * @param string $report_type Report type. E.g. 'customers'.
         * @param string $export_id Unique ID for report (timestamp expected).
         * @return string Status key.
         */
        protected static function get_status_key($report_type, $export_id)
        {
        }
        /**
         * Update the completion percentage of a report export.
         *
         * @param string $report_type Report type. E.g. 'customers'.
         * @param string $export_id Unique ID for report (timestamp expected).
         * @param int    $percentage Completion percentage.
         * @return void
         */
        public static function update_export_percentage_complete($report_type, $export_id, $percentage)
        {
        }
        /**
         * Get the completion percentage of a report export.
         *
         * @param string $report_type Report type. E.g. 'customers'.
         * @param string $export_id Unique ID for report (timestamp expected).
         * @return bool|int Completion percentage, or false if export not found.
         */
        public static function get_export_percentage_complete($report_type, $export_id)
        {
        }
        /**
         * Serve the export file.
         */
        public static function download_export_file()
        {
        }
        /**
         * Process a report export email action.
         *
         * @param int    $user_id User ID that requested the email.
         * @param string $export_id Unique ID for report (timestamp expected).
         * @param string $report_type Report type. E.g. 'customers'.
         * @return void
         */
        public static function email_report_download_link($user_id, $export_id, $report_type)
        {
        }
    }
    /**
     * ReportsSync Class.
     */
    class ReportsSync
    {
        /**
         * Hook in sync methods.
         */
        public static function init()
        {
        }
        /**
         * Get classes for syncing data.
         *
         * @return array
         * @throws \Exception Throws exception when invalid data is found.
         */
        public static function get_schedulers()
        {
        }
        /**
         * Returns true if an import is in progress.
         *
         * @return bool
         */
        public static function is_importing()
        {
        }
        /**
         * Regenerate data for reports.
         *
         * @param int|bool $days Number of days to import.
         * @param bool     $skip_existing Skip existing records.
         * @return string
         */
        public static function regenerate_report_data($days, $skip_existing)
        {
        }
        /**
         * Update the import stat totals and counts.
         *
         * @param int|bool $days Number of days to import.
         * @param bool     $skip_existing Skip existing records.
         */
        public static function reset_import_stats($days, $skip_existing)
        {
        }
        /**
         * Get stats for current import.
         *
         * @return array
         */
        public static function get_import_stats()
        {
        }
        /**
         * Get the import totals for all syncs.
         *
         * @param int|bool $days Number of days to import.
         * @param bool     $skip_existing Skip existing records.
         * @return array
         */
        public static function get_import_totals($days, $skip_existing)
        {
        }
        /**
         * Clears all queued actions.
         */
        public static function clear_queued_actions()
        {
        }
        /**
         * Delete all data for reports.
         *
         * @return string
         */
        public static function delete_report_data()
        {
        }
        /**
         * Clear the count cache when products are added or updated, or when
         * the no/low stock options are changed.
         *
         * @param int $id Post/product ID.
         */
        public static function clear_stock_count_cache($id)
        {
        }
    }
    /**
     * Class WCAdminHelper
     */
    class WCAdminHelper
    {
        /**
         * WC Admin timestamp option name.
         */
        const WC_ADMIN_TIMESTAMP_OPTION = 'woocommerce_admin_install_timestamp';
        const WC_ADMIN_STORE_AGE_RANGES = array('week-1' => array('start' => 0, 'end' => WEEK_IN_SECONDS), 'week-1-4' => array('start' => WEEK_IN_SECONDS, 'end' => WEEK_IN_SECONDS * 4), 'month-1-3' => array('start' => MONTH_IN_SECONDS, 'end' => MONTH_IN_SECONDS * 3), 'month-3-6' => array('start' => MONTH_IN_SECONDS * 3, 'end' => MONTH_IN_SECONDS * 6), 'month-6+' => array('start' => MONTH_IN_SECONDS * 6));
        /**
         * Get the number of seconds that the store has been active.
         *
         * @return number Number of seconds.
         */
        public static function get_wcadmin_active_for_in_seconds()
        {
        }
        /**
         * Test how long WooCommerce Admin has been active.
         *
         * @param int $seconds Time in seconds to check.
         * @return bool Whether or not WooCommerce admin has been active for $seconds.
         */
        public static function is_wc_admin_active_for($seconds)
        {
        }
        /**
         * Test if WooCommerce Admin has been active within a pre-defined range.
         *
         * @param string $range range available in WC_ADMIN_STORE_AGE_RANGES.
         * @param int    $custom_start custom start in range.
         * @throws \InvalidArgumentException Throws exception when invalid $range is passed in.
         * @return bool Whether or not WooCommerce admin has been active within the range.
         */
        public static function is_wc_admin_active_in_date_range($range, $custom_start = null)
        {
        }
        /**
         * Test if the site is fresh. A fresh site must meet the following requirements.
         *
         * - The current user was registered less than 1 month ago.
         * - fresh_site option must be 1
         *
         * @return bool
         */
        public static function is_site_fresh()
        {
        }
        /**
         * Test if a URL is a store page. This function ignores the domain and protocol of the URL and only checks the path and query string.
         *
         * Store pages are defined as:
         *
         * - Shop
         * - Cart
         * - Checkout
         * - Privacy Policy
         * - Terms and Conditions
         *
         * Additionally, the following autogenerated pages should be included:
         * - Product pages
         * - Product Category pages
         * - Product Tag pages
         *
         * @param string $url URL to check. If not provided, the current URL will be used.
         * @return bool Whether or not the URL is a store page.
         */
        public static function is_store_page($url = '')
        {
        }
        /**
         * Get normalized URL path.
         * 1. Only keep the path and query string (if any).
         * 2. Remove wp home path from the URL path if WP is installed in a subdirectory.
         * 3. Remove leading and trailing slashes.
         *
         * For example:
         *
         * - https://example.com/wordpress/shop/uncategorized/test/?add-to-cart=123 => shop/uncategorized/test/?add-to-cart=123
         *
         * @param string $url URL to normalize.
         */
        private static function get_normalized_url_path($url)
        {
        }
    }
}
namespace Automattic\WooCommerce {
    /**
     * Autoloader class.
     *
     * @since 3.7.0
     */
    class Autoloader
    {
        /**
         * Static-only class.
         */
        private function __construct()
        {
        }
        /**
         * Require the autoloader and return the result.
         *
         * If the autoloader is not present, let's log the failure and display a nice admin notice.
         *
         * @return boolean
         */
        public static function init()
        {
        }
        /**
         * If the autoloader is missing, add an admin notice.
         */
        protected static function missing_autoloader()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\AI {
    /**
     * Class Configuration
     *
     * @internal
     */
    class Configuration
    {
        /**
         * The name of the option that stores the site owner's consent to connect to the AI API.
         *
         * @var string
         */
        private $consent_option_name = 'woocommerce_blocks_allow_ai_connection';
        /**
         * The Jetpack connection manager.
         *
         * @var Manager
         */
        private $manager;
        /**
         * The Jetpack configuration.
         *
         * @var Config
         */
        private $config;
        /**
         * Configuration constructor.
         */
        public function __construct()
        {
        }
        /**
         * Initialize the site and user connection and registration.
         *
         * @return bool|\WP_Error
         */
        public function init()
        {
        }
        /**
         * Verify if the site should connect to Jetpack.
         *
         * @return bool
         */
        private function should_connect()
        {
        }
        /**
         * Initialize Jetpack's connection feature within the WooCommerce Blocks plugin.
         *
         * @return void
         */
        private function enable_connection_feature()
        {
        }
        /**
         * Register the site with Jetpack.
         *
         * @return bool|\WP_Error
         */
        private function register_and_connect()
        {
        }
        /**
         * Unregister the site with Jetpack.
         *
         * @return void
         */
        private function unregister_site()
        {
        }
    }
    /**
     * Class Connection
     *
     * @internal
     */
    class Connection
    {
        const TEXT_COMPLETION_API_URL = 'https://public-api.wordpress.com/wpcom/v2/text-completion';
        const MODEL = 'gpt-3.5-turbo-1106';
        /**
         * The post request.
         *
         * @param string $token The JWT token.
         * @param string $prompt The prompt to send to the API.
         * @param int    $timeout The timeout for the request.
         * @param string $response_format The response format.
         *
         * @return mixed
         */
        public function fetch_ai_response($token, $prompt, $timeout = 15, $response_format = null)
        {
        }
        /**
         * Fetch the AI responses in parallel using the given token and prompts.
         *
         * @param string $token The JWT token.
         * @param array  $prompts The prompts to send to the API.
         * @param int    $timeout The timeout for the request.
         * @param string $response_format The response format.
         *
         * @return array|WP_Error The responses or a WP_Error object.
         */
        public function fetch_ai_responses($token, array $prompts, $timeout = 15, $response_format = null)
        {
        }
        /**
         * Return the site ID.
         *
         * @return integer|\WP_Error The site ID or a WP_Error object.
         */
        public function get_site_id()
        {
        }
        /**
         * Fetch the JWT token.
         *
         * @param integer $site_id The site ID.
         *
         * @return string|\WP_Error The JWT token or a WP_Error object.
         */
        public function get_jwt_token($site_id)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\AIContent {
    /**
     * ContentProcessor class.
     *
     * Process images for content
     *
     * @internal
     */
    class ContentProcessor
    {
        /**
         * Summarize the business description to ensure better results are returned by AI.
         *
         * @param string     $business_description The business description.
         * @param Connection $ai_connection  The AI connection.
         * @param string     $token  The JWT token.
         * @param integer    $character_limit The character limit for the business description.
         *
         * @return mixed|WP_Error
         */
        public static function summarize_business_description($business_description, $ai_connection, $token, $character_limit = 150)
        {
        }
        /**
         * Ensure that images are provided for assignment to products and patterns.
         *
         * @param array|WP_Error $images  The array of images.
         * @param Connection     $ai_connection  The AI connection.
         * @param string         $token  The JWT token.
         * @param string         $business_description The business description.
         *
         * @return array|int|mixed|string|WP_Error
         */
        public static function verify_images($images, $ai_connection, $token, $business_description)
        {
        }
        /**
         * Adjust the size of images for optimal performance on products and patterns.
         *
         * @param string $image_url The image URL.
         * @param string $usage_type The usage type of the image. Either 'products' or 'patterns'.
         *
         * @return string
         */
        public static function adjust_image_size($image_url, $usage_type)
        {
        }
    }
    /**
     * Patterns Dictionary class.
     *
     * @internal
     */
    class PatternsDictionary
    {
        /**
         * Returns the patterns' dictionary.
         *
         * @return array[]
         */
        public static function get()
        {
        }
    }
    /**
     * Patterns Helper class.
     *
     * @internal
     */
    class PatternsHelper
    {
        /**
         * Fetches the AI-selected image for the pattern or returns the default image.
         *
         * @param array  $images The array of images.
         * @param int    $index The index of the image to return.
         * @param string $default_image The default image to return.
         *
         * @return string The image.
         */
        public static function get_image_url($images, $index, $default_image)
        {
        }
        /**
         * Returns the post that has the generated data by the AI for the patterns.
         *
         * @return \WP_Post|null
         */
        public static function get_patterns_ai_data_post()
        {
        }
        /**
         * Delete the post that has the generated data by the AI for the patterns.
         *
         * @return \WP_Post|null
         */
        public static function delete_patterns_ai_data_post()
        {
        }
        /**
         * Upsert the patterns AI data.
         *
         * @param array $patterns_dictionary The patterns' dictionary.
         *
         * @return WP_Error|null
         */
        public static function upsert_patterns_ai_data_post($patterns_dictionary)
        {
        }
        /**
         * Get the Patterns Dictionary.
         *
         * @param string|null $pattern_slug The pattern slug.
         *
         * @return array|WP_Error Returns pattern dictionary or WP_Error on failure.
         */
        public static function get_patterns_dictionary($pattern_slug = null)
        {
        }
        /**
         * Searches for a pattern by slug in a given dictionary.
         *
         * @param array  $patterns_dictionary The patterns' dictionary.
         * @param string $slug The slug to search for.
         *
         * @return array|null Returns the pattern if found, otherwise null.
         */
        private static function find_pattern_by_slug($patterns_dictionary, $slug)
        {
        }
    }
    /**
     * Pattern Images class.
     *
     * @internal
     */
    class UpdatePatterns
    {
        /**
         * All patterns that are actively in use in the Assembler.
         */
        const WC_PATTERNS_IN_THE_ASSEMBLER = ['woocommerce-blocks/featured-category-triple', 'woocommerce-blocks/hero-product-3-split', 'woocommerce-blocks/hero-product-chessboard', 'woocommerce-blocks/hero-product-split', 'woocommerce-blocks/product-collection-4-columns', 'woocommerce-blocks/product-collection-5-columns', 'woocommerce-blocks/social-follow-us-in-social-media', 'woocommerce-blocks/testimonials-3-columns', 'woocommerce-blocks/product-collection-featured-products-5-columns'];
        /**
         * Generate AI content and assign AI-managed images to Patterns.
         *
         * @param Connection      $ai_connection The AI connection.
         * @param string|WP_Error $token The JWT token.
         * @param array|WP_Error  $images The array of images.
         * @param string          $business_description The business description.
         *
         * @return bool|WP_Error
         */
        public function generate_content($ai_connection, $token, $images, $business_description)
        {
        }
        /**
         * Returns the patterns with AI generated content.
         *
         * @param Connection      $ai_connection The AI connection.
         * @param string|WP_Error $token The JWT token.
         * @param array           $patterns The array of patterns.
         * @param string          $business_description The business description.
         *
         * @return array|WP_Error The patterns with AI generated content.
         */
        public function generate_ai_content_for_patterns($ai_connection, $token, $patterns, $business_description)
        {
        }
        /**
         * Prepares the prompts for the AI.
         *
         * @param array $patterns The array of patterns.
         *
         * @return array
         */
        private function prepare_prompts(array $patterns)
        {
        }
        /**
         * Prepares the expected results format for the AI.
         *
         * @param array $prompts The array of prompts.
         *
         * @return array
         */
        private function prepare_expected_results_format(array $prompts)
        {
        }
        /**
         * Formats the prompts for the AI.
         *
         * @param array  $prompts The array of prompts.
         * @param string $business_description The business description.
         * @param array  $expected_results_format The expected results format.
         *
         * @return array
         */
        private function format_prompts_for_ai(array $prompts, string $business_description, array $expected_results_format)
        {
        }
        /**
         * Fetches and validates the AI responses.
         *
         * @param Connection      $ai_connection The AI connection.
         * @param string|WP_Error $token The JWT token.
         * @param array           $formatted_prompts The array of formatted prompts.
         * @param array           $expected_results_format The array of expected results format.
         *
         * @return array|mixed
         */
        private function fetch_and_validate_ai_responses($ai_connection, $token, $formatted_prompts, $expected_results_format)
        {
        }
        /**
         * Applies the AI responses to the patterns.
         *
         * @param array $patterns The array of patterns.
         * @param array $ai_responses The array of AI responses.
         *
         * @return mixed
         */
        private function apply_ai_responses_to_patterns(array $patterns, array $ai_responses)
        {
        }
        /**
         * Sanitize the string from the AI generated content. It removes double quotes that can cause issues when
         * decoding the patterns JSON.
         *
         * @param string $string The string to be sanitized.
         *
         * @return string The sanitized string.
         */
        private function sanitize_string($string)
        {
        }
        /**
         * Assign selected images to patterns.
         *
         * @param array $patterns_dictionary The array of patterns.
         * @param array $selected_images The array of images.
         *
         * @return array|WP_Error The patterns with images.
         */
        private function assign_selected_images_to_patterns($patterns_dictionary, $selected_images)
        {
        }
        /**
         * Get the Patterns Dictionary.
         *
         * @return mixed|WP_Error|null
         */
        public static function get_patterns_dictionary()
        {
        }
        /**
         * Returns whether the pattern has images.
         *
         * @param array $pattern The array representing the pattern.
         *
         * @return bool True if the pattern has images, false otherwise.
         */
        private function pattern_has_images(array $pattern) : bool
        {
        }
        /**
         * Returns the images for the given pattern.
         *
         * @param array $pattern         The array representing the pattern.
         * @param array $selected_images The array of images.
         *
         * @return array An array containing an array of the images in the first position and their alts in the second.
         */
        private function get_images_for_pattern(array $pattern, array $selected_images) : array
        {
        }
        /**
         * Returns the selected image format. Defaults to portrait.
         *
         * @param array $selected_image The selected image to be assigned to the pattern.
         *
         * @return string The selected image format.
         */
        private function get_selected_image_format($selected_image)
        {
        }
    }
    /**
     * Pattern Images class.
     *
     * @internal
     */
    class UpdateProducts
    {
        /**
         * The dummy products.
         */
        const DUMMY_PRODUCTS = [['title' => 'Vintage Typewriter', 'image' => 'assets/images/pattern-placeholders/writing-typing-keyboard-technology-white-vintage.jpg', 'description' => 'A hit spy novel or a love letter? Anything you type using this vintage typewriter from the 20s is bound to make a mark.', 'price' => 90], ['title' => 'Leather-Clad Leisure Chair', 'image' => 'assets/images/pattern-placeholders/table-wood-house-chair-floor-window.jpg', 'description' => 'Sit back and relax in this comfy designer chair. High-grain leather and steel frame add luxury to your your leisure.', 'price' => 249], ['title' => 'Black and White', 'image' => 'assets/images/pattern-placeholders/white-black-black-and-white-photograph-monochrome-photography.jpg', 'description' => 'This 24" x 30" high-quality print just exudes summer. Hang it on the wall and forget about the world outside.', 'price' => 115], ['title' => '3-Speed Bike', 'image' => 'assets/images/pattern-placeholders/road-sport-vintage-wheel-retro-old.jpg', 'description' => 'Zoom through the streets on this premium 3-speed bike. Manufactured and assembled in Germany in the 80s.', 'price' => 115], ['title' => 'Hi-Fi Headphones', 'image' => 'assets/images/pattern-placeholders/man-person-music-black-and-white-white-photography.jpg', 'description' => 'Experience your favorite songs in a new way with these premium hi-fi headphones.', 'price' => 125], ['title' => 'Retro Glass Jug (330 ml)', 'image' => 'assets/images/pattern-placeholders/drinkware-liquid-tableware-dishware-bottle-fluid.jpg', 'description' => 'Thick glass and a classic silhouette make this jug a must-have for any retro-inspired kitchen.', 'price' => 115]];
        /**
         * Generate AI content and assign AI-managed images to Products.
         *
         * @param Connection      $ai_connection The AI connection.
         * @param string|WP_Error $token The JWT token.
         * @param array|WP_Error  $images The array of images.
         * @param string          $business_description The business description.
         *
         * @return array|WP_Error The generated content for the products. An error if the content could not be generated.
         */
        public function generate_content($ai_connection, $token, $images, $business_description)
        {
        }
        /**
         * Return all dummy products that were not modified by the store owner.
         *
         * @return array|WP_Error An array with the dummy products that need to have their content updated by AI.
         */
        public function fetch_dummy_products_to_update()
        {
        }
        /**
         * Verify if the dummy product should have its content generated and managed by AI.
         *
         * @param \WC_Product $dummy_product The dummy product.
         *
         * @return bool
         */
        public function should_update_dummy_product($dummy_product) : bool
        {
        }
        /**
         * Creates a new product and assigns the _headstart_post meta to it.
         *
         * @param array $product_data The product data.
         *
         * @return bool|int|\WP_Error
         */
        public function create_new_product($product_data)
        {
        }
        /**
         * Return all existing products that have the _headstart_post meta assigned to them.
         *
         * @param string $type The type of products to fetch.
         *
         * @return array|null
         */
        public function fetch_product_ids(string $type = 'user_created')
        {
        }
        /**
         * Return the hash for a product based on its name, description and image_id.
         *
         * @param \WC_Product $product The product.
         *
         * @return false|string
         */
        public function get_hash_for_product($product)
        {
        }
        /**
         * Return the hash for a product that had its content AI-generated.
         *
         * @param \WC_Product $product The product.
         *
         * @return false|mixed
         */
        public function get_hash_for_ai_modified_product($product)
        {
        }
        /**
         * Create a hash with the AI-generated content and save it as a meta for the product.
         *
         * @param \WC_Product $product The product.
         *
         * @return bool|int
         */
        public function create_hash_for_ai_modified_product($product)
        {
        }
        /**
         * Update the product content with the AI-generated content.
         *
         * @param array $ai_generated_product_content The AI-generated product content.
         *
         * @return void|WP_Error
         */
        public function update_product_content($ai_generated_product_content)
        {
        }
        /**
         * Upload the image for the product.
         *
         * @param int    $product_id The product ID.
         * @param string $image_src The image source.
         * @param string $image_alt The image alt.
         *
         * @return int|string|WP_Error
         */
        private function product_image_upload($product_id, $image_src, $image_alt)
        {
        }
        /**
         * Assigns the default content for the products.
         *
         * @param array $dummy_products_to_update The dummy products to update.
         * @param array $ai_selected_images The images' information.
         *
         * @return array[]
         */
        public function assign_ai_selected_images_to_dummy_products($dummy_products_to_update, $ai_selected_images)
        {
        }
        /**
         * Generate the product content.
         *
         * @param Connection $ai_connection The AI connection.
         * @param string     $token The JWT token.
         * @param array      $products_information_list The products information list.
         * @param string     $business_description The business description.
         * @param string     $search_term The search term.
         *
         * @return array|int|string|\WP_Error
         */
        public function assign_ai_generated_content_to_dummy_products($ai_connection, $token, $products_information_list, $business_description, $search_term)
        {
        }
        /**
         * Reset the products content.
         */
        public function reset_products_content()
        {
        }
        /**
         * Update the product with the new content.
         *
         * @param \WC_Product         $product The product.
         * @param int|string|WP_Error $product_image_id The product image ID.
         * @param string              $product_title The product title.
         * @param string              $product_description The product description.
         * @param int                 $product_price The product price.
         *
         * @return int|\WP_Error
         */
        private function product_update($product, $product_image_id, $product_title, $product_description, $product_price)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * Assets class.
     *
     * @deprecated 5.0.0 This class will be removed in a future release. This has been replaced by AssetsController.
     * @internal
     */
    class Assets
    {
        /**
         * Initialize class features on init.
         *
         * @since 2.5.0
         * @deprecated 5.0.0
         */
        public static function init()
        {
        }
        /**
         * Register block scripts & styles.
         *
         * @since 2.5.0
         * @deprecated 5.0.0
         */
        public static function register_assets()
        {
        }
        /**
         * Register the vendors style file. We need to do it after the other files
         * because we need to check if `wp-edit-post` has been enqueued.
         *
         * @deprecated 5.0.0
         */
        public static function enqueue_scripts()
        {
        }
        /**
         * Add body classes.
         *
         * @deprecated 5.0.0
         * @param array $classes Array of CSS classnames.
         * @return array Modified array of CSS classnames.
         */
        public static function add_theme_body_class($classes = [])
        {
        }
        /**
         * Add theme class to admin body.
         *
         * @deprecated 5.0.0
         * @param array $classes String with the CSS classnames.
         * @return array Modified string of CSS classnames.
         */
        public static function add_theme_admin_body_class($classes = '')
        {
        }
        /**
         * Adds a redirect field to the login form so blocks can redirect users after login.
         *
         * @deprecated 5.0.0
         */
        public static function redirect_to_field()
        {
        }
        /**
         * Queues a block script in the frontend.
         *
         * @since 2.3.0
         * @since 2.6.0 Changed $name to $script_name and added $handle argument.
         * @since 2.9.0 Made it so scripts are not loaded in admin pages.
         * @deprecated 4.5.0 Block types register the scripts themselves.
         *
         * @param string $script_name  Name of the script used to identify the file inside build folder.
         * @param string $handle       Optional. Provided if the handle should be different than the script name. `wc-` prefix automatically added.
         * @param array  $dependencies Optional. An array of registered script handles this script depends on. Default empty array.
         */
        public static function register_block_script($script_name, $handle = '', $dependencies = [])
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Assets {
    /**
     * The Api class provides an interface to various asset registration helpers.
     *
     * Contains asset api methods
     *
     * @since 2.5.0
     */
    class Api
    {
        /**
         * Stores the prefixed WC version. Used because the WC Blocks version has not been updated since the monorepo merge.
         *
         * @var string
         */
        public $wc_version;
        /**
         * Stores inline scripts already enqueued.
         *
         * @var array
         */
        private $inline_scripts = [];
        /**
         * Determines if caching is enabled for script data.
         *
         * @var boolean
         */
        private $disable_cache = false;
        /**
         * Stores loaded script data for the current request
         *
         * @var array|null
         */
        private $script_data = null;
        /**
         * Tracks whether script_data was modified during the current request.
         *
         * @var boolean
         */
        private $script_data_modified = false;
        /**
         * Stores the hash for the script data, made up of the site url, plugin version and package path.
         *
         * @var string
         */
        private $script_data_hash;
        /**
         * Stores the transient key used to cache the script data. This will change if the site is accessed via HTTPS or HTTP.
         *
         * @var string
         */
        private $script_data_transient_key = 'woocommerce_blocks_asset_api_script_data';
        /**
         * Reference to the Package instance
         *
         * @var Package
         */
        private $package;
        /**
         * Constructor for class
         *
         * @param Package $package An instance of Package.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Package $package)
        {
        }
        /**
         * Get the file modified time as a cache buster if we're in dev mode.
         *
         * @param string $file Local path to the file (relative to the plugin
         *                     directory).
         * @return string The cache buster value to use for the given file.
         */
        protected function get_file_version($file)
        {
        }
        /**
         * Retrieve the url to an asset for this plugin.
         *
         * @param string $relative_path An optional relative path appended to the
         *                              returned url.
         *
         * @return string
         */
        protected function get_asset_url($relative_path = '')
        {
        }
        /**
         * Get the path to a block's metadata
         *
         * @param string $block_name The block to get metadata for.
         * @param string $path Optional. The path to the metadata file inside the 'assets/client/blocks' folder.
         *
         * @return string|boolean False if metadata file is not found for the block.
         */
        public function get_block_metadata_path($block_name, $path = '')
        {
        }
        /**
         * Generates a hash containing the site url, plugin version and package path.
         *
         * Moving the plugin, changing the version, or changing the site url will result in a new hash and the cache will be invalidated.
         *
         * @return string The generated hash.
         */
        private function get_script_data_hash()
        {
        }
        /**
         * Initialize and load cached script data from the transient cache.
         *
         * @return array
         */
        private function get_cached_script_data()
        {
        }
        /**
         * Store all cached script data in the transient cache.
         */
        public function update_script_data_cache()
        {
        }
        /**
         * Get src, version and dependencies given a script relative src.
         *
         * @param string $relative_src Relative src to the script.
         * @param array  $dependencies Optional. An array of registered script handles this script depends on. Default empty array.
         *
         * @return array src, version and dependencies of the script.
         */
        public function get_script_data($relative_src, $dependencies = [])
        {
        }
        /**
         * Registers a script according to `wp_register_script`, adding the correct prefix, and additionally loading translations.
         *
         * When creating script assets, the following rules should be followed:
         *   1. All asset handles should have a `wc-` prefix.
         *   2. If the asset handle is for a Block (in editor context) use the `-block` suffix.
         *   3. If the asset handle is for a Block (in frontend context) use the `-block-frontend` suffix.
         *   4. If the asset is for any other script being consumed or enqueued by the blocks plugin, use the `wc-blocks-` prefix.
         *
         * @since 2.5.0
         * @throws Exception If the registered script has a dependency on itself.
         *
         * @param string $handle        Unique name of the script.
         * @param string $relative_src  Relative url for the script to the path from plugin root.
         * @param array  $dependencies  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.
         */
        public function register_script($handle, $relative_src, $dependencies = [], $has_i18n = true)
        {
        }
        /**
         * Registers a style according to `wp_register_style`.
         *
         * @since 2.5.0
         * @since 2.6.0 Change src to be relative source.
         *
         * @param string  $handle       Name of the stylesheet. Should be unique.
         * @param string  $relative_src Relative source of the stylesheet to the plugin path.
         * @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)'.
         * @param boolean $rtl   Optional. Whether or not to register RTL styles.
         */
        public function register_style($handle, $relative_src, $deps = [], $media = 'all', $rtl = false)
        {
        }
        /**
         * Returns the appropriate asset path for current builds.
         *
         * @param   string $filename  Filename for asset path (without extension).
         * @param   string $type      File type (.css or .js).
         * @return  string             The generated path.
         */
        public function get_block_asset_build_path($filename, $type = 'js')
        {
        }
        /**
         * Adds an inline script, once.
         *
         * @param string $handle Script handle.
         * @param string $script Script contents.
         */
        public function add_inline_script($handle, $script)
        {
        }
    }
    /**
     * Class instance for registering data used on the current view session by
     * assets.
     *
     * Holds data registered for output on the current view session when
     * `wc-settings` is enqueued( directly or via dependency )
     *
     * @since 2.5.0
     */
    class AssetDataRegistry
    {
        /**
         * Contains registered data.
         *
         * @var array
         */
        private $data = [];
        /**
         * Contains preloaded API data.
         *
         * @var array
         */
        private $preloaded_api_requests = [];
        /**
         * Lazy data is an array of closures that will be invoked just before
         * asset data is generated for the enqueued script.
         *
         * @var array
         */
        private $lazy_data = [];
        /**
         * Asset handle for registered data.
         *
         * @var string
         */
        private $handle = 'wc-settings';
        /**
         * Asset API interface for various asset registration.
         *
         * @var API
         */
        private $api;
        /**
         * Constructor
         *
         * @param Api $asset_api  Asset API interface for various asset registration.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Hook into WP asset registration for enqueueing asset data.
         */
        protected function init()
        {
        }
        /**
         * Exposes core data via the wcSettings global. This data is shared throughout the client.
         *
         * Settings that are used by various components or multiple blocks should be added here. Note, that settings here are
         * global so be sure not to add anything heavy if possible.
         *
         * @return array  An array containing core data.
         */
        protected function get_core_data()
        {
        }
        /**
         * Get currency data to include in settings.
         *
         * @return array
         */
        protected function get_currency_data()
        {
        }
        /**
         * Get locale data to include in settings.
         *
         * @return array
         */
        protected function get_locale_data()
        {
        }
        /**
         * Get store pages to include in settings.
         *
         * @return array
         */
        protected function get_store_pages()
        {
        }
        /**
         * Get product related settings.
         *
         * Note: For the time being we are exposing only the settings that are used by blocks.
         *
         * @return array
         */
        protected function get_products_settings()
        {
        }
        /**
         * Format a page object into a standard array of data.
         *
         * @param WP_Post|int $page Page object or ID.
         * @return array
         */
        protected function format_page_resource($page)
        {
        }
        /**
         * Returns block-related data for enqueued wc-settings script.
         * Format order statuses by removing a leading 'wc-' if present.
         *
         * @return array formatted statuses.
         */
        protected function get_order_statuses()
        {
        }
        /**
         * Used for on demand initialization of asset data and registering it with
         * the internal data registry.
         *
         * Note: core data will overwrite any externally registered data via the api.
         */
        protected function initialize_core_data()
        {
        }
        /**
         * Loops through each registered lazy data callback and adds the returned
         * value to the data array.
         *
         * This method is executed right before preparing the data for printing to
         * the rendered screen.
         *
         * @return void
         */
        protected function execute_lazy_data()
        {
        }
        /**
         * Exposes private registered data to child classes.
         *
         * @return array  The registered data on the private data property
         */
        protected function get()
        {
        }
        /**
         * Allows checking whether a key exists.
         *
         * @param string $key  The key to check if exists.
         * @return bool  Whether the key exists in the current data registry.
         */
        public function exists($key)
        {
        }
        /**
         * Interface for adding data to the registry.
         *
         * You can only register data that is not already in the registry identified by the given key. If there is a
         * duplicate found, unless $ignore_duplicates is true, an exception will be thrown.
         *
         * @param string  $key              The key used to reference the data being registered. This should use camelCase.
         * @param mixed   $data             If not a function, registered to the registry as is. If a function, then the
         *                                  callback is invoked right before output to the screen.
         * @param boolean $check_key_exists Deprecated. If set to true, duplicate data will be ignored if the key exists.
         *                                  If false, duplicate data will cause an exception.
         */
        public function add($key, $data, $check_key_exists = false)
        {
        }
        /**
         * Hydrate from the API.
         *
         * @param string $path REST API path to preload.
         */
        public function hydrate_api_request($path)
        {
        }
        /**
         * Hydrate some data from the API.
         *
         * @param string  $key  The key used to reference the data being registered.
         * @param string  $path REST API path to preload.
         * @param boolean $check_key_exists If set to true, duplicate data will be ignored if the key exists.
         *                                  If false, duplicate data will cause an exception.
         *
         * @throws InvalidArgumentException  Only throws when site is in debug mode. Always logs the error.
         */
        public function hydrate_data_from_api_request($key, $path, $check_key_exists = false)
        {
        }
        /**
         * Adds a page permalink to the data registry.
         *
         * @param integer $page_id Page ID to add to the registry.
         */
        public function register_page_id($page_id)
        {
        }
        /**
         * Callback for registering the data script via WordPress API.
         *
         * @return void
         */
        public function register_data_script()
        {
        }
        /**
         * Callback for enqueuing asset data via the WP api.
         *
         * Note: while this is hooked into print/admin_print_scripts, it still only
         * happens if the script attached to `wc-settings` handle is enqueued. This
         * is done to allow for any potentially expensive data generation to only
         * happen for routes that need it.
         */
        public function enqueue_asset_data()
        {
        }
        /**
         * See self::add() for docs.
         *
         * @param   string $key   Key for the data.
         * @param   mixed  $data  Value for the data.
         */
        protected function add_data($key, $data)
        {
        }
        /**
         * Exposes whether the current site is in debug mode or not.
         *
         * @return boolean  True means the site is in debug mode.
         */
        protected function debug()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * AssetsController class.
     *
     * @since 5.0.0
     * @internal
     */
    final class AssetsController
    {
        /**
         * Asset API interface for various asset registration.
         *
         * @var AssetApi
         */
        private $api;
        /**
         * Constructor.
         *
         * @param AssetApi $asset_api  Asset API interface for various asset registration.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Initialize class features.
         */
        protected function init()
        {
        }
        /**
         * Register block scripts & styles.
         */
        public function register_assets()
        {
        }
        /**
         * Register and enqueue assets for exclusive usage within the Site Editor.
         */
        public function register_and_enqueue_site_editor_assets()
        {
        }
        /**
         * Defines resource hints to help speed up the loading of some critical blocks.
         *
         * These will not impact page loading times negatively because they are loaded once the current page is idle.
         *
         * @param array  $urls          URLs to print for resource hints. Each URL is an array of resource attributes, or a URL string.
         * @param string $relation_type The relation type the URLs are printed. Possible values: preconnect, dns-prefetch, prefetch, prerender.
         * @return array URLs to print for resource hints.
         */
        public function add_resource_hints($urls, $relation_type)
        {
        }
        /**
         * Get resource hints during prefetch requests.
         *
         * @return array Array of URLs.
         */
        private function get_prefetch_resource_hints()
        {
        }
        /**
         * Get resource hints during prerender requests.
         *
         * @return array Array of URLs.
         */
        private function get_prerender_resource_hints()
        {
        }
        /**
         * Get the block asset resource hints in the cache or null if not found.
         *
         * @return array|null Array of resource hints.
         */
        private function get_block_asset_resource_hints_cache()
        {
        }
        /**
         * Set the block asset resource hints in the cache.
         *
         * @param string $filename File name.
         * @param array  $data Array of resource hints.
         */
        private function set_block_asset_resource_hints_cache($filename, $data)
        {
        }
        /**
         * Get resource hint for a block by name.
         *
         * @param string $filename Block filename.
         * @return array
         */
        private function get_block_asset_resource_hints($filename = '')
        {
        }
        /**
         * Get the src of all script dependencies (handles).
         *
         * @param array $dependencies Array of dependency handles.
         * @return string[] Array of src strings.
         */
        private function get_script_dependency_src_array(array $dependencies)
        {
        }
        /**
         * Returns an absolute url to relative links for WordPress core scripts.
         *
         * @param string $src Original src that can be relative.
         * @return string Correct full path string.
         */
        private function get_absolute_url($src)
        {
        }
        /**
         * Skip Jetpack Boost minification on older versions of Jetpack Boost where it causes issues.
         *
         * @param mixed $do_concat Whether to concatenate the script or not.
         * @param mixed $handle The script handle.
         * @return mixed
         */
        public function skip_boost_minification_for_cart_checkout($do_concat, $handle)
        {
        }
        /**
         * Add body classes to the frontend and within admin.
         *
         * @param string|array $classes Array or string of CSS classnames.
         * @return string|array Modified classnames.
         */
        public function add_theme_body_class($classes)
        {
        }
        /**
         * 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 function get_file_version($file)
        {
        }
        /**
         * Registers a style according to `wp_register_style`.
         *
         * @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)'.
         * @param boolean $rtl   Optional. Whether or not to register RTL styles.
         */
        protected function register_style($handle, $src, $deps = array(), $media = 'all', $rtl = false)
        {
        }
        /**
         * Update block style dependencies after they have been registered.
         */
        public function update_block_style_dependencies()
        {
        }
        /**
         * Fix scripts with wc-settings dependency.
         *
         * The wc-settings script only works correctly when enqueued in the footer. This is to give blocks etc time to
         * register their settings data before it's printed.
         *
         * This code will look at registered scripts, and if they have a wc-settings dependency, force them to print in the
         * footer instead of the header.
         *
         * This only supports packages known to require wc-settings!
         *
         * @see https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5052
         */
        public function update_block_settings_dependencies()
        {
        }
    }
    /**
     * Registers patterns under the `./patterns/` directory and from the PTK API and updates their content.
     * Each pattern from core is defined as a PHP file and defines its metadata using plugin-style headers.
     * The minimum required definition is:
     *
     *     /**
     *      * Title: My Pattern
     *      * Slug: my-theme/my-pattern
     *      *
     *
     * The output of the PHP source corresponds to the content of the pattern, e.g.:
     *
     *     <main><p><?php echo "Hello"; ?></p></main>
     *
     * Other settable fields include:
     *
     *   - Description
     *   - Viewport Width
     *   - Categories       (comma-separated values)
     *   - Keywords         (comma-separated values)
     *   - Block Types      (comma-separated values)
     *   - Inserter         (yes/no)
     *
     * @internal
     */
    class BlockPatterns
    {
        const CATEGORIES_PREFIXES = ['_woo_', '_dotcom_imported_'];
        /**
         * Path to the patterns' directory.
         *
         * @var string $patterns_path
         */
        private string $patterns_path;
        /**
         * PatternRegistry instance.
         *
         * @var PatternRegistry $pattern_registry
         */
        private \Automattic\WooCommerce\Blocks\Patterns\PatternRegistry $pattern_registry;
        /**
         * Patterns dictionary
         *
         * @var array|WP_Error
         */
        private $dictionary;
        /**
         * PTKPatternsStore instance.
         *
         * @var PTKPatternsStore $ptk_patterns_store
         */
        private \Automattic\WooCommerce\Blocks\Patterns\PTKPatternsStore $ptk_patterns_store;
        /**
         * Constructor for class
         *
         * @param Package          $package An instance of Package.
         * @param PatternRegistry  $pattern_registry An instance of PatternRegistry.
         * @param PTKPatternsStore $ptk_patterns_store An instance of PTKPatternsStore.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Package $package, \Automattic\WooCommerce\Blocks\Patterns\PatternRegistry $pattern_registry, \Automattic\WooCommerce\Blocks\Patterns\PTKPatternsStore $ptk_patterns_store)
        {
        }
        /**
         * Returns the Patterns dictionary.
         *
         * @return array|WP_Error
         */
        private function get_patterns_dictionary()
        {
        }
        /**
         * Register block patterns from core.
         *
         * @return void
         */
        public function register_block_patterns()
        {
        }
        /**
         * Gets block pattern data from the cache if available
         *
         * @return array Block pattern data.
         */
        private function get_block_patterns()
        {
        }
        /**
         * Gets block pattern cache.
         *
         * @return array|false Returns an array of patterns if cache is found, otherwise false.
         */
        private function get_pattern_cache()
        {
        }
        /**
         * Sets block pattern cache.
         *
         * @param array $patterns Block patterns data to set in cache.
         */
        private function set_pattern_cache(array $patterns)
        {
        }
        /**
         * Register patterns from the Patterns Toolkit.
         *
         * @return void
         */
        public function register_ptk_patterns()
        {
        }
        /**
         * Parse prefixed categories from the PTK patterns into the actual WooCommerce categories.
         *
         * @param array $patterns The patterns to parse.
         * @return array The parsed patterns.
         */
        private function parse_categories(array $patterns)
        {
        }
    }
    /**
     * BlockTemplatesController class.
     *
     * @internal
     */
    class BlockTemplatesController
    {
        /**
         * Directory which contains all templates
         *
         * @var string
         */
        const TEMPLATES_ROOT_DIR = 'templates';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Renders the `core/template-part` block on the server.
         *
         * This is done because the core handling for template parts only supports templates from the current theme, not
         * from a plugin.
         *
         * @param array $attributes The block attributes.
         * @return string The render.
         */
        public function render_woocommerce_template_part($attributes)
        {
        }
        /**
         * This function is used on the `pre_get_block_template` hook to return the fallback template from the db in case
         * the template is eligible for it.
         *
         * Currently, the Products by Category, Products by Tag and Products by Attribute templates fall back to the
         * Product Catalog template. That means that if there are customizations in the Product Catalog template,
         * they are also reflected in the other templates as long as they haven't been customized as well.
         *
         * @param \WP_Block_Template|null $template Block template object to short-circuit the default query,
         *                                          or null to allow WP to run its normal queries.
         * @param string                  $id Template unique identifier (example: theme_slug//template_slug).
         * @param string                  $template_type wp_template or wp_template_part.
         *
         * @return object|null
         */
        public function get_block_template_fallback($template, $id, $template_type)
        {
        }
        /**
         * Adds the fallback template to the template hierarchy.
         *
         * @param array $template_hierarchy A list of template candidates, in descending order of priority.
         */
        public function add_fallback_template_to_hierarchy($template_hierarchy)
        {
        }
        /**
         * By default, the Template Part Block only supports template parts that are in the current theme directory.
         * This render_callback wrapper allows us to add support for plugin-housed template parts.
         *
         * @param array $settings Array of determined settings for registering a block type.
         * @param array $metadata     Metadata provided for registering a block type.
         */
        public function add_plugin_templates_parts_support($settings, $metadata)
        {
        }
        /**
         * Prevents shortcodes in templates having their HTML content broken by wpautop.
         *
         * @see https://core.trac.wordpress.org/ticket/58366 for more info.
         *
         * @param array $settings Array of determined settings for registering a block type.
         * @param array $metadata     Metadata provided for registering a block type.
         */
        public function prevent_shortcodes_html_breakage($settings, $metadata)
        {
        }
        /**
         * Prevents the pages that are assigned as Cart/Checkout from showing the "template" selector in the page-editor.
         * We want to avoid this flow and point users towards the Site Editor instead.
         *
         * @return void
         */
        public function hide_template_selector_in_cart_checkout_pages()
        {
        }
        /**
         * This function checks if there's a block template file in `woocommerce/templates/templates/`
         * to return to pre_get_posts short-circuiting the query in Gutenberg.
         *
         * @param \WP_Block_Template|null $template Return a block template object to short-circuit the default query,
         *                                               or null to allow WP to run its normal queries.
         * @param string                  $id Template unique identifier (example: theme_slug//template_slug).
         * @param string                  $template_type wp_template or wp_template_part.
         *
         * @return mixed|\WP_Block_Template|\WP_Error
         */
        public function get_block_file_template($template, $id, $template_type)
        {
        }
        /**
         * Add the template title and description to WooCommerce templates.
         *
         * @param WP_Block_Template|null $block_template The found block template, or null if there isn't one.
         * @param string                 $id             Template unique identifier (example: 'theme_slug//template_slug').
         * @param array                  $template_type  Template type: 'wp_template' or 'wp_template_part'.
         * @return WP_Block_Template|null
         */
        public function add_block_template_details($block_template, $id, $template_type)
        {
        }
        /**
         * Add the block template objects to be used.
         *
         * @param array  $query_result Array of template objects.
         * @param array  $query Optional. Arguments to retrieve templates.
         * @param string $template_type wp_template or wp_template_part.
         * @return array
         */
        public function add_block_templates($query_result, $query, $template_type)
        {
        }
        /**
         * Gets the templates saved in the database.
         *
         * @param array  $slugs An array of slugs to retrieve templates for.
         * @param string $template_type wp_template or wp_template_part.
         *
         * @return int[]|\WP_Post[] An array of found templates.
         */
        public function get_block_templates_from_db($slugs = array(), $template_type = 'wp_template')
        {
        }
        /**
         * Gets the templates from the WooCommerce blocks directory, skipping those for which a template already exists
         * in the theme directory.
         *
         * @param string[] $slugs An array of slugs to filter templates by. Templates whose slug does not match will not be returned.
         * @param array    $already_found_templates Templates that have already been found, these are customised templates that are loaded from the database.
         * @param string   $template_type wp_template or wp_template_part.
         *
         * @return array Templates from the WooCommerce blocks plugin directory.
         */
        public function get_block_templates_from_woocommerce($slugs, $already_found_templates, $template_type = 'wp_template')
        {
        }
        /**
         * Get and build the block template objects from the block template files.
         *
         * @param array  $slugs An array of slugs to retrieve templates for.
         * @param string $template_type wp_template or wp_template_part.
         *
         * @return array WP_Block_Template[] An array of block template objects.
         */
        public function get_block_templates($slugs = array(), $template_type = 'wp_template')
        {
        }
        /**
         * Checks whether a block template with that name exists in Woo Blocks
         *
         * @param string $template_name Template to check.
         * @param array  $template_type wp_template or wp_template_part.
         *
         * @return boolean
         */
        public function block_template_is_available($template_name, $template_type = 'wp_template')
        {
        }
    }
    /**
     * BlockTemplatesRegistry class.
     *
     * @internal
     */
    class BlockTemplatesRegistry
    {
        /**
         * The array of registered templates.
         *
         * @var AbstractTemplate[]|AbstractTemplatePart[]
         */
        private $templates = array();
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the template matching the slug
         *
         * @param string $template_slug Slug of the template to retrieve.
         *
         * @return AbstractTemplate|AbstractTemplatePart|null
         */
        public function get_template($template_slug)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\BlockTypes {
    /**
     * AbstractBlock class.
     */
    abstract class AbstractBlock
    {
        /**
         * Block namespace.
         *
         * @var string
         */
        protected $namespace = 'woocommerce';
        /**
         * Block name within this namespace.
         *
         * @var string
         */
        protected $block_name = '';
        /**
         * Tracks if assets have been enqueued.
         *
         * @var boolean
         */
        protected $enqueued_assets = false;
        /**
         * Instance of the asset API.
         *
         * @var AssetApi
         */
        protected $asset_api;
        /**
         * Instance of the asset data registry.
         *
         * @var AssetDataRegistry
         */
        protected $asset_data_registry;
        /**
         * Instance of the integration registry.
         *
         * @var IntegrationRegistry
         */
        protected $integration_registry;
        /**
         * Constructor.
         *
         * @param AssetApi            $asset_api Instance of the asset API.
         * @param AssetDataRegistry   $asset_data_registry Instance of the asset data registry.
         * @param IntegrationRegistry $integration_registry Instance of the integration registry.
         * @param string              $block_name Optionally set block name during construct.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api, \Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry, \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry $integration_registry, $block_name = '')
        {
        }
        /**
         * Get the interactivity namespace. Only used when utilizing the interactivity API.
         * @return string The interactivity namespace, used to namespace interactivity API actions and state.
         */
        protected function get_full_block_name()
        {
        }
        /**
         * The default render_callback for all blocks. This will ensure assets are enqueued just in time, then render
         * the block (if applicable).
         *
         * @param array|WP_Block $attributes Block attributes, or an instance of a WP_Block. Defaults to an empty array.
         * @param string         $content    Block content. Default empty string.
         * @param WP_Block|null  $block      Block instance.
         * @return string Rendered block type output.
         */
        public function render_callback($attributes = [], $content = '', $block = null)
        {
        }
        /**
         * Enqueue assets used for rendering the block in editor context.
         *
         * This is needed if a block is not yet within the post content--`render` and `enqueue_assets` may not have ran.
         */
        public function enqueue_editor_assets()
        {
        }
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Register script and style assets for the block type before it is registered.
         *
         * This registers the scripts; it does not enqueue them.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Injects Chunk Translations into the page so translations work for lazy loaded components.
         *
         * The chunk names are defined when creating lazy loaded components using webpackChunkName.
         *
         * @param string[] $chunks Array of chunk names.
         */
        protected function register_chunk_translations($chunks)
        {
        }
        /**
         * Generate an array of chunks paths for loading translation.
         *
         * @param string $chunks_folder The folder to iterate over.
         * @return string[] $chunks list of chunks to load.
         */
        protected function get_chunks_paths($chunks_folder)
        {
        }
        /**
         * Registers the block type with WordPress.
         *
         * @return string[] Chunks paths.
         */
        protected function register_block_type()
        {
        }
        /**
         * Get the block type.
         *
         * @return string
         */
        protected function get_block_type()
        {
        }
        /**
         * Get the render callback for this block type.
         *
         * Dynamic blocks should return a callback, for example, `return [ $this, 'render' ];`
         *
         * @see $this->register_block_type()
         * @return callable|null;
         */
        protected function get_block_type_render_callback()
        {
        }
        /**
         * Get the editor script data for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the editor style handle for this block type.
         *
         * @see $this->register_block_type()
         * @return string|null
         */
        protected function get_block_type_editor_style()
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string|null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]|null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Get the supports array for this block type.
         *
         * @see $this->register_block_type()
         * @return string;
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Get block attributes.
         *
         * @return array;
         */
        protected function get_block_type_attributes()
        {
        }
        /**
         * Get block usesContext.
         *
         * @return array;
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Parses block attributes from the render_callback.
         *
         * @param array|WP_Block $attributes Block attributes, or an instance of a WP_Block. Defaults to an empty array.
         * @return array
         */
        protected function parse_render_callback_attributes($attributes)
        {
        }
        /**
         * Render the block. Extended by children.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @internal This prevents the block script being enqueued on all pages. It is only enqueued as needed. Note that
         * we intentionally do not pass 'script' to register_block_type.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Get routes from a REST API namespace.
         *
         * @param string $namespace Namespace to retrieve.
         * @return array
         */
        protected function get_routes_from_namespace($namespace)
        {
        }
        /**
         * Register/enqueue scripts used for this block on the frontend, during render.
         *
         * @param array $attributes Any attributes that currently are available from the block.
         */
        protected function enqueue_scripts(array $attributes = [])
        {
        }
    }
    /**
     * AbstractDynamicBlock class.
     */
    abstract class AbstractDynamicBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_block_type_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 = '')
        {
        }
    }
    /**
     * AbstractInnerBlock class.
     */
    abstract class AbstractInnerBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Is this inner block lazy loaded? this helps us know if we should load its frontend script ot not.
         *
         * @var boolean
         */
        protected $is_lazy_loaded = true;
        /**
         * Registers the block type with WordPress using the metadata file.
         *
         * The registration using metadata is now recommended. And it's required for "Inner Blocks" to
         * fix the issue of missing translations in the inspector (in the Editor mode)
         */
        protected function register_block_type()
        {
        }
        /**
         * For lazy loaded inner blocks, we don't want to enqueue the script but rather leave it for webpack to do that.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string|null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * 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();
        /**
         * Meta query args.
         *
         * @var array
         */
        protected $meta_query = 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_block_type_attributes()
        {
        }
        /**
         * Include and render the dynamic block.
         *
         * @param array         $attributes Block attributes. Default empty array.
         * @param string        $content    Block content. Default empty string.
         * @param WP_Block|null $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes = array(), $content = '', $block = null)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Set which stock status to use when displaying products.
         *
         * @param array $query_args Query args.
         * @return void
         */
        protected function set_stock_status_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()
        {
        }
        /**
         * Retrieve IDs that are not already present in the cache.
         *
         * Based on WordPress function: _get_non_cached_ids
         *
         * @param int[]  $product_ids Array of IDs.
         * @param string $cache_key  The cache bucket to check against.
         * @return int[] Array of IDs not present in the cache.
         */
        protected function get_non_cached_ids($product_ids, $cache_key)
        {
        }
        /**
         * Prime query cache of product variation meta data.
         *
         * Prepares values in the product_ID_variation_meta_data cache for later use in the ProductSchema::get_variations()
         * method. Doing so here reduces the total number of queries needed.
         *
         * @param int[] $product_ids Product ids to prime variation cache for.
         */
        protected function prime_product_variations($product_ids)
        {
        }
        /**
         * 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 \WC_Product $product Product object.
         * @return string Rendered product output.
         */
        protected function render_product($product)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * ActiveFilters class.
     */
    class ActiveFilters extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'active-filters';
    }
    /**
     * CatalogSorting class.
     */
    class AddToCartForm extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'add-to-cart-form';
        /**
         * Initializes the AddToCartForm block and hooks into the `wc_add_to_cart_message_html` filter
         * to prevent displaying the Cart Notice when the block is inside the Single Product block
         * and the Add to Cart button is clicked.
         *
         * It also hooks into the `woocommerce_add_to_cart_redirect` filter to prevent redirecting
         * to another page when the block is inside the Single Product block and the Add to Cart button
         * is clicked.
         *
         * @return void
         */
        protected function initialize()
        {
        }
        /**
         * Get the block's attributes.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return array  Block attributes merged with defaults.
         */
        private function parse_attributes($attributes)
        {
        }
        /**
         * Enqueue assets specific to this block.
         * We enqueue frontend scripts only if the quantitySelectorStyle is set to 'stepper'.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         */
        protected function enqueue_assets($attributes, $content, $block)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Add increment and decrement buttons to the quantity input field.
         *
         * @param string $product_html add-to-cart form HTML.
         * @param string $product_name Product name.
         * @return stringa add-to-cart form HTML with increment and decrement buttons.
         */
        private function add_steppers($product_html, $product_name)
        {
        }
        /**
         * Add classes to the Add to Cart form input needed for the stepper style.
         *
         * @param string $product_html The Add to Cart form HTML.
         *
         * @return string The Add to Cart form HTML with classes added.
         */
        private function add_stepper_classes_to_add_to_cart_form_input($product_html)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Add a hidden input to the Add to Cart form to indicate that it is a descendent of a Single Product block.
         *
         * @param string $product_html The Add to Cart Form HTML.
         * @param string $is_descendent_of_single_product_block Indicates if block is descendent of Single Product block.
         *
         * @return string The Add to Cart Form HTML with the hidden input.
         */
        protected function add_is_descendent_of_single_product_block_hidden_input_to_product_form($product_html, $is_descendent_of_single_product_block)
        {
        }
        /**
         * Filter the add to cart message to prevent the Notice from being displayed when the Add to Cart form is a descendent of a Single Product block
         * and the Add to Cart button is clicked.
         *
         * @param string $message Message to be displayed when product is added to the cart.
         */
        public function add_to_cart_message_html_filter($message)
        {
        }
        /**
         * Hooks into the `woocommerce_add_to_cart_redirect` filter to prevent redirecting
         * to another page when the block is inside the Single Product block and the Add to Cart button
         * is clicked.
         *
         * @param string $url The URL to redirect to after the product is added to the cart.
         * @return string The filtered redirect URL.
         */
        public function add_to_cart_redirect_filter($url)
        {
        }
    }
    /**
     * AllProducts class.
     */
    class AllProducts extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'all-products';
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * It is necessary to register and enqueue assets during the render phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
    }
    /**
     * AllReviews class.
     */
    class AllReviews extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'all-reviews';
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * AtomicBlock class.
     *
     * @internal
     */
    class AtomicBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Get the editor script data for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return null
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the editor style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_editor_style()
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * AttributeFilter class.
     */
    class AttributeFilter extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'attribute-filter';
        const FILTER_QUERY_VAR_PREFIX = 'filter_';
        const QUERY_TYPE_QUERY_VAR_PREFIX = 'query_type_';
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * CatalogSorting class.
     */
    class Breadcrumbs extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'breadcrumbs';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
    /**
     * Cart class.
     *
     * @internal
     */
    class Cart extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart';
        /**
         * Chunks build folder.
         *
         * @var string
         */
        protected $chunks_folder = 'cart-blocks';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Dequeues the scripts added by WC Core to the Cart page.
         *
         * @return void
         */
        public function dequeue_woocommerce_core_scripts()
        {
        }
        /**
         * Register block pattern for Empty Cart Message to make it translatable.
         */
        public function register_patterns()
        {
        }
        /**
         * Get the editor script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return array|string;
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Append frontend scripts when rendering the Cart block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Register script and style assets for the block type before it is registered.
         *
         * This registers the scripts; it does not enqueue them.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get list of Cart block & its inner-block types.
         *
         * @return array;
         */
        public static function get_cart_block_types()
        {
        }
    }
    /**
     * CartAcceptedPaymentMethodsBlock class.
     */
    class CartAcceptedPaymentMethodsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-accepted-payment-methods-block';
    }
    /**
     * CartCrossSellsBlock class.
     */
    class CartCrossSellsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-cross-sells-block';
    }
    /**
     * CartCrossSellsProductsBlock class.
     */
    class CartCrossSellsProductsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-cross-sells-products-block';
    }
    /**
     * CartExpressPaymentBlock class.
     */
    class CartExpressPaymentBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-express-payment-block';
        /**
         * Uniform default_styles for the express payment buttons
         *
         * @var boolean
         */
        protected $default_styles = null;
        /**
         * Current styles for the express payment buttons
         *
         * @var boolean
         */
        protected $current_styles = null;
    }
    /**
     * CartItemsBlock class.
     */
    class CartItemsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-items-block';
    }
    /**
     * CartLineItemsBlock class.
     */
    class CartLineItemsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-line-items-block';
    }
    /**
     * CartLink class.
     */
    class CartLink extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-link';
        /**
         * Render the block.
         *
         * @param array     $attributes Block attributes.
         * @param string    $content Block content.
         * @param \WP_Block $block Block instance.
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
    /**
     * CartOrderSummaryBlock class.
     */
    class CartOrderSummaryBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-block';
        /**
         * Get the contents of the given inner block.
         *
         * @param string $block_name Name of the order summary inner block.
         * @param string $content    The content to search.
         * @return array|bool
         */
        private function get_inner_block_content($block_name, $content)
        {
        }
        /**
         * Get the regex that will return an inner block.
         *
         * @param string $block_name Name of the order summary inner block.
         * @return string Regex pattern.
         */
        private function inner_block_regex($block_name)
        {
        }
        /**
         * Render the Cart Order Summary block.
         *
         * @param array  $attributes Block attributes.
         * @param string $content    Block content.
         * @param object $block      Block object.
         * @return string Rendered block.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * CartOrderSummaryCouponFormBlock class.
     */
    class CartOrderSummaryCouponFormBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-coupon-form-block';
    }
    /**
     * CartOrderSummaryDiscountBlock class.
     */
    class CartOrderSummaryDiscountBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-discount-block';
    }
    /**
     * CartOrderSummaryFeeBlock class.
     */
    class CartOrderSummaryFeeBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-fee-block';
    }
    /**
     * CartOrderSummaryHeadingBlock class.
     */
    class CartOrderSummaryHeadingBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-heading-block';
    }
    /**
     * CartOrderSummaryShippingBlock class.
     */
    class CartOrderSummaryShippingBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-shipping-block';
    }
    /**
     * CartOrderSummarySubtotalBlock class.
     */
    class CartOrderSummarySubtotalBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-subtotal-block';
    }
    /**
     * CartOrderSummaryTaxesBlock class.
     */
    class CartOrderSummaryTaxesBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-taxes-block';
    }
    /**
     * CartOrderSummaryTotalsBlock class.
     */
    class CartOrderSummaryTotalsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-order-summary-totals-block';
    }
    /**
     * CartTotalsBlock class.
     */
    class CartTotalsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'cart-totals-block';
    }
    /**
     * CatalogSorting class.
     */
    class CatalogSorting extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'catalog-sorting';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
    /**
     * Checkout class.
     *
     * @internal
     */
    class Checkout extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout';
        /**
         * Chunks build folder.
         *
         * @var string
         */
        protected $chunks_folder = 'checkout-blocks';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Dequeues the scripts added by WC Core to the Checkout page.
         *
         * @return void
         */
        public function dequeue_woocommerce_core_scripts()
        {
        }
        /**
         * Register block pattern for Empty Cart Message to make it translatable.
         */
        public function register_patterns()
        {
        }
        /**
         * Get the editor script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return array|string;
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Append frontend scripts when rendering the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Check if we're viewing a checkout page endpoint, rather than the main checkout page itself.
         *
         * @return boolean
         */
        protected function is_checkout_endpoint()
        {
        }
        /**
         * Update the local pickup title in WooCommerce Settings when the checkout page containing a Checkout block is saved.
         *
         * @param int      $post_id The post ID.
         * @param \WP_Post $post    The post object.
         * @return void
         */
        public function update_local_pickup_title($post_id, $post)
        {
        }
        /**
         * Recurse through the blocks to find the shipping methods block, then get the value of the localPickupText attribute from it.
         *
         * @param array $blocks The block(s) to search for the local pickup text.
         * @return null|string  The local pickup text if found, otherwise void.
         */
        private function find_local_pickup_text_in_checkout_block($blocks)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Get payment methods that are enabled in settings.
         *
         * @return array
         */
        protected function get_enabled_payment_gateways()
        {
        }
        /**
         * Are we currently on the admin block editor screen?
         */
        protected function is_block_editor()
        {
        }
        /**
         * Get saved customer payment methods for use in checkout.
         */
        protected function hydrate_customer_payment_methods()
        {
        }
        /**
         * Callback for woocommerce_payment_methods_list_item filter to add token id
         * to the generated list.
         *
         * @param array     $list_item The current list item for the saved payment method.
         * @param \WC_Token $token     The token for the current list item.
         *
         * @return array The list item with the token id added.
         */
        public static function include_token_id_with_payment_methods($list_item, $token)
        {
        }
        /**
         * Register script and style assets for the block type before it is registered.
         *
         * This registers the scripts; it does not enqueue them.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get list of Checkout block & its inner-block types.
         *
         * @return array;
         */
        public static function get_checkout_block_types()
        {
        }
    }
    /**
     * CheckoutActionsBlock class.
     */
    class CheckoutActionsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-actions-block';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Register style variations for the block.
         */
        public function register_style_variations()
        {
        }
    }
    /**
     * CheckoutAdditionalInformationBlock class.
     */
    class CheckoutAdditionalInformationBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-additional-information-block';
    }
    /**
     * CheckoutBillingAddressBlock class.
     */
    class CheckoutBillingAddressBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-billing-address-block';
    }
    /**
     * CheckoutContactInformationBlock class.
     */
    class CheckoutContactInformationBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-contact-information-block';
    }
    /**
     * CheckoutExpressPaymentBlock class.
     */
    class CheckoutExpressPaymentBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-express-payment-block';
        /**
         * Default styles for the express payment buttons
         *
         * @var boolean
         */
        protected $default_styles = null;
        /**
         * Current styles for the express payment buttons
         *
         * @var boolean
         */
        protected $current_styles = null;
        /**
         * Initialise the block
         */
        protected function initialize()
        {
        }
        /**
         * Synchorize the express payment attributes between the Cart and Checkout pages.
         *
         * @param int     $post_id Post ID.
         * @param WP_Post $post Post object.
         */
        public function sync_express_payment_attrs($post_id, $post)
        {
        }
        /**
         * Update the express payment attributes in the other page (Cart or Checkout).
         *
         * @param string $cart_or_checkout The page to update.
         * @param array  $updated_attrs     The updated attributes.
         */
        private function update_other_page_with_express_payment_attrs($cart_or_checkout, $updated_attrs)
        {
        }
    }
    /**
     * CheckoutFieldsBlock class.
     */
    class CheckoutFieldsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-fields-block';
    }
    /**
     * CheckoutOrderNoteBlock class.
     */
    class CheckoutOrderNoteBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-note-block';
    }
    /**
     * CheckoutOrderSummaryBlock class.
     */
    class CheckoutOrderSummaryBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-block';
        /**
         * Get the contents of the given inner block.
         *
         * @param string $block_name Name of the order summary inner block.
         * @param string $content    The content to search.
         * @return array|bool
         */
        private function get_inner_block_content($block_name, $content)
        {
        }
        /**
         * Get the regex that will return an inner block.
         *
         * @param string $block_name Name of the order summary inner block.
         * @return string Regex pattern.
         */
        private function inner_block_regex($block_name)
        {
        }
        /**
         * Render the Checkout Order Summary block.
         *
         * @param array  $attributes Block attributes.
         * @param string $content    Block content.
         * @param object $block      Block object.
         * @return string Rendered block.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * CheckoutOrderSummaryCartItemsBlock class.
     */
    class CheckoutOrderSummaryCartItemsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-cart-items-block';
    }
    /**
     * CheckoutOrderSummaryCouponFormBlock class.
     */
    class CheckoutOrderSummaryCouponFormBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-coupon-form-block';
    }
    /**
     * CheckoutOrderSummaryDiscountBlock class.
     */
    class CheckoutOrderSummaryDiscountBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-discount-block';
    }
    /**
     * CheckoutOrderSummaryFeeBlock class.
     */
    class CheckoutOrderSummaryFeeBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-fee-block';
    }
    /**
     * CheckoutOrderSummaryShippingBlock class.
     */
    class CheckoutOrderSummaryShippingBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-shipping-block';
    }
    /**
     * CheckoutOrderSummarySubtotalBlock class.
     */
    class CheckoutOrderSummarySubtotalBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-subtotal-block';
    }
    /**
     * CheckoutOrderSummaryTaxesBlock class.
     */
    class CheckoutOrderSummaryTaxesBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-taxes-block';
    }
    /**
     * CheckoutOrderSummaryTotalsBlock class.
     */
    class CheckoutOrderSummaryTotalsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-order-summary-totals-block';
    }
    /**
     * CheckoutPaymentBlock class.
     */
    class CheckoutPaymentBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-payment-block';
    }
    /**
     * CheckoutPickupOptionsBlock class.
     */
    class CheckoutPickupOptionsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-pickup-options-block';
    }
    /**
     * CheckoutShippingAddressBlock class.
     */
    class CheckoutShippingAddressBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-shipping-address-block';
    }
    /**
     * CheckoutShippingMethodBlock class.
     */
    class CheckoutShippingMethodBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-shipping-method-block';
    }
    /**
     * CheckoutShippingMethodsBlock class.
     */
    class CheckoutShippingMethodsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-shipping-methods-block';
    }
    /**
     * CheckoutTermsBlock class.
     */
    class CheckoutTermsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-terms-block';
    }
    /**
     * CheckoutTotalsBlock class.
     */
    class CheckoutTotalsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'checkout-totals-block';
    }
    /**
     * Classic Shortcode class
     *
     * @internal
     */
    class ClassicShortcode extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'classic-shortcode';
        /**
         * API version.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Render method for the Classic Template block. This method will determine which template to render.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string | void Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the list of classes to apply to this block.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return string space-separated list of classes.
         */
        protected function get_container_classes($attributes = array())
        {
        }
        /**
         * Render method for rendering the cart shortcode.
         *
         * @param array $attributes Block attributes.
         * @return string Rendered block type output.
         */
        protected function render_cart($attributes)
        {
        }
        /**
         * Render method for rendering the checkout shortcode.
         *
         * @param array $attributes Block attributes.
         * @return string Rendered block type output.
         */
        protected function render_checkout($attributes)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * Classic Template class
     *
     * @internal
     */
    class ClassicTemplate extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'legacy-template';
        /**
         * API version.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Initialize this block.
         */
        protected function initialize()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Enqueue assets used for rendering the block in editor context.
         *
         * This is needed if a block is not yet within the post content--`render` and `enqueue_assets` may not have ran.
         */
        public function enqueue_block_assets()
        {
        }
        /**
         * Render method for the Classic Template block. This method will determine which template to render.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string | void Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Render method for rendering the order confirmation template.
         *
         * @return string Rendered block type output.
         */
        protected function render_order_received()
        {
        }
        /**
         * Render method for the single product template and parts.
         *
         * @return string Rendered block type output.
         */
        protected function render_single_product()
        {
        }
        /**
         * Render method for the archive product template and parts.
         *
         * @return string Rendered block type output.
         */
        protected function render_archive_product()
        {
        }
        /**
         * Get HTML markup with the right classes by attributes.
         * This function appends the classname at the first element that have the class attribute.
         * Based on the experience, all the wrapper elements have a class attribute.
         *
         * @param string $content Block content.
         * @param array  $block Parsed block data.
         * @return string Rendered block type output.
         */
        public function add_alignment_class_to_wrapper(string $content, array $block)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * ComingSoon class.
     */
    class ComingSoon extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'coming-soon';
        /**
         * It is necessary to register and enqueue assets during the render phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @internal This prevents the block script being enqueued on all pages. It is only enqueued as needed. Note that
         * we intentionally do not pass 'script' to register_block_type.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string|null
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Utils {
    /**
     * BlockHooksTrait
     *
     * Shared functionality for using the Block Hooks API with WooCommerce Blocks.
     */
    trait BlockHooksTrait
    {
        /**
         * Callback for `hooked_block_types` to auto-inject the mini-cart block into headers after navigation.
         *
         * @param array                             $hooked_blocks An array of block slugs hooked into a given context.
         * @param string                            $position      Position of the block insertion point.
         * @param string                            $anchor_block  The block acting as the anchor for the inserted block.
         * @param array|\WP_Post|\WP_Block_Template $context       Where the block is embedded.
         * @since 8.5.0
         * @return array An array of block slugs hooked into a given context.
         */
        public function register_hooked_block($hooked_blocks, $position, $anchor_block, $context)
        {
        }
        /**
         * Checks if the provided context contains a the block already.
         *
         * @param array|\WP_Block_Template $context Where the block is embedded.
         * @return boolean
         */
        protected function has_block_in_content($context)
        {
        }
        /**
         * Given a provided context, returns the content of the context.
         *
         * @param array|\WP_Post|\WP_Block_Template $context Where the block is embedded.
         * @since 8.5.0
         * @return string
         */
        protected function get_context_content($context)
        {
        }
        /**
         * Given a provided context, returns whether the context refers to header content.
         *
         * @param array|\WP_Post|\WP_Block_Template $context Where the block is embedded.
         * @param string                            $area The area to check against before inserting.
         * @since 8.5.0
         * @return boolean
         */
        protected function is_template_part_or_pattern($context, $area)
        {
        }
        /**
         * Given a provided context, returns whether the context refers to the target area and isn't marked as excluded.
         *
         * @param array|\WP_Post|\WP_Block_Template $context the context to check.
         * @param string                            $area The area to check against before inserting.
         * @since 8.5.0
         * @return boolean
         */
        protected function is_target_area($context, $area)
        {
        }
        /**
         * Returns whether the pattern is excluded or not
         *
         * @since 8.5.0
         *
         * @param array|\WP_Block_Template $context Where the block is embedded.
         * @return boolean
         */
        protected function pattern_is_excluded($context)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\BlockTypes {
    /**
     * CustomerAccount class.
     */
    class CustomerAccount extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        use \Automattic\WooCommerce\Blocks\Utils\BlockHooksTrait;
        const TEXT_ONLY = 'text_only';
        const ICON_ONLY = 'icon_only';
        const DISPLAY_ALT = 'alt';
        const DISPLAY_LINE = 'line';
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'customer-account';
        /**
         * Block Hook API placements.
         *
         * @var array
         */
        protected $hooked_block_placements = array(array('position' => 'after', 'anchor' => 'core/navigation', 'area' => 'header', 'callback' => 'should_unhook_block', 'version' => '8.4.0'));
        /**
         * Initialize this block type.
         */
        protected function initialize()
        {
        }
        /**
         * Callback for the Block Hooks API to modify the attributes of the hooked block.
         *
         * @param array|null                      $parsed_hooked_block The parsed block array for the given hooked block type, or null to suppress the block.
         * @param string                          $hooked_block_type   The hooked block type name.
         * @param string                          $relative_position   The relative position of the hooked block.
         * @param array                           $parsed_anchor_block The anchor block, in parsed block array format.
         * @param WP_Block_Template|WP_Post|array $context             The block template, template part, `wp_navigation` post type,
         *                                                             or pattern that the anchor block belongs to.
         * @return array|null
         */
        public function modify_hooked_block_attributes($parsed_hooked_block, $hooked_block_type, $relative_position, $parsed_anchor_block, $context)
        {
        }
        /**
         * Callback for the Block Hooks API to determine if the block should be auto-inserted.
         *
         * @param array                             $hooked_blocks An array of block slugs hooked into a given context.
         * @param string                            $position      Position of the block insertion point.
         * @param string                            $anchor_block  The block acting as the anchor for the inserted block.
         * @param array|\WP_Post|\WP_Block_Template $context       Where the block is embedded.
         *
         * @return array
         */
        protected function should_unhook_block($hooked_blocks, $position, $anchor_block, $context)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Gets the icon to render depending on the iconStyle and displayStyle.
         *
         * @param array $attributes Block attributes.
         *
         * @return string Label to render on the block
         */
        private function render_icon($attributes)
        {
        }
        /**
         * Gets the label to render depending on the displayStyle.
         *
         * @return string Label to render on the block.
         */
        private function render_label()
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         *
         * @return null This block has no frontend script.
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
    /**
     * EmptyCartBlock class.
     */
    class EmptyCartBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'empty-cart-block';
    }
    /**
     * EmptyMiniCartContentsBlock class.
     */
    class EmptyMiniCartContentsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'empty-mini-cart-contents-block';
    }
    /**
     * FeaturedItem class.
     */
    abstract class FeaturedItem extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name;
        /**
         * Default attribute values.
         *
         * @var array
         */
        protected $defaults = array('align' => 'none');
        /**
         * Global style enabled for this block.
         *
         * @var array
         */
        protected $global_style_wrapper = array('background_color', 'border_color', 'border_radius', 'border_width', 'font_size', 'padding', 'text_color', 'extra_classes');
        /**
         * Returns the featured item.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return \WP_Term|\WC_Product|null
         */
        protected abstract function get_item($attributes);
        /**
         * Returns the name of the featured item.
         *
         * @param \WP_Term|\WC_Product $item Item object.
         * @return string
         */
        protected abstract function get_item_title($item);
        /**
         * Returns the featured item image URL.
         *
         * @param \WP_Term|\WC_Product $item Item object.
         * @param string               $size Image size, defaults to 'full'.
         * @return string
         */
        protected abstract function get_item_image($item, $size = 'full');
        /**
         * Renders the featured item attributes.
         *
         * @param \WP_Term|\WC_Product $item       Item object.
         * @param array                $attributes Block attributes. Default empty array.
         * @return string
         */
        protected abstract function render_attributes($item, $attributes);
        /**
         * Render the featured item block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Returns the url the item's image
         *
         * @param array                $attributes Block attributes. Default empty array.
         * @param \WP_Term|\WC_Product $item       Item object.
         *
         * @return string
         */
        private function get_image_url($attributes, $item)
        {
        }
        /**
         * Renders the featured image as a div background.
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $image_url  Item image url.
         *
         * @return string
         */
        private function render_bg_image($attributes, $image_url)
        {
        }
        /**
         * Get the styles for the wrapper element (background image, color).
         *
         * @param array  $attributes Block attributes. Default empty array.
         * @param string $image_url  Item image url.
         *
         * @return string
         */
        public function get_bg_styles($attributes, $image_url)
        {
        }
        /**
         * Renders the featured image
         *
         * @param array                $attributes Block attributes. Default empty array.
         * @param \WC_Product|\WP_Term $item       Item object.
         * @param string               $image_url  Item image url.
         *
         * @return string
         */
        private function render_image($attributes, $item, string $image_url)
        {
        }
        /**
         * Get the styles for the wrapper element (background image, color).
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return string
         */
        public function get_styles($attributes)
        {
        }
        /**
         * Get class names for the block container.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return string
         */
        public function get_classes($attributes)
        {
        }
        /**
         * Renders the block overlay
         *
         * @param array $attributes Block attributes. Default empty array.
         *
         * @return string
         */
        private function render_overlay($attributes)
        {
        }
        /**
         * Returns whether the focal point is defined for the block.
         *
         * @param array $attributes Block attributes. Default empty array.
         *
         * @return bool
         */
        private function hasFocalPoint($attributes) : bool
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * FeaturedCategory class.
     */
    class FeaturedCategory extends \Automattic\WooCommerce\Blocks\BlockTypes\FeaturedItem
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'featured-category';
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_block_type_attributes()
        {
        }
        /**
         * Returns the featured category.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return \WP_Term|null
         */
        protected function get_item($attributes)
        {
        }
        /**
         * Returns the name of the featured category.
         *
         * @param \WP_Term $category Featured category.
         * @return string
         */
        protected function get_item_title($category)
        {
        }
        /**
         * Returns the featured category image URL.
         *
         * @param \WP_Term $category Term object.
         * @param string   $size Image size, defaults to 'full'.
         * @return string
         */
        protected function get_item_image($category, $size = 'full')
        {
        }
        /**
         * Renders the featured category attributes.
         *
         * @param \WP_Term $category Term object.
         * @param array    $attributes Block attributes. Default empty array.
         * @return string
         */
        protected function render_attributes($category, $attributes)
        {
        }
    }
    /**
     * FeaturedProduct class.
     */
    class FeaturedProduct extends \Automattic\WooCommerce\Blocks\BlockTypes\FeaturedItem
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'featured-product';
        /**
         * Returns the featured product.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return \WP_Term|null
         */
        protected function get_item($attributes)
        {
        }
        /**
         * Returns the name of the featured product.
         *
         * @param \WC_Product $product Product object.
         * @return string
         */
        protected function get_item_title($product)
        {
        }
        /**
         * Returns the featured product image URL.
         *
         * @param \WC_Product $product Product object.
         * @param string      $size    Image size, defaults to 'full'.
         * @return string
         */
        protected function get_item_image($product, $size = 'full')
        {
        }
        /**
         * Renders the featured product attributes.
         *
         * @param \WC_Product $product Product object.
         * @param array       $attributes Block attributes. Default empty array.
         * @return string
         */
        protected function render_attributes($product, $attributes)
        {
        }
    }
    /**
     * FilledCartBlock class.
     */
    class FilledCartBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'filled-cart-block';
    }
    /**
     * FilledMiniCartContentsBlock class.
     */
    class FilledMiniCartContentsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'filled-mini-cart-contents-block';
    }
    /**
     * FilterWrapper class.
     */
    class FilterWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'filter-wrapper';
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * 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)
        {
        }
        /**
         * Set visibility query args. Handpicked products will show hidden products if chosen.
         *
         * @param array $query_args Query args.
         */
        protected function set_visibility_query_args(&$query_args)
        {
        }
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_block_type_attributes()
        {
        }
    }
    /**
     * Mini-Cart class.
     *
     * @internal
     */
    class MiniCart extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        use \Automattic\WooCommerce\Blocks\Utils\BlockHooksTrait;
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart';
        /**
         * Chunks build folder.
         *
         * @var string
         */
        protected $chunks_folder = 'mini-cart-contents-block';
        /**
         * Array of scripts that will be lazy loaded when interacting with the block.
         *
         * @var string[]
         */
        protected $scripts_to_lazy_load = array();
        /**
         *  Inc Tax label.
         *
         * @var string
         */
        protected $tax_label = '';
        /**
         *  Visibility of price including tax.
         *
         * @var string
         */
        protected $display_cart_prices_including_tax = false;
        /**
         * Block Hook API placements.
         *
         * @var array
         */
        protected $hooked_block_placements = array(array('position' => 'after', 'anchor' => 'core/navigation', 'area' => 'header', 'version' => '8.4.0'));
        /**
         * Constructor.
         *
         * @param AssetApi            $asset_api Instance of the asset API.
         * @param AssetDataRegistry   $asset_data_registry Instance of the asset data registry.
         * @param IntegrationRegistry $integration_registry Instance of the integration registry.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api, \Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry, \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry $integration_registry)
        {
        }
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Get the editor script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return array|string;
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Prints the variable containing information about the scripts to lazy load.
         */
        public function print_lazy_load_scripts()
        {
        }
        /**
         * Returns the script data given its handle.
         *
         * @param string $handle Handle of the script.
         *
         * @return \_WP_Dependency|null Object containing the script data if found, or null.
         */
        protected function get_script_from_handle($handle)
        {
        }
        /**
         * Recursively appends a scripts and its dependencies into the scripts_to_lazy_load array.
         *
         * @param \_WP_Dependency $script Object containing script data.
         */
        protected function append_script_and_deps_src($script)
        {
        }
        /**
         * Returns the markup for the cart price.
         *
         * @param array $attributes Block attributes.
         *
         * @return string
         */
        protected function get_cart_price_markup($attributes)
        {
        }
        /**
         * Returns the markup for render the tax label.
         *
         * @param array $attributes Block attributes.
         *
         * @return string
         */
        protected function get_include_tax_label_markup($attributes)
        {
        }
        /**
         * Append frontend scripts when rendering the Mini-Cart block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Render the markup for the Mini-Cart block.
         *
         * @param array $attributes Block attributes.
         *
         * @return string The HTML markup.
         */
        protected function get_markup($attributes)
        {
        }
        /**
         * Return the main instance of WC_Cart class.
         *
         * @return \WC_Cart CartController class instance.
         */
        protected function get_cart_instance()
        {
        }
        /**
         * Get array with data for handle the tax label.
         * the entire logic of this function is was taken from:
         * https://github.com/woocommerce/woocommerce/blob/e730f7463c25b50258e97bf56e31e9d7d3bc7ae7/includes/class-wc-cart.php#L1582
         *
         * @return array;
         */
        protected function get_tax_label()
        {
        }
        /**
         * Prepare translations for inner blocks and dependencies.
         */
        protected function get_inner_blocks_translations()
        {
        }
        /**
         * Register block pattern for Empty Cart Message to make it translatable.
         */
        public function register_empty_cart_message_block_pattern()
        {
        }
        /**
         * Returns whether the Mini-Cart should be rendered or not.
         *
         * @param array $attributes Block attributes.
         *
         * @return bool
         */
        public function should_not_render_mini_cart(array $attributes)
        {
        }
    }
    /**
     * MiniCartCartButtonBlock class.
     */
    class MiniCartCartButtonBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-cart-button-block';
    }
    /**
     * MiniCartCheckoutButtonBlock class.
     */
    class MiniCartCheckoutButtonBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-checkout-button-block';
    }
    /**
     * Mini-Cart Contents class.
     *
     * @internal
     */
    class MiniCartContents extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-contents';
        /**
         * Get the editor script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         *
         * @return array|string;
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         *
         * @return null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Render the markup for the Mini-Cart Contents block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Get list of Mini-Cart Contents block & its inner-block types.
         *
         * @return array;
         */
        public static function get_mini_cart_block_types()
        {
        }
    }
    /**
     * MiniCartFooterBlock class.
     */
    class MiniCartFooterBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-footer-block';
    }
    /**
     * MiniCartItemsBlock class.
     */
    class MiniCartItemsBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-items-block';
    }
    /**
     * MiniCartProductsTableBlock class.
     */
    class MiniCartProductsTableBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-products-table-block';
    }
    /**
     * MiniCartShoppingButtonBlock class.
     */
    class MiniCartShoppingButtonBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-shopping-button-block';
    }
    /**
     * MiniCartTitleBlock class.
     */
    class MiniCartTitleBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-title-block';
    }
    /**
     * MiniCartTitleItemsCounterBlock class.
     */
    class MiniCartTitleItemsCounterBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-title-items-counter-block';
    }
    /**
     * MiniCartTitleLabelBlock class.
     */
    class MiniCartTitleLabelBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'mini-cart-title-label-block';
    }
}
namespace Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation {
    /**
     * AbstractOrderConfirmationBlock class.
     */
    abstract class AbstractOrderConfirmationBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Get the content from a hook and return it.
         *
         * @param string $hook Hook name.
         * @param array  $args Array of args to pass to the hook.
         * @return string
         */
        protected function get_hook_content($hook, $args)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * This renders the content of the block within the wrapper. The permission determines what data can be shown under
         * the given context.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected abstract function render_content($order, $permission = false, $attributes = [], $content = '');
        /**
         * This is what gets rendered when the order does not exist. Renders nothing by default, but can be overridden by
         * child classes.
         *
         * @return string
         */
        protected function render_content_fallback()
        {
        }
        /**
         * Get current order.
         *
         * @return \WC_Order|null
         */
        protected function get_order()
        {
        }
        /**
         * View mode for order details based on the order, current user, and settings.
         *
         * @param \WC_Order|null $order Order object.
         * @return string|false Returns "full" if the user can view all order details. False if they can view no details.
         */
        protected function get_view_order_permissions($order)
        {
        }
        /**
         * See if guest checkout is enabled.
         *
         * @return boolean
         */
        protected function allow_guest_checkout()
        {
        }
        /**
         * Guest users without an active session can provide their email address to view order details. This however can only
         * be permitted if the user also provided the correct order key, and guest checkout is actually enabled.
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function email_verification_permitted($order)
        {
        }
        /**
         * See if the order was created within the grace period for viewing details.
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function is_within_grace_period($order)
        {
        }
        /**
         * Returns true if the email has been verified (posted email matches given order email).
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function is_email_verified($order)
        {
        }
        /**
         * See if we need to verify the email address before showing the order details.
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function email_verification_required($order)
        {
        }
        /**
         * See if the order key is valid.
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function has_valid_order_key($order)
        {
        }
        /**
         * See if the current order came from a guest or a logged in customer.
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function is_customer_order($order)
        {
        }
        /**
         * See if the current logged in user ID matches the given order customer ID.
         *
         * Returns false for logged-out customers.
         *
         * @param \WC_Order $order Order object.
         * @return boolean
         */
        protected function is_current_customer_order($order)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Render custom fields for the order.
         *
         * @param array $fields List of additional fields with values.
         * @return string
         */
        protected function render_additional_fields($fields)
        {
        }
        /**
         * Render custom field row.
         *
         * @param array $field An additional field and value.
         * @return string
         */
        protected function render_additional_field($field)
        {
        }
    }
    /**
     * AdditionalFields class.
     */
    class AdditionalFields extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-additional-fields';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
    }
    /**
     * AdditionalFieldsWrapper class.
     */
    class AdditionalFieldsWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-additional-fields-wrapper';
        /**
         * This renders the content of the downloads wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * AdditionalInformation class.
     */
    class AdditionalInformation extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-additional-information';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Remove core hooks from the thankyou page.
         */
        protected function remove_core_hooks()
        {
        }
        /**
         * Restore core hooks from the thankyou page.
         */
        protected function restore_core_hooks()
        {
        }
    }
    /**
     * BillingAddress class.
     */
    class BillingAddress extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-billing-address';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * BillingWrapper class.
     */
    class BillingWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-billing-wrapper';
        /**
         * This renders the content of the billing wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * CreateAccount class.
     */
    class CreateAccount extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-create-account';
        /**
         * Initialize this block type.
         */
        protected function initialize()
        {
        }
        /**
         * Initialize hooks.
         *
         * @see https://developer.wordpress.org/reference/hooks/hooked_block/
         */
        protected function initialize_hooks()
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Returns if delayed account creation is enabled.
         *
         * @return bool
         */
        protected function is_feature_enabled()
        {
        }
        /**
         * Process posted account form.
         *
         * @param \WC_Order $order Order object.
         * @return \WP_Error|int
         */
        protected function process_form_post($order)
        {
        }
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Render the block when an account has been registered.
         *
         * @return string
         */
        protected function render_confirmation()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * Downloads class.
     */
    class Downloads extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-downloads';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         * @return string
         */
        protected function get_inline_styles(array $attributes)
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array     $attributes  Any attributes that currently are available from the block.
         * @param string    $content    The block content.
         * @param \WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Render column headers for downloads table.
         *
         * @return string
         */
        protected function render_order_downloads_column_headers()
        {
        }
        /**
         * Render downloads.
         *
         * @param \WC_Order $order Order object.
         * @param array     $downloads Array of downloads.
         * @return string
         */
        protected function render_order_downloads($order, $downloads)
        {
        }
        /**
         * Render a download row in the table.
         *
         * @param array $download Download data.
         * @return string
         */
        protected function render_order_download_row($download)
        {
        }
    }
    /**
     * DownloadsWrapper class.
     */
    class DownloadsWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-downloads-wrapper';
        /**
         * See if the store has a downloadable product. This controls if we bother to show a preview in the editor.
         *
         * @return boolean
         */
        protected function store_has_downloadable_products()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * This renders the content of the downloads wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * ShippingAddress class.
     */
    class ShippingAddress extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-shipping-address';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * ShippingWrapper class.
     */
    class ShippingWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-shipping-wrapper';
        /**
         * This renders the content of the shipping wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * Status class.
     */
    class Status extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-status';
        /**
         * This block uses a custom render method so that the email verification form can be appended to the block. This does
         * not inherit styles from the parent block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * This is what gets rendered when the order does not exist.
         *
         * @return string
         */
        protected function render_content_fallback()
        {
        }
        /**
         * If the user associated with the order needs to set a password (new account) show a notice.
         *
         * @param \WC_Order|null $order Order object.
         * @return string
         */
        protected function render_account_notice($order = null)
        {
        }
        /**
         * If the order is invalid or there is no permission to view the details, tell the user to check email or log-in.
         *
         * @param \WC_Order|null $order Order object.
         * @return string
         */
        protected function render_confirmation_notice($order = null)
        {
        }
        /**
         * Email verification for guest users.
         *
         * @return string
         */
        protected function render_verification_form()
        {
        }
    }
    /**
     * Summary class.
     */
    class Summary extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-summary';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Render row in the order summary.
         *
         * @param string $name name of row.
         * @param string $value value of row.
         * @return string
         */
        protected function render_summary_row($name, $value)
        {
        }
    }
    /**
     * Totals class.
     */
    class Totals extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-totals';
        /**
         * This renders the content of the block within the wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         * @return string
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         * @return string
         */
        protected function get_inline_styles(array $attributes)
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array     $attributes  Any attributes that currently are available from the block.
         * @param string    $content    The block content.
         * @param \WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Render order details table items.
         *
         * Loosely based on the templates order-details.php and order-details-item.php from core.
         *
         * @param \WC_Order $order Order object.
         * @return string
         */
        protected function render_order_details_table_items($order)
        {
        }
        /**
         * Render an item in the order details table.
         *
         * @param \WC_Order         $order Order object.
         * @param integer           $item_id Item ID.
         * @param \WC_Order_Item    $item Item object.
         * @param \WC_Product|false $product Product object if it exists.
         * @return string
         */
        protected function render_order_details_table_item($order, $item_id, $item, $product)
        {
        }
        /**
         * Render an item purchase note.
         *
         * @param \WC_Order         $order Order object.
         * @param \WC_Product|false $product Product object if it exists.
         * @return string
         */
        protected function render_order_details_table_item_purchase_note($order, $product)
        {
        }
        /**
         * Render order details table totals.
         *
         * @param \WC_Order $order Order object.
         * @return string
         */
        protected function render_order_details_table_totals($order)
        {
        }
        /**
         * Render customer note.
         *
         * @param \WC_Order $order Order object.
         * @return string
         */
        protected function render_order_details_customer_note($order)
        {
        }
    }
    /**
     * TotalsWrapper class.
     */
    class TotalsWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation\AbstractOrderConfirmationBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'order-confirmation-totals-wrapper';
        /**
         * This renders the content of the totals wrapper.
         *
         * @param \WC_Order    $order Order object.
         * @param string|false $permission If the current user can view the order details or not.
         * @param array        $attributes Block attributes.
         * @param string       $content Original block content.
         */
        protected function render_content($order, $permission = false, $attributes = [], $content = '')
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\BlockTypes {
    /**
     * Used in templates to wrap page content. Allows content to be populated at template level.
     *
     * @internal
     */
    class PageContentWrapper extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'page-content-wrapper';
        /**
         * It isn't necessary to register block assets.
         *
         * @param string $key Data to get, or default to everything.
         * @return array|string|null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * PriceFilter class.
     */
    class PriceFilter extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'price-filter';
        const MIN_PRICE_QUERY_VAR = 'min_price';
        const MAX_PRICE_QUERY_VAR = 'max_price';
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * ProceedToCheckoutBlock class.
     */
    class ProceedToCheckoutBlock extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractInnerBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'proceed-to-checkout-block';
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * ProductAverageRating class.
     */
    class ProductAverageRating extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-average-rating';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * ProductButton class.
     */
    class ProductButton extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-button';
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Dequeue the add-to-cart script.
         * The block uses Interactivity API, it isn't necessary enqueue the add-to-cart script.
         */
        public function dequeue_add_to_cart_scripts()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the number of items in the cart for a given product id.
         *
         * @param number $product_id The product id.
         * @return number The number of items in the cart.
         */
        private function get_cart_item_quantities_by_product_id($product_id)
        {
        }
        /**
         * Prevent caching on certain pages
         */
        private function prevent_cache()
        {
        }
        /**
         * Get the view cart link html.
         *
         * @return string The view cart html.
         */
        private function get_view_cart_html()
        {
        }
    }
    /**
     * ProductCategories class.
     */
    class ProductCategories extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractDynamicBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-categories';
        /**
         * Default attribute values, should match what's set in JS `registerBlockType`.
         *
         * @var array
         */
        protected $defaults = array('hasCount' => true, 'hasImage' => false, 'hasEmpty' => false, 'isDropdown' => false, 'isHierarchical' => true, 'showChildrenOnly' => false);
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_block_type_attributes()
        {
        }
        /**
         * Render the Product Categories List block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the list of classes to apply to this block.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return string space-separated list of classes.
         */
        protected function get_container_classes($attributes = array())
        {
        }
        /**
         * Get categories (terms) from the db.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return array
         */
        protected function get_categories($attributes)
        {
        }
        /**
         * Build hierarchical tree of categories.
         *
         * @param array $categories List of terms.
         * @param bool  $children_only Is the block rendering only the children of the current category.
         * @return array
         */
        protected function build_category_tree($categories, $children_only)
        {
        }
        /**
         * Build hierarchical tree of categories by appending children in the tree.
         *
         * @param array $categories List of terms.
         * @param array $categories_by_parent List of terms grouped by parent.
         * @return array
         */
        protected function fill_category_children($categories, $categories_by_parent)
        {
        }
        /**
         * Render the category list as a dropdown.
         *
         * @param array $categories List of terms.
         * @param array $attributes Block attributes. Default empty array.
         * @param int   $uid Unique ID for the rendered block, used for HTML IDs.
         * @return string Rendered output.
         */
        protected function renderDropdown($categories, $attributes, $uid)
        {
        }
        /**
         * Render dropdown options list.
         *
         * @param array $categories List of terms.
         * @param array $attributes Block attributes. Default empty array.
         * @param int   $uid Unique ID for the rendered block, used for HTML IDs.
         * @param int   $depth Current depth.
         * @return string Rendered output.
         */
        protected function renderDropdownOptions($categories, $attributes, $uid, $depth = 0)
        {
        }
        /**
         * Render the category list as a list.
         *
         * @param array $categories List of terms.
         * @param array $attributes Block attributes. Default empty array.
         * @param int   $uid Unique ID for the rendered block, used for HTML IDs.
         * @param int   $depth Current depth.
         * @return string Rendered output.
         */
        protected function renderList($categories, $attributes, $uid, $depth = 0)
        {
        }
        /**
         * Render a list of terms.
         *
         * @param array $categories List of terms.
         * @param array $attributes Block attributes. Default empty array.
         * @param int   $uid Unique ID for the rendered block, used for HTML IDs.
         * @param int   $depth Current depth.
         * @return string Rendered output.
         */
        protected function renderListItems($categories, $attributes, $uid, $depth = 0)
        {
        }
        /**
         * Returns the category image html
         *
         * @param \WP_Term $category Term object.
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $size Image size, defaults to 'woocommerce_thumbnail'.
         * @return string
         */
        public function get_image_html($category, $attributes, $size = 'woocommerce_thumbnail')
        {
        }
        /**
         * Get the count, if displaying.
         *
         * @param object $category Term object.
         * @param array  $attributes Block attributes. Default empty array.
         * @return string
         */
        protected function getCount($category, $attributes)
        {
        }
    }
    /**
     * 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_block_type_attributes()
        {
        }
    }
    /**
     * ProductCollection class.
     */
    class ProductCollection extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-collection';
        /**
         * An associative array of collection handlers.
         *
         * @var array<string, callable> $collection_handler_store
         * Keys are collection names, values are callable handlers for custom collection behavior.
         */
        protected $collection_handler_store = array();
        /**
         * The Block with its attributes before it gets rendered
         *
         * @var array
         */
        protected $parsed_block;
        /**
         * All query args from WP_Query.
         *
         * @var array
         */
        protected $valid_query_vars;
        /**
         * All the query args related to the filter by attributes block.
         *
         * @var array
         */
        protected $attributes_filter_query_args = array();
        /**
         * Orderby options not natively supported by WordPress REST API
         *
         * @var array
         */
        protected $custom_order_opts = array('popularity', 'rating', 'post__in', 'price', 'sales', 'menu_order', 'random');
        /**
         * The render state of the product collection block.
         *
         * These props are runtime-based and reinitialize for every block on a page.
         *
         * @var array
         */
        private $render_state = array('has_results' => false, 'has_no_results_block' => false);
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         * - Hook into pre_render_block to update the query.
         */
        protected function initialize()
        {
        }
        /**
         * Get the styles for the list element (fixed width).
         *
         * @param string $fixed_width Fixed width value.
         * @return string
         */
        protected function get_list_styles($fixed_width)
        {
        }
        /**
         * Set the style attribute for fixed width.
         *
         * @param WP_HTML_Tag_Processor $p          The HTML tag processor.
         * @param string                $fixed_width The fixed width value.
         */
        private function set_fixed_width_style($p, $fixed_width)
        {
        }
        /**
         * Handle block dimensions if width type is set to 'fixed'.
         *
         * @param WP_HTML_Tag_Processor $p     The HTML tag processor.
         * @param array                 $block The block details.
         */
        private function handle_block_dimensions($p, $block)
        {
        }
        /**
         * Handle the rendering of the block.
         *
         * @param string $block_content The block content about to be rendered.
         * @param array  $block The block being rendered.
         *
         * @return string
         */
        public function handle_rendering($block_content, $block)
        {
        }
        /**
         * Check if the block should be prevented from rendering.
         *
         * @return bool
         */
        private function should_prevent_render()
        {
        }
        /**
         * Reset the render state.
         */
        private function reset_render_state()
        {
        }
        /**
         * Provides the location context to each inner block of the product collection block.
         * Hint: Only blocks using the 'query' context will be affected.
         *
         * The sourceData structure depends on the context type as follows:
         * - site:    [ ]
         * - order:   [ 'orderId'    => int ]
         * - cart:    [ 'productIds' => int[] ]
         * - archive: [ 'taxonomy'   => string, 'termId' => int ]
         * - product: [ 'productId'  => int ]
         *
         * @example array(
         *   'type'       => 'product',
         *   'sourceData' => array( 'productId' => 123 ),
         * )
         *
         * @param array $context  The block context.
         * @return array $context {
         *     The block context including the product collection location context.
         *
         *     @type array $productCollectionLocation {
         *         @type string  $type        The context type. Possible values are 'site', 'order', 'cart', 'archive', 'product'.
         *         @type array   $sourceData  The context source data. Can be the product ID of the viewed product, the order ID of the current order viewed, etc. See structure above for more details.
         *     }
         * }
         */
        public function provide_location_context_for_inner_blocks($context)
        {
        }
        /**
         * Get the global location context.
         * Serve as a runtime cache for the location context.
         *
         * @see ProductCollectionUtils::parse_frontend_location_context()
         *
         * @return array The location context.
         */
        private function get_location_context()
        {
        }
        /**
         * Check if next tag is a PC block.
         *
         * @param WP_HTML_Tag_processor $p Initial tag processor.
         *
         * @return bool Answer if PC block is available.
         */
        private function is_next_tag_product_collection($p)
        {
        }
        /**
         * Set PC block namespace for Interactivity API.
         *
         * @param WP_HTML_Tag_processor $p Initial tag processor.
         */
        private function set_product_collection_namespace($p)
        {
        }
        /**
         * Attach the init directive to Product Collection block to call
         * the onRender callback.
         *
         * @param string $block_content The HTML content of the block.
         * @param string $collection Collection type.
         *
         * @return string Updated HTML content.
         */
        private function add_rendering_callback($block_content, $collection)
        {
        }
        /**
         * Attach all the Interactivity API directives responsible
         * for client-side navigation.
         *
         * @param string $block_content The HTML content of the block.
         *
         * @return string Updated HTML content.
         */
        private function enable_client_side_navigation($block_content)
        {
        }
        /**
         * Enhances the Product Collection block with client-side pagination.
         *
         * This function identifies Product Collection blocks and adds necessary data attributes
         * to enable client-side navigation and animation effects. It also enqueues the Interactivity API runtime.
         *
         * @param string $block_content The HTML content of the block.
         * @param array  $block         Block details, including its attributes.
         *
         * @return string Updated block content with added interactivity attributes.
         */
        public function enhance_product_collection_with_interactivity($block_content, $block)
        {
        }
        /**
         * Add interactive links to all anchors inside the Query Pagination block.
         * This enabled client-side navigation for the product collection block.
         *
         * @param string    $block_content The block content.
         * @param array     $block         The full block, including name and attributes.
         * @param \WP_Block $instance      The block instance.
         */
        public function add_navigation_link_directives($block_content, $block, $instance)
        {
        }
        /**
         * Add interactivity to the Product Title block within Product Collection.
         * This enables the triggering of a custom event when the product title is clicked.
         *
         * @param string    $block_content The block content.
         * @param array     $block         The full block, including name and attributes.
         * @param \WP_Block $instance      The block instance.
         * @return string   Modified block content with added interactivity.
         */
        public function add_product_title_click_event_directives($block_content, $block, $instance)
        {
        }
        /**
         * Process pagination links within the block content.
         *
         * @param string $block_content The block content.
         * @return string The updated block content.
         */
        private function process_pagination_links($block_content)
        {
        }
        /**
         * Sets up data attributes required for interactivity and client-side navigation.
         *
         * @param \WP_HTML_Tag_Processor $processor The HTML tag processor.
         * @param string                 $class_name The class name of the anchor tags.
         * @param string                 $key_prefix The prefix for the data-wc-key attribute.
         */
        private function update_pagination_anchors($processor, $class_name, $key_prefix)
        {
        }
        /**
         * Verifies if the inner block is compatible with Interactivity API.
         *
         * @param string $block_name Name of the block to verify.
         * @return boolean
         */
        private function is_block_compatible($block_name)
        {
        }
        /**
         * Check inner blocks of Product Collection block if there's one
         * incompatible with the Interactivity API and if so, disable client-side
         * navigation.
         *
         * @param array $parsed_block The block being rendered.
         * @return string Returns the parsed block, unmodified.
         */
        public function disable_enhanced_pagination($parsed_block)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = array())
        {
        }
        /**
         * Update the query for the product query block in Editor.
         *
         * @param array           $query   Query args.
         * @param WP_REST_Request $request Request.
         */
        public function update_rest_query_in_editor($query, $request) : array
        {
        }
        /**
         * Add support for filter blocks:
         * - Price filter block
         * - Attributes filter block
         * - Rating filter block
         * - In stock filter block etc.
         *
         * @param array $pre_render   The pre-rendered block.
         * @param array $parsed_block The parsed block.
         */
        public function add_support_for_filter_blocks($pre_render, $parsed_block)
        {
        }
        /**
         * Return a custom query based on attributes, filters and global WP_Query.
         *
         * @param WP_Query $query The WordPress Query.
         * @param WP_Block $block The block being rendered.
         * @param int      $page  The page number.
         *
         * @return array
         */
        public function build_frontend_query($query, $block, $page)
        {
        }
        /**
         * Get the final query arguments for the frontend.
         *
         * @param array $collection_args            Any special arguments that should change the behavior of the query.
         * @param array $query                      The query arguments.
         * @param int   $page                       The page number.
         * @param bool  $is_exclude_applied_filters Whether to exclude the applied filters or not.
         */
        private function get_final_frontend_query($collection_args, $query, $page = 1, $is_exclude_applied_filters = false)
        {
        }
        /**
         * Get final query args based on provided values
         *
         * @param array $collection_args            Any special arguments that should change the behavior of the query.
         * @param array $common_query_values        Common query values.
         * @param array $query                      Query from block context.
         * @param bool  $is_exclude_applied_filters Whether to exclude the applied filters or not.
         */
        private function get_final_query_args($collection_args, $common_query_values, $query, $is_exclude_applied_filters = false)
        {
        }
        /**
         * Get query args for preview mode. These query args will be used with WP_Query to fetch the products.
         *
         * @param array           $collection_args Any collection-specific arguments.
         * @param array           $args            Query args.
         * @param WP_REST_Request $request         Request.
         */
        private function get_preview_query_args($collection_args, $args, $request)
        {
        }
        /**
         * Extends allowed `collection_params` for the REST API
         *
         * By itself, the REST API doesn't accept custom `orderby` values,
         * even if they are supported by a custom post type.
         *
         * @param array $params  A list of allowed `orderby` values.
         *
         * @return array
         */
        public function extend_rest_query_allowed_params($params)
        {
        }
        /**
         * Merge in the first parameter the keys "post_in", "meta_query" and "tax_query" of the second parameter.
         *
         * @param array[] ...$queries Query arrays to be merged.
         * @return array
         */
        private function merge_queries(...$queries)
        {
        }
        /**
         * Merge all of the 'post__in' values and return an array containing only values that are present in all arrays.
         *
         * @param int[][] ...$post__in The 'post__in' values to be merged.
         *
         * @return int[] The merged 'post__in' values.
         */
        private function merge_post__in(...$post__in)
        {
        }
        /**
         * Return query params to support custom sort values
         *
         * @param string $orderby  Sort order option.
         *
         * @return array
         */
        private function get_custom_orderby_query($orderby)
        {
        }
        /**
         * Return a query for on sale products.
         *
         * @param bool $is_on_sale Whether to query for on sale products.
         *
         * @return array
         */
        private function get_on_sale_products_query($is_on_sale)
        {
        }
        /**
         * Return or initialize $valid_query_vars.
         *
         * @return array
         */
        private function get_valid_query_vars()
        {
        }
        /**
         * Merge two array recursively but replace the non-array values instead of
         * merging them. The merging strategy:
         *
         * - If keys from merge array doesn't exist in the base array, create them.
         * - For array items with numeric keys, we merge them as normal.
         * - For array items with string keys:
         *
         *   - If the value isn't array, we'll use the value coming from the merge array.
         *     $base = ['orderby' => 'date']
         *     $new  = ['orderby' => 'meta_value_num']
         *     Result: ['orderby' => 'meta_value_num']
         *
         *   - If the value is array, we'll use recursion to merge each key.
         *     $base = ['meta_query' => [
         *       [
         *         'key'     => '_stock_status',
         *         'compare' => 'IN'
         *         'value'   =>  ['instock', 'onbackorder']
         *       ]
         *     ]]
         *     $new  = ['meta_query' => [
         *       [
         *         'relation' => 'AND',
         *         [...<max_price_query>],
         *         [...<min_price_query>],
         *       ]
         *     ]]
         *     Result: ['meta_query' => [
         *       [
         *         'key'     => '_stock_status',
         *         'compare' => 'IN'
         *         'value'   =>  ['instock', 'onbackorder']
         *       ],
         *       [
         *         'relation' => 'AND',
         *         [...<max_price_query>],
         *         [...<min_price_query>],
         *       ]
         *     ]]
         *
         *     $base = ['post__in' => [1, 2, 3, 4, 5]]
         *     $new  = ['post__in' => [3, 4, 5, 6, 7]]
         *     Result: ['post__in' => [1, 2, 3, 4, 5, 3, 4, 5, 6, 7]]
         *
         * @param array $base First array.
         * @param array $new  Second array.
         */
        private function array_merge_recursive_replace_non_array_properties($base, $new)
        {
        }
        /**
         * Return a query for products depending on their stock status.
         *
         * @param array $stock_statuses An array of acceptable stock statuses.
         * @return array
         */
        private function get_stock_status_query($stock_statuses)
        {
        }
        /**
         * Return a query for product visibility depending on their stock status.
         *
         * @param array $stock_query  Stock status query.
         * @param array $stock_status Selected stock status.
         *
         * @return array Tax query for product visibility.
         */
        private function get_product_visibility_query($stock_query, $stock_status)
        {
        }
        /**
         * Generates a tax query to filter products based on their "featured" status.
         * If the `$featured` parameter is true, the function will return a tax query
         * that filters products to only those marked as featured.
         * If `$featured` is false, an empty array is returned, meaning no filtering will be applied.
         *
         * @param bool $featured A flag indicating whether to filter products based on featured status.
         *
         * @return array A tax query for fetching featured products if `$featured` is true; otherwise, an empty array.
         */
        private function get_featured_query($featured)
        {
        }
        /**
         * Generates a post__in query to filter products to the set of provided IDs.
         *
         * @param int[]|false $handpicked_products The products to filter.
         *
         * @return array The post__in query.
         */
        private function get_handpicked_query($handpicked_products)
        {
        }
        /**
         * Merge tax_queries from various queries.
         *
         * @param array ...$queries Query arrays to be merged.
         * @return array
         */
        private function merge_tax_queries(...$queries)
        {
        }
        /**
         * Return the `tax_query` for the requested attributes
         *
         * @param array $attributes  Attributes and their terms.
         *
         * @return array
         */
        private function get_product_attributes_query($attributes = array())
        {
        }
        /**
         * Return a query to filter products by taxonomies (product categories, product tags, etc.)
         *
         * For example:
         * User could provide "Product Categories" using "Filters" ToolsPanel available in Inspector Controls.
         * We use this function to extract its query from $tax_query.
         *
         * For example, this is how the query for product categories will look like in $tax_query array:
         * Array
         *    (
         *        [taxonomy] => product_cat
         *        [terms] => Array
         *            (
         *                [0] => 36
         *            )
         *    )
         *
         * For product tags, taxonomy would be "product_tag"
         *
         * @param array $tax_query Query to filter products by taxonomies.
         * @return array Query to filter products by taxonomies.
         */
        private function get_filter_by_taxonomies_query($tax_query) : array
        {
        }
        /**
         * Return queries that are generated by query args.
         *
         * @return array
         */
        private function get_queries_by_applied_filters()
        {
        }
        /**
         * Return a query that filters products by price.
         *
         * @return array
         */
        private function get_filter_by_price_query()
        {
        }
        /**
         * Return a query that filters products by attributes.
         *
         * @return array
         */
        private function get_filter_by_attributes_query()
        {
        }
        /**
         * Get all the query args related to the filter by attributes block.
         *
         * @return array
         * [color] => Array
         *   (
         *        [filter] => filter_color
         *        [query_type] => query_type_color
         *    )
         *
         * [size] => Array
         *    (
         *        [filter] => filter_size
         *        [query_type] => query_type_size
         *    )
         * )
         */
        private function get_filter_by_attributes_query_vars()
        {
        }
        /**
         * Return a query that filters products by stock status.
         *
         * @return array
         */
        private function get_filter_by_stock_status_query()
        {
        }
        /**
         * Return a query that filters products by rating.
         *
         * @return array
         */
        private function get_filter_by_rating_query()
        {
        }
        /**
         * Constructs a date query for product filtering based on a specified time frame.
         *
         * @param array $time_frame {
         *     Associative array with 'operator' (in or not-in) and 'value' (date string).
         *
         *     @type string $operator Determines the inclusion or exclusion of the date range.
         *     @type string $value    The date around which the range is applied.
         * }
         * @return array Date query array; empty if parameters are invalid.
         */
        private function get_date_query(array $time_frame) : array
        {
        }
        /**
         * Get query arguments for price range filter.
         * We are adding these extra query arguments to be used in `posts_clauses`
         * because there are 2 special edge cases we wanna handle for Price range filter:
         * Case 1: Prices excluding tax are displayed including tax
         * Case 2: Prices including tax are displayed excluding tax
         *
         * Both of these cases require us to modify SQL query to get the correct results.
         *
         * See add_price_range_filter_posts_clauses function in this file for more details.
         *
         * @param array $price_range Price range with min and max values.
         * @return array Query arguments.
         */
        public function get_price_range_query_args($price_range)
        {
        }
        /**
         * Add the `posts_clauses` filter to the main query.
         *
         * @param array    $clauses The query clauses.
         * @param WP_Query $query   The WP_Query instance.
         */
        public function add_price_range_filter_posts_clauses($clauses, $query)
        {
        }
        /**
         * Add the `posts_clauses` filter to add price-based sorting
         *
         * @param array    $clauses The list of clauses for the query.
         * @param WP_Query $query   The WP_Query instance.
         * @return array   Modified list of clauses.
         */
        public function add_price_sorting_posts_clauses($clauses, $query)
        {
        }
        /**
         * Add the `posts_clauses` filter to add sales-based sorting
         *
         * @param array    $clauses The list of clauses for the query.
         * @param WP_Query $query   The WP_Query instance.
         * @return array   Modified list of clauses.
         */
        public function add_sales_sorting_posts_clauses($clauses, $query)
        {
        }
        /**
         * Determines if price filters need adjustment based on the tax display settings.
         *
         * This function checks if there's a discrepancy between how prices are stored in the database
         * and how they are displayed to the user, specifically with respect to tax inclusion or exclusion.
         * It returns true if an adjustment is needed, indicating that the price filters should account for this
         * discrepancy to display accurate prices.
         *
         * @return bool True if the price filters need to be adjusted for tax display settings, false otherwise.
         */
        private function should_adjust_price_range_for_taxes()
        {
        }
        /**
         * Join wc_product_meta_lookup to posts if not already joined.
         *
         * @param string $sql SQL join.
         * @return string
         */
        protected function append_product_sorting_table_join($sql)
        {
        }
        /**
         * Get query for price filters when dealing with displayed taxes.
         *
         * @param float  $price_filter Price filter to apply.
         * @param string $column Price being filtered (min or max).
         * @param string $operator Comparison operator for column.
         * @return string Constructed query.
         */
        protected function get_price_filter_query_for_displayed_taxes($price_filter, $column = 'min_price', $operator = '>=')
        {
        }
        /**
         * Adjusts a price filter based on a tax class and whether or not the amount includes or excludes taxes.
         *
         * This calculation logic is based on `wc_get_price_excluding_tax` and `wc_get_price_including_tax` in core.
         *
         * @param float  $price_filter Price filter amount as entered.
         * @param string $tax_class Tax class for adjustment.
         * @return float
         */
        protected function adjust_price_filter_for_tax_class($price_filter, $tax_class)
        {
        }
        /**
         * Registers handlers for a collection.
         *
         * @param string        $collection_name The name of the custom collection.
         * @param callable      $build_query     A hook returning any custom query arguments to merge with the collection's query.
         * @param callable|null $frontend_args   An optional hook that returns any frontend collection arguments to pass to the query builder.
         * @param callable|null $editor_args     An optional hook that returns any REST collection arguments to pass to the query builder.
         * @param callable|null $preview_query   An optional hook that returns a query to use in preview mode.
         *
         * @throws \InvalidArgumentException If collection handlers are already registered for the given collection name.
         */
        protected function register_collection_handlers($collection_name, $build_query, $frontend_args = null, $editor_args = null, $preview_query = null)
        {
        }
        /**
         * Registers any handlers for the core collections.
         */
        protected function register_core_collections()
        {
        }
        /**
         * Get product IDs from an order.
         *
         * @param int $order_id The order ID.
         * @return array<int> The product IDs.
         */
        private function get_product_ids_from_order($order_id)
        {
        }
    }
    /**
     * ProductCollectionNoResults class.
     */
    class ProductCollectionNoResults extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-collection-no-results';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Set the URL attributes for "clearing any filters" and "Store's home" links.
         *
         * @param string $content Block content.
         */
        protected function modify_anchor_tag_urls($content)
        {
        }
        /**
         * Get current URL without filter query parameters which will be used
         * for the "clear any filters" link.
         */
        protected function get_current_url_without_filters()
        {
        }
    }
    /**
     * ProductDetails class.
     */
    class ProductDetails extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-details';
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Gets the tabs with their content to be rendered by the block.
         *
         * @return string The tabs html to be rendered by the block
         */
        protected function render_tabs()
        {
        }
    }
    /**
     * Product Filter: Active Block.
     */
    final class ProductFilterActive extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-active';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * Product Filter: Attribute Block.
     */
    final class ProductFilterAttribute extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-attribute';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = array())
        {
        }
        /**
         * Delete the default attribute id transient when the attribute taxonomies are deleted.
         *
         * @param string $transient The transient name.
         */
        public function delete_default_attribute_id_transient($transient)
        {
        }
        /**
         * Register the query param keys.
         *
         * @param array $filter_param_keys The active filters data.
         * @param array $url_param_keys    The query param parsed from the URL.
         *
         * @return array Active filters param keys.
         */
        public function get_filter_query_param_keys($filter_param_keys, $url_param_keys)
        {
        }
        /**
         * Register the active filters data.
         *
         * @param array $data   The active filters data.
         * @param array $params The query param parsed from the URL.
         * @return array Active filters data.
         */
        public function register_active_filters_data($data, $params)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $block_attributes Block attributes.
         * @param string   $content          Block content.
         * @param WP_Block $block            Block instance.
         * @return string Rendered block type output.
         */
        protected function render($block_attributes, $content, $block)
        {
        }
        /**
         * Retrieve the attribute count for current block.
         *
         * @param WP_Block $block      Block instance.
         * @param string   $slug       Attribute slug.
         * @param string   $query_type Query type, accept 'and' or 'or'.
         */
        private function get_attribute_counts($block, $slug, $query_type)
        {
        }
        /**
         * Get the attribute if with most term but closest to 30 terms.
         *
         * @return object
         */
        private function get_default_product_attribute()
        {
        }
        /**
         * Register pattern for default product attribute.
         */
        public function register_block_patterns()
        {
        }
    }
    /**
     * Product Filter: Checkbox List Block.
     */
    final class ProductFilterCheckboxList extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-checkbox-list';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * Product Filter: Chips Block.
     */
    final class ProductFilterChips extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-chips';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * Product Filter: Clear Button Block.
     */
    final class ProductFilterClearButton extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-clear-button';
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * Product Filter: Price Block.
     */
    final class ProductFilterPrice extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-price';
        const MIN_PRICE_QUERY_VAR = 'min_price';
        const MAX_PRICE_QUERY_VAR = 'max_price';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Register the query param keys.
         *
         * @param array $filter_param_keys The active filters data.
         * @param array $url_param_keys    The query param parsed from the URL.
         *
         * @return array Active filters param keys.
         */
        public function get_filter_query_param_keys($filter_param_keys, $url_param_keys)
        {
        }
        /**
         * Register the active filters data.
         *
         * @param array $data   The active filters data.
         * @param array $params The query param parsed from the URL.
         * @return array Active filters data.
         */
        public function register_active_filters_data($data, $params)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Retrieve the price filter data for current block.
         *
         * @param WP_Block $block Block instance.
         */
        private function get_filtered_price($block)
        {
        }
    }
    /**
     * ProductFilterPriceSlider class.
     */
    class ProductFilterPriceSlider extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-price-slider';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * Product Filter: Rating Block
     *
     * @package Automattic\WooCommerce\Blocks\BlockTypes
     */
    final class ProductFilterRating extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-rating';
        const RATING_FILTER_QUERY_VAR = 'rating_filter';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Register the query param keys.
         *
         * @param array $filter_param_keys The active filters data.
         * @param array $url_param_keys    The query param parsed from the URL.
         *
         * @return array Active filters param keys.
         */
        public function get_filter_query_param_keys($filter_param_keys, $url_param_keys)
        {
        }
        /**
         * Register the active filters data.
         *
         * @param array $data   The active filters data.
         * @param array $params The query param parsed from the URL.
         * @return array Active filters data.
         */
        public function register_active_filters_data($data, $params)
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Render the rating label.
         *
         * @param int    $rating The rating to render.
         * @param string $count_label The count label to render.
         * @return string|false
         */
        private function render_rating_label($rating, $count_label)
        {
        }
        /**
         * Get the Rating list items.
         *
         * @param array $ratings     - The rating counts.
         * @param array $selected    - an array of selected ratings.
         * @param bool  $with_counts - Whether to show the counts.
         * @return array The rating items.
         */
        private function get_rating_items($ratings, $selected, $with_counts)
        {
        }
        /**
         * Get the dropdown props.
         *
         * @param mixed  $rating_counts The rating counts.
         * @param mixed  $selected_ratings_query The url query param for selected ratings.
         * @param bool   $show_counts Whether to show the counts.
         * @param string $select_type The select type. (single|multiple).
         * @return array<array-key, array>
         */
        private function get_dropdown_props($rating_counts, $selected_ratings_query, $show_counts, $select_type)
        {
        }
        /**
         * Retrieve the rating filter data for current block.
         *
         * @param WP_Block $block Block instance.
         */
        private function get_rating_counts($block)
        {
        }
    }
    /**
     * Product Filter: Removable Chips Block.
     */
    final class ProductFilterRemovableChips extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-removable-chips';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Render the chip item of an active filter.
         *
         * @param string $type Filter type.
         * @param array  $item Item data.
         * @return string Item HTML.
         */
        private function render_chip_item($type, $item)
        {
        }
        /**
         * Build HTML attributes string from assoc array.
         *
         * @param array $attributes Attributes data as an assoc array.
         * @return string Escaped HTML attributes string.
         */
        private function get_html_attributes($attributes)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         *
         * @return null
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
    /**
     * Product Filter: Status Block.
     */
    final class ProductFilterStatus extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filter-status';
        const STOCK_STATUS_QUERY_VAR = 'filter_stock_status';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         */
        protected function initialize()
        {
        }
        /**
         * Register the query param keys.
         *
         * @param array $filter_param_keys The active filters data.
         * @param array $url_param_keys    The query param parsed from the URL.
         *
         * @return array Active filters param keys.
         */
        public function get_filter_query_param_keys($filter_param_keys, $url_param_keys)
        {
        }
        /**
         * Register the active filters data.
         *
         * @param array $data   The active filters data.
         * @param array $params The query param parsed from the URL.
         * @return array Active filters data.
         */
        public function register_active_filters_data($data, $params)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $stock_statuses  Any stock statuses that currently are available from the block.
         *                               Note, this will be empty in the editor context when the block is
         *                               not in the post content on editor load.
         */
        protected function enqueue_data(array $stock_statuses = array())
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Retrieve the status filter data for current block.
         *
         * @param WP_Block $block Block instance.
         */
        private function get_stock_status_counts($block)
        {
        }
    }
    /**
     * ProductFilters class.
     */
    class ProductFilters extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-filters';
        /**
         * Register the context.
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         * - Hook into pre_render_block to update the query.
         */
        protected function initialize()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = array())
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get SVG icon markup for a given icon name.
         *
         * @param string $name The name of the icon to retrieve.
         * @return string SVG markup for the icon, or empty string if icon not found.
         */
        private function get_svg_icon(string $name)
        {
        }
        /**
         * Generate a unique navigation ID for the block.
         *
         * @param mixed $block - Block instance.
         * @return string - Unique navigation ID.
         */
        private function generate_navigation_id($block)
        {
        }
        /**
         * Parse the filter parameters from the URL.
         * For now we only get the global query params from the URL. In the future,
         * we should get the query params based on $query_id.
         *
         * @param int $query_id Query ID.
         * @return array Parsed filter params.
         */
        private function get_filter_params($query_id)
        {
        }
        /**
         * This block renders inner blocks manually so we need to skip default
         * rendering routine for its inner blocks
         *
         * @param array $settings Array of determined settings for registering a block type.
         * @param array $metadata Metadata provided for registering a block type.
         * @return array
         */
        public function add_block_type_metadata_settings($settings, $metadata)
        {
        }
    }
    /**
     * ProductGallery class.
     */
    class ProductGallery extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-gallery';
        /**
         *  Register the context
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Inject dialog into the product gallery HTML.
         *
         * @param string $gallery_html The gallery HTML.
         * @param string $dialog_html  The dialog HTML.
         *
         * @return string
         */
        protected function inject_dialog($gallery_html, $dialog_html)
        {
        }
        /**
         * Return the dialog content.
         *
         * @return string
         */
        protected function render_dialog()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductGalleryLargeImage class.
     */
    class ProductGalleryLargeImage extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-gallery-large-image';
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         *  Register the context
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Enqueue frontend assets for this block, just in time for rendering.
         *
         * @param array    $attributes  Any attributes that currently are available from the block.
         * @param string   $content    The block content.
         * @param WP_Block $block    The block object.
         */
        protected function enqueue_assets(array $attributes, $content, $block)
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the main images html code. The first element of the array contains the HTML of the first image that is visible, the second element contains the HTML of the other images that are hidden.
         *
         * @param array $context The block context.
         * @param int   $product_id The product id.
         *
         * @return array
         */
        private function get_main_images_html($context, $product_id)
        {
        }
        /**
         * Get directives for the block.
         *
         * @param array $block_context The block context.
         *
         * @return array
         */
        private function get_directives($block_context)
        {
        }
        /**
         * Get directives for zoom.
         *
         * @param array $block_context The block context.
         *
         * @return array
         */
        private function get_zoom_directives($block_context)
        {
        }
        /**
         * Get directives for opening the dialog.
         *
         * @param array $block_context The block context.
         *
         * @return array
         */
        private function get_open_dialog_directives($block_context)
        {
        }
    }
    /**
     * ProductGalleryLargeImage class.
     */
    class ProductGalleryLargeImageNextPrevious extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-gallery-large-image-next-previous';
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         *  Register the context
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         *  Return class suffix
         *
         * @param array $context Block context.
         * @return string
         */
        private function get_class_suffix($context)
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Generates the HTML for a next or previous button for the product gallery large image.
         *
         * @param string $button_type The type of button to generate. Either 'previous' or 'next'.
         * @param string $context     The block context.
         * @return string The HTML for the generated button.
         */
        protected function get_button($button_type, $context)
        {
        }
        /**
         * Returns an HTML button element with an SVG icon for the previous or next button when the buttons are inside the image.
         *
         * @param string $button_type The type of button to return. Either "previous" or "next".
         * @param string $context The context in which the button is being used.
         * @return string The HTML for the button element.
         */
        protected function get_inside_button($button_type, $context)
        {
        }
        /**
         * Returns an HTML button element with an SVG icon for the previous or next button when the buttons are outside the image.
         *
         * @param string $button_type The type of button to return. Either "previous" or "next".
         * @param string $context The context in which the button is being used.
         * @return string The HTML for the button element.
         */
        protected function get_outside_button($button_type, $context)
        {
        }
    }
    /**
     * ProductGalleryPager class.
     */
    class ProductGalleryPager extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-gallery-pager';
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         *  Register the context
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Renders the pager for the product gallery.
         *
         * @param  array  $product_gallery_images_ids An array of image IDs for the product gallery.
         * @param  string $pager_display_mode         The display mode for the pager.
         * @param  int    $number_of_thumbnails       The number of thumbnails to display in the pager.
         * @return string|null The rendered pager HTML, or null if the pager should not be displayed.
         */
        private function render_pager($product_gallery_images_ids, $pager_display_mode, $number_of_thumbnails)
        {
        }
        /**
         * Renders the pager pages for the product gallery.
         *
         * @param  array  $product_gallery_images_ids An array of image IDs for the product gallery.
         * @param  int    $number_of_thumbnails The number of thumbnails to display in the pager.
         * @param  string $pager_display_mode The display mode for the pager. Defaults to 'dots'.
         * @return string The rendered pager pages HTML.
         */
        private function render_pager_pages($product_gallery_images_ids, $number_of_thumbnails, $pager_display_mode = 'dots')
        {
        }
        /**
         * Generates an SVG dot icon with the specified opacity.
         *
         * @param bool $is_active Whether the dot icon should be in active state. Defaults to false.
         * @return string The SVG dot icon HTML.
         */
        private function get_dot_icon($is_active = false)
        {
        }
    }
    /**
     * ProductGalleryThumbnails class.
     */
    class ProductGalleryThumbnails extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-gallery-thumbnails';
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         *  Register the context
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Generate the View All markup.
         *
         * @param int $remaining_thumbnails_count The number of thumbnails that are not displayed.
         *
         * @return string
         */
        protected function generate_view_all_html($remaining_thumbnails_count)
        {
        }
        /**
         * Inject View All markup into the product thumbnail HTML.
         *
         * @param string $thumbnail_html The thumbnail HTML.
         * @param string $view_all_html  The view all HTML.
         *
         * @return string
         */
        protected function inject_view_all($thumbnail_html, $view_all_html)
        {
        }
        /**
         * Check if the thumbnails should be limited.
         *
         * @param string $mode                 Mode of the gallery. Expected values: 'standard'.
         * @param int    $thumbnails_count     Current count of processed thumbnails.
         * @param int    $number_of_thumbnails Number of thumbnails configured to display.
         *
         * @return bool
         */
        protected function should_limit_thumbnails($mode, $thumbnails_count, $number_of_thumbnails)
        {
        }
        /**
         * Check if View All markup should be displayed.
         *
         * @param string $mode                   Mode of the gallery. Expected values: 'standard'.
         * @param int    $thumbnails_count       Current count of processed thumbnails.
         * @param array  $product_gallery_images Array of product gallery image HTML strings.
         * @param int    $number_of_thumbnails   Number of thumbnails configured to display.
         *
         * @return bool
         */
        protected function should_display_view_all($mode, $thumbnails_count, $product_gallery_images, $number_of_thumbnails)
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductImage class.
     */
    class ProductImage extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-image';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * It is necessary to register and enqueues assets during the render phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Get the block's attributes.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return array  Block attributes merged with defaults.
         */
        private function parse_attributes($attributes)
        {
        }
        /**
         * Render on Sale Badge.
         *
         * @param \WC_Product $product Product object.
         * @param array       $attributes Attributes.
         * @return string
         */
        private function render_on_sale_badge($product, $attributes)
        {
        }
        /**
         * Render anchor.
         *
         * @param \WC_Product $product       Product object.
         * @param string      $on_sale_badge Return value from $render_image.
         * @param string      $product_image Return value from $render_on_sale_badge.
         * @param array       $attributes    Attributes.
         * @return string
         */
        private function render_anchor($product, $on_sale_badge, $product_image, $attributes)
        {
        }
        /**
         * Render Image.
         *
         * @param \WC_Product $product Product object.
         * @param array       $attributes Parsed attributes.
         * @return string
         */
        private function render_image($product, $attributes)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Include and render the block
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductImageGallery class.
     */
    class ProductImageGallery extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-image-gallery';
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         *  Register the context
         *
         * @return string[]
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductMeta class.
     */
    class ProductMeta extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-meta';
        /**
         * Get the editor script data for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return null
         */
        protected function get_block_type_editor_script($key = null)
        {
        }
        /**
         * Get the editor style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_editor_style()
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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_block_type_attributes()
        {
        }
    }
    /**
     * ProductPrice class.
     */
    class ProductPrice extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-price';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_tax_query
    // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
    // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
    /**
     * ProductQuery class.
     */
    class ProductQuery extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-query';
        /**
         * The Block with its attributes before it gets rendered
         *
         * @var array
         */
        protected $parsed_block;
        /**
         * Orderby options not natively supported by WordPress REST API
         *
         * @var array
         */
        protected $custom_order_opts = array('popularity', 'rating');
        /**
         * All the query args related to the filter by attributes block.
         *
         * @var array
         */
        protected $attributes_filter_query_args = array();
        /** This is a feature flag to enable the custom inherit Global Query implementation.
         * This is not intended to be a permanent feature flag, but rather a temporary.
         * It is also necessary to enable this feature flag on the PHP side: `assets/js/blocks/product-query/utils.tsx:83`.
         * https://github.com/woocommerce/woocommerce-blocks/pull/7382
         *
         * @var boolean
         */
        protected $is_custom_inherit_global_query_implementation_enabled = false;
        /**
         * All query args from WP_Query.
         *
         * @var array
         */
        protected $valid_query_vars;
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         * - Hook into pre_render_block to update the query.
         */
        protected function initialize()
        {
        }
        /**
         * Post Template support for grid view was introduced in Gutenberg 16 / WordPress 6.3
         * Fixed in:
         * - https://github.com/woocommerce/woocommerce-blocks/pull/9916
         * - https://github.com/woocommerce/woocommerce-blocks/pull/10360
         */
        private function check_if_post_template_has_support_for_grid_view()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
        /**
         * Check if a given block
         *
         * @param array $parsed_block The block being rendered.
         * @return boolean
         */
        public static function is_woocommerce_variation($parsed_block)
        {
        }
        /**
         * Enqueues the variation styles when rendering the Product Query variation.
         *
         * @param string $block_content The block content.
         * @param array  $block         The full block, including name and attributes.
         *
         * @return string The block content.
         */
        public function enqueue_styles(string $block_content, array $block)
        {
        }
        /**
         * Update the query for the product query block.
         *
         * @param string|null $pre_render   The pre-rendered content. Default null.
         * @param array       $parsed_block The block being rendered.
         */
        public function update_query($pre_render, $parsed_block)
        {
        }
        /**
         * Merge tax_queries from various queries.
         *
         * @param array ...$queries Query arrays to be merged.
         * @return array
         */
        private function merge_tax_queries(...$queries)
        {
        }
        /**
         * Update the query for the product query block in Editor.
         *
         * @param array           $args    Query args.
         * @param WP_REST_Request $request Request.
         */
        public function update_rest_query($args, $request) : array
        {
        }
        /**
         * Return a custom query based on attributes, filters and global WP_Query.
         *
         * @param WP_Query $query The WordPress Query.
         * @param WP_Block $block The block being rendered.
         * @return array
         */
        public function build_query($query, $block = null)
        {
        }
        /**
         * Merge in the first parameter the keys "post_in", "meta_query" and "tax_query" of the second parameter.
         *
         * @param array[] ...$queries Query arrays to be merged.
         * @return array
         */
        private function merge_queries(...$queries)
        {
        }
        /**
         * Extends allowed `collection_params` for the REST API
         *
         * By itself, the REST API doesn't accept custom `orderby` values,
         * even if they are supported by a custom post type.
         *
         * @param array $params  A list of allowed `orderby` values.
         *
         * @return array
         */
        public function extend_rest_query_allowed_params($params)
        {
        }
        /**
         * Return a query for on sale products.
         *
         * @return array
         */
        private function get_on_sale_products_query()
        {
        }
        /**
         * Return query params to support custom sort values
         *
         * @param string $orderby  Sort order option.
         *
         * @return array
         */
        private function get_custom_orderby_query($orderby)
        {
        }
        /**
         * Apply the query only to a subset of products
         *
         * @param array $query  The query.
         * @param array $ids  Array of selected product ids.
         *
         * @return array
         */
        private function filter_query_to_only_include_ids($query, $ids)
        {
        }
        /**
         * Return the `tax_query` for the requested attributes
         *
         * @param array $attributes  Attributes and their terms.
         *
         * @return array
         */
        private function get_product_attributes_query($attributes = array())
        {
        }
        /**
         * Return a query for products depending on their stock status.
         *
         * @param array $stock_statii An array of acceptable stock statii.
         * @return array
         */
        private function get_stock_status_query($stock_statii)
        {
        }
        /**
         * Return a query for product visibility depending on their stock status.
         *
         * @param array $stock_query Stock status query.
         *
         * @return array Tax query for product visibility.
         */
        private function get_product_visibility_query($stock_query)
        {
        }
        /**
         * Set the query vars that are used by filter blocks.
         *
         * @return array
         */
        private function get_query_vars_from_filter_blocks()
        {
        }
        /**
         * Set the query vars that are used by filter blocks.
         *
         * @param array $public_query_vars Public query vars.
         * @return array
         */
        public function set_query_vars($public_query_vars)
        {
        }
        /**
         * Get all the query args related to the filter by attributes block.
         *
         * @return array
         * [color] => Array
         *   (
         *        [filter] => filter_color
         *        [query_type] => query_type_color
         *    )
         *
         * [size] => Array
         *    (
         *        [filter] => filter_size
         *        [query_type] => query_type_size
         *    )
         * )
         */
        private function get_filter_by_attributes_query_vars()
        {
        }
        /**
         * Return queries that are generated by query args.
         *
         * @return array
         */
        private function get_queries_by_applied_filters()
        {
        }
        /**
         * Return queries that are generated by attributes
         *
         * @param array $parsed_block The Product Query that being rendered.
         * @return array
         */
        private function get_queries_by_custom_attributes($parsed_block)
        {
        }
        /**
         * Return a query that filters products by price.
         *
         * @return array
         */
        private function get_filter_by_price_query()
        {
        }
        /**
         * Return a query that filters products by attributes.
         *
         * @return array
         */
        private function get_filter_by_attributes_query()
        {
        }
        /**
         * Return a query that filters products by stock status.
         *
         * @return array
         */
        private function get_filter_by_stock_status_query()
        {
        }
        /**
         * Return or initialize $valid_query_vars.
         *
         * @return array
         */
        private function get_valid_query_vars()
        {
        }
        /**
         * Merge two array recursively but replace the non-array values instead of
         * merging them. The merging strategy:
         *
         * - If keys from merge array doesn't exist in the base array, create them.
         * - For array items with numeric keys, we merge them as normal.
         * - For array items with string keys:
         *
         *   - If the value isn't array, we'll use the value coming from the merge array.
         *     $base = ['orderby' => 'date']
         *     $new  = ['orderby' => 'meta_value_num']
         *     Result: ['orderby' => 'meta_value_num']
         *
         *   - If the value is array, we'll use recursion to merge each key.
         *     $base = ['meta_query' => [
         *       [
         *         'key'     => '_stock_status',
         *         'compare' => 'IN'
         *         'value'   =>  ['instock', 'onbackorder']
         *       ]
         *     ]]
         *     $new  = ['meta_query' => [
         *       [
         *         'relation' => 'AND',
         *         [...<max_price_query>],
         *         [...<min_price_query>],
         *       ]
         *     ]]
         *     Result: ['meta_query' => [
         *       [
         *         'key'     => '_stock_status',
         *         'compare' => 'IN'
         *         'value'   =>  ['instock', 'onbackorder']
         *       ],
         *       [
         *         'relation' => 'AND',
         *         [...<max_price_query>],
         *         [...<min_price_query>],
         *       ]
         *     ]]
         *
         *     $base = ['post__in' => [1, 2, 3, 4, 5]]
         *     $new  = ['post__in' => [3, 4, 5, 6, 7]]
         *     Result: ['post__in' => [1, 2, 3, 4, 5, 3, 4, 5, 6, 7]]
         *
         * @param array $base First array.
         * @param array $new  Second array.
         */
        private function array_merge_recursive_replace_non_array_properties($base, $new)
        {
        }
        /**
         * Get product-related query variables from the global query.
         *
         * @param array $parsed_block The Product Query that being rendered.
         *
         * @return array
         */
        private function get_global_query($parsed_block)
        {
        }
        /**
         * Return a query that filters products by rating.
         *
         * @return array
         */
        private function get_filter_by_rating_query()
        {
        }
        /**
         * Return a query to filter products by taxonomies (product categories, product tags, etc.)
         *
         * For example:
         * User could provide "Product Categories" using "Filters" ToolsPanel available in Inspector Controls.
         * We use this function to extract it's query from $tax_query.
         *
         * For example, this is how the query for product categories will look like in $tax_query array:
         * Array
         *    (
         *        [taxonomy] => product_cat
         *        [terms] => Array
         *            (
         *                [0] => 36
         *            )
         *    )
         *
         * For product categories, taxonomy would be "product_tag"
         *
         * @param array $query WP_Query.
         * @return array Query to filter products by taxonomies.
         */
        private function get_filter_by_taxonomies_query($query) : array
        {
        }
        /**
         * Returns the keyword filter from the given query.
         *
         * @param WP_Query $query The query to extract the keyword filter from.
         * @return array The keyword filter, or an empty array if none is found.
         */
        private function get_filter_by_keyword_query($query) : array
        {
        }
    }
    /**
     * ProductRating class.
     */
    class ProductRating extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-rating';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Get the block's attributes.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return array  Block attributes merged with defaults.
         */
        private function parse_attributes($attributes)
        {
        }
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductRatingCounter class.
     */
    class ProductRatingCounter extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-rating-counter';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Get the block's attributes.
         *
         * @param array $attributes Block attributes. Default empty array.
         * @return array  Block attributes merged with defaults.
         */
        private function parse_attributes($attributes)
        {
        }
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductRatingStars class.
     */
    class ProductRatingStars extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-rating-stars';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductResultsCount class.
     */
    class ProductResultsCount extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-results-count';
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductReviews class.
     */
    class ProductReviews extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-reviews';
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductSKU class.
     */
    class ProductSKU extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-sku';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductSaleBadge class.
     */
    class ProductSaleBadge extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-sale-badge';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block attributes.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Overwrite parent method to prevent script registration.
         *
         * It is necessary to register and enqueues assets during the render
         * phase because we want to load assets only if the block has the content.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductSearch class.
     */
    class ProductSearch extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-search';
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         * @return null
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content    Block content.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * ProductStockIndicator class.
     */
    class ProductStockIndicator extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-stock-indicator';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Register script and style assets for the block type before it is registered.
         *
         * This registers the scripts; it does not enqueue them.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Register the context.
         */
        protected function get_block_type_uses_context()
        {
        }
        /**
         * Get stock text based on stock. For example:
         * - In stock
         * - Out of stock
         * - Available on backorder
         * - 2 left in stock
         *
         * @param bool     $is_in_stock Whether the product is in stock.
         * @param bool     $is_low_stock Whether the product is low in stock.
         * @param int|null $low_stock_amount The amount of stock that is considered low.
         * @param bool     $is_on_backorder Whether the product is on backorder.
         * @return string Stock text.
         */
        protected static function getTextBasedOnStock($is_in_stock, $is_low_stock, $low_stock_amount, $is_on_backorder)
        {
        }
        /**
         * Include and render the block.
         *
         * @param array    $attributes Block attributes. Default empty array.
         * @param string   $content    Block content. Default empty string.
         * @param WP_Block $block      Block instance.
         * @return string Rendered block type output.
         */
        protected function render($attributes, $content, $block)
        {
        }
    }
    /**
     * ProductSummary class.
     */
    class ProductSummary extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-summary';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Register script and style assets for the block type before it is registered.
         *
         * This registers the scripts; it does not enqueue them.
         */
        protected function register_block_type_assets()
        {
        }
    }
    /**
     * 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_block_type_attributes()
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * ProductTemplate class.
     */
    class ProductTemplate extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-template';
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         * - Hook into pre_render_block to update the query.
         */
        protected function initialize()
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Determines whether a block list contains a block that uses the featured image.
         *
         * @param WP_Block_List $inner_blocks Inner block instance.
         *
         * @return bool Whether the block list contains a block that uses the featured image.
         */
        protected function block_core_post_template_uses_featured_image($inner_blocks)
        {
        }
        /**
         * Product Template renders inner blocks manually so we need to skip default
         * rendering routine for its inner blocks
         *
         * @param array $settings Array of determined settings for registering a block type.
         * @param array $metadata Metadata provided for registering a block type.
         * @return array
         */
        public function add_block_type_metadata_settings($settings, $metadata)
        {
        }
    }
    /**
     * ProductTitle class.
     */
    class ProductTitle extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'product-title';
        /**
         * API version name.
         *
         * @var string
         */
        protected $api_version = '2';
        /**
         * Get block supports. Shared with the frontend.
         * IMPORTANT: If you change anything here, make sure to update the JS file too.
         *
         * @return array
         */
        protected function get_block_type_supports()
        {
        }
        /**
         * Register script and style assets for the block type before it is registered.
         *
         * This registers the scripts; it does not enqueue them.
         */
        protected function register_block_type_assets()
        {
        }
    }
    /**
     * 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)
        {
        }
    }
    /**
     * 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_block_type_attributes()
        {
        }
    }
    /**
     * PriceFilter class.
     */
    class RatingFilter extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'rating-filter';
        const RATING_QUERY_VAR = 'rating_filter';
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * RelatedProducts class.
     */
    class RelatedProducts extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'related-products';
        /**
         * The Block with its attributes before it gets rendered
         *
         * @var array
         */
        protected $parsed_block;
        /**
         * Initialize this block type.
         *
         * - Hook into WP lifecycle.
         * - Register the block with WordPress.
         * - Hook into pre_render_block to update the query.
         */
        protected function initialize()
        {
        }
        /**
         * It isn't necessary register block assets because it is a server side block.
         */
        protected function register_block_type_assets()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
        /**
         * Update the query for the product query block.
         *
         * @param string|null $pre_render   The pre-rendered content. Default null.
         * @param array       $parsed_block The block being rendered.
         */
        public function update_query($pre_render, $parsed_block)
        {
        }
        /**
         * Return a custom query based on attributes, filters and global WP_Query.
         *
         * @param WP_Query $query The WordPress Query.
         * @param WP_Block $block The block being rendered.
         * @return array
         */
        public function build_query($query, $block = null)
        {
        }
        /**
         * If there are no related products, return an empty string.
         *
         * @param string $content The block content.
         * @param array  $block The block.
         *
         * @return string The block content.
         */
        public function render_block(string $content, array $block)
        {
        }
        /**
         * Determines whether the block is a related products block.
         *
         * @param array $parsed_block The parsed block.
         * @param array $rendered_block The rendered block.
         *
         * @return bool Whether the block is a related products block.
         */
        private function is_related_products_block($parsed_block, $rendered_block = null)
        {
        }
        /**
         * Get related products ids.
         * The logic is copied from the core function woocommerce_related_products. https://github.com/woocommerce/woocommerce/blob/ca49caabcba84ce9f60a03c6d3534ec14b350b80/plugins/woocommerce/includes/wc-template-functions.php/#L2039-L2074
         *
         * @param number $product_per_page Products per page.
         * @return array Products ids.
         */
        private function get_related_products_ids($product_per_page = 5)
        {
        }
    }
    /**
     * ReviewsByCategory class.
     */
    class ReviewsByCategory extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'reviews-by-category';
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * ReviewsByProduct class.
     */
    class ReviewsByProduct extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'reviews-by-product';
        /**
         * Get the frontend script handle for this block type.
         *
         * @see $this->register_block_type()
         * @param string $key Data to get, or default to everything.
         * @return array|string
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $attributes = [])
        {
        }
    }
    /**
     * SingleProduct class.
     */
    class SingleProduct extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'single-product';
        /**
         * Product ID of the current product to be displayed in the Single Product block.
         * This is used to replace the global post for the Single Product inner blocks.
         *
         * @var int
         */
        protected $product_id = 0;
        /**
         * Single Product inner blocks names.
         * This is used to map all the inner blocks for a Single Product block.
         *
         * @var array
         */
        protected $single_product_inner_blocks_names = [];
        /**
         * Initialize the block and Hook into the `render_block_context` filter
         * to update the context with the correct data.
         *
         * @var string
         */
        protected function initialize()
        {
        }
        /**
         * Restore the global post variable right before generating the render output for the post title and/or post excerpt blocks.
         *
         * This is required due to the changes made via the replace_post_for_single_product_inner_block method.
         * It is a temporary fix to ensure these blocks work as expected until Gutenberg versions 15.2 and 15.6 are part of the core of WordPress.
         *
         * @see https://github.com/WordPress/gutenberg/pull/48001
         * @see https://github.com/WordPress/gutenberg/pull/49495
         *
         * @param  string    $block_content  The block content.
         * @param  array     $parsed_block  The full block, including name and attributes.
         * @param  \WP_Block $block_instance  The block instance.
         *
         * @return mixed
         */
        public function restore_global_post($block_content, $parsed_block, $block_instance)
        {
        }
        /**
         * Update the context by injecting the correct post data
         * for each one of the Single Product inner blocks.
         *
         * @param array    $context Block context.
         * @param array    $block Block attributes.
         * @param WP_Block $parent_block Block instance.
         *
         * @return array Updated block context.
         */
        public function update_context($context, $block, $parent_block)
        {
        }
        /**
         * Extract the inner block names for the Single Product block. This way it's possible
         * to map all the inner blocks for a Single Product block and manipulate the data as needed.
         *
         * @param array $block The Single Product block or its inner blocks.
         * @param array $result Array of inner block names.
         *
         * @return array Array containing all the inner block names of a Single Product block.
         */
        protected function extract_single_product_inner_block_names($block, &$result = [])
        {
        }
        /**
         * Replace the global post for the Single Product inner blocks and reset it after.
         *
         * This is needed because some of the inner blocks may use the global post
         * instead of fetching the product through the `productId` attribute, so even if the
         * `productId` is passed to the inner block, it will still use the global post.
         *
         * @param array $block Block attributes.
         * @param array $context Block context.
         */
        protected function replace_post_for_single_product_inner_block($block, &$context)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         *
         * @return null This block has no frontend script.
         */
        protected function get_block_type_script($key = null)
        {
        }
    }
    /**
     * AttributeFilter class.
     */
    class StockFilter extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'stock-filter';
        const STOCK_STATUS_QUERY_VAR = 'filter_stock_status';
        /**
         * Extra data passed through from server to client for block.
         *
         * @param array $stock_statuses  Any stock statuses that currently are available from the block.
         *                           Note, this will be empty in the editor context when the block is
         *                           not in the post content on editor load.
         */
        protected function enqueue_data(array $stock_statuses = [])
        {
        }
        /**
         * Get Stock status query variables values.
         */
        public static function get_stock_status_query_var_values()
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return string[]
         */
        protected function get_block_type_style()
        {
        }
    }
    /**
     * StoreNotices class.
     */
    class StoreNotices extends \Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock
    {
        /**
         * Block name.
         *
         * @var string
         */
        protected $block_name = 'store-notices';
        /**
         * Render the block.
         *
         * @param array    $attributes Block attributes.
         * @param string   $content Block content.
         * @param WP_Block $block Block instance.
         *
         * @return string | void Rendered block output.
         */
        protected function render($attributes, $content, $block)
        {
        }
        /**
         * Get the frontend script handle for this block type.
         *
         * @param string $key Data to get, or default to everything.
         */
        protected function get_block_type_script($key = null)
        {
        }
        /**
         * Get the frontend style handle for this block type.
         *
         * @return null
         */
        protected function get_block_type_style()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * BlockTypesController class.
     *
     * @since 5.0.0
     * @internal
     */
    final class BlockTypesController
    {
        /**
         * Instance of the asset API.
         *
         * @var AssetApi
         */
        protected $asset_api;
        /**
         * Instance of the asset data registry.
         *
         * @var AssetDataRegistry
         */
        protected $asset_data_registry;
        /**
         * Holds the registered blocks that have WooCommerce blocks as their parents.
         *
         * @var array List of registered blocks.
         */
        private $registered_blocks_with_woocommerce_parents;
        /**
         * Constructor.
         *
         * @param AssetApi          $asset_api Instance of the asset API.
         * @param AssetDataRegistry $asset_data_registry Instance of the asset data registry.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api, \Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry)
        {
        }
        /**
         * Initialize class features.
         */
        protected function init()
        {
        }
        /**
         * Get registered blocks that have WooCommerce blocks as their parents. Adds the value to the
         * `registered_blocks_with_woocommerce_parents` cache if `init` has been fired.
         *
         * @return array Registered blocks with WooCommerce blocks as parents.
         */
        public function get_registered_blocks_with_woocommerce_parent()
        {
        }
        /**
         * Check if the current post has a block with a specific attribute value.
         *
         * @param string $block_id The block ID to check for.
         * @param string $attribute The attribute to check.
         * @param string $value The value to check for.
         * @return boolean
         */
        private function has_block_variation($block_id, $attribute, $value)
        {
        }
        /**
         * Register blocks, hooking up assets and render functions as needed.
         */
        public function register_blocks()
        {
        }
        /**
         * Register block patterns
         */
        public function register_block_patterns()
        {
        }
        /**
         * Register block categories
         *
         * Used in combination with the `block_categories_all` filter, to append
         * WooCommerce Blocks related categories to the Gutenberg editor.
         *
         * @param array $categories The array of already registered categories.
         */
        public function register_block_categories($categories)
        {
        }
        /**
         * Check if a block should have data attributes appended on render. If it's in an allowed namespace, or the block
         * has explicitly been added to the allowed block list, or if one of the block's parents is in the WooCommerce
         * namespace it can have data attributes.
         *
         * @param string $block_name Name of the block to check.
         *
         * @return boolean
         */
        public function block_should_have_data_attributes($block_name)
        {
        }
        /**
         * Add data- attributes to blocks when rendered if the block is under the woocommerce/ namespace.
         *
         * @param string $content Block content.
         * @param array  $block Parsed block data.
         * @return string
         */
        public function add_data_attributes($content, $block)
        {
        }
        /**
         * Adds a redirect field to the login form so blocks can redirect users after login.
         */
        public function redirect_to_field()
        {
        }
        /**
         * Hide legacy widgets with a feature complete block equivalent in the inserter
         * and prevent them from showing as an option in the Legacy Widget block.
         *
         * @param array $widget_types An array of widgets hidden in core.
         * @return array $widget_types An array including the WooCommerce widgets to hide.
         */
        public function hide_legacy_widgets_with_block_equivalent($widget_types)
        {
        }
        /**
         * Delete product transients when a product is deleted.
         */
        public function delete_product_transients()
        {
        }
        /**
         * Get list of block types.
         *
         * @return array
         */
        protected function get_block_types()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Domain {
    /**
     * Takes care of bootstrapping the plugin.
     *
     * @since 2.5.0
     */
    class Bootstrap
    {
        /**
         * Holds the Dependency Injection Container
         *
         * @var Container
         */
        private $container;
        /**
         * Holds the Package instance
         *
         * @var Package
         */
        private $package;
        /**
         * Holds the Migration instance
         *
         * @var Migration
         */
        private $migration;
        /**
         * Constructor
         *
         * @param Container $container  The Dependency Injection Container.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Registry\Container $container)
        {
        }
        /**
         * Init the package - load the blocks library and define constants.
         */
        protected function init()
        {
        }
        /**
         * See if files have been built or not.
         *
         * @return bool
         */
        protected function is_built()
        {
        }
        /**
         * Add a notice stating that the build has not been done yet.
         */
        protected function add_build_notice()
        {
        }
        /**
         * Load and set up the Interactivity API if enabled.
         */
        protected function load_interactivity_api()
        {
        }
        /**
         * Register core dependencies with the container.
         */
        protected function register_dependencies()
        {
        }
        /**
         * Throws a deprecation notice for a dependency without breaking requests.
         *
         * @param string $function Class or function being deprecated.
         * @param string $version Version in which it was deprecated.
         * @param string $replacement Replacement class or function, if applicable.
         * @param string $trigger_error_version Optional version to start surfacing this as a PHP error rather than a log. Defaults to $version.
         */
        protected function deprecated_dependency($function, $version, $replacement = '', $trigger_error_version = '')
        {
        }
        /**
         * Register payment method integrations with the container.
         */
        protected function register_payment_methods()
        {
        }
    }
    /**
     * Main package class.
     *
     * Returns information about the package and handles init.
     *
     * @since 2.5.0
     */
    class Package
    {
        /**
         * Holds the current version of the blocks plugin.
         *
         * @var string
         */
        private $version;
        /**
         * Holds the main path to the blocks plugin directory.
         *
         * @var string
         */
        private $path;
        /**
         * Holds locally the plugin_dir_url to avoid recomputing it.
         *
         * @var string
         */
        private $plugin_dir_url;
        /**
         * Holds the feature gating class instance.
         *
         * @var FeatureGating
         */
        private $feature_gating;
        /**
         * Constructor
         *
         * @param string        $version        Version of the plugin.
         * @param string        $plugin_path    Path to the main plugin file.
         * @param FeatureGating $feature_gating Feature gating class instance.
         */
        public function __construct($version, $plugin_path, \Automattic\WooCommerce\Blocks\Domain\Services\FeatureGating $feature_gating)
        {
        }
        /**
         * Returns the version of WooCommerce Blocks.
         *
         * Note: since Blocks was merged into WooCommerce Core, the version of
         * WC Blocks doesn't update anymore. Use
         * `Constants::get_constant( 'WC_VERSION' )` when possible to get the
         * WooCommerce Core version.
         *
         * @return string
         */
        public function get_version()
        {
        }
        /**
         * Returns the version of WooCommerce Blocks stored in the database.
         *
         * @return string
         */
        public function get_version_stored_on_db()
        {
        }
        /**
         * Sets the version of WooCommerce Blocks in the database.
         * This is useful during the first installation or after the upgrade process.
         */
        public function set_version_stored_on_db()
        {
        }
        /**
         * Returns the path to the plugin directory.
         *
         * @param string $relative_path  If provided, the relative path will be
         *                               appended to the plugin path.
         *
         * @return string
         */
        public function get_path($relative_path = '')
        {
        }
        /**
         * Returns the url to the blocks plugin directory.
         *
         * @param string $relative_url If provided, the relative url will be
         *                             appended to the plugin url.
         *
         * @return string
         */
        public function get_url($relative_url = '')
        {
        }
        /**
         * Returns an instance of the FeatureGating class.
         *
         * @return FeatureGating
         */
        public function feature()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Domain\Services {
    /**
     * Service class managing checkout fields and its related extensibility points.
     */
    class CheckoutFields
    {
        /**
         * Additional checkout fields.
         *
         * @var array
         */
        private $additional_fields = [];
        /**
         * Fields locations.
         *
         * @var array
         */
        private $fields_locations;
        /**
         * Supported field types
         *
         * @var array
         */
        private $supported_field_types = ['text', 'select', 'checkbox'];
        /**
         * Groups of fields to be saved.
         *
         * @var array
         */
        protected $groups = ['billing', 'shipping', 'other'];
        /**
         * Instance of the asset data registry.
         *
         * @var AssetDataRegistry
         */
        private $asset_data_registry;
        /**
         * Billing fields meta key.
         *
         * @var string
         */
        const BILLING_FIELDS_PREFIX = '_wc_billing/';
        /**
         * Shipping fields meta key.
         *
         * @var string
         */
        const SHIPPING_FIELDS_PREFIX = '_wc_shipping/';
        /**
         * Additional fields meta key.
         *
         * @var string
         * @deprecated 8.9.0 Use OTHER_FIELDS_PREFIX instead.
         */
        const ADDITIONAL_FIELDS_PREFIX = '_wc_additional/';
        /**
         * Other fields meta key.
         *
         * @var string
         */
        const OTHER_FIELDS_PREFIX = '_wc_other/';
        /**
         * Sets up core fields.
         *
         * @param AssetDataRegistry $asset_data_registry Instance of the asset data registry.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry)
        {
        }
        /**
         * Initialize hooks.
         */
        public function init()
        {
        }
        /**
         * Add fields data to the asset data registry.
         */
        public function add_fields_data()
        {
        }
        /**
         * Add session meta keys.
         *
         * This is an allow-list of meta data keys which we want to store in session.
         *
         * @param array $keys Session meta keys.
         * @return array
         */
        public function add_session_meta_keys($keys)
        {
        }
        /**
         * If a field does not declare a sanitization callback, this is the default sanitization callback.
         *
         * @param mixed $value Value to sanitize.
         * @param array $field Field data.
         * @return mixed
         */
        public function default_sanitize_callback($value, $field)
        {
        }
        /**
         * If a field does not declare a validation callback, this is the default validation callback.
         *
         * @param mixed $value Value to sanitize.
         * @param array $field Field data.
         * @return WP_Error|void If there is a validation error, return an WP_Error object.
         */
        public function default_validate_callback($value, $field)
        {
        }
        /**
         * Registers an additional field for Checkout.
         *
         * @param array $options The field options.
         *
         * @return WP_Error|void True if the field was registered, a WP_Error otherwise.
         */
        public function register_checkout_field($options)
        {
        }
        /**
         * Deregister a checkout field.
         *
         * @param string $field_id The field ID.
         *
         * @internal
         */
        public function deregister_checkout_field($field_id)
        {
        }
        /**
         * Validates the "base" options (id, label, location) and shows warnings if they're not supplied.
         *
         * @param array $options The options supplied during field registration.
         * @return bool false if an error was encountered, true otherwise.
         */
        private function validate_options(&$options)
        {
        }
        /**
         * Processes the options for a select field and returns the new field_options array.
         *
         * @param array $field_data  The field data array to be updated.
         * @param array $options     The options supplied during field registration.
         *
         * @return array|false The updated $field_data array or false if an error was encountered.
         */
        private function process_select_field($field_data, $options)
        {
        }
        /**
         * Processes the options for a checkbox field and returns the new field_options array.
         *
         * @param array $field_data  The field data array to be updated.
         * @param array $options     The options supplied during field registration.
         *
         * @return array|false The updated $field_data array or false if an error was encountered.
         */
        private function process_checkbox_field($field_data, $options)
        {
        }
        /**
         * Processes the attributes supplied during field registration.
         *
         * @param array $id         The field ID.
         * @param array $attributes The attributes supplied during field registration.
         *
         * @return array The processed attributes.
         */
        private function register_field_attributes($id, $attributes)
        {
        }
        /**
         * Returns the keys of all core fields.
         *
         * @return array An array of field keys.
         */
        public function get_core_fields_keys()
        {
        }
        /**
         * Returns an array of all core fields.
         *
         * @return array An array of fields.
         */
        public function get_core_fields()
        {
        }
        /**
         * Returns an array of all additional fields.
         *
         * @return array An array of fields.
         */
        public function get_additional_fields()
        {
        }
        /**
         * Gets the location of a field.
         *
         * @param string $field_key The key of the field to get the location for.
         * @return string The location of the field.
         */
        public function get_field_location($field_key)
        {
        }
        /**
         * Sanitize an additional field against any custom sanitization rules.
         *
         * @since 8.7.0
         * @param string $field_key   The key of the field.
         * @param mixed  $field_value The value of the field.
         * @return mixed
         */
        public function sanitize_field($field_key, $field_value)
        {
        }
        /**
         * Validate an additional field against any custom validation rules.
         *
         * @since 8.6.0
         *
         * @param string $field_key    The key of the field.
         * @param mixed  $field_value  The value of the field.
         * @return WP_Error
         */
        public function validate_field($field_key, $field_value)
        {
        }
        /**
         * Update the default locale with additional fields without country limitations.
         *
         * @param array $locale The locale to update.
         * @return mixed
         */
        public function update_default_locale_with_fields($locale)
        {
        }
        /**
         * Returns an array of fields keys for the address location.
         *
         * @return array An array of fields keys.
         */
        public function get_address_fields_keys()
        {
        }
        /**
         * Returns an array of fields keys for the contact location.
         *
         * @return array An array of fields keys.
         */
        public function get_contact_fields_keys()
        {
        }
        /**
         * Returns an array of fields keys for the additional area location.
         *
         * @return array An array of fields keys.
         * @deprecated 8.9.0 Use get_order_fields_keys instead.
         */
        public function get_additional_fields_keys()
        {
        }
        /**
         * Returns an array of fields keys for the additional area group.
         *
         * @return array An array of fields keys.
         */
        public function get_order_fields_keys()
        {
        }
        /**
         * Returns an array of fields for a given location.
         *
         * @param string $location The location to get fields for (address|contact|order).
         * @return array An array of fields definitions.
         */
        public function get_fields_for_location($location)
        {
        }
        /**
         * Validates a set of fields for a given location against custom validation rules.
         *
         * @param array  $fields Array of key value pairs of field values to validate.
         * @param string $location The location being validated (address|contact|order).
         * @param string $group The group to get the field value for (shipping|billing|other).
         * @return WP_Error
         */
        public function validate_fields_for_location($fields, $location, $group = 'other')
        {
        }
        /**
         * Validates a field to check it belongs to the given location and is valid according to its registration.
         *
         * This does not apply any custom validation rules on the value.
         *
         * @param string $key The field key.
         * @param mixed  $value The field value.
         * @param string $location The location to validate the field for (address|contact|order).
         *
         * @return true|WP_Error True if the field is valid, a WP_Error otherwise.
         */
        public function validate_field_for_location($key, $value, $location)
        {
        }
        /**
         * Returns all fields key for a given group.
         *
         * @param string $group The group to get the key for (shipping|billing|other).
         *
         * @return string[] Field keys.
         */
        public function get_fields_for_group($group = 'other')
        {
        }
        /**
         * Returns true if the given key is a valid field.
         *
         * @param string $key The field key.
         *
         * @return bool True if the field is valid, false otherwise.
         */
        public function is_field($key)
        {
        }
        /**
         * Returns true if the given key is a valid customer field.
         *
         * Customer fields are fields saved to the customer data, like address and contact fields.
         *
         * @param string $key The field key.
         *
         * @return bool True if the field is valid, false otherwise.
         */
        public function is_customer_field($key)
        {
        }
        /**
         * Persists a field value for a given order. This would also optionally set the field value on the customer object if the order is linked to a registered customer.
         *
         * @param string   $key The field key.
         * @param mixed    $value The field value.
         * @param WC_Order $order The order to persist the field for.
         * @param string   $group The group to persist the field for (shipping|billing|other).
         * @param bool     $set_customer Whether to set the field value on the customer or not.
         *
         * @return void
         */
        public function persist_field_for_order(string $key, $value, \WC_Order $order, string $group = 'other', bool $set_customer = true)
        {
        }
        /**
         * Persists a field value for a given customer.
         *
         * @param string      $key The field key.
         * @param mixed       $value The field value.
         * @param WC_Customer $customer The customer to persist the field for.
         * @param string      $group The group to persist the field for (shipping|billing|other).
         *
         * @return void
         */
        public function persist_field_for_customer(string $key, $value, \WC_Customer $customer, string $group = 'other')
        {
        }
        /**
         * Sets a field value in an array meta, supporting routing things to billing, shipping, or additional fields, based on a prefix for the key.
         *
         * @param string               $key The field key.
         * @param mixed                $value The field value.
         * @param WC_Customer|WC_Order $wc_object The object to set the field value for.
         * @param string               $group The group to set the field value for (shipping|billing|other).
         *
         * @return void
         */
        private function set_array_meta(string $key, $value, \WC_Data $wc_object, string $group)
        {
        }
        /**
         * Returns a field value for a given object.
         *
         * @param string               $key The field key.
         * @param WC_Customer|WC_Order $wc_object The customer or order to get the field value for.
         * @param string               $group The group to get the field value for (shipping|billing|other).
         *
         * @return mixed The field value.
         */
        public function get_field_from_object(string $key, \WC_Data $wc_object, string $group = 'other')
        {
        }
        /**
         * Returns an array of all fields values for a given object in a group.
         *
         * @param WC_Data $wc_object The object or order to get the fields for.
         * @param string  $group The group to get the fields for (shipping|billing|other).
         * @param bool    $all Whether to return all fields or only the ones that are still registered. Default false.
         *
         * @return array An array of fields.
         */
        public function get_all_fields_from_object(\WC_Data $wc_object, string $group = 'other', bool $all = false)
        {
        }
        /**
         * Copies additional fields from an order to a customer.
         *
         * @param WC_Order    $order The order to sync the fields for.
         * @param WC_Customer $customer The customer to sync the fields for.
         */
        public function sync_customer_additional_fields_with_order(\WC_Order $order, \WC_Customer $customer)
        {
        }
        /**
         * Copies additional fields from a customer to an order.
         *
         * @param WC_Order    $order The order to sync the fields for.
         * @param WC_Customer $customer The customer to sync the fields for.
         */
        public function sync_order_additional_fields_with_customer(\WC_Order $order, \WC_Customer $customer)
        {
        }
        /**
         * From a set of fields, returns only the ones for a given location.
         *
         * @param array  $fields The fields to filter.
         * @param string $location The location to validate the field for (address|contact|order).
         * @return array The filtered fields.
         */
        public function filter_fields_for_location(array $fields, string $location)
        {
        }
        /**
         * Filter fields for order confirmation.
         *
         * @param array $fields The fields to filter.
         * @return array The filtered fields.
         */
        public function filter_fields_for_order_confirmation($fields)
        {
        }
        /**
         * Get additional fields for an order.
         *
         * @param WC_Order $order Order object.
         * @param string   $location The location to get fields for (address|contact|order).
         * @param string   $group The group to get the field value for (shipping|billing|other).
         * @param string   $context The context to get the field value for (edit|view).
         * @return array An array of fields definitions as well as their values formatted for display.
         */
        public function get_order_additional_fields_with_values(\WC_Order $order, string $location, string $group = 'other', string $context = 'edit')
        {
        }
        /**
         * Formats a raw field value for display based on its type definition.
         *
         * @param string $value Value to format.
         * @param array  $field Additional field definition.
         * @return string
         */
        public function format_additional_field_value($value, $field)
        {
        }
        /**
         * Returns a group meta prefix based on its name.
         *
         * @param string $group_name The group name (billing|shipping|other).
         * @return string The group meta prefix.
         */
        public static function get_group_key($group_name)
        {
        }
        /**
         * Returns a group name based on passed group key.
         *
         * @param string $group_key The group name (_wc_billing|_wc_shipping|_wc_other).
         * @return string The group meta prefix.
         */
        public static function get_group_name($group_key)
        {
        }
    }
    /**
     * Service class managing checkout fields and its related extensibility points in the admin area.
     */
    class CheckoutFieldsAdmin
    {
        /**
         * Checkout field controller.
         *
         * @var CheckoutFields
         */
        private $checkout_fields_controller;
        /**
         * Sets up core fields.
         *
         * @param CheckoutFields $checkout_fields_controller Instance of the checkout field controller.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Services\CheckoutFields $checkout_fields_controller)
        {
        }
        /**
         * Initialize hooks. This is not run Store API requests.
         */
        public function init()
        {
        }
        /**
         * Converts the shape of a checkout field to match whats needed in the WooCommerce meta boxes.
         *
         * @param array  $field The field to format.
         * @param string $key The field key. This will be used for the ID of the field when passed to the meta box.
         * @return array Formatted field.
         */
        protected function format_field_for_meta_box($field, $key)
        {
        }
        /**
         * Updates a field value for an order.
         *
         * @param string    $key The field key.
         * @param mixed     $value The field value.
         * @param \WC_Order $order The order to update the field for.
         */
        public function update_callback($key, $value, $order)
        {
        }
        /**
         * Injects address fields in WC admin orders screen.
         *
         * @param array             $fields The fields to show.
         * @param \WC_Order|boolean $order The order to show the fields for.
         * @param string            $context The context to show the fields for.
         * @return array
         */
        public function admin_address_fields($fields, $order = null, $context = 'edit')
        {
        }
        /**
         * Injects contact fields in WC admin orders screen.
         *
         * @param array             $fields The fields to show.
         * @param \WC_Order|boolean $order The order to show the fields for.
         * @param string            $context The context to show the fields for.
         * @return array
         */
        public function admin_contact_fields($fields, $order = null, $context = 'edit')
        {
        }
        /**
         * Injects additional fields in WC admin orders screen.
         *
         * @param array             $fields The fields to show.
         * @param \WC_Order|boolean $order The order to show the fields for.
         * @param string            $context The context to show the fields for.
         * @return array
         */
        public function admin_order_fields($fields, $order = null, $context = 'edit')
        {
        }
    }
    /**
     * Service class managing checkout fields and its related extensibility points on the frontend.
     */
    class CheckoutFieldsFrontend
    {
        /**
         * Checkout field controller.
         *
         * @var CheckoutFields
         */
        private $checkout_fields_controller;
        /**
         * Sets up core fields.
         *
         * @param CheckoutFields $checkout_fields_controller Instance of the checkout field controller.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Services\CheckoutFields $checkout_fields_controller)
        {
        }
        /**
         * Initialize hooks. This is not run Store API requests.
         */
        public function init()
        {
        }
        /**
         * Render custom fields.
         *
         * @param array $fields List of additional fields with values.
         * @return string
         */
        protected function render_additional_fields($fields)
        {
        }
        /**
         * Render custom field.
         *
         * @param array $field An additional field and value.
         * @return string
         */
        protected function render_additional_field($field)
        {
        }
        /**
         * Renders address fields on the order details page.
         *
         * @param string   $address_type Type of address (billing or shipping).
         * @param WC_Order $order Order object.
         */
        public function render_order_address_fields($address_type, $order)
        {
        }
        /**
         * Renders additional fields on the order details page.
         *
         * @param WC_Order $order Order object.
         */
        public function render_order_other_fields($order)
        {
        }
        /**
         * Renders address fields on the account page.
         *
         * @param string $address_type Type of address (billing or shipping).
         */
        public function render_address_fields($address_type)
        {
        }
        /**
         * Register required additional contact fields.
         *
         * @param array $fields Required fields.
         * @return array
         */
        public function edit_account_form_required_fields($fields)
        {
        }
        /**
         * Adds additional contact fields to the My Account edit account form.
         */
        public function edit_account_form_fields()
        {
        }
        /**
         * Validates and saves additional address fields to the customer object on the My Account page.
         *
         * Customer is not provided by this hook so we handle save here.
         *
         * @param integer $user_id User ID.
         */
        public function save_account_form_fields($user_id)
        {
        }
        /**
         * Adds additional address fields to the My Account edit address form.
         *
         * @param array  $address Address fields.
         * @param string $address_type Type of address (billing or shipping).
         * @return array Updated address fields.
         */
        public function edit_address_fields($address, $address_type)
        {
        }
        /**
         * For the My Account page, save address fields. This uses the Store API endpoint for saving addresses so
         * extensibility hooks are consistent across the codebase.
         *
         * The caller saves the customer object if there are no errors. Nonces are checked before this method executes.
         *
         * @param integer     $user_id User ID.
         * @param string      $address_type Type of address (billing or shipping).
         * @param array       $address Address fields.
         * @param WC_Customer $customer Customer object.
         */
        public function save_address_fields($user_id, $address_type, $address, $customer)
        {
        }
    }
    /**
     * Service class implementing new create account emails used for order processing via the Block Based Checkout.
     */
    class CreateAccount
    {
        /**
         * Reference to the Package instance
         *
         * @var Package
         */
        private $package;
        /**
         * Constructor.
         *
         * @param Package $package An instance of (Woo Blocks) Package.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Package $package)
        {
        }
        /**
         * Init - register handlers for WooCommerce core email hooks.
         */
        public function init()
        {
        }
        /**
         * Trigger new account email.
         * This is intended as a replacement to WC_Emails::customer_new_account(),
         * with a set password link instead of emailing the new password in email
         * content.
         *
         * @param int   $customer_id       The ID of the new customer account.
         * @param array $new_customer_data Assoc array of data for the new account.
         */
        public function customer_new_account($customer_id = 0, array $new_customer_data = array())
        {
        }
    }
    /**
     * Service class for adding DraftOrder functionality to WooCommerce core.
     *
     * Sets up all logic related to the Checkout Draft Orders service
     *
     * @internal
     */
    class DraftOrders
    {
        const DB_STATUS = 'wc-checkout-draft';
        const STATUS = 'checkout-draft';
        /**
         * Holds the Package instance
         *
         * @var Package
         */
        private $package;
        /**
         * Constructor
         *
         * @param Package $package An instance of the package class.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Package $package)
        {
        }
        /**
         * Set all hooks related to adding Checkout Draft order functionality to Woo Core.
         */
        public function init()
        {
        }
        /**
         * Installation related logic for Draft order functionality.
         *
         * @internal
         */
        public function install()
        {
        }
        /**
         * Maybe create cron events.
         */
        protected function maybe_create_cronjobs()
        {
        }
        /**
         * Register custom order status for orders created via the API during checkout.
         *
         * Draft order status is used before payment is attempted, during checkout, when a cart is converted to an order.
         *
         * @param array $statuses Array of statuses.
         * @internal
         * @return array
         */
        public function register_draft_order_status(array $statuses)
        {
        }
        /**
         * Register custom order post status for orders created via the API during checkout.
         *
         * @param array $statuses Array of statuses.
         * @internal
         * @return array
         */
        public function register_draft_order_post_status(array $statuses)
        {
        }
        /**
         * Returns the properties of this post status for registration.
         *
         * @return array
         */
        private function get_post_status_properties()
        {
        }
        /**
         * Remove draft status from the 'status' argument of an $args array.
         *
         * @param array $args Array of arguments containing statuses in the status key.
         * @internal
         * @return array
         */
        public function delete_draft_order_post_status_from_args($args)
        {
        }
        /**
         * Append draft status to a list of statuses.
         *
         * @param array $statuses Array of statuses.
         * @internal
         * @return array
         */
        public function append_draft_order_post_status($statuses)
        {
        }
        /**
         * Delete draft orders older than a day in batches of 20.
         *
         * Ran on a daily cron schedule.
         *
         * @internal
         */
        public function delete_expired_draft_orders()
        {
        }
        /**
         * Since it's possible for third party code to clobber the `$wp_post_statuses` global,
         * we need to do a final check here to make sure the draft post status is
         * registered with the global so that it is not removed by WP_Query status
         * validation checks.
         */
        private function ensure_draft_status_registered()
        {
        }
        /**
         * Asserts whether incoming order results are expected given the query
         * this service class executes.
         *
         * @param WC_Order[] $order_results The order results being asserted.
         * @param int        $expected_batch_size The expected batch size for the results.
         * @throws Exception If any assertions fail, an exception is thrown.
         */
        private function assert_order_results($order_results, $expected_batch_size)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Domain\Services\Email {
    /**
     * Customer New Account.
     *
     * An email sent to the customer when they create an account.
     * This is intended as a replacement to \WC_Email_Customer_New_Account(),
     * with a set password link instead of emailing the new password in email
     * content.
     *
     * @extends     \WC_Email
     */
    class CustomerNewAccount extends \WC_Email
    {
        /**
         * User login name.
         *
         * @var string
         */
        public $user_login;
        /**
         * User email.
         *
         * @var string
         */
        public $user_email;
        /**
         * Magic link to set initial password.
         *
         * @var string
         */
        public $set_password_url;
        /**
         * Override (force) default template path
         *
         * @var string
         */
        public $default_template_path;
        /**
         * Constructor.
         *
         * @param Package $package An instance of (Woo Blocks) Package.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Package $package)
        {
        }
        /**
         * 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()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Domain\Services {
    /**
     * Service class that used to handle feature flags. That functionality
     * is removed now and it is only used to determine "environment".
     *
     * @internal
     */
    class FeatureGating
    {
        /**
         * Current environment
         *
         * @var string
         */
        private $environment;
        const PRODUCTION_ENVIRONMENT = 'production';
        const DEVELOPMENT_ENVIRONMENT = 'development';
        const TEST_ENVIRONMENT = 'test';
        /**
         * Constructor
         *
         * @param string $environment Hardcoded environment value. Useful for tests.
         */
        public function __construct($environment = 'unset')
        {
        }
        /**
         * Set correct environment.
         */
        public function load_environment()
        {
        }
        /**
         * Returns the current environment value.
         *
         * @return string
         */
        public function get_environment()
        {
        }
        /**
         * Checks if we're executing the code in an development environment.
         *
         * @return boolean
         */
        public function is_development_environment()
        {
        }
        /**
         * Checks if we're executing the code in a production environment.
         *
         * @return boolean
         */
        public function is_production_environment()
        {
        }
        /**
         * Checks if we're executing the code in a test environment.
         *
         * @return boolean
         */
        public function is_test_environment()
        {
        }
    }
    /**
     * Service class to integrate Blocks with the Google Analytics extension,
     */
    class GoogleAnalytics
    {
        /**
         * Instance of the asset API.
         *
         * @var AssetApi
         */
        protected $asset_api;
        /**
         * Constructor.
         *
         * @param AssetApi $asset_api Instance of the asset API.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Hook into WP.
         */
        public function init()
        {
        }
        /**
         * Register scripts.
         */
        public function register_assets()
        {
        }
        /**
         * Enqueue the Google Tag Manager script if prerequisites are met.
         */
        public function enqueue_scripts()
        {
        }
        /**
         * Get settings from the GA integration extension.
         *
         * @return array
         */
        private function get_google_analytics_settings()
        {
        }
        /**
         * Add async to script tags with defined handles.
         *
         * @param string $tag HTML for the script tag.
         * @param string $handle Handle of script.
         * @param string $src Src of script.
         * @return string
         */
        public function async_script_loader_tags($tag, $handle, $src)
        {
        }
    }
    /**
     * Service class that handles hydration of API data for blocks.
     */
    class Hydration
    {
        /**
         * Instance of the asset data registry.
         *
         * @var AssetDataRegistry
         */
        protected $asset_data_registry;
        /**
         * Cached notices to restore after hydrating the API.
         *
         * @var array
         */
        protected $cached_store_notices = array();
        /**
         * Constructor.
         *
         * @param AssetDataRegistry $asset_data_registry Instance of the asset data registry.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry)
        {
        }
        /**
         * Hydrates the asset data registry with data from the API. Disables notices and nonces so requests contain valid
         * data that is not polluted by the current session.
         *
         * @param array $path API paths to hydrate e.g. '/wc/store/v1/cart'.
         * @return array Response data.
         */
        public function get_rest_api_response_data($path = '')
        {
        }
        /**
         * Helper method to generate GET response from a controller. Also fires the `rest_request_after_callbacks` for backward compatibility.
         *
         * @param string $controller_class Controller class FQN that will respond to the request.
         * @param string $path             Request path regex.
         *
         * @return false|mixed|null Response
         */
        private function get_response_from_controller($controller_class, $path)
        {
        }
        /**
         * Inspired from WP core's `match_request_to_handler`, this matches a given path from available route regexes.
         * However, unlike WP core, this does not check against query params, request method etc.
         *
         * @param string $path The path to match.
         * @param array  $available_routes Available routes in { $regex1 => $contoller_class1, ... } format.
         *
         * @return string|null
         */
        private function match_route_to_handler($path, $available_routes)
        {
        }
        /**
         * Disable the nonce check temporarily.
         */
        protected function disable_nonce_check()
        {
        }
        /**
         * Callback to disable the nonce check. While we could use `__return_true`, we use a custom named callback so that
         * we can remove it later without affecting other filters.
         */
        public function disable_nonce_check_callback()
        {
        }
        /**
         * Restore the nonce check.
         */
        protected function restore_nonce_check()
        {
        }
        /**
         * Cache notices before hydrating the API if the customer has a session.
         */
        protected function cache_store_notices()
        {
        }
        /**
         * Restore notices into current session from cache.
         */
        protected function restore_cached_store_notices()
        {
        }
    }
    /**
     * Service class for adding new-style Notices to WooCommerce core.
     *
     * @internal
     */
    class Notices
    {
        /**
         * Holds the Package instance
         *
         * @var Package
         */
        private $package;
        /**
         * Templates used for notices.
         *
         * @var array
         */
        private $notice_templates = array('notices/error.php', 'notices/notice.php', 'notices/success.php');
        /**
         * Constructor
         *
         * @param Package $package An instance of the package class.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Domain\Package $package)
        {
        }
        /**
         * Initialize notice hooks.
         */
        public function init()
        {
        }
        /**
         * Allow SVG icon in notices.
         *
         * @param array $allowed_tags Allowed tags.
         * @return array
         */
        public function add_kses_notice_allowed_tags($allowed_tags)
        {
        }
        /**
         * Replaces core notice templates with those from blocks.
         *
         * The new notice templates match block components with matching icons and styling. The differences are:
         * 1. Core has notices for info, success, and error notices, blocks has notices for info, success, error,
         * warning, and a default notice type.
         * 2. The block notices use different CSS classes to the core notices. Core uses `woocommerce-message`, `is-info`
         * and `is-error` classes, blocks uses `wc-block-components-notice-banner is-error`,
         * `wc-block-components-notice-banner is-info`, and `wc-block-components-notice-banner is-success`.
         * 3. The markup of the notices is different, with the block notices using SVG icons and a slightly different
         * structure to accommodate this.
         *
         * @param string $template Located template path.
         * @param string $template_name Template name.
         * @param array  $args Template arguments.
         * @param string $template_path Template path.
         * @param string $default_path Default path.
         * @return string
         */
        public function get_notices_template($template, $template_name, $args, $template_path, $default_path)
        {
        }
        /**
         * Replaces all notices with the new block-based notices.
         *
         * @return void
         */
        public function enqueue_notice_styles()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Domain\Services\OnboardingTasks {
    /**
     * Review the cart/checkout Task
     */
    class ReviewCheckoutTask extends \Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task
    {
        /**
         * ID.
         *
         * @return string
         */
        public function get_id()
        {
        }
        /**
         * Title.
         *
         * @return string
         */
        public function get_title()
        {
        }
        /**
         * Content.
         *
         * @return string
         */
        public function get_content()
        {
        }
        /**
         * Time.
         *
         * @return string
         */
        public function get_time()
        {
        }
        /**
         * Additional Info.
         *
         * @return string
         */
        public function get_additional_info()
        {
        }
        /**
         * Task completion.
         *
         * @return bool
         */
        public function is_complete()
        {
        }
        /**
         * Check if the store uses blocks on the cart or checkout page.
         *
         * @return boolean
         */
        private function has_cart_block()
        {
        }
        /**
         * Check if the store uses blocks on the cart or checkout page.
         *
         * @return boolean
         */
        private function has_checkout_block()
        {
        }
        /**
         * Check if the store uses blocks on the cart or checkout page.
         *
         * @return boolean
         */
        private function has_cart_or_checkout_block()
        {
        }
        /**
         * Task visibility.
         *
         * @return bool
         */
        public function can_view()
        {
        }
        /**
         * Action URL.
         *
         * @return string
         */
        public function get_action_url()
        {
        }
    }
    /**
     * Onboarding Tasks Controller
     */
    class TasksController
    {
        /**
         * Init tasks.
         */
        public function init()
        {
        }
        /**
         * Register tasks.
         */
        public function register_tasks()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Images {
    /**
     * Pexels API client.
     *
     * @internal
     */
    class Pexels
    {
        /**
         * The Pexels API endpoint.
         */
        const EXTERNAL_MEDIA_PEXELS_ENDPOINT = '/wpcom/v2/external-media/list/pexels';
        /**
         * Returns the list of images for the given search criteria.
         *
         * @param Connection $ai_connection The AI connection.
         * @param string     $token The JWT token.
         * @param string     $business_description The business description.
         *
         * @return array|\WP_Error Array of images, or WP_Error if the request failed.
         */
        public function get_images($ai_connection, $token, $business_description)
        {
        }
        /**
         * Define the search term to be used on Pexels using the AI endpoint.
         *
         * The search term is a shorter description of the business.
         *
         * @param Connection $ai_connection The AI connection.
         * @param string     $token The JWT token.
         * @param string     $business_description The business description.
         *
         * @return mixed|\WP_Error
         */
        private function define_search_term($ai_connection, $token, $business_description)
        {
        }
        /**
         * Refine the results returned by Pexels API.
         *
         * @param  Connection $ai_connection  The AI connection.
         * @param  string     $token  The JWT token.
         * @param  string     $business_description  The business description.
         * @param  array      $returned_images  The returned images.
         *
         * @return array|\WP_Error The refined images, or WP_Error if the request failed.
         */
        private function refine_returned_images_results($ai_connection, $token, $business_description, $returned_images)
        {
        }
        /**
         * Make a request to the Pexels API.
         *
         * @param string $search_term The search term to use.
         * @param int    $per_page The number of images to return.
         *
         * @return array|\WP_Error The response body, or WP_Error if the request failed.
         */
        private function request(string $search_term, int $per_page = 100)
        {
        }
        /**
         * Total number of required images.
         *
         * @return array|\WP_Error The total number of required images, or WP_Error if the request failed.
         */
        private function total_number_required_images()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * A class used to display inbox messages to merchants in the WooCommerce Admin dashboard.
     *
     * @package Automattic\WooCommerce\Blocks
     * @since x.x.x
     */
    class InboxNotifications
    {
        const SURFACE_CART_CHECKOUT_NOTE_NAME = 'surface_cart_checkout';
        /**
         * Deletes the note.
         */
        public static function delete_surface_cart_checkout_blocks_notification()
        {
        }
    }
    /**
     * Installer class.
     * Handles installation of Blocks plugin dependencies.
     *
     * @internal
     */
    class Installer
    {
        /**
         * Initialize class features.
         */
        public function init()
        {
        }
        /**
         * Installation tasks ran on admin_init callback.
         */
        public function install()
        {
        }
        /**
         * Modifies default page content replacing it with classic shortcode block.
         * We check for shortcode as default because after WooCommerce 8.3, block-based checkout is used by default.
         * This only runs on Tools > Create Pages as the filter is not applied on WooCommerce plugin activation.
         *
         * @param array $pages Default pages.
         * @return array
         */
        public function create_pages($pages)
        {
        }
        /**
         * Set up the database tables which the plugin needs to function.
         */
        public function maybe_create_tables()
        {
        }
        /**
         * Create database table, if it doesn't already exist.
         *
         * Based on admin/install-helper.php maybe_create_table function.
         *
         * @param string $table_name Database table name.
         * @param string $create_sql Create database table SQL.
         * @return bool False on error, true if already exists or success.
         */
        protected function maybe_create_table($table_name, $create_sql)
        {
        }
        /**
         * Add a notice if table creation fails.
         *
         * @param string $table_name Name of the missing table.
         */
        protected function add_create_table_notice($table_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Integrations {
    /**
     * Integration.Interface
     *
     * Integrations must use this interface when registering themselves with blocks,
     */
    interface IntegrationInterface
    {
        /**
         * The name of the integration.
         *
         * @return string
         */
        public function get_name();
        /**
         * When called invokes any initialization/setup for the integration.
         */
        public function initialize();
        /**
         * Returns an array of script handles to enqueue in the frontend context.
         *
         * @return string[]
         */
        public function get_script_handles();
        /**
         * Returns an array of script handles to enqueue in the editor context.
         *
         * @return string[]
         */
        public function get_editor_script_handles();
        /**
         * An array of key, value pairs of data made available to the block on the client side.
         *
         * @return array
         */
        public function get_script_data();
    }
    /**
     * Class used for tracking registered integrations with various Block types.
     */
    class IntegrationRegistry
    {
        /**
         * Integration identifier is used to construct hook names and is given when the integration registry is initialized.
         *
         * @var string
         */
        protected $registry_identifier = '';
        /**
         * Registered integrations, as `$name => $instance` pairs.
         *
         * @var IntegrationInterface[]
         */
        protected $registered_integrations = [];
        /**
         * Initializes all registered integrations.
         *
         * Integration identifier is used to construct hook names and is given when the integration registry is initialized.
         *
         * @param string $registry_identifier Identifier for this registry.
         */
        public function initialize($registry_identifier = '')
        {
        }
        /**
         * Registers an integration.
         *
         * @param IntegrationInterface $integration An instance of IntegrationInterface.
         *
         * @return boolean True means registered successfully.
         */
        public function register(\Automattic\WooCommerce\Blocks\Integrations\IntegrationInterface $integration)
        {
        }
        /**
         * Checks if an integration is already registered.
         *
         * @param string $name Integration name.
         * @return bool True if the integration is registered, false otherwise.
         */
        public function is_registered($name)
        {
        }
        /**
         * Un-register an integration.
         *
         * @param string|IntegrationInterface $name Integration name, or alternatively a IntegrationInterface instance.
         * @return boolean|IntegrationInterface Returns the unregistered integration instance if unregistered successfully.
         */
        public function unregister($name)
        {
        }
        /**
         * Retrieves a registered Integration by name.
         *
         * @param string $name Integration name.
         * @return IntegrationInterface|null The registered integration, or null if it is not registered.
         */
        public function get_registered($name)
        {
        }
        /**
         * Retrieves all registered integrations.
         *
         * @return IntegrationInterface[]
         */
        public function get_all_registered()
        {
        }
        /**
         * Gets an array of all registered integration's script handles for the editor.
         *
         * @return string[]
         */
        public function get_all_registered_editor_script_handles()
        {
        }
        /**
         * Gets an array of all registered integration's script handles.
         *
         * @return string[]
         */
        public function get_all_registered_script_handles()
        {
        }
        /**
         * Gets an array of all registered integration's script data.
         *
         * @return array
         */
        public function get_all_registered_script_data()
        {
        }
    }
}
namespace {
    /**
     * Manages the initial state of the Interactivity API store in the server and
     * its serialization so it can be restored in the browser upon hydration.
     *
     * It's a private class, exposed by other functions, like `wc_initial_state`.
     *
     * @access private
     */
    class WC_Interactivity_Initial_State
    {
        /**
         * Map of initial state by namespace.
         *
         * @var array
         */
        private static $initial_state = array();
        /**
         * Get state from a given namespace.
         *
         * @param string $namespace Namespace.
         *
         * @return array The requested state.
         */
        public static function get_state($namespace)
        {
        }
        /**
         * Merge data into the state with the given namespace.
         *
         * @param string $namespace Namespace.
         * @param array  $data      State to merge.
         *
         * @return void
         */
        public static function merge_state($namespace, $data)
        {
        }
        /**
         * Reset the initial state.
         */
        public static function reset()
        {
        }
        /**
         * Render the initial state.
         */
        public static function render()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\InteractivityComponents {
    /**
     * CheckboxList class. This is a component for reuse with interactivity API.
     *
     * @package Automattic\WooCommerce\Blocks\InteractivityComponents
     */
    class CheckboxList
    {
        /**
         * Render the checkbox list.
         *
         * @param mixed $props The properties to render the dropdown with.
         *                  items: array of objects with label and value properties.
         *                      - id: string of the id to use for the checkbox (optional).
         *                      - checked: boolean to indicate if the checkbox is checked.
         *                      - label: string of the label to display (plaintext or HTML).
         *                      - aria_label: string of the aria label to use for the checkbox. (optional, plaintext only).
         *                      - value: string of the value to use.
         *                  on_change: string of the action to perform when the dropdown changes.
         * @return string|false
         */
        public static function render($props)
        {
        }
    }
    /**
     * Dropdown class. This is a component for reuse with interactivity API.
     *
     * @package Automattic\WooCommerce\Blocks\InteractivityComponents
     */
    class Dropdown
    {
        /**
         * Render the dropdown.
         *
         * @param mixed $props The properties to render the dropdown with.
         * @return string|false
         */
        public static function render($props)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * Library class.
     *
     * @deprecated 5.0.0 This class will be removed in a future release. This has been replaced by BlockTypesController.
     * @internal
     */
    class Library
    {
        /**
         * Initialize block library features.
         *
         * @deprecated 5.0.0
         */
        public static function init()
        {
        }
        /**
         * Register custom tables within $wpdb object.
         *
         * @deprecated 5.0.0
         */
        public static function define_tables()
        {
        }
        /**
         * Register blocks, hooking up assets and render functions as needed.
         *
         * @deprecated 5.0.0
         */
        public static function register_blocks()
        {
        }
    }
    /**
     * Takes care of the migrations.
     *
     * @since 2.5.0
     */
    class Migration
    {
        /**
         * DB updates and callbacks that need to be run per version.
         *
         * Please note that these functions are invoked when WooCommerce Blocks is updated from a previous version,
         * but NOT when WooCommerce Blocks is newly installed.
         *
         * @var array
         */
        private $db_upgrades = array('10.3.0' => array('wc_blocks_update_1030_blockified_product_grid_block'), '11.2.0' => array('wc_blocks_update_1120_rename_checkout_template', 'wc_blocks_update_1120_rename_cart_template'));
        /**
         * Runs all the necessary migrations.
         *
         * @var array
         */
        public function run_migrations()
        {
        }
        /**
         * Set a flag to indicate if the blockified Product Grid Block should be rendered by default.
         */
        public static function wc_blocks_update_1030_blockified_product_grid_block()
        {
        }
        /**
         * Rename `checkout` template to `page-checkout`.
         */
        public static function wc_blocks_update_1120_rename_checkout_template()
        {
        }
        /**
         * Rename `cart` template to `page-cart`.
         */
        public static function wc_blocks_update_1120_rename_cart_template()
        {
        }
    }
    /**
     * Contains all the option names used by the plugin.
     */
    class Options
    {
        const WC_BLOCK_VERSION = 'wc_blocks_version';
        const WC_BLOCK_USE_BLOCKIFIED_PRODUCT_GRID_BLOCK_AS_TEMPLATE = 'wc_blocks_use_blockified_product_grid_block_as_template';
    }
    /**
     * Main package class.
     *
     * Returns information about the package and handles init.
     *
     * In the context of this plugin, it handles init and is called from the main
     * plugin file (woocommerce-gutenberg-products-block.php).
     *
     * In the context of WooCommerce core, it handles init and is called from
     * WooCommerce's package loader. The main plugin file is _not_ loaded.
     *
     * @since 2.5.0
     */
    class Package
    {
        /**
         * For back compat this is provided. Ideally, you should register your
         * class with Automattic\Woocommerce\Blocks\Container and make Package a
         * dependency.
         *
         * @since 2.5.0
         * @return Package  The Package instance class
         */
        protected static function get_package()
        {
        }
        /**
         * Init the package - load the blocks library and define constants.
         *
         * @since 2.5.0 Handled by new NewPackage.
         */
        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()
        {
        }
        /**
         * Returns an instance of the FeatureGating class.
         *
         * @return FeatureGating
         */
        public static function feature()
        {
        }
        /**
         * Loads the dependency injection container for woocommerce blocks.
         *
         * @param boolean $reset Used to reset the container to a fresh instance.
         *                       Note: this means all dependencies will be
         *                       reconstructed.
         */
        public static function container($reset = false)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Patterns {
    /**
     * AIPatterns class.
     *
     * @internal
     */
    class AIPatterns
    {
        const PATTERNS_AI_DATA_POST_TYPE = 'patterns_ai_data';
        /**
         * Constructor for the class.
         */
        public function __construct()
        {
        }
        /**
         * Register the Patterns AI Data post type to store patterns with the AI-generated content.
         */
        public function register_patterns_ai_data_post_type()
        {
        }
        /**
         * Make sure the 'woocommerce_blocks_allow_ai_connection' option is set to true if the site is connected to AI.
         *
         * @return bool
         */
        public function update_ai_connection_allowed_option() : bool
        {
        }
        /**
         * Update the patterns content when the store description is changed.
         *
         * @param string $option The option name.
         * @param string $value The option value.
         */
        public function schedule_on_option_update($option, $value)
        {
        }
        /**
         * Update the patterns content when the WooCommerce Blocks plugin is updated.
         *
         * @param \WP_Upgrader $upgrader_object  WP_Upgrader instance.
         * @param array        $options  Array of bulk item update data.
         */
        public function schedule_on_plugin_update($upgrader_object, $options)
        {
        }
        /**
         * Update the patterns content when the store description is changed.
         *
         * @param string $business_description The business description.
         */
        public function schedule_patterns_content_update($business_description)
        {
        }
        /**
         * Update the patterns content.
         *
         * @return bool|string|\WP_Error
         */
        public function update_patterns_content()
        {
        }
    }
    /**
     * PatternsToolkit class.
     *
     * @internal
     */
    class PTKClient
    {
        /**
         *  The Patterns Toolkit API URL
         */
        const PATTERNS_TOOLKIT_URL = 'https://public-api.wordpress.com/rest/v1/ptk/patterns/';
        /**
         * Fetch the WooCommerce patterns from the Patterns Toolkit (PTK) API.
         *
         * @param array $options Options for fetching patterns.
         * @return array|WP_Error
         */
        public function fetch_patterns(array $options = array())
        {
        }
    }
    /**
     * PTKPatterns class.
     *
     * @internal
     */
    class PTKPatternsStore
    {
        const TRANSIENT_NAME = 'ptk_patterns';
        const CATEGORY_MAPPING = array('testimonials' => 'reviews');
        /**
         * PatternsToolkit instance.
         *
         * @var PTKClient $ptk_client
         */
        private \Automattic\WooCommerce\Blocks\Patterns\PTKClient $ptk_client;
        /**
         * Constructor for the class.
         *
         * @param PTKClient $ptk_client An instance of PatternsToolkit.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Patterns\PTKClient $ptk_client)
        {
        }
        /**
         * Resets the cached patterns when the `woocommerce_allow_tracking` option is disabled.
         * Resets and fetch the patterns from the PTK when it is enabled (if the scheduler
         * is initialized, it's done asynchronously via a scheduled action).
         *
         * @return void
         */
        public function flush_or_fetch_patterns()
        {
        }
        /**
         * Schedule an async action to fetch the PTK patterns when the scheduler is initialized.
         *
         * @return void
         */
        private function schedule_fetch_patterns()
        {
        }
        /**
         * Schedule an action if it's not already pending.
         *
         * @param string $action The action name to schedule.
         * @return void
         */
        private function schedule_action_if_not_pending($action)
        {
        }
        /**
         * Get the patterns from the Patterns Toolkit cache.
         *
         * @return array
         */
        public function get_patterns()
        {
        }
        /**
         * Filter the patterns that have external dependencies.
         *
         * @param array $patterns The patterns to filter.
         * @return array
         */
        private function filter_patterns(array $patterns)
        {
        }
        /**
         * Re-fetch the patterns when the WooCommerce plugin is updated.
         *
         * @param WP_Upgrader $upgrader_object WP_Upgrader instance.
         * @param array       $options Array of bulk item update data.
         *
         * @return void
         */
        public function fetch_patterns_on_plugin_update($upgrader_object, $options)
        {
        }
        /**
         * Reset the cached patterns to fetch them again from the PTK.
         *
         * @return void
         */
        public function flush_cached_patterns()
        {
        }
        /**
         * Reset the cached patterns and fetch them again from the PTK API.
         *
         * @return void
         */
        public function fetch_patterns()
        {
        }
        /**
         * Check if the user allowed tracking.
         *
         * @return bool
         */
        private function allowed_tracking_is_enabled() : bool
        {
        }
        /**
         * Change the categories of the patterns to match the ones used in the CYS flow
         *
         * @param array $patterns The patterns to map categories for.
         * @return array The patterns with the categories mapped.
         */
        private function map_categories(array $patterns)
        {
        }
        /**
         * Check if the pattern has external dependencies.
         *
         * @param array $pattern The pattern to check.
         *
         * @return bool
         */
        private function has_external_dependencies($pattern)
        {
        }
    }
    /**
     * PatternRegistry class.
     *
     * @internal
     */
    class PatternRegistry
    {
        const SLUG_REGEX = '/^[A-z0-9\\/_-]+$/';
        const COMMA_SEPARATED_REGEX = '/[\\s,]+/';
        /**
         * Returns pattern slugs with their localized labels for categorization.
         *
         * Each key represents a unique pattern slug, while the value is the localized label.
         *
         * @return array<string, string>
         */
        private function get_category_labels()
        {
        }
        /**
         * Register a block pattern.
         *
         * @param string $source The pattern source.
         * @param array  $pattern_data The pattern data.
         * @param array  $dictionary The patterns' dictionary.
         *
         * @return void
         */
        public function register_block_pattern($source, $pattern_data, $dictionary)
        {
        }
        /**
         * Filter the patterns dictionary to get the pattern data corresponding to the pattern slug.
         *
         * @param array  $dictionary The patterns' dictionary.
         * @param string $slug The pattern slug.
         *
         * @return array|null
         */
        private function get_pattern_from_dictionary($dictionary, $slug)
        {
        }
        /**
         * Convert a kebab-case string to capital case.
         *
         * @param string $value The kebab-case string.
         *
         * @return string
         */
        private static function kebab_to_capital_case($value)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Payments {
    /**
     *  The Api class provides an interface to payment method registration.
     *
     * @since 2.6.0
     */
    class Api
    {
        /**
         * Reference to the PaymentMethodRegistry instance.
         *
         * @var PaymentMethodRegistry
         */
        private $payment_method_registry;
        /**
         * Reference to the AssetDataRegistry instance.
         *
         * @var AssetDataRegistry
         */
        private $asset_registry;
        /**
         * Constructor
         *
         * @param PaymentMethodRegistry $payment_method_registry An instance of Payment Method Registry.
         * @param AssetDataRegistry     $asset_registry  Used for registering data to pass along to the request.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry $payment_method_registry, \Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_registry)
        {
        }
        /**
         * Initialize class features.
         */
        public function init()
        {
        }
        /**
         * Add payment method script handles as script dependencies.
         *
         * @param array  $dependencies Array of script dependencies.
         * @param string $handle Script handle.
         * @return array
         */
        public function add_payment_method_script_dependencies($dependencies, $handle)
        {
        }
        /**
         * Returns true if the payment gateway is enabled.
         *
         * @param object $gateway Payment gateway.
         * @return boolean
         */
        private function is_payment_gateway_enabled($gateway)
        {
        }
        /**
         * Add payment method data to Asset Registry.
         */
        public function add_payment_method_script_data()
        {
        }
        /**
         * Register payment method integrations bundled with blocks.
         *
         * @param PaymentMethodRegistry $payment_method_registry Payment method registry instance.
         */
        public function register_payment_method_integrations(\Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry $payment_method_registry)
        {
        }
        /**
         * Verify all dependencies of registered payment methods have been registered.
         * If not, remove that payment method script from the list of dependencies
         * of Cart and Checkout block scripts so it doesn't break the blocks and show
         * an error in the admin.
         */
        public function verify_payment_methods_dependencies()
        {
        }
    }
    interface PaymentMethodTypeInterface extends \Automattic\WooCommerce\Blocks\Integrations\IntegrationInterface
    {
        /**
         * Returns if this payment method should be active. If false, the scripts will not be enqueued.
         *
         * @return boolean
         */
        public function is_active();
        /**
         * Returns an array of script handles to enqueue for this payment method in
         * the frontend context
         *
         * @return string[]
         */
        public function get_payment_method_script_handles();
        /**
         * Returns an array of script handles to enqueue for this payment method in
         * the admin context
         *
         * @return string[]
         */
        public function get_payment_method_script_handles_for_admin();
        /**
         * An array of key, value pairs of data made available to payment methods
         * client side.
         *
         * @return array
         */
        public function get_payment_method_data();
        /**
         * Get array of supported features.
         *
         * @return string[]
         */
        public function get_supported_features();
    }
}
namespace Automattic\WooCommerce\Blocks\Payments\Integrations {
    /**
     * AbstractPaymentMethodType class.
     *
     * @since 2.6.0
     */
    abstract class AbstractPaymentMethodType implements \Automattic\WooCommerce\Blocks\Payments\PaymentMethodTypeInterface
    {
        /**
         * Payment method name defined by payment methods extending this class.
         *
         * @var string
         */
        protected $name = '';
        /**
         * Settings from the WP options table
         *
         * @var array
         */
        protected $settings = [];
        /**
         * Get a setting from the settings array if set.
         *
         * @param string $name Setting name.
         * @param mixed  $default Value that is returned if the setting does not exist.
         * @return mixed
         */
        protected function get_setting($name, $default = '')
        {
        }
        /**
         * Returns the name of the payment method.
         */
        public function get_name()
        {
        }
        /**
         * Returns if this payment method should be active. If false, the scripts will not be enqueued.
         *
         * @return boolean
         */
        public function is_active()
        {
        }
        /**
         * Returns an array of script handles to enqueue for this payment method in
         * the frontend context
         *
         * @return string[]
         */
        public function get_payment_method_script_handles()
        {
        }
        /**
         * Returns an array of script handles to enqueue for this payment method in
         * the admin context
         *
         * @return string[]
         */
        public function get_payment_method_script_handles_for_admin()
        {
        }
        /**
         * Returns an array of supported features.
         *
         * @return string[]
         */
        public function get_supported_features()
        {
        }
        /**
         * An array of key, value pairs of data made available to payment methods
         * client side.
         *
         * @return array
         */
        public function get_payment_method_data()
        {
        }
        /**
         * Returns an array of script handles to enqueue in the frontend context.
         *
         * Alias of get_payment_method_script_handles. Defined by IntegrationInterface.
         *
         * @return string[]
         */
        public function get_script_handles()
        {
        }
        /**
         * Returns an array of script handles to enqueue in the admin context.
         *
         * Alias of get_payment_method_script_handles_for_admin. Defined by IntegrationInterface.
         *
         * @return string[]
         */
        public function get_editor_script_handles()
        {
        }
        /**
         * An array of key, value pairs of data made available to the block on the client side.
         *
         * Alias of get_payment_method_data. Defined by IntegrationInterface.
         *
         * @return array
         */
        public function get_script_data()
        {
        }
    }
    /**
     * Bank Transfer (BACS) payment method integration
     *
     * @since 3.0.0
     */
    final class BankTransfer extends \Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType
    {
        /**
         * Payment method name/id/slug (matches id in WC_Gateway_BACS in core).
         *
         * @var string
         */
        protected $name = 'bacs';
        /**
         * An instance of the Asset Api
         *
         * @var Api
         */
        private $asset_api;
        /**
         * Constructor
         *
         * @param Api $asset_api An instance of Api.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Initializes the payment method type.
         */
        public function initialize()
        {
        }
        /**
         * Returns if this payment method should be active. If false, the scripts will not be enqueued.
         *
         * @return boolean
         */
        public function is_active()
        {
        }
        /**
         * Returns an array of scripts/handles to be registered for this payment method.
         *
         * @return array
         */
        public function get_payment_method_script_handles()
        {
        }
        /**
         * Returns an array of key=>value pairs of data made available to the payment methods script.
         *
         * @return array
         */
        public function get_payment_method_data()
        {
        }
    }
    /**
     * Cash on Delivery (COD) payment method integration
     *
     * @since 3.0.0
     */
    final class CashOnDelivery extends \Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType
    {
        /**
         * Payment method name/id/slug (matches id in WC_Gateway_COD in core).
         *
         * @var string
         */
        protected $name = 'cod';
        /**
         * An instance of the Asset Api
         *
         * @var Api
         */
        private $asset_api;
        /**
         * Constructor
         *
         * @param Api $asset_api An instance of Api.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Initializes the payment method type.
         */
        public function initialize()
        {
        }
        /**
         * Returns if this payment method should be active. If false, the scripts will not be enqueued.
         *
         * @return boolean
         */
        public function is_active()
        {
        }
        /**
         * Return enable_for_virtual option.
         *
         * @return boolean True if store allows COD payment for orders containing only virtual products.
         */
        private function get_enable_for_virtual()
        {
        }
        /**
         * Return enable_for_methods option.
         *
         * @return array Array of shipping methods (string ids) that allow COD. (If empty, all support COD.)
         */
        private function get_enable_for_methods()
        {
        }
        /**
         * Returns an array of scripts/handles to be registered for this payment method.
         *
         * @return array
         */
        public function get_payment_method_script_handles()
        {
        }
        /**
         * Returns an array of key=>value pairs of data made available to the payment methods script.
         *
         * @return array
         */
        public function get_payment_method_data()
        {
        }
    }
    /**
     * Cheque payment method integration
     *
     * @since 2.6.0
     */
    final class Cheque extends \Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType
    {
        /**
         * Payment method name defined by payment methods extending this class.
         *
         * @var string
         */
        protected $name = 'cheque';
        /**
         * An instance of the Asset Api
         *
         * @var Api
         */
        private $asset_api;
        /**
         * Constructor
         *
         * @param Api $asset_api An instance of Api.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Initializes the payment method type.
         */
        public function initialize()
        {
        }
        /**
         * Returns if this payment method should be active. If false, the scripts will not be enqueued.
         *
         * @return boolean
         */
        public function is_active()
        {
        }
        /**
         * Returns an array of scripts/handles to be registered for this payment method.
         *
         * @return array
         */
        public function get_payment_method_script_handles()
        {
        }
        /**
         * Returns an array of key=>value pairs of data made available to the payment methods script.
         *
         * @return array
         */
        public function get_payment_method_data()
        {
        }
    }
    /**
     * PayPal Standard payment method integration
     *
     * @since 2.6.0
     */
    final class PayPal extends \Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType
    {
        /**
         * Payment method name defined by payment methods extending this class.
         *
         * @var string
         */
        protected $name = 'paypal';
        /**
         * An instance of the Asset Api
         *
         * @var Api
         */
        private $asset_api;
        /**
         * Constructor
         *
         * @param Api $asset_api An instance of Api.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api)
        {
        }
        /**
         * Initializes the payment method type.
         */
        public function initialize()
        {
        }
        /**
         * Returns if this payment method should be active. If false, the scripts will not be enqueued.
         *
         * @return boolean
         */
        public function is_active()
        {
        }
        /**
         * Returns an array of scripts/handles to be registered for this payment method.
         *
         * @return array
         */
        public function get_payment_method_script_handles()
        {
        }
        /**
         * Returns an array of key=>value pairs of data made available to the payment methods script.
         *
         * @return array
         */
        public function get_payment_method_data()
        {
        }
        /**
         * Returns an array of supported features.
         *
         * @return string[]
         */
        public function get_supported_features()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Payments {
    /**
     * Class used for interacting with payment method types.
     *
     * @since 2.6.0
     */
    final class PaymentMethodRegistry extends \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry
    {
        /**
         * Integration identifier is used to construct hook names and is given when the integration registry is initialized.
         *
         * @var string
         */
        protected $registry_identifier = 'payment_method_type';
        /**
         * Retrieves all registered payment methods that are also active.
         *
         * @return PaymentMethodTypeInterface[]
         */
        public function get_all_active_registered()
        {
        }
        /**
         * Gets an array of all registered payment method script handles, but only for active payment methods.
         *
         * @return string[]
         */
        public function get_all_active_payment_method_script_dependencies()
        {
        }
        /**
         * Gets an array of all registered payment method script data, but only for active payment methods.
         *
         * @return array
         */
        public function get_all_registered_script_data()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * Process the query data for filtering purposes.
     */
    final class QueryFilters
    {
        /**
         * Initialization method.
         *
         * @internal
         */
        public function init()
        {
        }
        /**
         * Filter the posts clauses of the main query to support global filters.
         *
         * @param array     $args     Query args.
         * @param \WP_Query $wp_query WP_Query object.
         * @return array
         */
        public function main_query_filter($args, $wp_query)
        {
        }
        /**
         * Add conditional query clauses based on the filter params in query vars.
         *
         * @param array     $args     Query args.
         * @param \WP_Query $wp_query WP_Query object.
         * @return array
         */
        public function add_query_clauses($args, $wp_query)
        {
        }
        /**
         * Get price data for current products.
         *
         * @param array $query_vars The WP_Query arguments.
         * @return object
         */
        public function get_filtered_price($query_vars)
        {
        }
        /**
         * Get stock status counts for the current products.
         *
         * @param array $query_vars The WP_Query arguments.
         * @return array status=>count pairs.
         */
        public function get_stock_status_counts($query_vars)
        {
        }
        /**
         * Get rating counts for the current products.
         *
         * @param array $query_vars The WP_Query arguments.
         * @return array rating=>count pairs.
         */
        public function get_rating_counts($query_vars)
        {
        }
        /**
         * Get attribute counts for the current products.
         *
         * @param array  $query_vars         The WP_Query arguments.
         * @param string $attribute_to_count Attribute taxonomy name.
         * @return array termId=>count pairs.
         */
        public function get_attribute_counts($query_vars, $attribute_to_count)
        {
        }
        /**
         * Add query clauses for stock filter.
         *
         * @param array     $args     Query args.
         * @param \WP_Query $wp_query WP_Query object.
         * @return array
         */
        private function stock_filter_clauses($args, $wp_query)
        {
        }
        /**
         * Add query clauses for price filter.
         *
         * @param array     $args     Query args.
         * @param \WP_Query $wp_query WP_Query object.
         * @return array
         */
        private function price_filter_clauses($args, $wp_query)
        {
        }
        /**
         * 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)
        {
        }
        /**
         * Generate calculate query by stock status.
         *
         * @param string $status status to calculate.
         * @param string $product_query_sql product query for current filter state.
         * @param array  $stock_status_options available stock status options.
         *
         * @return false|string
         */
        private function generate_stock_status_count_query($status, $product_query_sql, $stock_status_options)
        {
        }
        /**
         * Get query for price filters when dealing with displayed taxes.
         *
         * @param float  $price_filter Price filter to apply.
         * @param string $column Price being filtered (min or max).
         * @param string $operator Comparison operator for column.
         * @return string Constructed query.
         */
        private function get_price_filter_query_for_displayed_taxes($price_filter, $column = 'min_price', $operator = '>=')
        {
        }
        /**
         * If price filters need adjustment to work with displayed taxes, this returns true.
         *
         * This logic is used when prices are stored in the database differently to how they are being displayed, with regards
         * to taxes.
         *
         * @return boolean
         */
        private function adjust_price_filters_for_displayed_taxes()
        {
        }
        /**
         * Adjusts a price filter based on a tax class and whether or not the amount includes or excludes taxes.
         *
         * This calculation logic is based on `wc_get_price_excluding_tax` and `wc_get_price_including_tax` in core.
         *
         * @param float  $price_filter Price filter amount as entered.
         * @param string $tax_class Tax class for adjustment.
         * @return float
         */
        private function adjust_price_filter_for_tax_class($price_filter, $tax_class)
        {
        }
        /**
         * Get attribute lookup table name.
         *
         * @return string
         */
        private function get_lookup_table_name()
        {
        }
        /**
         * Add query clauses for attribute filter.
         *
         * @param array     $args     Query args.
         * @param \WP_Query $wp_query WP_Query object.
         * @return array
         */
        private function attribute_filter_clauses($args, $wp_query)
        {
        }
        /**
         * Get an array of attributes and terms selected from query arguments.
         *
         * @param array $query_vars The WP_Query arguments.
         * @return array
         */
        private function get_chosen_attributes($query_vars)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Registry {
    /**
     * An abstract class for dependency types.
     *
     * Dependency types are instances of a dependency used by the
     * Dependency Injection Container for storing dependencies to invoke as they
     * are needed.
     *
     * @since 2.5.0
     */
    abstract class AbstractDependencyType
    {
        /**
         * Holds a callable or value provided for this type.
         *
         * @var mixed
         */
        private $callable_or_value;
        /**
         * Constructor
         *
         * @param mixed $callable_or_value  A callable or value for the dependency
         *                                  type instance.
         */
        public function __construct($callable_or_value)
        {
        }
        /**
         * Resolver for the internal dependency value.
         *
         * @param Container $container  The Dependency Injection Container.
         *
         * @return mixed
         */
        protected function resolve_value(\Automattic\WooCommerce\Blocks\Registry\Container $container)
        {
        }
        /**
         * Retrieves the value stored internally for this DependencyType
         *
         * @param Container $container  The Dependency Injection Container.
         *
         * @return void
         */
        public abstract function get(\Automattic\WooCommerce\Blocks\Registry\Container $container);
    }
    /**
     * A simple Dependency Injection Container
     *
     * This is used to manage dependencies used throughout the plugin.
     *
     * @since 2.5.0
     */
    class Container
    {
        /**
         * A map of Dependency Type objects used to resolve dependencies.
         *
         * @var AbstractDependencyType[]
         */
        private $registry = [];
        /**
         * Public api for adding a factory to the container.
         *
         * Factory dependencies will have the instantiation callback invoked
         * every time the dependency is requested.
         *
         * Typical Usage:
         *
         * ```
         * $container->register( MyClass::class, $container->factory( $mycallback ) );
         * ```
         *
         * @param Closure $instantiation_callback  This will be invoked when the
         *                                         dependency is required.  It will
         *                                         receive an instance of this
         *                                         container so the callback can
         *                                         retrieve dependencies from the
         *                                         container.
         *
         * @return FactoryType  An instance of the FactoryType dependency.
         */
        public function factory(\Closure $instantiation_callback)
        {
        }
        /**
         * Interface for registering a new dependency with the container.
         *
         * By default, the $value will be added as a shared dependency.  This means
         * that it will be a single instance shared among any other classes having
         * that dependency.
         *
         * If you want a new instance every time it's required, then wrap the value
         * in a call to the factory method (@see Container::factory for example)
         *
         * Note: Currently if the provided id already is registered in the container,
         * the provided value is ignored.
         *
         * @param string $id    A unique string identifier for the provided value.
         *                      Typically it's the fully qualified name for the
         *                      dependency.
         * @param mixed  $value The value for the dependency. Typically, this is a
         *                      closure that will create the class instance needed.
         */
        public function register($id, $value)
        {
        }
        /**
         * Interface for retrieving the dependency stored in the container for the
         * given identifier.
         *
         * @param string $id  The identifier for the dependency being retrieved.
         * @throws Exception  If there is no dependency for the given identifier in
         *                    the container.
         *
         * @return mixed  Typically a class instance.
         */
        public function get($id)
        {
        }
    }
    /**
     * Definition for the FactoryType dependency type.
     *
     * @since 2.5.0
     */
    class FactoryType extends \Automattic\WooCommerce\Blocks\Registry\AbstractDependencyType
    {
        /**
         * Invokes and returns the value from the stored internal callback.
         *
         * @param Container $container  An instance of the dependency injection
         *                              container.
         *
         * @return mixed
         */
        public function get(\Automattic\WooCommerce\Blocks\Registry\Container $container)
        {
        }
    }
    /**
     * A definition for the SharedType dependency type.
     *
     * @since 2.5.0
     */
    class SharedType extends \Automattic\WooCommerce\Blocks\Registry\AbstractDependencyType
    {
        /**
         * Holds a cached instance of the value stored (or returned) internally.
         *
         * @var mixed
         */
        private $shared_instance;
        /**
         * Returns the internal stored and shared value after initial generation.
         *
         * @param Container $container An instance of the dependency injection
         *                             container.
         *
         * @return mixed
         */
        public function get(\Automattic\WooCommerce\Blocks\Registry\Container $container)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Shipping {
    /**
     * Local Pickup Shipping Method.
     */
    class PickupLocation extends \WC_Shipping_Method
    {
        /**
         * Pickup locations.
         *
         * @var array
         */
        protected $pickup_locations = [];
        /**
         * Cost
         *
         * @var string
         */
        protected $cost = '';
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Init function.
         */
        public function init()
        {
        }
        /**
         * Checks if a given address is complete.
         *
         * @param array $address Address.
         * @return bool
         */
        protected function has_valid_pickup_location($address)
        {
        }
        /**
         * Calculate shipping.
         *
         * @param array $package Package information.
         */
        public function calculate_shipping($package = array())
        {
        }
        /**
         * See if the method is available.
         *
         * @param array $package Package information.
         * @return bool
         */
        public function is_available($package)
        {
        }
        /**
         * Translates meta data for the shipping method.
         *
         * @param string $label Meta label.
         * @param string $name Meta key.
         * @param mixed  $product Product if applicable.
         * @return string
         */
        public function translate_meta_data($label, $name, $product)
        {
        }
        /**
         * Admin options screen.
         *
         * See also WC_Shipping_Method::admin_options().
         */
        public function admin_options()
        {
        }
    }
    /**
     * ShippingController class.
     *
     * @internal
     */
    class ShippingController
    {
        /**
         * Instance of the asset API.
         *
         * @var AssetApi
         */
        protected $asset_api;
        /**
         * Instance of the asset data registry.
         *
         * @var AssetDataRegistry
         */
        protected $asset_data_registry;
        /**
         * Whether local pickup is enabled.
         *
         * @var bool
         */
        private $local_pickup_enabled;
        /**
         * Constructor.
         *
         * @param AssetApi          $asset_api Instance of the asset API.
         * @param AssetDataRegistry $asset_data_registry Instance of the asset data registry.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\Api $asset_api, \Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry)
        {
        }
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Overrides the option to force shipping calculations NOT to wait until an address is entered, but only if the
         * Checkout page contains the Checkout Block.
         *
         * @param boolean $value Whether shipping cost calculation requires address to be entered.
         * @return boolean Whether shipping cost calculation should require an address to be entered before calculating.
         */
        public function override_cost_requires_address_option($value)
        {
        }
        /**
         * Inject collection details onto the order received page.
         *
         * @param string    $return_value Return value.
         * @param \WC_Order $order Order object.
         * @return string
         */
        public function show_local_pickup_details($return_value, $order)
        {
        }
        /**
         * When using the cart and checkout blocks this method is used to adjust core shipping settings via a filter hook.
         *
         * @param array $settings The default WC shipping settings.
         * @return array|mixed The filtered settings.
         */
        public function remove_shipping_settings($settings)
        {
        }
        /**
         * Register Local Pickup settings for rest api.
         */
        public function register_settings()
        {
        }
        /**
         * Hydrate client settings
         */
        public function hydrate_client_settings()
        {
        }
        /**
         * Load admin scripts.
         */
        public function admin_scripts()
        {
        }
        /**
         * Registers the Local Pickup shipping method used by the Checkout Block.
         */
        public function register_local_pickup()
        {
        }
        /**
         * Declares the Pickup Location shipping method as a Local Pickup method for WooCommerce.
         *
         * @param array $methods Shipping method ids.
         * @return array
         */
        public function register_local_pickup_method($methods)
        {
        }
        /**
         * Hides the shipping address on the order confirmation page when local pickup is selected.
         *
         * @param array $pickup_methods Method ids.
         * @return array
         */
        public function hide_shipping_address_for_local_pickup($pickup_methods)
        {
        }
        /**
         * Everytime we save or update local pickup settings, we flush the shipping
         * transient group.
         *
         * @param array $settings The setting array we're saving.
         * @return array $settings The setting array we're saving.
         */
        public function flush_cache($settings)
        {
        }
        /**
         * Filter the location used for taxes based on the chosen pickup location.
         *
         * @param array $address Location args.
         * @return array
         */
        public function filter_taxable_address($address)
        {
        }
        /**
         * Local Pickup requires all packages to support local pickup. This is because the entire order must be picked up
         * so that all packages get the same tax rates applied during checkout.
         *
         * If a shipping package does not support local pickup (e.g. if disabled by an extension), this filters the option
         * out for all packages. This will in turn disable the "pickup" toggle in Block Checkout.
         *
         * @param array $packages Array of shipping packages.
         * @return array
         */
        public function filter_shipping_packages($packages)
        {
        }
        /**
         * Track local pickup settings changes via Store API
         *
         * @param bool              $served Whether the request has already been served.
         * @param \WP_REST_Response $result The response object.
         * @param \WP_REST_Request  $request The request object.
         * @return bool
         */
        public function track_local_pickup($served, $result, $request)
        {
        }
        /**
         * Check if legacy local pickup is activated in any of the shipping zones or in the Rest of the World zone.
         *
         * @since 8.8.0
         *
         * @return bool
         */
        public static function is_legacy_local_pickup_active()
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks {
    /**
     * TemplateOptions class.
     *
     * @internal
     */
    class TemplateOptions
    {
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Checks the old and current themes and determines if the "wc_blocks_use_blockified_product_grid_block_as_template"
         * option need to be updated accordingly.
         *
         * @param string    $old_name Old theme name.
         * @param \WP_Theme $old_theme Instance of the old theme.
         * @return void
         */
        public function check_should_use_blockified_product_grid_templates($old_name, $old_theme)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Templates {
    /**
     * AbstractTemplate class.
     *
     * Shared logic for templates.
     *
     * @internal
     */
    abstract class AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = '';
        /**
         * Initialization method.
         */
        public abstract function init();
        /**
         * Should return the title of the template.
         *
         * @return string
         */
        public abstract function get_template_title();
        /**
         * Should return the description of the template.
         *
         * @return string
         */
        public abstract function get_template_description();
    }
    /**
     * AbstractPageTemplate class.
     *
     * Shared logic for page templates.
     *
     * @internal
     */
    abstract class AbstractPageTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the page object assigned to this template/page.
         *
         * @return \WP_Post|null Post object or null.
         */
        protected abstract function get_placeholder_page();
        /**
         * Should return true on pages/endpoints/routes where the template should be shown.
         *
         * @return boolean
         */
        protected abstract function is_active_template();
        /**
         * When the page should be displaying the template, add it to the hierarchy.
         *
         * This places the template name e.g. `cart`, at the beginning of the template hierarchy array. The hook priority
         * is 1 to ensure it runs first; other consumers e.g. extensions, could therefore inject their own template instead
         * of this one when using the default priority of 10.
         *
         * @param array $templates Templates that match the pages_template_hierarchy.
         */
        public function page_template_hierarchy($templates)
        {
        }
        /**
         * Forces the page title to match the template title when this template is active.
         *
         * Only applies when hooked into `pre_get_document_title`. Most templates used for pages will not require this because
         * the page title should be used instead.
         *
         * @param string $title Page title.
         * @return string
         */
        public function page_template_title($title)
        {
        }
    }
    /**
     * AbstractTemplateCompatibility class.
     *
     * To bridge the gap on compatibility with PHP hooks and blockified templates.
     *
     * @internal
     */
    abstract class AbstractTemplateCompatibility
    {
        /**
         * The data of supported hooks, containing the hook name, the block name,
         * position, and the callbacks.
         *
         * @var array $hook_data The hook data.
         */
        protected $hook_data;
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Update the render block data to inject our custom attribute needed to
         * determine which blocks belong to an inherited Products block.
         *
         * @param array         $parsed_block The block being rendered.
         * @param array         $source_block An un-modified copy of $parsed_block, as it appeared in the source content.
         * @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block.
         *
         * @return array
         */
        public abstract function update_render_block_data($parsed_block, $source_block, $parent_block);
        /**
         * Inject hooks to rendered content of corresponding blocks.
         *
         * @param mixed $block_content The rendered block content.
         * @param mixed $block         The parsed block data.
         * @return string
         */
        public abstract function inject_hooks($block_content, $block);
        /**
         * The hook data to inject to the rendered content of blocks. This also
         * contains hooked functions that will be removed by remove_default_hooks.
         *
         * The array format:
         * [
         *   <hook-name> => [
         *     block_names => [ <block-name>, ... ],
         *     position => before|after,
         *     hooked => [
         *       <function-name> => <priority>,
         *        ...
         *     ],
         *  ],
         * ]
         * Where:
         * - hook-name is the name of the hook that will be replaced.
         * - block-names is the array block names that hook will be attached to.
         * - position is the position of the block relative to the hook.
         * - hooked is an array of functions hooked to the hook that will be
         *   replaced. The key is the function name and the value is the
         *   priority.
         */
        protected abstract function set_hook_data();
        /**
         * Remove the default callback added by WooCommerce. We replaced these
         * callbacks by blocks so we have to remove them to prevent duplicated
         * content.
         */
        protected function remove_default_hooks()
        {
        }
        /**
         * Get the buffer content of the hooks to append/prepend to render content.
         *
         * @param array  $hooks    The hooks to be rendered.
         * @param string $position The position of the hooks.
         *
         * @return string
         */
        protected function get_hooks_buffer($hooks, $position)
        {
        }
    }
    /**
     * AbstractTemplatePart class.
     *
     * Shared logic for templates parts.
     *
     * @internal
     */
    abstract class AbstractTemplatePart extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The template part area where the template part belongs.
         *
         * @var string
         */
        public $template_area;
    }
    /**
     * ArchiveProductTemplatesCompatibility class.
     *
     * To bridge the gap on compatibility with PHP hooks and Product Archive blockified templates.
     *
     * @internal
     */
    class ArchiveProductTemplatesCompatibility extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplateCompatibility
    {
        /**
         * The custom ID of the loop item block as the replacement of the core/null block.
         */
        const LOOP_ITEM_ID = 'product-loop-item';
        /**
         * The data of supported hooks, containing the hook name, the block name,
         * position, and the callbacks.
         *
         * @var array $hook_data The hook data.
         */
        protected $hook_data;
        /**
         * Update the render block data to inject our custom attribute needed to
         * determine which blocks belong to an inherited Products block.
         *
         * @param array         $parsed_block The block being rendered.
         * @param array         $source_block An un-modified copy of $parsed_block, as it appeared in the source content.
         * @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block.
         *
         * @return array
         */
        public function update_render_block_data($parsed_block, $source_block, $parent_block)
        {
        }
        /**
         * Inject hooks to rendered content of corresponding blocks.
         *
         * @param mixed $block_content The rendered block content.
         * @param mixed $block         The parsed block data.
         * @return string
         */
        public function inject_hooks($block_content, $block)
        {
        }
        /**
         * The hook data to inject to the rendered content of blocks. This also
         * contains hooked functions that will be removed by remove_default_hooks.
         *
         * The array format:
         * [
         *   <hook-name> => [
         *     block_name => <block-name>,
         *     position => before|after,
         *     hooked => [
         *       <function-name> => <priority>,
         *        ...
         *     ],
         *     permanently_removed_actions => [
         *         <function-name>
         *    ]
         *  ],
         * ]
         * Where:
         * - hook-name is the name of the hook that will be replaced.
         * - block-name is the name of the block that will replace the hook.
         * - position is the position of the block relative to the hook.
         * - hooked is an array of functions hooked to the hook that will be
         *   replaced. The key is the function name and the value is the
         *   priority.
         * - permanently_removed_actions is an array of functions that we do not want to re-add after they have been removed to avoid duplicate content with the Products block and its inner blocks.
         */
        protected function set_hook_data()
        {
        }
        /**
         * Check if current page is a product archive template.
         */
        private function is_archive_template()
        {
        }
        /**
         * Loop through inner blocks recursively to find the Products blocks that
         * inherits query from template.
         *
         * @param array $block Parsed block data.
         */
        private function inner_blocks_walker(&$block)
        {
        }
        /**
         * Restore default hooks except the ones that are not supposed to be re-added.
         */
        private function restore_default_hooks()
        {
        }
        /**
         * Check whether block is within the product-query namespace.
         *
         * @param array $block Parsed block data.
         */
        private function is_block_within_namespace($block)
        {
        }
        /**
         * Check whether block has isInherited attribute assigned.
         *
         * @param array $block Parsed block data.
         */
        private function is_block_inherited($block)
        {
        }
        /**
         * The core/post-template has two different block names:
         * - core/post-template when the wrapper is rendered.
         * - core/null when the loop item is rendered.
         *
         * @param array $block Parsed block data.
         */
        private function is_null_post_template($block)
        {
        }
        /**
         * Check whether block is a Post template.
         *
         * @param string $block_name Block name.
         */
        private function is_post_template($block_name)
        {
        }
        /**
         * Check whether block is a Product Template.
         *
         * @param string $block_name Block name.
         */
        private function is_product_template($block_name)
        {
        }
        /**
         * Check if block is either a Post template or a Product Template
         *
         * @param string $block_name Block name.
         */
        private function is_post_or_product_template($block_name)
        {
        }
        /**
         * Check if the block is a Products block that inherits query from template.
         *
         * @param array $block Parsed block data.
         */
        private function is_products_block_with_inherit_query($block)
        {
        }
        /**
         * Check if the block is a Product Collection block that inherits query from template.
         *
         * @param array $block Parsed block data.
         */
        private function is_product_collection_block_with_inherit_query($block)
        {
        }
        /**
         * Recursively inject the custom attribute to all nested blocks.
         *
         * @param array $block Parsed block data.
         */
        private function inject_attribute(&$block)
        {
        }
    }
    /**
     * CartTemplate class.
     *
     * @internal
     */
    class CartTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractPageTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'page-cart';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
        /**
         * Returns the page object assigned to this template/page.
         *
         * @return \WP_Post|null Post object or null.
         */
        protected function get_placeholder_page()
        {
        }
        /**
         * True when viewing the cart page or cart endpoint.
         *
         * @return boolean
         */
        protected function is_active_template()
        {
        }
        /**
         * When the page should be displaying the template, add it to the hierarchy.
         *
         * This places the template name e.g. `cart`, at the beginning of the template hierarchy array. The hook priority
         * is 1 to ensure it runs first; other consumers e.g. extensions, could therefore inject their own template instead
         * of this one when using the default priority of 10.
         *
         * @param array $templates Templates that match the pages_template_hierarchy.
         */
        public function page_template_hierarchy($templates)
        {
        }
    }
    /**
     * CheckoutHeader Template class.
     *
     * @internal
     */
    class CheckoutHeaderTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplatePart
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'checkout-header';
        /**
         * The template part area where the template part belongs.
         *
         * @var string
         */
        public $template_area = 'header';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
    }
    /**
     * CheckoutTemplate class.
     *
     * @internal
     */
    class CheckoutTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractPageTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'page-checkout';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
        /**
         * Returns the page object assigned to this template/page.
         *
         * @return \WP_Post|null Post object or null.
         */
        protected function get_placeholder_page()
        {
        }
        /**
         * True when viewing the checkout page or checkout endpoint.
         *
         * @return boolean
         */
        protected function is_active_template()
        {
        }
        /**
         * When the page should be displaying the template, add it to the hierarchy.
         *
         * This places the template name e.g. `cart`, at the beginning of the template hierarchy array. The hook priority
         * is 1 to ensure it runs first; other consumers e.g. extensions, could therefore inject their own template instead
         * of this one when using the default priority of 10.
         *
         * @param array $templates Templates that match the pages_template_hierarchy.
         */
        public function page_template_hierarchy($templates)
        {
        }
    }
    /**
     * ClassicTemplatesCompatibility class.
     *
     * To bridge the gap on compatibility with widget blocks and classic PHP core templates.
     *
     * @internal
     */
    class ClassicTemplatesCompatibility
    {
        /**
         * Instance of the asset data registry.
         *
         * @var AssetDataRegistry
         */
        protected $asset_data_registry;
        /**
         * Constructor.
         *
         * @param AssetDataRegistry $asset_data_registry Instance of the asset data registry.
         */
        public function __construct(\Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry $asset_data_registry)
        {
        }
        /**
         * Initialization method.
         */
        protected function init()
        {
        }
        /**
         * Executes the methods which set the necessary data needed for filter blocks to work correctly as widgets in Classic templates.
         *
         * @return void
         */
        public function set_classic_template_data()
        {
        }
        /**
         * This method passes the value `has_filterable_products` to the front-end for product archive pages,
         * so that widget product filter blocks are aware of the context they are in and can render accordingly.
         *
         * @return void
         */
        public function set_filterable_product_data()
        {
        }
        /**
         * This method passes the value `is_rendering_php_template` to the front-end of Classic themes,
         * so that widget product filter blocks are aware of how to filter the products.
         *
         * This data only matters on WooCommerce product archive pages.
         * On non-archive pages the merchant could be using the All Products block which is not a PHP template.
         *
         * @return void
         */
        public function set_php_template_data()
        {
        }
    }
    /**
     * ComingSoonTemplate class.
     *
     * @internal
     */
    class ComingSoonTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractPageTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'coming-soon';
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Returns the page object assigned to this template/page.
         *
         * @return \WP_Post|null Post object or null.
         */
        protected function get_placeholder_page()
        {
        }
        /**
         * True when viewing the coming soon page.
         *
         * @return boolean
         */
        protected function is_active_template()
        {
        }
    }
    /**
     * MiniCartTemplate class.
     *
     * @internal
     */
    class MiniCartTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplatePart
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'mini-cart';
        /**
         * The template part area where the template part belongs.
         *
         * @var string
         */
        public $template_area = 'mini-cart';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Add Mini-Cart to the default template part areas.
         *
         * @param array $default_area_definitions An array of supported area objects.
         * @return array The supported template part areas including the Mini-Cart one.
         */
        public function register_mini_cart_template_part_area($default_area_definitions)
        {
        }
    }
    /**
     * OrderConfirmationTemplate class.
     *
     * @internal
     */
    class OrderConfirmationTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractPageTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'order-confirmation';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Remove edit page from admin bar.
         */
        public function remove_edit_page_link()
        {
        }
        /**
         * Returns the page object assigned to this template/page.
         *
         * @return \WP_Post|null Post object or null.
         */
        protected function get_placeholder_page()
        {
        }
        /**
         * True when viewing the Order Received endpoint.
         *
         * @return boolean
         */
        protected function is_active_template()
        {
        }
    }
    /**
     * ProductAttributeTemplate class.
     *
     * @internal
     */
    class ProductAttributeTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'taxonomy-product_attribute';
        /**
         * The template used as a fallback if that one is customized.
         *
         * @var string
         */
        public $fallback_template = \Automattic\WooCommerce\Blocks\Templates\ProductCatalogTemplate::SLUG;
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
        /**
         * Renders the Product by Attribute template for product attributes taxonomy pages.
         *
         * @param array $templates Templates that match the product attributes taxonomy.
         */
        public function update_taxonomy_template_hierarchy($templates)
        {
        }
    }
    /**
     * ProductCatalogTemplate class.
     *
     * @internal
     */
    class ProductCatalogTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'archive-product';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
        /**
         * Remove the template panel from the Sidebar of the Shop page because
         * the Site Editor handles it.
         *
         * @see https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/6278
         *
         * @param bool $is_support Whether the active theme supports block templates.
         *
         * @return bool
         */
        public function remove_block_template_support_for_shop_page($is_support)
        {
        }
    }
    /**
     * ProductCategoryTemplate class.
     *
     * @internal
     */
    class ProductCategoryTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'taxonomy-product_cat';
        /**
         * The template used as a fallback if that one is customized.
         *
         * @var string
         */
        public $fallback_template = \Automattic\WooCommerce\Blocks\Templates\ProductCatalogTemplate::SLUG;
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
    }
    /**
     * ProductSearchResultsTemplate class.
     *
     * @internal
     */
    class ProductSearchResultsTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'product-search-results';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
        /**
         * When the search is for products and a block theme is active, render the Product Search Template.
         *
         * @param array $templates Templates that match the search hierarchy.
         */
        public function update_search_template_hierarchy($templates)
        {
        }
    }
    /**
     * ProductTagTemplate class.
     *
     * @internal
     */
    class ProductTagTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'taxonomy-product_tag';
        /**
         * The template used as a fallback if that one is customized.
         *
         * @var string
         */
        public $fallback_template = \Automattic\WooCommerce\Blocks\Templates\ProductCatalogTemplate::SLUG;
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
    }
    /**
     * SingleProductTemplate class.
     *
     * @internal
     */
    class SingleProductTemplate extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplate
    {
        /**
         * The slug of the template.
         *
         * @var string
         */
        const SLUG = 'single-product';
        /**
         * Initialization method.
         */
        public function init()
        {
        }
        /**
         * Returns the title of the template.
         *
         * @return string
         */
        public function get_template_title()
        {
        }
        /**
         * Returns the description of the template.
         *
         * @return string
         */
        public function get_template_description()
        {
        }
        /**
         * Renders the default block template from Woo Blocks if no theme templates exist.
         */
        public function render_block_template()
        {
        }
        /**
         * Add the block template objects to be used.
         *
         * @param array $query_result Array of template objects.
         * @return array
         */
        public function update_single_product_content($query_result)
        {
        }
        /**
         * Replace the first single product template block with the password form. Remove all other single product template blocks.
         *
         * @param array   $parsed_blocks Array of parsed block objects.
         * @param boolean $is_already_replaced If the password form has already been added.
         * @return array Parsed blocks
         */
        private static function replace_first_single_product_template_block_with_password_form($parsed_blocks, $is_already_replaced)
        {
        }
        /**
         * Add password form to the Single Product Template.
         *
         * @param string $content The content of the template.
         * @return string
         */
        public static function add_password_form($content)
        {
        }
    }
    /**
     * SingleProductTemplateCompatibility class.
     *
     * To bridge the gap on compatibility with PHP hooks and Single Product templates.
     *
     * @internal
     */
    class SingleProductTemplateCompatibility extends \Automattic\WooCommerce\Blocks\Templates\AbstractTemplateCompatibility
    {
        const IS_FIRST_BLOCK = '__wooCommerceIsFirstBlock';
        const IS_LAST_BLOCK = '__wooCommerceIsLastBlock';
        /**
         * Inject hooks to rendered content of corresponding blocks.
         *
         * @param mixed $block_content The rendered block content.
         * @param mixed $block         The parsed block data.
         * @return string
         */
        public function inject_hooks($block_content, $block)
        {
        }
        /**
         * Inject custom hooks to the first and last blocks.
         * Since that there is a custom logic for the first and last block, we have to inject the hooks manually.
         * The first block supports the following hooks:
         * woocommerce_before_single_product
         * woocommerce_before_single_product_summary
         *
         * The last block supports the following hooks:
         * woocommerce_after_single_product
         *
         * @param mixed $block_content The rendered block content.
         * @param mixed $block         The parsed block data.
         * @param array $block_hooks   The hooks that should be injected to the block.
         * @return string
         */
        private function inject_hook_to_first_and_last_blocks($block_content, $block, $block_hooks)
        {
        }
        /**
         * Update the render block data to inject our custom attribute needed to
         * determine which is the first block of the Single Product Template.
         *
         * @param array         $parsed_block The block being rendered.
         * @param array         $source_block An un-modified copy of $parsed_block, as it appeared in the source content.
         * @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block.
         *
         * @return array
         */
        public function update_render_block_data($parsed_block, $source_block, $parent_block)
        {
        }
        /**
         * Set supported hooks.
         */
        protected function set_hook_data()
        {
        }
        /**
         * Add compatibility layer to the first and last block of the Single Product Template.
         *
         * @param string $template_content Template.
         * @return string
         */
        public static function add_compatibility_layer($template_content)
        {
        }
        /**
         * For compatibility reason, we need to wrap the Single Product template in a div with specific class.
         * For more details, see https://github.com/woocommerce/woocommerce-blocks/issues/8314.
         *
         * @param string $template_content Template Content.
         * @return array Wrapped template content inside a div.
         */
        private static function wrap_single_product_template($template_content)
        {
        }
        /**
         * Add custom attributes to the first group block and last group block that wrap Single Product Template blocks.
         *
         * @param array $wrapped_blocks Wrapped blocks.
         * @return array
         */
        private static function inject_custom_attributes_to_first_and_last_block_single_product_template($wrapped_blocks)
        {
        }
        /**
         * Wrap all the blocks inside the template in a group block.
         *
         * @param array $blocks Array of parsed block objects.
         * @return array Group block with the blocks inside.
         */
        private static function create_wrap_block_group($blocks)
        {
        }
        /**
         * Check if the Single Product template has a single product template block:
         * woocommerce/product-gallery-image, woocommerce/product-details, woocommerce/add-to-cart-form, etc.
         *
         * @param array $parsed_blocks Array of parsed block objects.
         * @return bool True if the template has a single product template block, false otherwise.
         */
        private static function has_single_product_template_blocks($parsed_blocks)
        {
        }
        /**
         * Group blocks in this way:
         * B1 + TP1 + B2 + B3 + B4 + TP2 + B5
         * (B = Block, TP = Template Part)
         * becomes:
         * [[B1], [TP1], [B2, B3, B4], [TP2], [B5]]
         *
         * @param array $parsed_blocks Array of parsed block objects.
         * @return array Array of blocks grouped by template part.
         */
        private static function group_blocks($parsed_blocks)
        {
        }
        /**
         * Inject the hooks after the div wrapper.
         *
         * @param string $block_content Block Content.
         * @param array  $hooks Hooks to inject.
         * @return array
         */
        private function inject_hooks_after_the_wrapper($block_content, $hooks)
        {
        }
        /**
         * Plain custom HTML block is parsed as block with an empty blockName with a filled innerHTML.
         *
         * @param array $block Parse block.
         * @return bool
         */
        private static function is_custom_html($block)
        {
        }
        /**
         * Serialize template.
         *
         * @param array $parsed_blocks Parsed blocks.
         * @return string
         */
        private static function serialize_blocks($parsed_blocks)
        {
        }
    }
}
namespace Automattic\WooCommerce\Blocks\Utils {
    /**
     * Utility methods used for serving block templates from WooCommerce Blocks.
     * {@internal This class and its methods should only be used within the BlockTemplateController.php and is not intended for public use.}
     */
    class BlockTemplateUtils
    {
        /**
         * Directory names for block templates
         *
         * Directory names conventions for block templates have changed with Gutenberg 12.1.0,
         * however, for backwards-compatibility, we also keep the older conventions, prefixed
         * with `DEPRECATED_`.
         *
         * @var array {
         *     @var string DEPRECATED_TEMPLATES  Old directory name of the block templates directory.
         *     @var string DEPRECATED_TEMPLATE_PARTS  Old directory name of the block template parts directory.
         *     @var string TEMPLATES_DIR_NAME  Directory name of the block templates directory.
         *     @var string TEMPLATE_PARTS_DIR_NAME  Directory name of the block template parts directory.
         * }
         */
        const DIRECTORY_NAMES = array('DEPRECATED_TEMPLATES' => 'block-templates', 'DEPRECATED_TEMPLATE_PARTS' => 'block-template-parts', 'TEMPLATES' => 'templates', 'TEMPLATE_PARTS' => 'parts');
        const TEMPLATES_ROOT_DIR = 'templates';
        /**
         * WooCommerce plugin slug
         *
         * This is used to save templates to the DB which are stored against this value in the wp_terms table.
         *
         * @var string
         */
        const PLUGIN_SLUG = 'woocommerce/woocommerce';
        /**
         * Deprecated WooCommerce plugin slug
         *
         * For supporting users who have customized templates under the incorrect plugin slug during the first release.
         * More context found here: https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5423.
         *
         * @var string
         */
        const DEPRECATED_PLUGIN_SLUG = 'woocommerce';
        /**
         * Returns the template matching the slug
         *
         * @param string $template_slug Slug of the template to retrieve.
         *
         * @return AbstractTemplate|AbstractTemplatePart|null
         */
        public static function get_template($template_slug)
        {
        }
        /**
         * Returns an array containing the references of
         * the passed blocks and their inner blocks.
         *
         * @param array $blocks array of blocks.
         *
         * @return array block references to the passed blocks and their inner blocks.
         */
        public static function flatten_blocks(&$blocks)
        {
        }
        /**
         * Parses wp_template content and injects the current theme's
         * stylesheet as a theme attribute into each wp_template_part
         *
         * @param string $template_content serialized wp_template content.
         *
         * @return string Updated wp_template content.
         */
        public static function inject_theme_attribute_in_content($template_content)
        {
        }
        /**
         * Build a unified template object based a post Object.
         * Important: This method is an almost identical duplicate from wp-includes/block-template-utils.php as it was not intended for public use. It has been modified to build templates from plugins rather than themes.
         *
         * @param \WP_Post $post Template post.
         *
         * @return \WP_Block_Template|\WP_Error Template.
         */
        public static function build_template_result_from_post($post)
        {
        }
        /**
         * Build a unified template object based on a theme file.
         *
         * @internal Important: This method is an almost identical duplicate from wp-includes/block-template-utils.php as it was not intended for public use. It has been modified to build templates from plugins rather than themes.
         *
         * @param array|object $template_file Theme file.
         * @param string       $template_type wp_template or wp_template_part.
         *
         * @return \WP_Block_Template Template.
         */
        public static function build_template_result_from_file($template_file, $template_type)
        {
        }
        /**
         * Build a new template object so that we can make Woo Blocks default templates available in the current theme should they not have any.
         *
         * @param string $template_file Block template file path.
         * @param string $template_type wp_template or wp_template_part.
         * @param string $template_slug Block template slug e.g. single-product.
         * @param bool   $template_is_from_theme If the block template file is being loaded from the current theme instead of Woo Blocks.
         *
         * @return object Block template object.
         */
        public static function create_new_block_template_object($template_file, $template_type, $template_slug, $template_is_from_theme = false)
        {
        }
        /**
         * Finds all nested template part file paths in a theme's directory.
         *
         * @param string $template_type wp_template or wp_template_part.
         * @return array $path_list A list of paths to all template part files.
         */
        public static function get_template_paths($template_type)
        {
        }
        /**
         * Gets the directory where templates of a specific template type can be found.
         *
         * @param string $template_type wp_template or wp_template_part.
         *
         * @return string
         */
        public static function get_templates_directory($template_type = 'wp_template')
        {
        }
        /**
         * Returns template title.
         *
         * @param string $template_slug The template slug (e.g. single-product).
         * @return string Human friendly title.
         */
        public static function get_block_template_title($template_slug)
        {
        }
        /**
         * Returns template description.
         *
         * @param string $template_slug The template slug (e.g. single-product).
         * @return string Template description.
         */
        public static function get_block_template_description($template_slug)
        {
        }
        /**
         * Returns area for template parts.
         *
         * @param string $template_slug The template part slug (e.g. mini-cart).
         * @param string $template_type Either `wp_template` or `wp_template_part`.
         * @return string Template part area.
         */
        public static function get_block_template_area($template_slug, $template_type)
        {
        }
        /**
         * Converts template paths into a slug
         *
         * @param string $path The template's path.
         * @return string slug
         */
        public static function generate_template_slug_from_path($path)
        {
        }
        /**
         * Gets the first matching template part within themes directories
         *
         * Since [Gutenberg 12.1.0](https://github.com/WordPress/gutenberg/releases/tag/v12.1.0), the conventions for
         * block templates and parts directory has changed from `block-templates` and `block-templates-parts`
         * to `templates` and `parts` respectively.
         *
         * This function traverses all possible combinations of directory paths where a template or part
         * could be located and returns the first one which is readable, prioritizing the new convention
         * over the deprecated one, but maintaining that one for backwards compatibility.
         *
         * @param string $template_slug  The slug of the template (i.e. without the file extension).
         * @param string $template_type  Either `wp_template` or `wp_template_part`.
         *
         * @return string|null  The matched path or `null` if no match was found.
         */
        public static function get_theme_template_path($template_slug, $template_type = 'wp_template')
        {
        }
        /**
         * Check if the theme has a template. So we know if to load our own in or not.
         *
         * @param string $template_name name of the template file without .html extension e.g. 'single-product'.
         * @return boolean
         */
        public static function theme_has_template($template_name)
        {
        }
        /**
         * Check if the theme has a template. So we know if to load our own in or not.
         *
         * @param string $template_name name of the template file without .html extension e.g. 'single-product'.
         * @return boolean
         */
        public static function theme_has_template_part($template_name)
        {
        }
        /**
         * Checks to see if they are using a compatible version of WP, or if not they have a compatible version of the Gutenberg plugin installed.
         *
         * @param string $template_type Optional. Template type: `wp_template` or `wp_template_part`.
         *                              Default `wp_template`.
         * @return boolean
         */
        public static function supports_block_templates($template_type = 'wp_template')
        {
        }
        /**
         * Checks if we can fall back to an `archive-product` template stored on the db for a given slug.
         *
         * @param string $template_slug Slug to check for fallbacks.
         * @param array  $db_templates Templates that have already been found on the db.
         * @return boolean
         */
        public static function template_is_eligible_for_fallback_from_db($template_slug, $db_templates)
        {
        }
        /**
         * Gets the `archive-product` fallback template stored on the db for a given slug.
         *
         * @param string $template_slug Slug to check for fallbacks.
         * @param array  $db_templates Templates that have already been found on the db.
         * @return boolean|object
         */
        public static function get_fallback_template_from_db($template_slug, $db_templates)
        {
        }
        /**
         * Checks if we can fall back to the `archive-product` file template for a given slug in the current theme.
         *
         * `taxonomy-product_cat`, `taxonomy-product_tag`, `taxonomy-attribute` templates can
         *  generally use the `archive-product` as a fallback if there are no specific overrides.
         *
         * @param string $template_slug Slug to check for fallbacks.
         * @return boolean
         */
        public static function template_is_eligible_for_fallback_from_theme($template_slug)
        {
        }
        /**
         * Sets the `has_theme_file` to `true` for templates with fallbacks
         *
         * There are cases (such as tags, categories and attributes) in which fallback templates
         * can be used; so, while *technically* the theme doesn't have a specific file
         * for them, it is important that we tell Gutenberg that we do, in fact,
         * have a theme file (i.e. the fallback one).
         *
         * **Note:** this function changes the array that has been passed.
         *
         * It returns `true` if anything was changed, `false` otherwise.
         *
         * @param array  $query_result Array of template objects.
         * @param object $template A specific template object which could have a fallback.
         *
         * @return boolean
         */
        public static function set_has_theme_file_if_fallback_is_available($query_result, $template)
        {
        }
        /**
         * Removes templates that were added to a theme's block-templates directory, but already had a customised version saved in the database.
         *
         * @param \WP_Block_Template[]|\stdClass[] $templates List of templates to run the filter on.
         *
         * @return array List of templates with duplicates removed. The customised alternative is preferred over the theme default.
         */
        public static function remove_theme_templates_with_custom_alternative($templates)
        {
        }
        /**
         * Removes customized templates that shouldn't be available. That means customized templates based on the
         * WooCommerce default template when there is a customized template based on the theme template.
         *
         * @param \WP_Block_Template[]|\stdClass[] $templates  List of templates to run the filter on.
         * @param string                           $theme_slug Slug of the theme currently active.
         *
         * @return array Filtered list of templates with only relevant templates available.
         */
        public static function remove_duplicate_customized_templates($templates, $theme_slug)
        {
        }
        /**
         * Returns whether the blockified templates should be used or not.
         * If the option is not stored on the db, we need to check if the current theme is a block one or not.
         *
         * @return boolean
         */
        public static function should_use_blockified_product_grid_templates()
        {
        }
        /**
         * Determines whether the provided $blocks contains any of the $block_names,
         * or if they contain a pattern that contains any of the $block_names.
         *
         * @param string[]   $block_names Full block types to look for.
         * @param WP_Block[] $blocks      Array of block objects.
         * @return bool Whether the content contains the specified block.
         */
        public static function has_block_including_patterns($block_names, $blocks)
        {
        }
        /**
         * Returns whether the passed `$template` has the legacy template block.
         *
         * @param object $template The template object.
         * @return boolean
         */
        public static function template_has_legacy_template_block($template)
        {
        }
        /**
         * Updates the title, description and area of a template to the correct values and to make them more user-friendly.
         * For example, instead of:
         * - Title: `Tag (product_tag)`
         * - Description: `Displays taxonomy: Tag.`
         * we display:
         * - Title: `Products by Tag`
         * - Description: `Displays products filtered by a tag.`.
         *
         * @param WP_Block_Template $template The template object.
         * @param string            $template_type wp_template or wp_template_part.
         *
         * @return WP_Block_Template
         */
        public static function update_template_data($template, $template_type)
        {
        }
        /**
         * Gets the templates saved in the database.
         *
         * @param array  $slugs An array of slugs to retrieve templates for.
         * @param string $template_type wp_template or wp_template_part.
         *
         * @return int[]|\WP_Post[] An array of found templates.
         */
        public static function get_block_templates_from_db($slugs = array(), $template_type = 'wp_template')
        {
        }
        /**
         * Gets the template part by slug
         *
         * @param string $slug The template part slug.
         *
         * @return string The template part content.
         */
        public static function get_template_part($slug)
        {
        }
    }
    /**
     * BlocksWpQuery query.
     *
     * Wrapper for WP Query with additional helper methods.
     * Allows query args to be set and parsed without doing running it, so that a cache can be used.
     *
     * @deprecated 2.5.0
     */
    class BlocksWpQuery extends \WP_Query
    {
        /**
         * Constructor.
         *
         * Sets up the WordPress query, if parameter is not empty.
         *
         * Unlike the constructor in WP_Query, this does not RUN the query.
         *
         * @param string|array $query URL query string or array of vars.
         */
        public function __construct($query = '')
        {
        }
        /**
         * Get cached posts, if a cache exists.
         *
         * A hash is generated using the array of query_vars. If doing custom queries via filters such as posts_where
         * (where the SQL query is manipulated directly) you can still ensure there is a unique hash by injecting custom
         * query vars via the parse_query filter. For example:
         *
         *      add_filter( 'parse_query', function( $wp_query ) {
         *           $wp_query->query_vars['my_custom_query_var'] = true;
         *      } );
         *
         * Doing so won't have any negative effect on the query itself, and it will cause the hash to change.
         *
         * @param string $transient_version Transient version to allow for invalidation.
         * @return WP_Post[]|int[] Array of post objects or post IDs.
         */
        public function get_cached_posts($transient_version = '')
        {
        }
    }
    /**
     * Class containing utility methods for dealing with the Cart and Checkout blocks.
     */
    class CartCheckoutUtils
    {
        /**
         * Checks if the default cart page is using the Cart block.
         *
         * @return bool true if the WC cart page is using the Cart block.
         */
        public static function is_cart_block_default()
        {
        }
        /**
         * Checks if the default checkout page is using the Checkout block.
         *
         * @return bool true if the WC checkout page is using the Checkout block.
         */
        public static function is_checkout_block_default()
        {
        }
        /**
         * Checks if the template overriding the page loads the page content or not.
         * Templates by default load the page content, but if that block is deleted the content can get out of sync with the one presented in the page editor.
         *
         * @param string $block The block to check.
         *
         * @return bool true if the template has out of sync content.
         */
        public static function is_overriden_by_custom_template_content(string $block) : bool
        {
        }
        /**
         * Gets country codes, names, states, and locale information.
         *
         * @return array
         */
        public static function get_country_data()
        {
        }
        /**
         * Removes accents from an array of values, sorts by the values, then returns the original array values sorted.
         *
         * @param array $array Array of values to sort.
         * @return array Sorted array.
         */
        protected static function deep_sort_with_accents($array)
        {
        }
        /**
         * Retrieves formatted shipping zones from WooCommerce.
         *
         * @return array An array of formatted shipping zones.
         */
        public static function get_shipping_zones()
        {
        }
        /**
         * Recursively search the checkout block to find the express checkout block and
         * get the button style attributes
         *
         * @param array  $blocks Blocks to search.
         * @param string $cart_or_checkout The block type to check.
         */
        public static function find_express_checkout_attributes($blocks, $cart_or_checkout)
        {
        }
        /**
         * Given an array of blocks, find the express payment block and update its attributes.
         *
         * @param array  $blocks Blocks to search.
         * @param string $cart_or_checkout The block type to check.
         * @param array  $updated_attrs The new attributes to set.
         */
        public static function update_blocks_with_new_attrs(&$blocks, $cart_or_checkout, $updated_attrs)
        {
        }
    }
    /**
     * Utility methods used for the Mini Cart block.
     */
    class MiniCartUtils
    {
        /**
         * Migrate attributes to color panel component format.
         *
         * @param array $attributes  Any attributes that currently are available from the block.
         * @return array Reformatted attributes that are compatible with the color panel component.
         */
        public static function migrate_attributes_to_color_panel($attributes)
        {
        }
        /**
         * Get the SVG icon for the mini cart.
         *
         * @param string $icon_name The name of the icon.
         * @param string $icon_color The color of the icon.
         * @return string The SVG icon.
         */
        public static function get_svg_icon($icon_name, $icon_color = 'currentColor')
        {
        }
    }
    /**
     * Utility methods used for the Product Collection block.
     * {@internal This class and its methods are not intended for public use.}
     */
    class ProductCollectionUtils
    {
        /**
         * Prepare and execute a query for the Product Collection block.
         * This method is used by the Product Collection block and the No Results block.
         *
         * @param WP_Block $block Block instance.
         */
        public static function prepare_and_execute_query($block)
        {
        }
        /**
         * Helper function that constructs a WP_Query args array from
         * a Product Collection or global query.
         *
         * @param WP_Block $block Block instance.
         * @param int      $page  Current query's page.
         *
         * @return array Returns the constructed WP_Query arguments.
         */
        public static function get_query_vars($block, $page)
        {
        }
        /**
         * Remove query array from tax or meta query by searching for arrays that
         * contain exact key => value pair.
         *
         * @param array  $queries tax_query or meta_query.
         * @param string $key     Array key to search for.
         * @param mixed  $value   Value to compare with search result.
         *
         * @return array
         */
        public static function remove_query_array($queries, $key, $value)
        {
        }
        /**
         * Parse WP Query's front-end context for the Product Collection block.
         *
         * The sourceData structure depends on the context type as follows:
         * - site:    [ ]
         * - order:   [ 'orderId'    => int ]
         * - cart:    [ 'productIds' => int[] ]
         * - archive: [ 'taxonomy'   => string, 'termId' => int ]
         * - product: [ 'productId'  => int ]
         *
         * @return array $context {
         *     @type string  $type        The context type. Possible values are 'site', 'order', 'cart', 'archive', 'product'.
         *     @type array   $sourceData  The context source data. Can be the product ID of the viewed product, the order ID of the current order, etc.
         * }
         */
        public static function parse_frontend_location_context()
        {
        }
        /**
         * Remove falsy item from array, recursively.
         *
         * @param array $array The input array to filter.
         */
        private static function remove_empty_array_recursive($array)
        {
        }
    }
    /**
     * Utility methods used for the Product Gallery block.
     * {@internal This class and its methods are not intended for public use.}
     */
    class ProductGalleryUtils
    {
        const CROP_IMAGE_SIZE_NAME = '_woo_blocks_product_gallery_crop_full';
        /**
         * When requesting a full-size image, this function may return an array with a single image.
         * However, when requesting a non-full-size image, it will always return an array with multiple images.
         * This distinction is based on the image size needed for rendering purposes:
         * - "Full" size is used for the main product featured image.
         * - Non-full sizes are used for rendering thumbnails.
         *
         * @param int    $post_id Post ID.
         * @param string $size Image size.
         * @param array  $attributes Attributes.
         * @param string $wrapper_class Wrapper class.
         * @param bool   $crop_images Whether to crop images.
         * @return array
         */
        public static function get_product_gallery_images($post_id, $size = 'full', $attributes = array(), $wrapper_class = '', $crop_images = false)
        {
        }
        /**
         * Get the product gallery image IDs.
         *
         * @param \WC_Product $product                      The product object to retrieve the gallery images for.
         * @param int         $max_number_of_visible_images The maximum number of visible images to return. Defaults to 8.
         * @param bool        $only_visible                 Whether to return only the visible images. Defaults to false.
         * @return array An array of unique image IDs for the product gallery.
         */
        public static function get_product_gallery_image_ids($product, $max_number_of_visible_images = 8, $only_visible = false)
        {
        }
        /**
         * Generates the intermediate image sizes only when needed.
         *
         * @param int    $attachment_id Attachment ID.
         * @param string $size Image size.
         * @return void
         */
        public static function maybe_generate_intermediate_image($attachment_id, $size)
        {
        }
        /**
         * Get the product image placeholder HTML.
         *
         * @param string $size Image size.
         * @param array  $attributes Attributes.
         * @param bool   $crop_images Whether to crop images.
         * @return string
         */
        public static function get_product_image_placeholder_html($size, $attributes, $crop_images)
        {
        }
    }
    /**
     * StyleAttributesUtils class used for getting class and style from attributes.
     */
    class StyleAttributesUtils
    {
        // Empty style array.
        const EMPTY_STYLE = ['class' => '', 'style' => '', 'value' => ''];
        /**
         * If color value is in preset format, convert it to a CSS var. Else return same value
         * For example:
         * "var:preset|color|pale-pink" -> "var(--wp--preset--color--pale-pink)"
         * "#98b66e" -> "#98b66e"
         *
         * @param string $color_value value to be processed.
         *
         * @return (string)
         */
        public static function get_color_value($color_value)
        {
        }
        /**
         * Get CSS value for color preset.
         *
         * @param string $preset_name Preset name.
         *
         * @return string CSS value for color preset.
         */
        public static function get_preset_value($preset_name)
        {
        }
        /**
         * If spacing value is in preset format, convert it to a CSS var. Else return same value
         * For example:
         * "var:preset|spacing|50" -> "var(--wp--preset--spacing--50)"
         * "50px" -> "50px"
         *
         * @param string $spacing_value value to be processed.
         *
         * @return (string)
         */
        public static function get_spacing_value($spacing_value)
        {
        }
        /**
         * Get class and style for align from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_align_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for background-color from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_background_color_class_and_style($attributes)
        {
        }
        /**
         * Join classes and styles while removing duplicates and null values.
         *
         * @param array $rules Array of classes or styles.
         * @return array
         */
        protected static function join_styles($rules)
        {
        }
        /**
         * Get class and style for border-color from attributes.
         *
         * Data passed to this function is not always consistent. It can be:
         * Linked - preset color: $attributes['borderColor'] => 'luminous-vivid-orange'.
         * Linked - custom color: $attributes['style']['border']['color'] => '#681228'.
         * Unlinked - preset color: $attributes['style']['border']['top']['color'] => 'var:preset|color|luminous-vivid-orange'
         * Unlinked - custom color: $attributes['style']['border']['top']['color'] => '#681228'.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_border_color_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for border-radius from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_border_radius_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for border width from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_border_width_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for border width from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_border_style_class_and_style($attributes)
        {
        }
        /**
         * Get space-separated classes from block attributes.
         *
         * @param array $attributes Block attributes.
         * @param array $properties Properties to get classes from.
         *
         * @return string Space-separated classes.
         */
        public static function get_classes_by_attributes($attributes, $properties = array())
        {
        }
        /**
         * Get class and style for font-family from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_font_family_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for font-size from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_font_size_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for font-style from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_font_style_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for font-weight from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_font_weight_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for letter-spacing from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_letter_spacing_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for line height from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_line_height_class_and_style($attributes)
        {
        }
        /**
         * Get a value from an array based on a path e.g style.elements.link
         *
         * @param array  $array Target array.
         * @param string $path Path joined by delimiter.
         * @param string $delimiter Chosen delimiter defaults to ".".
         * @return mixed
         */
        protected static function array_get_value_by_path(array &$array, $path, $delimiter = '.')
        {
        }
        /**
         * Get class and style for link-color from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_link_color_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for link-hover-color from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_link_hover_color_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for margin from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_margin_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for padding from attributes.
         *
         * @param array $attributes Block attributes.
         *
         * @return array
         */
        public static function get_padding_class_and_style($attributes)
        {
        }
        /**
         * Get space-separated style rules from block attributes.
         *
         * @param array $attributes Block attributes.
         * @param array $properties Properties to get styles from.
         *
         * @return string Space-separated style rules.
         */
        public static function get_styles_by_attributes($attributes, $properties = array())
        {
        }
        /**
         * Get class and style for text align from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_text_align_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for text-color from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_text_color_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for text-decoration from attributes.
         *
         * @param array $attributes Block attributes.
         *
         * @return array
         */
        public static function get_text_decoration_class_and_style($attributes)
        {
        }
        /**
         * Get class and style for text-transform from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_text_transform_class_and_style($attributes)
        {
        }
        /**
         * Get extra CSS classes from attributes.
         *
         * @param array $attributes Block attributes.
         * @return array
         */
        public static function get_classes_from_attributes($attributes)
        {
        }
        /**
         * Get classes and styles from attributes.
         *
         * Excludes link_color and link_hover_color since those should not apply to the container.
         *
         * @param array $attributes Block attributes.
         * @param array $properties Properties to get classes/styles from.
         * @param array $exclude Properties to exclude.
         * @return array
         */
        public static function get_classes_and_styles_by_attributes($attributes, $properties = array(), $exclude = array())
        {
        }
    }
    /**
     * Utils class
     */
    class Utils
    {
        /**
         * Compare the current WordPress version with a given version. It's a wrapper around `version-compare`
         * that additionally takes into account the suffix (like `-RC1`).
         * For example: version 6.3 is considered lower than 6.3-RC2, so you can do
         * wp_version_compare( '6.3', '>=' ) and that will return true for 6.3-RC2.
         *
         * @param string      $version The version to compare against.
         * @param string|null $operator Optional. The comparison operator. Defaults to null.
         * @return bool|int Returns true if the current WordPress version satisfies the comparison, false otherwise.
         */
        public static function wp_version_compare($version, $operator = null)
        {
        }
    }
}
namespace Automattic\WooCommerce\Caching {
    /**
     * Base class for caching objects (or associative arrays) that have a unique identifier.
     * At the very least, derived classes need to implement the 'get_object_type' method,
     * but usually it will be convenient to override some of the other protected members.
     *
     * The actual caching is delegated to an instance of CacheEngine. By default WpCacheEngine is used,
     * but a different engine can be used by either overriding the get_cache_engine_instance method
     * or capturing the wc_object_cache_get_engine filter.
     *
     * Objects are identified by ids that are either integers or strings. The actual cache keys passed
     * to the cache engine will be prefixed with the object type and a random string. The 'flush' operation
     * just forces the generation a new prefix and lets the old cached objects expire.
     */
    abstract class ObjectCache
    {
        /**
         * Expiration value to be passed to 'set' to use the value of $default_expiration.
         */
        public const DEFAULT_EXPIRATION = -1;
        /**
         * Maximum expiration time value, in seconds, that can be passed to 'set'.
         */
        public const MAX_EXPIRATION = MONTH_IN_SECONDS;
        /**
         * This needs to be set in each derived class.
         *
         * @var string
         */
        private $object_type;
        /**
         * Default value for the duration of the objects in the cache, in seconds
         * (may not be used depending on the cache engine used WordPress cache implementation).
         *
         * @var int
         */
        protected $default_expiration = HOUR_IN_SECONDS;
        /**
         * Temporarily used when retrieving data in 'get'.
         *
         * @var array
         */
        private $last_cached_data;
        /**
         * The cache engine to use.
         *
         * @var ?CacheEngine
         */
        private $cache_engine = null;
        /**
         * Gets an identifier for the types of objects cached by this class.
         * This identifier will be used to compose the keys passed to the cache engine,
         * to the name of the option that stores the cache prefix, and the names of the hooks used.
         * It must be unique for each class inheriting from ObjectCache.
         *
         * @return string
         */
        public abstract function get_object_type() : string;
        /**
         * Creates a new instance of the class.
         *
         * @throws CacheException If get_object_type returns null or an empty string.
         */
        public function __construct()
        {
        }
        /**
         * Get the default expiration time for cached objects, in seconds.
         *
         * @return int
         */
        public function get_default_expiration_value() : int
        {
        }
        /**
         * Get the cache engine to use and cache it internally.
         *
         * @return CacheEngine
         */
        private function get_cache_engine() : \Automattic\WooCommerce\Caching\CacheEngine
        {
        }
        /**
         * Add an object to the cache, or update an already cached object.
         *
         * @param object|array    $object The object to be cached.
         * @param int|string|null $id Id of the object to be cached, if null, get_object_id will be used to get it.
         * @param int             $expiration Expiration of the cached data in seconds from the current time, or DEFAULT_EXPIRATION to use the default value.
         * @return bool True on success, false on error.
         * @throws CacheException Invalid parameter, or null id was passed and get_object_id returns null too.
         */
        public function set($object, $id = null, int $expiration = self::DEFAULT_EXPIRATION) : bool
        {
        }
        /**
         * Update an object in the cache, but only if an object is already cached with the same id.
         *
         * @param object|array    $object The new object that will replace the already cached one.
         * @param int|string|null $id Id of the object to be cached, if null, get_object_id will be used to get it.
         * @param int             $expiration Expiration of the cached data in seconds from the current time, or DEFAULT_EXPIRATION to use the default value.
         * @return bool True on success, false on error or if no object with the supplied id was cached.
         * @throws CacheException Invalid parameter, or null id was passed and get_object_id returns null too.
         */
        public function update_if_cached($object, $id = null, int $expiration = self::DEFAULT_EXPIRATION) : bool
        {
        }
        /**
         * Get the id from an object if the id itself is null.
         *
         * @param object|array    $object The object to get the id from.
         * @param int|string|null $id An object id or null.
         *
         * @return int|string|null Passed $id if it wasn't null, otherwise id obtained from $object using get_object_id.
         *
         * @throws CacheException Passed $id is null and get_object_id returned null too.
         */
        private function get_id_from_object_if_null($object, $id)
        {
        }
        /**
         * Check if the given expiration time value is valid, throw an exception if not.
         *
         * @param int $expiration Expiration time to check.
         * @return void
         * @throws CacheException Expiration time is negative or higher than MAX_EXPIRATION.
         */
        private function verify_expiration_value(int $expiration) : void
        {
        }
        /**
         * Retrieve a cached object, and if no object is cached with the given id,
         * try to get one via get_from_datastore method or by supplying a callback and then cache it.
         *
         * If you want to provide a callable but still use the default expiration value,
         * pass "ObjectCache::DEFAULT_EXPIRATION" as the second parameter.
         *
         * @param int|string    $id The id of the object to retrieve.
         * @param int           $expiration Expiration of the cached data in seconds from the current time, used if an object is retrieved from datastore and cached.
         * @param callable|null $get_from_datastore_callback Optional callback to get the object if it's not cached, it must return an object/array or null.
         * @return object|array|null Cached object, or null if it's not cached and can't be retrieved from datastore or via callback.
         * @throws CacheException Invalid id parameter.
         */
        public function get($id, int $expiration = self::DEFAULT_EXPIRATION, ?callable $get_from_datastore_callback = null)
        {
        }
        /**
         * Remove an object from the cache.
         *
         * @param int|string $id The id of the object to remove.
         * @return bool True if the object is removed from the cache successfully, false otherwise (because the object wasn't cached or for other reason).
         */
        public function remove($id) : bool
        {
        }
        /**
         * Remove all the objects from the cache.
         *
         * @return bool True on success, false on error.
         */
        public function flush() : bool
        {
        }
        /**
         * Is a given object cached?
         *
         * @param int|string $id The id of the object to check.
         * @return bool True if there's a cached object with the specified id.
         */
        public function is_cached($id) : bool
        {
        }
        /**
         * Get the id of an object. This is used by 'set' when a null id is passed.
         * If the object id can't be determined the method must return null.
         *
         * @param array|object $object The object to get the id for.
         * @return int|string|null
         */
        protected abstract function get_object_id($object);
        /**
         * Validate an object before it's cached.
         *
         * @param array|object $object Object to validate.
         * @return array|null An array with validation error messages, null or an empty array if there are no errors.
         */
        protected abstract function validate($object) : ?array;
        /**
         * Get the instance of the cache engine to use.
         *
         * @return CacheEngine
         */
        protected function get_cache_engine_instance() : \Automattic\WooCommerce\Caching\CacheEngine
        {
        }
        /**
         * Get a random string to be used to compose the cache key prefix.
         * It should return a different string each time.
         *
         * @return string
         */
        protected function get_random_string() : string
        {
        }
    }
}
namespace Automattic\WooCommerce\Caches {
    /**
     * A class to cache order objects.
     */
    class OrderCache extends \Automattic\WooCommerce\Caching\ObjectCache
    {
        /**
         * Get the identifier for the type of the cached objects.
         *
         * @return string
         */
        public function get_object_type() : string
        {
        }
        /**
         * Get the id of an object to be cached.
         *
         * @param array|object $object The object to be cached.
         * @return int|string|null The id of the object, or null if it can't be determined.
         */
        protected function get_object_id($object)
        {
        }
        /**
         * Validate an object before caching it.
         *
         * @param array|object $object The object to validate.
         * @return string[]|null An array of error messages, or null if the object is valid.
         */
        protected function validate($object) : ?array
        {
        }
    }
    /**
     * A class to control the usage of the orders cache.
     */
    class OrderCacheController
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * The orders cache to use.
         *
         * @var OrderCache
         */
        private $order_cache;
        /**
         * The orders cache to use.
         *
         * @var FeaturesController
         */
        private $features_controller;
        /**
         * The backup value of the cache usage enable status, stored while the cache is temporarily disabled.
         *
         * @var null|bool
         */
        private $orders_cache_usage_backup = null;
        /**
         * Class initialization, invoked by the DI container.
         *
         * @internal
         * @param OrderCache $order_cache The order cache engine to use.
         */
        public final function init(\Automattic\WooCommerce\Caches\OrderCache $order_cache)
        {
        }
        /**
         * Whether order cache usage is enabled. Currently, linked to custom orders' table usage.
         *
         * @return bool True if the order cache is enabled.
         */
        public function orders_cache_usage_is_enabled() : bool
        {
        }
        /**
         * Temporarily disable the order cache if it's enabled.
         *
         * This is a purely in-memory operation: a variable is created with the value
         * of the current enable status for the feature, and this variable
         * is checked by orders_cache_usage_is_enabled. In the next request the
         * feature will be again enabled or not depending on how the feature is set.
         */
        public function temporarily_disable_orders_cache_usage() : void
        {
        }
        /**
         * Check if the order cache has been temporarily disabled.
         *
         * @return bool True if the order cache is currently temporarily disabled.
         */
        public function orders_cache_usage_is_temporarly_disabled() : bool
        {
        }
        /**
         * Restore the order cache usage that had been temporarily disabled.
         */
        public function maybe_restore_orders_cache_usage() : void
        {
        }
    }
}
namespace Automattic\WooCommerce\Caching {
    /**
     * Interface for cache engines used by objects inheriting from ObjectCache.
     * Here "object" means either an array or an actual PHP object.
     */
    interface CacheEngine
    {
        /**
         * Retrieves an object cached under a given key.
         *
         * @param string $key They key under which the object to retrieve is cached.
         * @param string $group The group under which the object is cached.
         *
         * @return array|object|null The cached object, or null if there's no object cached under the passed key.
         */
        public function get_cached_object(string $key, string $group = '');
        /**
         * Caches an object under a given key, and with a given expiration.
         *
         * @param string       $key The key under which the object will be cached.
         * @param array|object $object The object to cache.
         * @param int          $expiration Expiration for the cached object, in seconds.
         * @param string       $group The group under which the object will be cached.
         *
         * @return bool True if the object is cached successfully, false otherwise.
         */
        public function cache_object(string $key, $object, int $expiration, string $group = '') : bool;
        /**
         * Removes a cached object from the cache.
         *
         * @param string $key They key under which the object is cached.
         * @param string $group The group under which the object is cached.
         *
         * @return bool True if the object is removed from the cache successfully, false otherwise (because the object wasn't cached or for other reason).
         */
        public function delete_cached_object(string $key, string $group = '') : bool;
        /**
         * Checks if an object is cached under a given key.
         *
         * @param string $key The key to verify.
         * @param string $group The group under which the object is cached.
         *
         * @return bool True if there's an object cached under the given key, false otherwise.
         */
        public function is_cached(string $key, string $group = '') : bool;
        /**
         * Deletes all cached objects under a given group.
         *
         * @param string $group The group to delete.
         *
         * @return bool True if the group is deleted successfully, false otherwise.
         */
        public function delete_cache_group(string $group = '') : bool;
    }
    /**
     * Exception thrown by classes derived from ObjectCache.
     */
    class CacheException extends \Exception
    {
        /**
         * Error messages.
         *
         * @var array
         */
        private $errors;
        /**
         * The object that threw the exception.
         *
         * @var ObjectCache
         */
        private $thrower;
        /**
         * The id of the cached object, if available.
         *
         * @var int|string|null
         */
        private $cached_id;
        /**
         * Creates a new instance of the class.
         *
         * @param string          $message The exception message.
         * @param ObjectCache     $thrower The object that is throwing the exception.
         * @param int|string|null $cached_id The involved cached object id, if available.
         * @param array|null      $errors An array of error messages, if available.
         * @param mixed           $code An error code, if available.
         * @param \Throwable|null $previous The previous exception, if available.
         */
        public function __construct(string $message, \Automattic\WooCommerce\Caching\ObjectCache $thrower, $cached_id = null, ?array $errors = null, $code = 0, ?\Throwable $previous = null)
        {
        }
        /**
         * Get a string representation of the exception object.
         *
         * @return string String representation of the exception object.
         */
        public function __toString() : string
        {
        }
        /**
         * Gets the array of error messages passed to the exception constructor.
         *
         * @return array Error messages passed to the exception constructor.
         */
        public function get_errors() : array
        {
        }
        /**
         * Gets the object that threw the exception as passed to the exception constructor.
         *
         * @return object The object that threw the exception.
         */
        public function get_thrower() : object
        {
        }
        /**
         * Gets the id of the cached object as passed to the exception constructor.
         *
         * @return int|string|null The id of the cached object.
         */
        public function get_cached_id()
        {
        }
    }
    /**
     * Implementation of CacheEngine that uses the built-in WordPress cache.
     */
    class WPCacheEngine implements \Automattic\WooCommerce\Caching\CacheEngine
    {
        use \Automattic\WooCommerce\Caching\CacheNameSpaceTrait;
        /**
         * Retrieves an object cached under a given key.
         *
         * @param string $key They key under which the object to retrieve is cached.
         * @param string $group The group under which the object is cached.
         *
         * @return array|object|null The cached object, or null if there's no object cached under the passed key.
         */
        public function get_cached_object(string $key, string $group = '')
        {
        }
        /**
         * Caches an object under a given key, and with a given expiration.
         *
         * @param string       $key The key under which the object will be cached.
         * @param array|object $object The object to cache.
         * @param int          $expiration Expiration for the cached object, in seconds.
         * @param string       $group The group under which the object will be cached.
         *
         * @return bool True if the object is cached successfully, false otherwise.
         */
        public function cache_object(string $key, $object, int $expiration, string $group = '') : bool
        {
        }
        /**
         * Removes a cached object from the cache.
         *
         * @param string $key They key under which the object is cached.
         * @param string $group The group under which the object is cached.
         *
         * @return bool True if the object is removed from the cache successfully, false otherwise (because the object wasn't cached or for other reason).
         */
        public function delete_cached_object(string $key, string $group = '') : bool
        {
        }
        /**
         * Checks if an object is cached under a given key.
         *
         * @param string $key The key to verify.
         * @param string $group The group under which the object is cached.
         *
         * @return bool True if there's an object cached under the given key, false otherwise.
         */
        public function is_cached(string $key, string $group = '') : bool
        {
        }
        /**
         * Deletes all cached objects under a given group.
         *
         * @param string $group The group to delete.
         *
         * @return bool True if the group is deleted successfully, false otherwise.
         */
        public function delete_cache_group(string $group = '') : bool
        {
        }
    }
}
namespace Automattic\WooCommerce\Checkout\Helpers {
    /**
     * Stock Reservation class.
     */
    final class ReserveStock
    {
        /**
         * Is stock reservation enabled?
         *
         * @var boolean
         */
        private $enabled = true;
        /**
         * Constructor
         */
        public function __construct()
        {
        }
        /**
         * Is stock reservation enabled?
         *
         * @return boolean
         */
        protected function is_enabled()
        {
        }
        /**
         * Query for any existing holds on stock for this item.
         *
         * @param \WC_Product $product Product to get reserved stock for.
         * @param integer     $exclude_order_id Optional order to exclude from the results.
         *
         * @return integer Amount of stock already reserved.
         */
        public function get_reserved_stock($product, $exclude_order_id = 0)
        {
        }
        /**
         * Put a temporary hold on stock for an order if enough is available.
         *
         * @throws ReserveStockException If stock cannot be reserved.
         *
         * @param \WC_Order $order Order object.
         * @param int       $minutes How long to reserve stock in minutes. Defaults to woocommerce_hold_stock_minutes.
         */
        public function reserve_stock_for_order($order, $minutes = 0)
        {
        }
        /**
         * Release a temporary hold on stock for an order.
         *
         * @param \WC_Order $order Order object.
         */
        public function release_stock_for_order($order)
        {
        }
        /**
         * Reserve stock for a product by inserting rows into the DB.
         *
         * @throws ReserveStockException If a row cannot be inserted.
         *
         * @param int       $product_id Product ID which is having stock reserved.
         * @param int       $stock_quantity Stock amount to reserve.
         * @param \WC_Order $order Order object which contains the product.
         * @param int       $minutes How long to reserve stock in minutes.
         */
        private function reserve_stock_for_product($product_id, $stock_quantity, $order, $minutes)
        {
        }
        /**
         * Returns query statement for getting reserved stock of a product.
         *
         * @param int     $product_id Product ID.
         * @param integer $exclude_order_id Optional order to exclude from the results.
         * @return string|void Query statement.
         */
        private function get_query_for_reserved_stock($product_id, $exclude_order_id = 0)
        {
        }
    }
    /**
     * ReserveStockException class.
     */
    class ReserveStockException 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()
        {
        }
    }
}
namespace Automattic\WooCommerce {
    /**
     * PSR11 compliant dependency injection container for WooCommerce.
     *
     * Classes in the `src` directory should specify dependencies from that directory via an 'init' method having arguments
     * with type hints. If an instance of the container itself is needed, the type hint to use is \Psr\Container\ContainerInterface.
     *
     * Classes in the `src` directory should interact with anything outside (especially code in the `includes` directory
     * and WordPress functions) by using the classes in the `Proxies` directory. The exception is idempotent
     * functions (e.g. `wp_parse_url`), those can be used directly.
     *
     * Classes in the `includes` directory should use the `wc_get_container` function to get the instance of the container when
     * they need to get an instance of a class from the `src` directory.
     *
     * Class registration should be done via service providers that inherit from Automattic\WooCommerce\Internal\DependencyManagement
     * and those should go in the `src\Internal\DependencyManagement\ServiceProviders` folder unless there's a good reason
     * to put them elsewhere. All the service provider class names must be in the `SERVICE_PROVIDERS` constant.
     *
     * IMPORTANT NOTE: By default an instance of RuntimeContainer will be used as the underlying container,
     * but it's possible to use the old ExtendedContainer (backed by the PHP League's container package) instead,
     * see RuntimeContainer::should_use() for configuration instructions.
     * The League's container, the ExtendedContainer class and the related support code will be removed in WooCommerce 10.0.
     */
    final class Container
    {
        /**
         * The underlying container.
         *
         * @var RuntimeContainer
         */
        private $container;
        /**
         * Class constructor.
         */
        public function __construct()
        {
        }
        /**
         * Finds an entry of the container by its identifier and returns it.
         * See the comment about ContainerException in RuntimeContainer::get.
         *
         * @param string $id Identifier of the entry to look for.
         *
         * @return mixed Resolved entry.
         *
         * @throws NotFoundExceptionInterface No entry was found for the supplied identifier (only when using ExtendedContainer).
         * @throws Psr\Container\ContainerExceptionInterface Error while retrieving the entry.
         * @throws ContainerException Error when resolving the class to an object instance, or (when using RuntimeContainer) class not found.
         * @throws \Exception Exception thrown in the constructor or in the 'init' method of one of the resolved classes.
         */
        public function get(string $id)
        {
        }
        /**
         * Returns true if the container can return an entry for the given identifier.
         * Returns false otherwise.
         *
         * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
         * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
         *
         * @param string $id Identifier of the entry to look for.
         *
         * @return bool
         */
        public function has(string $id) : bool
        {
        }
        /**
         * The list of service provider classes to register.
         *
         * @var string[]
         */
        private function get_service_providers() : array
        {
        }
    }
}
namespace Automattic\WooCommerce\Database\Migrations\CustomOrderTable {
    /**
     * CLI tool for migrating order data to/from custom table.
     *
     * Credits https://github.com/liquidweb/woocommerce-custom-orders-table/blob/develop/includes/class-woocommerce-custom-orders-table-cli.php.
     *
     * Class CLIRunner
     */
    class CLIRunner
    {
        /**
         * CustomOrdersTableController instance.
         *
         * @var CustomOrdersTableController
         */
        private $controller;
        /**
         * DataSynchronizer instance.
         *
         * @var DataSynchronizer;
         */
        private $synchronizer;
        /**
         * PostsToOrdersMigrationController instance.
         *
         * @var PostsToOrdersMigrationController
         */
        private $post_to_cot_migrator;
        /**
         * Init method, invoked by DI container.
         *
         * @param CustomOrdersTableController      $controller Instance.
         * @param DataSynchronizer                 $synchronizer Instance.
         * @param PostsToOrdersMigrationController $posts_to_orders_migration_controller Instance.
         *
         * @internal
         */
        public final function init(\Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController $controller, \Automattic\WooCommerce\Internal\DataStores\Orders\DataSynchronizer $synchronizer, \Automattic\WooCommerce\Database\Migrations\CustomOrderTable\PostsToOrdersMigrationController $posts_to_orders_migration_controller)
        {
        }
        /**
         * Registers commands for CLI.
         */
        public function register_commands()
        {
        }
        /**
         * Check if the COT feature is enabled.
         *
         * @param bool $log Optionally log a error message.
         *
         * @return bool Whether the COT feature is enabled.
         */
        private function is_enabled($log = true) : bool
        {
        }
        /**
         * Free some in-memory usage.
         */
        private function free_in_memory_usage()
        {
        }
        /**
         * Count how many orders have yet to be migrated into the custom orders table.
         *
         * ## EXAMPLES
         *
         *     wp wc hpos count_unmigrated
         *
         * @param array $args Positional arguments passed to the command.
         *
         * @param array $assoc_args Associative arguments (options) passed to the command.
         *
         * @return int The number of orders to be migrated.*
         */
        public function count_unmigrated($args = array(), $assoc_args = array()) : int
        {
        }
        /**
         * Sync order data between the custom order tables and the core WordPress post tables.
         *
         * ## OPTIONS
         *
         * [--batch-size=<batch-size>]
         * : The number of orders to process in each batch.
         * ---
         * default: 500
         * ---
         *
         * ## EXAMPLES
         *
         *     wp wc hpos sync --batch-size=500
         *
         * @param array $args Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function sync($args = array(), $assoc_args = array())
        {
        }
        /**
         * [Deprecated] Use `wp wc hpos sync` instead.
         * Copy order data into the postmeta table.
         *
         * Note that this could dramatically increase the size of your postmeta table, but is recommended
         * if you wish to stop using the custom orders table plugin.
         *
         * ## OPTIONS
         *
         * [--batch-size=<batch-size>]
         * : The number of orders to process in each batch. Passing a value of 0 will disable batching.
         * ---
         * default: 500
         * ---
         *
         * ## EXAMPLES
         *
         *     # Copy all order data into the post meta table, 500 posts at a time.
         *     wp wc cot migrate --batch-size=500
         *
         * @param array $args Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function migrate(array $args = array(), array $assoc_args = array())
        {
        }
        /**
         * Verify migrated order data with original posts data.
         *
         * ## OPTIONS
         *
         * [--batch-size=<batch-size>]
         * : The number of orders to verify in each batch.
         * ---
         * default: 500
         * ---
         *
         * [--start-from=<order_id>]
         * : Order ID to start from.
         * ---
         * default: 0
         * ---
         *
         * [--end-at=<order_id>]
         * : Order ID to end at.
         * ---
         * default: -1
         * ---
         *
         * [--verbose]
         * : Whether to output errors as they happen in batch, or output them all together at the end.
         * ---
         * default: false
         * ---
         *
         * [--order-types]
         * : Comma-separated list of order types that needs to be verified. For example, --order-types=shop_order,shop_order_refund
         * ---
         * default: Output of function `wc_get_order_types( 'cot-migration' )`
         *
         * [--re-migrate]
         * : Attempt to re-migrate orders that failed verification. You should only use this option when you have never run the site with HPOS as authoritative source of order data yet, or you have manually checked the reported errors, otherwise, you risk stale data overwriting the more recent data.
         * default: false
         *
         * ## EXAMPLES
         *
         *     # Verify migrated order data, 500 orders at a time.
         *     wp wc hpos verify_cot_data --batch-size=500 --start-from=0 --end-at=10000
         *
         * @param array $args Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function verify_cot_data($args = array(), $assoc_args = array())
        {
        }
        /**
         * Helper method to get count for orders needing verification.
         *
         * @param int   $order_id_start Order ID to start from.
         * @param int   $order_id_end Order ID to end at.
         * @param array $order_types List of order types to verify.
         * @param bool  $log Whether to also log an error message.
         *
         * @return int Order count.
         */
        private function get_verify_order_count(int $order_id_start, int $order_id_end, array $order_types, bool $log = true) : int
        {
        }
        /**
         * Verify meta data as part of verifying the order object.
         *
         * @param array $order_ids Order IDs.
         * @param array $failed_ids Array for storing failed IDs.
         *
         * @return array Failed IDs with meta details.
         */
        private function verify_meta_data(array $order_ids, array $failed_ids) : array
        {
        }
        /**
         * Helper method to normalize response from meta queries into order_id > meta_key > meta_values.
         *
         * @param array $data Data fetched from meta queries.
         *
         * @return array Normalized data.
         */
        private function normalize_raw_meta_data(array $data) : array
        {
        }
        /**
         * Set custom order tables (HPOS) to authoritative if: 1). HPOS and posts tables are in sync, or, 2). This is a new shop (in this case also create tables). Additionally, all installed WC plugins should be compatible.
         *
         * ## OPTIONS
         *
         * [--for-new-shop]
         * : Enable only if this is a new shop, irrespective of whether tables are in sync.
         * ---
         * default: false
         * ---
         *
         * [--with-sync]
         * : Also enables sync (if it's currently not enabled).
         * ---
         * default: false
         * ---
         *
         * [--ignore-plugin-compatibility]
         * : Enable even if there are active plugins that are incompatible with HPOS.
         *
         * ### EXAMPLES
         *
         *      # Enable HPOS on new shops.
         *      wp wc hpos enable --for-new-shop
         *
         * @param array $args Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         *
         * @return void
         */
        public function enable(array $args = array(), array $assoc_args = array())
        {
        }
        /**
         * Disables custom order tables (HPOS) and posts to authoritative if HPOS and post tables are in sync.
         *
         * ## OPTIONS
         *
         * [--with-sync]
         * : Also disables sync (if it's currently enabled).
         * ---
         * default: false
         * ---
         *
         * ### EXAMPLES
         *
         *  # Disable HPOS.
         *  wp wc hpos disable
         *
         * @param array $args Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function disable($args, $assoc_args)
        {
        }
        /**
         * When HPOS is enabled, this command lets you remove redundant data from the postmeta table for migrated orders.
         *
         * ## OPTIONS
         *
         * <all|id|range>...
         * : ID or range of orders to clean up.
         *
         * [--batch-size=<batch-size>]
         * : Number of orders to process per batch. Applies only to cleaning up of 'all' orders.
         * ---
         * default: 500
         * ---
         *
         * [--force]
         * : When true, post meta will be cleaned up even if the post appears to have been updated more recently than the order.
         * ---
         * default: false
         * ---
         *
         * ## EXAMPLES
         *
         *    # Cleanup post data for order 314.
         *    $ wp wc hpos cleanup 314
         *
         *    # Cleanup postmeta for orders with IDs between 10 and 100 and order 314.
         *    $ wp wc hpos cleanup 10-100 314
         *
         *    # Cleanup postmeta for all orders.
         *    wp wc hpos cleanup all
         *
         *    # Cleanup postmeta for all orders with a batch size of 200 (instead of the default 500).
         *    wp wc hpos cleanup all --batch-size=200
         *
         * @param array $args       Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         * @return void
         */
        public function cleanup_post_data(array $args = array(), array $assoc_args = array())
        {
        }
        /**
         * Displays a summary of HPOS situation on this site.
         *
         * @since 8.6.0
         *
         * @param array $args       Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function status(array $args = array(), array $assoc_args = array())
        {
        }
        /**
         * Displays differences for an order between the HPOS and post datastore.
         *
         * ## OPTIONS
         *
         * <order_id>
         * :The ID of the order.
         *
         * [--format=<format>]
         * : Render output in a particular format.
         * ---
         * default: table
         * options:
         *   - table
         *   - csv
         *   - json
         *   - yaml
         * ---
         *
         * ## EXAMPLES
         *
         *    # Find differences between datastores for order 123.
         *    $ wp wc hpos diff 123
         *
         *    # Find differences for order 123 and display as CSV.
         *    $ wp wc hpos diff 123 --format=csv
         *
         * @since 8.6.0
         *
         * @param array $args       Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function diff(array $args = array(), array $assoc_args = array())
        {
        }
        /**
         * Backfills an order from either the HPOS or the posts datastore.
         *
         * ## OPTIONS
         *
         * <order_id>
         * : The ID of the order.
         *
         * --from=<datastore>
         * : Source datastore. Either 'hpos' or 'posts'.
         * ---
         * options:
         *   - hpos
         *   - posts
         * ---
         *
         * --to=<datastore>
         * : Destination datastore. Either 'hpos' or 'posts'.
         * ---
         * options:
         *   - hpos
         *   - posts
         * ---
         *
         * [--meta_keys=<meta_keys>]
         * : Comma-separated list of meta keys to backfill.
         *
         * [--props=<props>]
         * : Comma-separated list of order properties to backfill.
         *
         * @since 8.6.0
         *
         * @param array $args       Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function backfill(array $args = array(), array $assoc_args = array())
        {
        }
        /**
         * Show the list of WooCommerce-aware plugins known to be compatible, incompatible or without compatibility declaration for HPOS. Note that inactive plugins will always be listed in the "uncertain" list.
         *
         * [--include-inactive]
         * : Include inactive plugins in the list.
         *
         * [--display-filenames]
         * : Print plugin file names instead of plugin names.
         *
         * @since 9.1.0
         *
         * @param array $args       Positional arguments passed to the command.
         * @param array $assoc_args Associative arguments (options) passed to the command.
         */
        public function compatibility_info(array $args = array(), array $assoc_args = array()) : void
        {
        }
        /**
         * Get the printable names for a set of plugins given their file names.
         *
         * @param array $plugins The plugin file names.
         * @param bool  $display_filenames True to simply return the sorted list of plugin file names.
         * @return array A sorted array of plugin names or file names.
         */
        private function get_printable_plugin_names(array $plugins, bool $display_filenames) : array
        {
        }
        /**
         * Print a list of plugin names.
         *
         * @param array $plugins The names to print.
         */
        private function print_plugin_names(array $plugins) : void
        {
        }
        /**
         * Show a log message using the WP_CLI text colorization feature.
         *
         * @param string $text Text to show.
         */
        private function log(string $text)
        {
        }
        /**
         * Enables compatibility mode, which keeps the HPOS and posts datastore in sync.
         *
         * @since 9.1.0
         */
        public function enable_compat_mode() : void
        {
        }
        /**
         * Disables compatibility mode, which keeps the HPOS and posts datastore in sync.
         *
         * @since 9.1.0
         */
        public function disable_compat_mode() : void
        {
        }
        /**
         * Toggles compatibility mode on or off.
         *
         * @since 9.1.0
         *
         * @param bool $enabled TRUE to enable compatibility mode, FALSE to disable.
         */
        private function toggle_compat_mode(bool $enabled) : void
        {
        }
    }
}
namespace Automattic\WooCommerce\Database\Migrations {
    /**
     * Base class for implementing WP posts to order tables migrations handlers.
     * It mainly contains methods to deal with error handling.
     *
     * @package Automattic\WooCommerce\Database\Migrations
     */
    abstract class TableMigrator
    {
        /**
         * An array of cumulated error messages.
         *
         * @var array
         */
        private $errors;
        /**
         * Clear the error messages list.
         *
         * @return void
         */
        protected function clear_errors() : void
        {
        }
        /**
         * Add an error message to the errors list unless it's there already.
         *
         * @param string $error The error message to add.
         * @return void
         */
        protected function add_error(string $error) : void
        {
        }
        /**
         * Get the list of error messages added.
         *
         * @return array
         */
        protected function get_errors() : array
        {
        }
        /**
         * Run $wpdb->query and add the error, if any, to the errors list.
         *
         * @param string $query The SQL query to run.
         * @return mixed Whatever $wpdb->query returns.
         */
        protected function db_query(string $query)
        {
        }
        /**
         * Run $wpdb->get_results and add the error, if any, to the errors list.
         *
         * @param string|null $query The SQL query to run.
         * @param string      $output Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants.
         * @return mixed Whatever $wpdb->get_results returns.
         */
        protected function db_get_results(?string $query = null, string $output = OBJECT)
        {
        }
        /**
         * Migrate a batch of orders, logging any database error that could arise and the exception thrown if any.
         *
         * @param array $entity_ids Order ids to migrate.
         * @return array An array containing the keys 'errors' (array of strings) and 'exception' (exception object or null).
         *
         * @deprecated 8.0.0 Use `fetch_sanitized_migration_data` and `process_migration_data` instead.
         */
        public function process_migration_batch_for_ids(array $entity_ids) : array
        {
        }
        // phpcs:disable Squiz.Commenting.FunctionComment.InvalidNoReturn, Squiz.Commenting.FunctionCommentThrowTag.Missing -- Methods are not marked abstract for back compat.
        /**
         * Return data to be migrated for a batch of entities.
         *
         * @param array $entity_ids Ids of entities to migrate.
         *
         * @return array[] Data to be migrated. Would be of the form: array( 'data' => array( ... ), 'errors' => array( ... ) ).
         */
        public function fetch_sanitized_migration_data(array $entity_ids)
        {
        }
        /**
         * Process migration data for a batch of entities.
         *
         * @param array $data Data to be migrated. Should be of the form: array( 'data' => array( ... ) ) as returned by the `fetch_sanitized_migration_data` method.
         *
         * @return array Array of errors and exception if any.
         */
        public function process_migration_data(array $data)
        {
        }
        // phpcs:enable
        /**
         * The core method that actually performs the migration for the supplied batch of order ids.
         * It doesn't need to deal with database errors nor with exceptions.
         *
         * @param array $entity_ids Order ids to migrate.
         * @return void
         *
         * @deprecated 8.0.0 Use `fetch_sanitized_migration_data` and `process_migration_data` instead.
         */
        protected abstract function process_migration_batch_for_ids_core(array $entity_ids) : void;
        /**
         * Check if the amount of processed database rows matches the amount of orders to process, and log an error if not.
         *
         * @param string     $operation Operation performed, 'insert' or 'update'.
         * @param array|bool $received_rows_count Value returned by @wpdb after executing the query.
         * @return void
         */
        protected function maybe_add_insert_or_update_error(string $operation, $received_rows_count)
        {
        }
    }
    /**
     * Base class for implementing migrations from the standard WordPress meta table
     * to custom meta (key-value pairs) tables.
     *
     * @package Automattic\WooCommerce\Database\Migrations
     */
    abstract class MetaToMetaTableMigrator extends \Automattic\WooCommerce\Database\Migrations\TableMigrator
    {
        /**
         * Schema config, see __construct for more details.
         *
         * @var array
         */
        private $schema_config;
        /**
         * Returns config for the migration.
         *
         * @return array Meta config, must be in following format:
         * array(
         *  'source'      => array(
         *      'meta'          => array(
         *          'table_name'        => source_meta_table_name,
         *          'entity_id_column'  => entity_id column name in source meta table,
         *          'meta_key_column'   => meta_key column',
         *          'meta_value_column' => meta_value column',
         *      ),
         *      'entity' => array(
         *          'table_name'       => entity table name for the meta table,
         *          'source_id_column' => column name in entity table which maps to meta table,
         *          'id_column'        => id column in entity table,
         *      ),
         *      'excluded_keys' => array of keys to exclude,
         *  ),
         *  'destination' => array(
         *      'meta'   => array(
         *          'table_name'        => destination meta table name,
         *          'entity_id_column'  => entity_id column in meta table,
         *          'meta_key_column'   => meta key column,
         *          'meta_value_column' => meta_value column,
         *          'entity_id_type'    => data type of entity id,
         *          'meta_id_column'    => id column in meta table,
         *      ),
         *  ),
         * )
         */
        protected abstract function get_meta_config() : array;
        /**
         * MetaToMetaTableMigrator constructor.
         */
        public function __construct()
        {
        }
        /**
         * Return data to be migrated for a batch of entities.
         *
         * @param array $entity_ids Ids of entities to migrate.
         *
         * @return array[] Data to be migrated. Would be of the form: array( 'data' => array( ... ), 'errors' => array( ... ) ).
         */
        public function fetch_sanitized_migration_data($entity_ids)
        {
        }
        /**
         * Migrate a batch of entities from the posts table to the corresponding table.
         *
         * @param array $entity_ids Ids of entities ro migrate.
         */
        protected function process_migration_batch_for_ids_core(array $entity_ids) : void
        {
        }
        /**
         * Process migration data for a batch of entities.
         *
         * @param array $data Data to be migrated. Should be of the form: array( 'data' => array( ... ) ) as returned by the `fetch_sanitized_migration_data` method.
         *
         * @return array Array of errors and exception if any.
         */
        public function process_migration_data(array $data)
        {
        }
        /**
         * Generate update SQL for given batch.
         *
         * @param array $batch List of data to generate update SQL for. Should be in same format as output of $this->fetch_data_for_migration_for_ids.
         *
         * @return string Query to update batch records.
         */
        private function generate_update_sql_for_batch(array $batch) : string
        {
        }
        /**
         * Generate insert sql queries for batches.
         *
         * @param array $batch Data to generate queries for.
         *
         * @return string Insert SQL query.
         */
        private function generate_insert_sql_for_batch(array $batch) : string
        {
        }
        /**
         * Fetch data for migration.
         *
         * @param array $entity_ids Array of IDs to fetch data for.
         *
         * @return array[] Data, will of the form:
         * array(
         *   'id_1' => array( 'column1' => array( value1_1, value1_2...), 'column2' => array(value2_1, value2_2...), ...),
         *   ...,
         * )
         */
        public function fetch_data_for_migration_for_ids(array $entity_ids) : array
        {
        }
        /**
         * Helper method to get already migrated records. Will be used to find prevent migration of already migrated records.
         *
         * @param array $entity_ids List of entity ids to check for.
         *
         * @return array Already migrated records.
         */
        private function get_already_migrated_records(array $entity_ids) : array
        {
        }
        /**
         * Classify each record on whether to migrate or update.
         *
         * @param array $to_migrate Records to migrate.
         * @param array $already_migrated Records already migrated.
         *
         * @return array[] Returns two arrays, first for records to migrate, and second for records to upgrade.
         */
        private function classify_update_insert_records(array $to_migrate, array $already_migrated) : array
        {
        }
        /**
         * Helper method to build query used to fetch data from source meta table.
         *
         * @param array $entity_ids List of entity IDs to build meta query for.
         *
         * @return string Query that can be used to fetch data.
         */
        private function build_meta_table_query(array $entity_ids) : string
        {
        }
    }
}
namespace Automattic\WooCommerce\Database\Migrations\CustomOrderTable {
    /**
     * Helper class to migrate records from the WordPress post meta table
     * to the custom orders meta table.
     *
     * @package Automattic\WooCommerce\Database\Migrations\CustomOrderTable
     */
    class PostMetaToOrderMetaMigrator extends \Automattic\WooCommerce\Database\Migrations\MetaToMetaTableMigrator
    {
        /**
         * List of meta keys to exclude from migration.
         *
         * @var array
         */
        private $excluded_columns;
        /**
         * PostMetaToOrderMetaMigrator constructor.
         *
         * @param array $excluded_columns List of meta keys to exclude from migration.
         */
        public function __construct($excluded_columns)
        {
        }
        /**
         * Generate config for meta data migration.
         *
         * @return array Meta data migration config.
         */
        protected function get_meta_config() : array
        {
        }
    }
}
namespace Automattic\WooCommerce\Database\Migrations {
    /**
     * Base class for implementing migrations from the standard WordPress meta table
     * to custom structured tables.
     *
     * @package Automattic\WooCommerce\Database\Migrations
     */
    abstract class MetaToCustomTableMigrator extends \Automattic\WooCommerce\Database\Migrations\TableMigrator
    {
        /**
         * Config for tables being migrated and migrated from. See __construct() for detailed config.
         *
         * @var array
         */
        protected $schema_config;
        /**
         * Meta config, see __construct for detailed config.
         *
         * @var array
         */
        protected $meta_column_mapping;
        /**
         * Column mapping from source table to destination custom table. See __construct for detailed config.
         *
         * @var array
         */
        protected $core_column_mapping;
        /**
         * MetaToCustomTableMigrator constructor.
         */
        public function __construct()
        {
        }
        /**
        * Specify schema config the source and destination table.
        *
        * @return array Schema, must of the form:
        * array(
        		'source' => array(
        			'entity' => array(
        				'table_name' => $source_table_name,
        				'meta_rel_column' => $column_meta, Name of column in source table which is referenced by meta table.
        				'destination_rel_column' => $column_dest, Name of column in source table which is refenced by destination table,
        				'primary_key' => $primary_key, Primary key of the source table
        			),
        			'meta' => array(
        				'table' => $meta_table_name,
        				'meta_key_column' => $meta_key_column_name,
        				'meta_value_column' => $meta_value_column_name,
        				'entity_id_column' => $entity_id_column, Name of the column having entity IDs.
        			),
        		),
        		'destination' => array(
        			'table_name' => $table_name, Name of destination table,
        			'source_rel_column' => $column_source_id, Name of the column in destination table which is referenced by source table.
        			'primary_key' => $table_primary_key,
        			'primary_key_type' => $type bool|int|string|decimal
        		)
        */
        protected abstract function get_schema_config() : array;
        /**
         * Specify column config from the source table.
         *
         * @return array Config, must be of the form:
         * array(
         *  '$source_column_name_1' => array( // $source_column_name_1 is column name in source table, or a select statement.
         *      'type' => 'type of value, could be string/int/date/float.',
         *      'destination' => 'name of the column in column name where this data should be inserted in.',
         *  ),
         *  '$source_column_name_2' => array(
         *          ......
         *  ),
         *  ....
         * ).
         */
        protected abstract function get_core_column_mapping() : array;
        /**
         * Specify meta keys config from source meta table.
         *
         * @return array Config, must be of the form.
         * array(
         *  '$meta_key_1' => array(  // $meta_key_1 is the name of meta_key in source meta table.
         *          'type' => 'type of value, could be string/int/date/float',
         *          'destination' => 'name of the column in column name where this data should be inserted in.',
         *  ),
         *  '$meta_key_2' => array(
         *          ......
         *  ),
         *  ....
         * ).
         */
        protected abstract function get_meta_column_config() : array;
        /**
         * Generate SQL for data insertion.
         *
         * @param array $batch Data to generate queries for. Will be 'data' array returned by `$this->fetch_data_for_migration_for_ids()` method.
         *
         * @return string Generated queries for insertion for this batch, would be of the form:
         * INSERT IGNORE INTO $table_name ($columns) values
         *  ($value for row 1)
         *  ($value for row 2)
         * ...
         */
        private function generate_insert_sql_for_batch(array $batch) : string
        {
        }
        /**
         * Generate SQL for data updating.
         *
         * @param array $batch Data to generate queries for. Will be `data` array returned by fetch_data_for_migration_for_ids() method.
         *
         * @param array $entity_row_mapping Maps rows to update data with their original IDs. Will be returned by `generate_update_sql_for_batch`.
         *
         * @return string Generated queries for batch update. Would be of the form:
         * INSERT INTO $table ( $columns ) VALUES
         *  ($value for row 1)
         *  ($value for row 2)
         * ...
         * ON DUPLICATE KEY UPDATE
         * $column1 = VALUES($column1)
         * $column2 = VALUES($column2)
         * ...
         */
        private function generate_update_sql_for_batch(array $batch, array $entity_row_mapping) : string
        {
        }
        /**
         * Generate schema for primary ID column of destination table.
         *
         * @return array[] Schema for primary ID column.
         */
        private function get_destination_table_primary_id_schema() : array
        {
        }
        /**
         * Generate values and columns clauses to be used in INSERT and INSERT..ON DUPLICATE KEY UPDATE statements.
         *
         * @param array $columns_schema Columns config for destination table.
         * @param array $batch Actual data to migrate as returned by `data` in `fetch_data_for_migration_for_ids` method.
         *
         * @return array SQL clause for values, columns placeholders, and columns.
         */
        private function generate_column_clauses(array $columns_schema, array $batch) : array
        {
        }
        /**
         * Return data to be migrated for a batch of entities.
         *
         * @param array $entity_ids Ids of entities to migrate.
         *
         * @return array[] Data to be migrated. Would be of the form: array( 'data' => array( ... ), 'errors' => array( ... ) ).
         */
        public function fetch_sanitized_migration_data($entity_ids)
        {
        }
        /**
         * Migrate a batch of entities from the posts table to the corresponding table.
         *
         * @param array $entity_ids Ids of entities to migrate.
         *
         * @return void
         */
        protected function process_migration_batch_for_ids_core(array $entity_ids) : void
        {
        }
        /**
         * Process migration data for a batch of entities.
         *
         * @param array $data Data to be migrated. Should be of the form: array( 'data' => array( ... ) ) as returned by the `fetch_sanitized_migration_data` method.
         *
         * @return array Array of errors and exception if any.
         */
        public function process_migration_data(array $data)
        {
        }
        /**
         * Process batch for insertion into destination table.
         *
         * @param array $batch Data to insert, will be of the form as returned by `data` in `fetch_data_for_migration_for_ids`.
         */
        private function process_insert_batch(array $batch) : void
        {
        }
        /**
         * Process batch for update into destination table.
         *
         * @param array $batch Data to insert, will be of the form as returned by `data` in `fetch_data_for_migration_for_ids`.
         * @param array $ids_mapping Maps rows to update data with their original IDs.
         */
        private function process_update_batch(array $batch, array $ids_mapping) : void
        {
        }
        /**
         * Fetch data for migration.
         *
         * @param array $entity_ids Entity IDs to fetch data for.
         *
         * @return array[] Data along with errors (if any), will of the form:
         * array(
         *  'data' => array(
         *      'id_1' => array( 'column1' => value1, 'column2' => value2, ...),
         *      ...,
         *   ),
         *  'errors' => array(
         *      'id_1' => array( 'column1' => error1, 'column2' => value2, ...),
         *      ...,
         * )
         */
        private function fetch_data_for_migration_for_ids(array $entity_ids) : array
        {
        }
        /**
         * Fetch id mappings for records that are already inserted in the destination table.
         *
         * @param array $entity_ids List of entity IDs to verify.
         *
         * @return array Already migrated entities, would be of the form
         * array(
         *      '$source_id1' => array(
         *          'source_id' => $source_id1,
         *          'destination_id' => $destination_id1
         *          'modified' => 0 if it can be determined that the row doesn't need update, 1 otherwise
         *      ),
         *      ...
         * )
         */
        protected function get_already_existing_records(array $entity_ids) : array
        {
        }
        /**
         * Get additional string to be appended to the WHERE clause of the SQL query used by get_data_to_insert_or_update.
         *
         * @param array $entity_ids The ids of the entities being inserted or updated.
         * @return string Additional string for the WHERE clause, must either be empty or start with "AND" or "OR".
         */
        protected function get_additional_where_clause_for_get_data_to_insert_or_update(array $entity_ids) : string
        {
        }
        /**
         * Helper method to build query used to fetch data from core source table.
         *
         * @param array $entity_ids List of entity IDs to fetch.
         *
         * @return string Query that can be used to fetch data.
         */
        private function build_entity_table_query(array $entity_ids) : string
        {
        }
        /**
         * Helper method to build query that will be used to fetch data from source meta table.
         *
         * @param array $entity_ids List of IDs to fetch metadata for.
         *
         * @return string Query for fetching meta data.
         */
        private function build_meta_data_query(array $entity_ids) : string
        {
        }
        /**
         * Helper function to validate and combine data before we try to insert.
         *
         * @param array $entity_data Data from source table.
         * @param array $meta_data Data from meta table.
         *
         * @return array[] Validated and combined data with errors.
         */
        private function process_and_sanitize_data(array $entity_data, array $meta_data) : array
        {
        }
        /**
         * Helper method to sanitize core source table.
         *
         * @param array $sanitized_entity_data Array containing sanitized data for insertion.
         * @param array $error_records Error records.
         * @param array $entity_data Original source data.
         */
        private function process_and_sanitize_entity_data(array &$sanitized_entity_data, array &$error_records, array $entity_data) : void
        {
        }
        /**
         * Helper method to sanitize soure meta data.
         *
         * @param array $sanitized_entity_data Array containing sanitized data for insertion.
         * @param array $error_records Error records.
         * @param array $meta_data Original source data.
         */
        private function processs_and_sanitize_meta_data(array &$sanitized_entity_data, array &$error_records, array $meta_data) : void
        {
        }
        /**
         * Validate and transform data so that we catch as many errors as possible before inserting.
         *
         * @param mixed  $value Actual data value.
         * @param string $type Type of data, could be decimal, int, date, string.
         *
         * @return float|int|mixed|string|\WP_Error
         */
        private function validate_data($value, string $type)
        {
        }
        /**
         * Verify whether data was migrated properly for given IDs.
         *
         * @param array $source_ids List of source IDs.
         *
         * @return array List of IDs along with columns that failed to migrate.
         */
        public function verify_migrated_data(array $source_ids) : array
        {
        }
        /**
         * Generate query to fetch data from both source and destination tables. Use the results in `verify_data` to verify if data was migrated properly.
         *
         * @param array $source_ids Array of IDs in source table.
         *
         * @return string SELECT statement.
         */
        protected function build_verification_query($source_ids)
        {
        }
        /**
         * Fill source metadata for given IDs for verification. This will return filled data in following format:
         * [
         *    {
         *      $source_table_$source_column: $value,
         *      ...,
         *      $destination_table_$destination_column: $value,
         *      ...
         *      meta_source_{$destination_column_name1}: $meta_value,
         *      ...
         *    },
         *   ...
         * ]
         *
         * @param array $results    Entity data from both source and destination table.
         * @param array $source_ids List of source IDs.
         *
         * @return array Filled $results param with source metadata.
         */
        private function fill_source_metadata($results, $source_ids)
        {
        }
        /**
         * Helper function to generate where clause for fetching data for verification.
         *
         * @param array $source_ids Array of IDs from source table.
         *
         * @return string WHERE clause.
         */
        protected function get_where_clause_for_verification($source_ids)
        {
        }
        /**
         * Verify data from both source and destination tables and check if they were migrated properly.
         *
         * @param array $collected_data Collected data in array format, should be in same structure as returned from query in `$this->build_verification_query`.
         *
         * @return array Array of failed IDs if any, along with columns/meta_key names.
         */
        protected function verify_data($collected_data)
        {
        }
        /**
         * Helper method to verify and compare core columns.
         *
         * @param array $row        Both migrated and source data for a single row.
         * @param array $failed_ids Array of failed IDs.
         *
         * @return array Array of failed IDs if any, along with columns/meta_key names.
         */
        private function verify_entity_columns($row, $failed_ids)
        {
        }
        /**
         * Helper method to verify meta columns.
         *
         * @param array $row        Both migrated and source data for a single row.
         * @param array $failed_ids Array of failed IDs.
         *
         * @return array Array of failed IDs if any, along with columns/meta_key names.
         */
        private function verify_meta_columns($row, $failed_ids)
        {
        }
        /**
         * Helper method to pre-process rows to make sure we parse the correct type.
         *
         * @param array  $row Both migrated and source data for a single row.
         * @param array  $schema Column schema.
         * @param string $alias Name of source column.
         * @param string $destination_alias Name of destination column.
         *
         * @return array Processed row.
         */
        private function pre_process_row($row, $schema, $alias, $destination_alias)
        {
        }
        /**
         * Helper method to get default value of a type.
         *
         * @param string $type Type.
         *
         * @return mixed Default value.
         */
        private function get_type_defaults($type)
        {
        }
    }
}
namespace Automattic\WooCommerce\Database\Migrations\CustomOrderTable {
    /**
     * Helper class to migrate records from the WordPress post table
     * to the custom order addresses table.
     *
     * @package Automattic\WooCommerce\Database\Migrations\CustomOrderTable
     */
    class PostToOrderAddressTableMigrator extends \Automattic\WooCommerce\Database\Migrations\MetaToCustomTableMigrator
    {
        /**
         * Type of addresses being migrated; 'billing' or 'shipping'.
         *
         * @var $type
         */
        protected $type;
        /**
         * PostToOrderAddressTableMigrator constructor.
         *
         * @param string $type Type of address being migrated; 'billing' or 'shipping'.
         */
        public function __construct($type)
        {
        }
        /**
         * Get schema config for wp_posts and wc_order_address table.
         *
         * @return array Config.
         */
        protected function get_schema_config() : array
        {
        }
        /**
         * Get columns config.
         *
         * @return \string[][] Config.
         */
        protected function get_core_column_mapping() : array
        {
        }
        /**
         * Get meta data config.
         *
         * @return \string[][] Config.
         */
        public function get_meta_column_config() : array
        {
        }
        /**
         * Additional WHERE clause to only fetch the addresses of the current type.
         *
         * @param array $entity_ids The ids of the entities being inserted or updated.
         * @return string The additional string for the WHERE clause.
         */
        protected function get_additional_where_clause_for_get_data_to_insert_or_update(array $entity_ids) : string
        {
        }
        /**
         * Helper function to generate where clause for fetching data for verification.
         *
         * @param array $source_ids Array of IDs from source table.
         *
         * @return string WHERE clause.
         */
        protected function get_where_clause_for_verification($source_ids)
        {
        }
    }
    /**
     * Helper class to migrate records from the WordPress post table
     * to the custom order operations table.
     *
     * @package Automattic\WooCommerce\Database\Migrations\CustomOrderTable
     */
    class PostToOrderOpTableMigrator extends \Automattic\WooCommerce\Database\Migrations\MetaToCustomTableMigrator
    {
        /**
         * Get schema config for wp_posts and wc_order_operational_detail table.
         *
         * @return array Config.
         */
        protected function get_schema_config() : array
        {
        }
        /**
         * Get columns config.
         *
         * @return \string[][] Config.
         */
        protected function get_core_column_mapping() : array
        {
        }
        /**
         * Get meta data config.
         *
         * @return \string[][] Config.
         */
        public function get_meta_column_config() : array
        {
        }
    }
    /**
     * Helper class to migrate records from the WordPress post table
     * to the custom order table (and only that table - PostsToOrdersMigrationController
     * is used for fully migrating orders).
     */
    class PostToOrderTableMigrator extends \Automattic\WooCommerce\Database\Migrations\MetaToCustomTableMigrator
    {
        /**
         * Get schema config for wp_posts and wc_order table.
         *
         * @return array Config.
         */
        protected function get_schema_config() : array
        {
        }
        /**
         * Get columns config.
         *
         * @return \string[][] Config.
         */
        protected function get_core_column_mapping() : array
        {
        }
        /**
         * Get meta data config.
         *
         * @return \string[][] Config.
         */
        public function get_meta_column_config() : array
        {
        }
    }
    /**
     * This is the main class used to perform the complete migration of orders
     * from the posts table to the custom orders table.
     *
     * @package Automattic\WooCommerce\Database\Migrations\CustomOrderTable
     */
    class PostsToOrdersMigrationController
    {
        /**
         * Error logger for migration errors.
         *
         * @var \WC_Logger
         */
        private $error_logger;
        /**
         * Array of objects used to perform the migration.
         *
         * @var TableMigrator[]
         */
        private $all_migrators;
        /**
         * The source name to use for logs.
         */
        public const LOGS_SOURCE_NAME = 'posts-to-orders-migration';
        /**
         * PostsToOrdersMigrationController constructor.
         */
        public function __construct()
        {
        }
        /**
         * Helper method to get migrated keys for all the tables in this controller.
         *
         * @return string[] Array of meta keys.
         */
        public function get_migrated_meta_keys()
        {
        }
        /**
         * Migrates a set of orders from the posts table to the custom orders tables.
         *
         * @param array $order_post_ids List of post IDs of the orders to migrate.
         */
        public function migrate_orders(array $order_post_ids) : void
        {
        }
        /**
         * Log migration errors if any.
         *
         * @param array           $order_post_ids List of post IDs of the orders to migrate.
         * @param array           $errors List of errors to log.
         * @param \Exception|null $exception Exception to log.
         * @param bool|null       $using_transactions Whether transactions were used.
         * @param string          $name Name of the migrator.
         */
        private function handle_migration_error(array $order_post_ids, array $errors, ?\Exception $exception, ?bool $using_transactions, string $name)
        {
        }
        /**
         * Start a database transaction if the configuration mandates so.
         *
         * @return bool|null True if transaction started, false if transactions won't be used, null if transaction failed to start.
         *
         * @throws \Exception If the transaction isolation level is invalid.
         */
        private function maybe_start_transaction() : ?bool
        {
        }
        /**
         * Commit the current database transaction.
         *
         * @return bool True on success, false on error.
         */
        private function commit_transaction() : bool
        {
        }
        /**
         * Rollback the current database transaction.
         *
         * @return bool True on success, false on error.
         */
        private function rollback_transaction() : bool
        {
        }
        /**
         * Execute a database query and log any errors.
         *
         * @param string $query          The SQL query to execute.
         * @param bool   $supress_errors Whether to suppress errors.
         *
         * @return bool True if the query succeeded, false if there were errors.
         */
        private function db_query(string $query, bool $supress_errors = false) : bool
        {
        }
        /**
         * Verify whether the given order IDs were migrated properly or not.
         *
         * @param array $order_post_ids Order IDs.
         *
         * @return array Array of failed IDs along with columns.
         */
        public function verify_migrated_orders(array $order_post_ids) : array
        {
        }
        /**
         * Migrates an order from the posts table to the custom orders tables.
         *
         * @param int $order_post_id Post ID of the order to migrate.
         */
        public function migrate_order(int $order_post_id) : void
        {
        }
    }
}
namespace Automattic\WooCommerce\Database\Migrations {
    /**
     * Helper class to assist with migration related operations.
     */
    class MigrationHelper
    {
        /**
         * Placeholders that we will use in building $wpdb queries.
         *
         * @var string[]
         */
        private static $wpdb_placeholder_for_type = array('int' => '%d', 'decimal' => '%f', 'string' => '%s', 'date' => '%s', 'date_epoch' => '%s', 'bool' => '%d');
        /**
         * Helper method to escape backtick in various schema fields.
         *
         * @param array $schema_config Schema config.
         *
         * @return array Schema config escaped for backtick.
         */
        public static function escape_schema_for_backtick(array $schema_config) : array
        {
        }
        /**
         * Helper method to escape backtick in column and table names.
         * WP does not provide a method to escape table/columns names yet, but hopefully soon in @link https://core.trac.wordpress.org/ticket/52506
         *
         * @param string|array $identifier Column or table name.
         *
         * @return array|string|string[] Escaped identifier.
         */
        public static function escape_and_add_backtick($identifier)
        {
        }
        /**
         * Return $wpdb->prepare placeholder for data type.
         *
         * @param string $type Data type.
         *
         * @return string $wpdb placeholder.
         */
        public static function get_wpdb_placeholder_for_type(string $type) : string
        {
        }
        /**
         * Generates ON DUPLICATE KEY UPDATE clause to be used in migration.
         *
         * @param array $columns List of column names.
         *
         * @return string SQL clause for INSERT...ON DUPLICATE KEY UPDATE
         */
        public static function generate_on_duplicate_statement_clause(array $columns) : string
        {
        }
        /**
         * Migrate state codes in all the required places in the database, needed after they change for a given country.
         *
         * @param string $country_code The country that has the states for which the migration is needed.
         * @param array  $old_to_new_states_mapping An associative array where keys are the old state codes and values are the new state codes.
         * @return bool True if there are more records that need to be migrated, false otherwise.
         */
        public static function migrate_country_states(string $country_code, array $old_to_new_states_mapping) : bool
        {
        }
        /**
         * Migrate state codes in all the required places in the database (except orders).
         *
         * @param string $country_code The country that has the states for which the migration is needed.
         * @param array  $old_to_new_states_mapping An associative array where keys are the old state codes and values are the new state codes.
         * @return void
         */
        private static function migrate_country_states_for_misc_data(string $country_code, array $old_to_new_states_mapping) : void
        {
        }
        /**
         * Migrate state codes in the shipping locations table.
         *
         * @param string $country_code The country that has the states for which the migration is needed.
         * @param array  $old_to_new_states_mapping An associative array where keys are the old state codes and values are the new state codes.
         * @return void
         */
        private static function migrate_country_states_for_shipping_locations(string $country_code, array $old_to_new_states_mapping) : void
        {
        }
        /**
         * Migrate the state code for the store location.
         *
         * @param string $country_code The country that has the states for which the migration is needed.
         * @param array  $old_to_new_states_mapping An associative array where keys are the old state codes and values are the new state codes.
         * @return void
         */
        private static function migrate_country_states_for_store_location(string $country_code, array $old_to_new_states_mapping) : void
        {
        }
        /**
         * Migrate state codes for orders in the orders table and in the posts table.
         * It will migrate only N*2*(number of states) records, being N equal to 100 by default
         * but this number can be modified via the woocommerce_migrate_country_states_for_orders_batch_size filter.
         *
         * @param string $country_code The country that has the states for which the migration is needed.
         * @param array  $old_to_new_states_mapping An associative array where keys are the old state codes and values are the new state codes.
         * @return bool True if there are more records that need to be migrated, false otherwise.
         */
        private static function migrate_country_states_for_orders(string $country_code, array $old_to_new_states_mapping) : bool
        {
        }
        /**
         * Migrate state codes in the tax rates table.
         *
         * @param string $country_code The country that has the states for which the migration is needed.
         * @param array  $old_to_new_states_mapping An associative array where keys are the old state codes and values are the new state codes.
         * @return void
         */
        private static function migrate_country_states_for_tax_rates(string $country_code, array $old_to_new_states_mapping) : void
        {
        }
    }
}
namespace Automattic\WooCommerce\Enums {
    /**
     * Enum class for all the order statuses.
     *
     * For a full documentation on the public order statuses, please refer to the following link:
     * https://woocommerce.com/document/managing-orders/order-statuses/
     */
    final class OrderStatus
    {
        /**
         * The order has been received, but no payment has been made.
         *
         * @var string
         */
        const PENDING = 'pending';
        /**
         * The customer’s payment failed or was declined, and no payment has been successfully made.
         *
         * @var string
         */
        const FAILED = 'failed';
        /**
         * The order is awaiting payment confirmation.
         *
         * @var string
         */
        const ON_HOLD = 'on-hold';
        /**
         * Order fulfilled and complete.
         *
         * @var string
         */
        const COMPLETED = 'completed';
        /**
         * Payment has been received (paid), and the stock has been reduced.
         *
         * @var string
         */
        const PROCESSING = 'processing';
        /**
         * Orders are automatically put in the Refunded status when an admin or shop manager has fully refunded the order’s value after payment.
         *
         * @var string
         */
        const REFUNDED = 'refunded';
        /**
         * The order was canceled by an admin or the customer.
         *
         * @var string
         */
        const CANCELLED = 'cancelled';
        /**
         * The order is in the trash.
         *
         * @var string
         */
        const TRASH = 'trash';
        /**
         * The order is a draft (legacy status).
         *
         * @var string
         */
        const NEW = 'new';
        /**
         * The order is an automatically generated draft.
         *
         * @var string
         */
        const AUTO_DRAFT = 'auto-draft';
        /**
         * Draft orders are created when customers start the checkout process while the block version of the checkout is in place.
         *
         * @var string
         */
        const DRAFT = 'draft';
    }
}
namespace Automattic\WooCommerce\Internal\Admin\BlockTemplates {
    /**
     * Trait for block formatted template.
     */
    trait BlockFormattedTemplateTrait
    {
        /**
         * Get the block configuration as a formatted template.
         *
         * @return array The block configuration as a formatted template.
         */
        public function get_formatted_template() : array
        {
        }
        /**
         * Get the block hide conditions formatted for inclusion in a formatted template.
         */
        private function get_formatted_hide_conditions() : array
        {
        }
        /**
         * Get the block disable conditions formatted for inclusion in a formatted template.
         */
        private function get_formatted_disable_conditions() : array
        {
        }
        /**
         * Formats conditions in the expected format to include in the template.
         *
         * @param array $conditions The conditions to format.
         */
        private function format_conditions($conditions) : array
        {
        }
    }
    /**
     * Block configuration used to specify blocks in BlockTemplate.
     */
    class AbstractBlock implements \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface
    {
        use \Automattic\WooCommerce\Internal\Admin\BlockTemplates\BlockFormattedTemplateTrait;
        /**
         * The block name.
         *
         * @var string
         */
        private $name;
        /**
         * The block ID.
         *
         * @var string
         */
        private $id;
        /**
         * The block order.
         *
         * @var int
         */
        private $order = 10000;
        /**
         * The block attributes.
         *
         * @var array
         */
        private $attributes = array();
        /**
         * The block hide conditions.
         *
         * @var array
         */
        private $hide_conditions = array();
        /**
         * The block hide conditions counter.
         *
         * @var int
         */
        private $hide_conditions_counter = 0;
        /**
         * The block disable conditions.
         *
         * @var array
         */
        private $disable_conditions = array();
        /**
         * The block disable conditions counter.
         *
         * @var int
         */
        private $disable_conditions_counter = 0;
        /**
         * The block template that this block belongs to.
         *
         * @var BlockTemplate
         */
        private $root_template;
        /**
         * The parent container.
         *
         * @var ContainerInterface
         */
        private $parent;
        /**
         * Block constructor.
         *
         * @param array                        $config The block configuration.
         * @param BlockTemplateInterface       $root_template The block template that this block belongs to.
         * @param BlockContainerInterface|null $parent The parent block container.
         *
         * @throws \ValueError If the block configuration is invalid.
         * @throws \ValueError If the parent block container does not belong to the same template as the block.
         */
        public function __construct(array $config, \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface &$root_template, \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface &$parent = null)
        {
        }
        /**
         * Validate block configuration.
         *
         * @param array                   $config The block configuration.
         * @param BlockTemplateInterface  $root_template The block template that this block belongs to.
         * @param ContainerInterface|null $parent The parent block container.
         *
         * @throws \ValueError If the block configuration is invalid.
         * @throws \ValueError If the parent block container does not belong to the same template as the block.
         */
        protected function validate(array $config, \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface &$root_template, \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface &$parent = null)
        {
        }
        /**
         * Get the block name.
         */
        public function get_name() : string
        {
        }
        /**
         * Get the block ID.
         */
        public function get_id() : string
        {
        }
        /**
         * Get the block order.
         */
        public function get_order() : int
        {
        }
        /**
         * Set the block order.
         *
         * @param int $order The block order.
         */
        public function set_order(int $order)
        {
        }
        /**
         * Get the block attributes.
         */
        public function get_attributes() : array
        {
        }
        /**
         * Set the block attributes.
         *
         * @param array $attributes The block attributes.
         */
        public function set_attributes(array $attributes)
        {
        }
        /**
         * Set a block attribute value without replacing the entire attributes object.
         *
         * @param string $key The attribute key.
         * @param mixed  $value The attribute value.
         */
        public function set_attribute(string $key, $value)
        {
        }
        /**
         * Get the template that this block belongs to.
         */
        public function &get_root_template() : \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface
        {
        }
        /**
         * Get the parent block container.
         */
        public function &get_parent() : \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface
        {
        }
        /**
         * Remove the block from its parent.
         */
        public function remove()
        {
        }
        /**
         * Check if the block is detached from its parent block container or the template it belongs to.
         *
         * @return bool True if the block is detached from its parent block container or the template it belongs to.
         */
        public function is_detached() : bool
        {
        }
        /**
         * Add a hide condition to the block.
         *
         * The hide condition is a JavaScript-like expression that will be evaluated on the client to determine if the block should be hidden.
         * See [@woocommerce/expression-evaluation](https://github.com/woocommerce/woocommerce/blob/trunk/packages/js/expression-evaluation/README.md) for more details.
         *
         * @param string $expression An expression, which if true, will hide the block.
         */
        public function add_hide_condition(string $expression) : string
        {
        }
        /**
         * Remove a hide condition from the block.
         *
         * @param string $key The key of the hide condition to remove.
         */
        public function remove_hide_condition(string $key)
        {
        }
        /**
         * Get the hide conditions of the block.
         */
        public function get_hide_conditions() : array
        {
        }
        /**
         * Add a disable condition to the block.
         *
         * The disable condition is a JavaScript-like expression that will be evaluated on the client to determine if the block should be hidden.
         * See [@woocommerce/expression-evaluation](https://github.com/woocommerce/woocommerce/blob/trunk/packages/js/expression-evaluation/README.md) for more details.
         *
         * @param string $expression An expression, which if true, will disable the block.
         */
        public function add_disable_condition(string $expression) : string
        {
        }
        /**
         * Remove a disable condition from the block.
         *
         * @param string $key The key of the disable condition to remove.
         */
        public function remove_disable_condition(string $key)
        {
        }
        /**
         * Get the disable conditions of the block.
         */
        public function get_disable_conditions() : array
        {
        }
    }
    /**
     * Trait for block containers.
     */
    trait BlockContainerTrait
    {
        use \Automattic\WooCommerce\Internal\Admin\BlockTemplates\BlockFormattedTemplateTrait {
            get_formatted_template as get_block_formatted_template;
        }
        /**
         * The inner blocks.
         *
         * @var BlockInterface[]
         */
        private $inner_blocks = array();
        // phpcs doesn't take into account exceptions thrown by called methods.
        // phpcs:disable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber
        /**
         * Add a block to the block container.
         *
         * @param BlockInterface $block The block.
         *
         * @throws \ValueError If the block configuration is invalid.
         * @throws \ValueError If a block with the specified ID already exists in the template.
         * @throws \UnexpectedValueException If the block container is not the parent of the block.
         * @throws \UnexpectedValueException If the block container's root template is not the same as the block's root template.
         */
        protected function &add_inner_block(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface
        {
        }
        // phpcs:enable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber
        /**
         * Checks if a block is a descendant of the block container.
         *
         * @param BlockInterface $block The block.
         */
        private function is_block_descendant(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block) : bool
        {
        }
        /**
         * Get a block by ID.
         *
         * @param string $block_id The block ID.
         */
        public function get_block(string $block_id) : ?\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface
        {
        }
        /**
         * Remove a block from the block container.
         *
         * @param string $block_id The block ID.
         *
         * @throws \UnexpectedValueException If the block container is not an ancestor of the block.
         */
        public function remove_block(string $block_id)
        {
        }
        /**
         * Remove all blocks from the block container.
         */
        public function remove_blocks()
        {
        }
        /**
         * Remove a block from the block container's inner blocks. This is an internal method and should not be called directly
         * except for from the BlockContainerTrait's remove_block() method.
         *
         * @param BlockInterface $block The block.
         */
        public function remove_inner_block(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block)
        {
        }
        /**
         * Get the inner blocks sorted by order.
         */
        private function get_inner_blocks_sorted_by_order() : array
        {
        }
        /**
         * Get the inner blocks as a formatted template.
         */
        public function get_formatted_template() : array
        {
        }
        /**
         * Do the `woocommerce_block_template_after_add_block` action.
         * Handle exceptions thrown by the action.
         *
         * @param BlockInterface $block The block.
         */
        private function do_after_add_block_action(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block)
        {
        }
        /**
         * Do the `woocommerce_block_template_area_{template_area}_after_add_block_{block_id}` action.
         * Handle exceptions thrown by the action.
         *
         * @param BlockInterface $block The block.
         */
        private function do_after_add_specific_block_action(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block)
        {
        }
        /**
         * Do the `woocommerce_block_after_add_block_error` action.
         *
         * @param BlockInterface $block The block.
         * @param string         $action The action that threw the exception.
         * @param \Exception     $e The exception.
         */
        private function do_after_add_block_error_action(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block, string $action, \Exception $e)
        {
        }
        /**
         * Do the `woocommerce_block_template_after_remove_block` action.
         * Handle exceptions thrown by the action.
         *
         * @param BlockInterface $block The block.
         */
        private function do_after_remove_block_action(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block)
        {
        }
        /**
         * Do the `woocommerce_block_template_area_{template_area}_after_remove_block_{block_id}` action.
         * Handle exceptions thrown by the action.
         *
         * @param BlockInterface $block The block.
         */
        private function do_after_remove_specific_block_action(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block)
        {
        }
        /**
         * Do the `woocommerce_block_after_remove_block_error` action.
         *
         * @param BlockInterface $block The block.
         * @param string         $action The action that threw the exception.
         * @param \Exception     $e The exception.
         */
        private function do_after_remove_block_error_action(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block, string $action, \Exception $e)
        {
        }
    }
    /**
     * Block template class.
     */
    abstract class AbstractBlockTemplate implements \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface
    {
        use \Automattic\WooCommerce\Internal\Admin\BlockTemplates\BlockContainerTrait;
        /**
         * Get the template ID.
         */
        public abstract function get_id() : string;
        /**
         * Get the template title.
         */
        public function get_title() : string
        {
        }
        /**
         * Get the template description.
         */
        public function get_description() : string
        {
        }
        /**
         * Get the template area.
         */
        public function get_area() : string
        {
        }
        /**
         * The block cache.
         *
         * @var BlockInterface[]
         */
        private $block_cache = [];
        /**
         * Get a block by ID.
         *
         * @param string $block_id The block ID.
         */
        public function get_block(string $block_id) : ?\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface
        {
        }
        /**
         * Caches a block in the template. This is an internal method and should not be called directly
         * except for from the BlockContainerTrait's add_inner_block() method.
         *
         * @param BlockInterface $block The block to cache.
         *
         * @throws \ValueError If a block with the specified ID already exists in the template.
         * @throws \ValueError If the block template that the block belongs to is not this template.
         *
         * @ignore
         */
        public function cache_block(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface &$block)
        {
        }
        /**
         * Uncaches a block in the template. This is an internal method and should not be called directly
         * except for from the BlockContainerTrait's remove_block() method.
         *
         * @param string $block_id The block ID.
         *
         * @ignore
         */
        public function uncache_block(string $block_id)
        {
        }
        /**
         * Generate a block ID based on a base.
         *
         * @param string $id_base The base to use when generating an ID.
         * @return string
         */
        public function generate_block_id(string $id_base) : string
        {
        }
        /**
         * Get the root template.
         */
        public function &get_root_template() : \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface
        {
        }
        /**
         * Get the inner blocks as a formatted template.
         */
        public function get_formatted_template() : array
        {
        }
        /**
         * Get the template as JSON like array.
         *
         * @return array The JSON.
         */
        public function to_json() : array
        {
        }
    }
    /**
     * Generic block with container properties to be used in BlockTemplate.
     */
    class Block extends \Automattic\WooCommerce\Internal\Admin\BlockTemplates\AbstractBlock implements \Automattic\WooCommerce\Admin\BlockTemplates\BlockContainerInterface
    {
        use \Automattic\WooCommerce\Internal\Admin\BlockTemplates\BlockContainerTrait;
        /**
         * Add an inner block to this block.
         *
         * @param array $block_config The block data.
         */
        public function &add_block(array $block_config) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface
        {
        }
    }
    /**
     * Block template class.
     */
    class BlockTemplate extends \Automattic\WooCommerce\Internal\Admin\BlockTemplates\AbstractBlockTemplate
    {
        /**
         * Get the template ID.
         */
        public function get_id() : string
        {
        }
        /**
         * Add an inner block to this template.
         *
         * @param array $block_config The block data.
         */
        public function add_block(array $block_config) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface
        {
        }
    }
    /**
     * Logger for block template modifications.
     */
    class BlockTemplateLogger
    {
        const BLOCK_ADDED = 'block_added';
        const BLOCK_REMOVED = 'block_removed';
        const BLOCK_MODIFIED = 'block_modified';
        const BLOCK_ADDED_TO_DETACHED_CONTAINER = 'block_added_to_detached_container';
        const HIDE_CONDITION_ADDED = 'hide_condition_added';
        const HIDE_CONDITION_REMOVED = 'hide_condition_removed';
        const HIDE_CONDITION_ADDED_TO_DETACHED_BLOCK = 'hide_condition_added_to_detached_block';
        const ERROR_AFTER_BLOCK_ADDED = 'error_after_block_added';
        const ERROR_AFTER_BLOCK_REMOVED = 'error_after_block_removed';
        const LOG_HASH_TRANSIENT_BASE_NAME = 'wc_block_template_events_log_hash_';
        /**
         * Event types.
         *
         * @var array
         */
        public static $event_types = array(self::BLOCK_ADDED => array('level' => \WC_Log_Levels::DEBUG, 'message' => 'Block added to template.'), self::BLOCK_REMOVED => array('level' => \WC_Log_Levels::NOTICE, 'message' => 'Block removed from template.'), self::BLOCK_MODIFIED => array('level' => \WC_Log_Levels::NOTICE, 'message' => 'Block modified in template.'), self::BLOCK_ADDED_TO_DETACHED_CONTAINER => array('level' => \WC_Log_Levels::WARNING, 'message' => 'Block added to detached container. Block will not be included in the template, since the container will not be included in the template.'), self::HIDE_CONDITION_ADDED => array('level' => \WC_Log_Levels::NOTICE, 'message' => 'Hide condition added to block.'), self::HIDE_CONDITION_REMOVED => array('level' => \WC_Log_Levels::NOTICE, 'message' => 'Hide condition removed from block.'), self::HIDE_CONDITION_ADDED_TO_DETACHED_BLOCK => array('level' => \WC_Log_Levels::WARNING, 'message' => 'Hide condition added to detached block. Block will not be included in the template, so the hide condition is not needed.'), self::ERROR_AFTER_BLOCK_ADDED => array('level' => \WC_Log_Levels::WARNING, 'message' => 'Error after block added to template.'), self::ERROR_AFTER_BLOCK_REMOVED => array('level' => \WC_Log_Levels::WARNING, 'message' => 'Error after block removed from template.'));
        /**
         * Singleton instance.
         *
         * @var BlockTemplateLogger
         */
        protected static $instance = null;
        /**
         * Logger instance.
         *
         * @var \WC_Logger
         */
        protected $logger = null;
        /**
         * All template events.
         *
         * @var array
         */
        private $all_template_events = array();
        /**
         * Templates.
         *
         * @var array
         */
        private $templates = array();
        /**
         * Threshold severity.
         *
         * @var int
         */
        private $threshold_severity = null;
        /**
         * Get the singleton instance.
         */
        public static function get_instance() : \Automattic\WooCommerce\Internal\Admin\BlockTemplates\BlockTemplateLogger
        {
        }
        /**
         * Constructor.
         */
        protected function __construct()
        {
        }
        /**
         * Get all template events for a given template as a JSON like array.
         *
         * @param string $template_id Template ID.
         */
        public function template_events_to_json(string $template_id) : array
        {
        }
        /**
         * Get all template events as a JSON like array.
         *
         * @param array $template_events Template events.
         *
         * @return array The JSON.
         */
        private function to_json(array $template_events) : array
        {
        }
        /**
         * Log all template events for a given template to the log file.
         *
         * @param string $template_id Template ID.
         */
        public function log_template_events_to_file(string $template_id)
        {
        }
        /**
         * Has the template events changed since the last time they were logged?
         *
         * @param string $template_id Template ID.
         * @param string $events_hash Events hash.
         */
        private function has_template_events_changed(string $template_id, string $events_hash)
        {
        }
        /**
         * Generate a hash for a given set of template events.
         *
         * @param array $template_events Template events.
         */
        private function generate_template_events_hash(array $template_events) : string
        {
        }
        /**
         * Set the template events hash for a given template.
         *
         * @param string $template_id Template ID.
         * @param string $hash        Hash of template events.
         */
        private function set_template_events_log_hash(string $template_id, string $hash)
        {
        }
        /**
         * Log an event.
         *
         * @param string         $event_type      Event type.
         * @param BlockInterface $block           Block.
         * @param array          $additional_info Additional info.
         */
        private function log(string $event_type, \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block, $additional_info = array())
        {
        }
        /**
         * Should the logger handle a given level?
         *
         * @param int $level Level to check.
         */
        private function should_handle($level)
        {
        }
        /**
         * Add a template event.
         *
         * @param array                  $event_type_info Event type info.
         * @param BlockTemplateInterface $template        Template.
         * @param ContainerInterface     $container       Container.
         * @param BlockInterface         $block           Block.
         * @param array                  $additional_info Additional info.
         */
        private function add_template_event(array $event_type_info, \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface $template, \Automattic\WooCommerce\Admin\BlockTemplates\ContainerInterface $container, \Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block, array $additional_info = array())
        {
        }
        /**
         * Format a message for logging.
         *
         * @param string $message Message to log.
         * @param array  $info    Additional info to log.
         */
        private function format_message(string $message, array $info = array()) : string
        {
        }
        /**
         * Format info for logging.
         *
         * @param array $info Info to log.
         */
        private function format_info(array $info) : array
        {
        }
        /**
         * Format an exception for logging.
         *
         * @param \Exception $exception Exception to format.
         */
        private function format_exception(\Exception $exception) : array
        {
        }
        /**
         * Format an exception trace for logging.
         *
         * @param array $trace Exception trace to format.
         */
        private function format_exception_trace(array $trace) : array
        {
        }
        /**
         * Format a block template for logging.
         *
         * @param BlockTemplateInterface $template Template to format.
         */
        private function format_template(\Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface $template) : string
        {
        }
        /**
         * Format a block for logging.
         *
         * @param BlockInterface $block Block to format.
         */
        private function format_block(\Automattic\WooCommerce\Admin\BlockTemplates\BlockInterface $block) : string
        {
        }
    }
}
namespace Automattic\WooCommerce\Internal\CostOfGoodsSold {
    /**
     * Trait with common functionality for unit tests related to the Cost of Goods Sold feature.
     */
    trait CogsAwareUnitTestSuiteTrait
    {
        /**
         * Enable the Cost of Goods Sold feature.
         */
        private function enable_cogs_feature()
        {
        }
        /**
         * Enable the Cost of Goods Sold feature.
         */
        private function disable_cogs_feature()
        {
        }
        /**
         * Sets the expectation for a "doing it wrong" being thrown.
         *
         * @param string $method_name The method name inside the error message.
         */
        private function expect_doing_it_wrong_cogs_disabled(string $method_name)
        {
        }
    }
}
namespace Automattic\WooCommerce\Internal {
    /**
     * Interface RegisterHooksInterface
     *
     * The following must be added at the end of the 'init_hooks' method in the 'WooCommerce' class
     * for each class implementing this interface:
     * $container->get( <full class name>::class )->register();
     *
     * @since 8.5.0
     */
    interface RegisterHooksInterface
    {
        /**
         * Register this class instance to the appropriate hooks.
         *
         * @return void
         */
        public function register();
    }
}
namespace Automattic\WooCommerce\Internal\CostOfGoodsSold {
    /**
     * Main controller for the Cost of Goods Sold feature.
     */
    class CostOfGoodsSoldController implements \Automattic\WooCommerce\Internal\RegisterHooksInterface
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * The instance of FeaturesController to use.
         *
         * @var FeaturesController
         */
        private \Automattic\WooCommerce\Internal\Features\FeaturesController $features_controller;
        /**
         * Register hooks.
         */
        public function register()
        {
        }
        /**
         * Initialize the instance, runs when the instance is created by the dependency injection container.
         *
         * @internal
         * @param FeaturesController $features_controller The instance of FeaturesController to use.
         */
        public final function init(\Automattic\WooCommerce\Internal\Features\FeaturesController $features_controller)
        {
        }
        /**
         * Is the Cost of Goods Sold engine enabled?
         *
         * @return bool True if the engine is enabled, false otherwise.
         */
        public function feature_is_enabled() : bool
        {
        }
        /**
         * Add the feature information for the features settings page.
         *
         * @param FeaturesController $features_controller The instance of FeaturesController to use.
         */
        private function add_feature_definition($features_controller)
        {
        }
    }
}
namespace Automattic\WooCommerce\LayoutTemplates {
    /**
     * Layout template registry.
     */
    final class LayoutTemplateRegistry
    {
        /**
         * Class instance.
         *
         * @var LayoutTemplateRegistry|null
         */
        private static $instance = null;
        /**
         * Layout templates info.
         *
         * @var array
         */
        protected $layout_templates_info = array();
        /**
         * Layout template instances.
         *
         * @var array
         */
        protected $layout_template_instances = array();
        /**
         * Get the instance of the class.
         */
        public static function get_instance() : \Automattic\WooCommerce\LayoutTemplates\LayoutTemplateRegistry
        {
        }
        /**
         * Unregister all layout templates.
         */
        public function unregister_all()
        {
        }
        /**
         * Check if a layout template is registered.
         *
         * @param string $layout_template_id Layout template ID.
         */
        public function is_registered($layout_template_id) : bool
        {
        }
        /**
         * Register a single layout template.
         *
         * @param string $layout_template_id         Layout template ID.
         * @param string $layout_template_area       Layout template area.
         * @param string $layout_template_class_name Layout template class to register.
         *
         * @throws \ValueError If a layout template with the same ID already exists.
         * @throws \ValueError If the specified layout template area is empty.
         * @throws \ValueError If the specified layout template class does not exist.
         * @throws \ValueError If the specified layout template class does not implement the BlockTemplateInterface.
         */
        public function register($layout_template_id, $layout_template_area, $layout_template_class_name)
        {
        }
        /**
         * Instantiate the matching layout templates and return them.
         *
         * @param array $query_params Query params.
         */
        public function instantiate_layout_templates(array $query_params = array()) : array
        {
        }
        /**
         * Instantiate a single layout template and return it.
         *
         * @param array $layout_template_info Layout template info.
         */
        private function get_layout_template_instance($layout_template_info) : \Automattic\WooCommerce\Admin\BlockTemplates\BlockTemplateInterface
        {
        }
        /**
         * Get matching layout templates info.
         *
         * @param array $query_params Query params.
         */
        private function get_matching_layout_templates_info(array $query_params = array()) : array
        {
        }
    }
}
namespace Automattic\WooCommerce {
    /**
     * Packages class.
     *
     * @since 3.7.0
     */
    class Packages
    {
        /**
         * Static-only class.
         */
        private function __construct()
        {
        }
        /**
         * Array of package names and their main package classes. Once a package has been merged into WooCommerce
         * directly it should be removed from here and added to the merged packages array.
         *
         * @var array Key is the package name/directory, value is the main package class which handles init.
         */
        protected static $packages = array();
        /**
         * Array of package names and their main package classes.
         *
         * One a package has been merged into WooCommerce Core it should be moved from the package list and placed in
         * this list. This will ensure that the feature plugin is disabled as well as provide the class to handle
         * initialization for the now-merged feature plugin.
         *
         * Once a package has been merged into WooCommerce Core it should have its slug added here. This will ensure
         * that we deactivate the feature plugin automatically to prevent any problems caused by conflicts between
         * the two versions caused by them both being active.
         *
         * The packages included in this array cannot be deactivated and will always load with WooCommerce core.
         *
         * @var array Key is the package name/directory, value is the main package class which handles init.
         */
        protected static $base_packages = array('woocommerce-admin' => '\\Automattic\\WooCommerce\\Admin\\Composer\\Package', 'woocommerce-gutenberg-products-block' => '\\Automattic\\WooCommerce\\Blocks\\Package');
        /**
         * Similar to $base_packages, but
         * the packages included in this array can be deactivated via the 'woocommerce_merged_packages' filter.
         *
         * @var array Key is the package name/directory, value is the main package class which handles init.
         */
        protected static $merged_packages = array('woocommerce-brands' => '\\Automattic\\WooCommerce\\Internal\\Brands');
        /**
         * Init the package loader.
         *
         * @since 3.7.0
         */
        public static function init()
        {
        }
        /**
         * Callback for WordPress init hook.
         */
        public static function on_init()
        {
        }
        /**
         * Checks a package exists by looking for it's directory.
         *
         * @param string $package Package name.
         * @return boolean
         */
        public static function package_exists($package)
        {
        }
        /**
         * Checks a package exists by looking for it's directory.
         *
         * @param string $class_name Class name.
         * @return boolean
         */
        public static function should_load_class($class_name)
        {
        }
        /**
         * Gets all merged, enabled packages.
         *
         * @return array
         */
        protected static function get_enabled_packages()
        {
        }
        /**
         * Checks if a package is enabled.
         *
         * @param string $package Package name.
         * @return boolean
         */
        public static function is_package_enabled($package)
        {
        }
        /**
         * Prepare merged packages for initialization.
         * Especially useful when running actions early in the 'plugins_loaded' timeline.
         */
        public static function prepare_packages()
        {
        }
        /**
         * Deactivates merged feature plugins.
         *
         * Once a feature plugin is merged into WooCommerce Core it should be deactivated. This method will
         * ensure that a plugin gets deactivated. Note that for the first request it will still be active,
         * and as such, there may be some odd behavior. This is unlikely to cause any issues though
         * because it will be deactivated on the request that updates or activates WooCommerce.
         */
        protected static function deactivate_merged_packages()
        {
        }
        /**
         * Prevent plugins already merged into WooCommerce core from getting activated as standalone plugins.
         *
         * @param string $plugin Plugin name.
         */
        public static function deactivate_merged_plugins($plugin)
        {
        }
        /**
         * Mark merged plugins as pending update.
         * This is required for correctly displaying maintenance notices.
         *
         * @param array $plugins Plugins list.
         */
        public static function mark_merged_plugins_as_pending_update($plugins)
        {
        }
        /**
         * Displays a maintenance notice next to merged plugins, to inform users
         * that the plugin functionality is now offered by WooCommerce core.
         *
         * Requires 'mark_merged_plugins_as_pending_update' to properly display this notice.
         *
         * @param string $plugin_file Plugin file.
         */
        public static function display_notice_for_merged_plugins($plugin_file)
        {
        }
        /**
         * Loads packages after plugins_loaded hook.
         *
         * Each package should include an init file which loads the package so it can be used by core.
         */
        protected static function initialize_packages()
        {
        }
        /**
         * If a package is missing, add an admin notice.
         *
         * @param string $package Package name.
         */
        protected static function missing_package($package)
        {
        }
    }
}
namespace Automattic\WooCommerce\Proxies {
    /**
     * Proxy for interacting with WordPress actions and filters.
     *
     * This class should be used instead of directly accessing the WordPress functions, to ease unit testing.
     */
    class ActionsProxy
    {
        /**
         * Retrieve the number of times an action is fired.
         *
         * @param string $tag The name of the action hook.
         *
         * @return int The number of times action hook $tag is fired.
         */
        public function did_action($tag)
        {
        }
        /**
         * Calls the callback functions that have been added to a filter hook.
         *
         * @param string $tag     The name of the filter hook.
         * @param mixed  $value   The value to filter.
         * @param mixed  ...$parameters Additional parameters to pass to the callback functions.
         *
         * @return mixed The filtered value after all hooked functions are applied to it.
         */
        public function apply_filters($tag, $value, ...$parameters)
        {
        }
        // TODO: Add the rest of the actions and filters related methods.
    }
    /**
     * Proxy class to access legacy WooCommerce functionality.
     *
     * This class should be used to interact with code outside the `src` directory, especially functions and classes
     * in the `includes` directory, unless a more specific proxy exists for the functionality at hand (e.g. `ActionsProxy`).
     * Idempotent functions can be executed directly.
     */
    class LegacyProxy
    {
        /**
         * Gets an instance of a given legacy class.
         * This must not be used to get instances of classes in the `src` directory.
         *
         * If a given class needs a special procedure to get an instance of it,
         * please add a private get_instance_of_(lowercased_class_name) and it will be
         * automatically invoked. See also how objects of classes having a static `instance`
         * method are retrieved, similar approaches can be used as needed to make use
         * of existing factory methods such as e.g. 'load'.
         *
         * @param string $class_name The name of the class to get an instance for.
         * @param mixed  ...$args Parameters to be passed to the class constructor or to the appropriate internal 'get_instance_of_' method.
         *
         * @return object The instance of the class.
         * @throws \Exception The requested class has a namespace starting with ' Automattic\WooCommerce', or there was an error creating an instance of the class.
         */
        public function get_instance_of(string $class_name, ...$args)
        {
        }
        /**
         * Get an instance of a class implementing WC_Queue_Interface.
         *
         * @return \WC_Queue_Interface The instance.
         */
        private function get_instance_of_wc_queue_interface()
        {
        }
        /**
         * Call a user function. This should be used to execute any non-idempotent function, especially
         * those in the `includes` directory or provided by WordPress.
         *
         * @param string $function_name The function to execute.
         * @param mixed  ...$parameters The parameters to pass to the function.
         *
         * @return mixed The result from the function.
         */
        public function call_function($function_name, ...$parameters)
        {
        }
        /**
         * Call a static method in a class. This should be used to execute any non-idempotent method in classes
         * from the `includes` directory.
         *
         * @param string $class_name The name of the class containing the method.
         * @param string $method_name The name of the method.
         * @param mixed  ...$parameters The parameters to pass to the method.
         *
         * @return mixed The result from the method.
         */
        public function call_static($class_name, $method_name, ...$parameters)
        {
        }
        /**
         * Get the value of a global.
         *
         * @param string $global_name The name of the global to get the value for.
         * @return mixed The value of the global.
         */
        public function get_global(string $global_name)
        {
        }
        /**
         * Terminates execution of the script.
         *
         * @param int|string $status An error code to be returned, or an error message to be shown.
         * @return void
         */
        public function exit($status = '')
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi {
    /**
     * Authentication class.
     */
    class Authentication
    {
        /**
         * Hook into WP lifecycle events. This is hooked by the StoreAPI class on `rest_api_init`.
         */
        public function init()
        {
        }
        /**
         * Add allowed cors headers for store API headers.
         *
         * @param array $allowed_headers Allowed headers.
         * @return array
         */
        public function allowed_cors_headers($allowed_headers)
        {
        }
        /**
         * Add CORS headers to a response object.
         *
         * These checks prevent access to the Store API from non-allowed origins. By default, the WordPress REST API allows
         * access from any origin. Because some Store API routes return PII, we need to add our own CORS headers.
         *
         * Allowed origins can be changed using the WordPress `allowed_http_origins` or `allowed_http_origin` filters if
         * access needs to be granted to other domains.
         *
         * Users of valid Cart Tokens are also allowed access from any origin.
         *
         * @param bool              $value  Whether the request has already been served.
         * @param \WP_HTTP_Response $result  Result to send to the client. Usually a `WP_REST_Response`.
         * @param \WP_REST_Request  $request Request used to generate the response.
         * @return bool
         */
        public function send_cors_headers($value, $result, $request)
        {
        }
        /**
         * Is the request a preflight request? Checks the request method
         *
         * @return boolean
         */
        protected function is_preflight()
        {
        }
        /**
         * Checks if we're using a cart token to access the Store API.
         *
         * @param \WP_REST_Request $request Request object.
         * @return boolean
         */
        protected function has_valid_cart_token(\WP_REST_Request $request)
        {
        }
        /**
         * Gets the secret for the cart token using wp_salt.
         *
         * @return string
         */
        protected function get_cart_token_secret()
        {
        }
        /**
         * The Store API does not require authentication.
         *
         * @param \WP_Error|mixed $result Error from another authentication handler, null if we should handle it, or another value if not.
         * @return \WP_Error|null|bool
         */
        public function check_authentication($result)
        {
        }
        /**
         * When the login cookies are set, they are not available until the next page reload. For the Store API, specifically
         * for returning updated nonces, we need this to be available immediately.
         *
         * @param string $logged_in_cookie The value for the logged in cookie.
         */
        public function set_logged_in_cookie($logged_in_cookie)
        {
        }
        /**
         * Applies Rate Limiting to the request, and passes through any errors from other authentication methods used before this one.
         *
         * @param \WP_Error|mixed $result Error from another authentication handler, null if we should handle it, or another value if not.
         * @return \WP_Error|null|bool
         */
        protected function apply_rate_limiting($result)
        {
        }
        /**
         * Check if is request to the Store API.
         *
         * @return bool
         */
        protected function is_request_to_store_api()
        {
        }
        /**
         * Get current user IP Address.
         *
         * X_REAL_IP and CLIENT_IP are custom implementations designed to facilitate obtaining a user's ip through proxies, load balancers etc.
         *
         * _FORWARDED_FOR (XFF) request header is a de-facto standard header for identifying the originating IP address of a client connecting to a web server through a proxy server.
         * Note for X_FORWARDED_FOR, Proxy servers can send through this header like this: X-Forwarded-For: client1, proxy1, proxy2.
         * Make sure we always only send through the first IP in the list which should always be the client IP.
         * Documentation at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
         *
         * Forwarded request header contains information that may be added by reverse proxy servers (load balancers, CDNs, and so on).
         * Documentation at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded
         * Full RFC at https://datatracker.ietf.org/doc/html/rfc7239
         *
         * @param boolean $proxy_support Enables/disables proxy support.
         *
         * @return string
         */
        protected static function get_ip_address(bool $proxy_support = false)
        {
        }
        /**
         * Uses filter_var() to validate and return ipv4 and ipv6 addresses
         * Will return 0.0.0.0 if the ip is not valid. This is done to group and still rate limit invalid ips.
         *
         * @param string $ip ipv4 or ipv6 ip string.
         *
         * @return string
         */
        protected static function validate_ip($ip)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Exceptions {
    /**
     * InvalidCartException class.
     *
     * @internal This exception is thrown if the cart is in an erroneous state.
     */
    class InvalidCartException extends \Exception
    {
        /**
         * Sanitized error code.
         *
         * @var string
         */
        public $error_code;
        /**
         * Additional error data.
         *
         * @var array
         */
        public $additional_data = [];
        /**
         * All errors to display to the user.
         *
         * @var WP_Error
         */
        public $error;
        /**
         * Setup exception.
         *
         * @param string   $error_code      Machine-readable error code, e.g `woocommerce_invalid_product_id`.
         * @param WP_Error $error           The WP_Error object containing all errors relating to stock availability.
         * @param array    $additional_data Extra data (key value pairs) to expose in the error response.
         */
        public function __construct($error_code, \WP_Error $error, $additional_data = [])
        {
        }
        /**
         * Returns the error code.
         *
         * @return string
         */
        public function getErrorCode()
        {
        }
        /**
         * Returns the list of messages.
         *
         * @return WP_Error
         */
        public function getError()
        {
        }
        /**
         * Returns additional error data.
         *
         * @return array
         */
        public function getAdditionalData()
        {
        }
    }
    /**
     * InvalidStockLevelsInCartException class.
     *
     * This exception is thrown if any items are out of stock after each product on a draft order has been stock checked.
     */
    class InvalidStockLevelsInCartException extends \Exception
    {
        /**
         * Sanitized error code.
         *
         * @var string
         */
        public $error_code;
        /**
         * Additional error data.
         *
         * @var array
         */
        public $additional_data = [];
        /**
         * All errors to display to the user.
         *
         * @var WP_Error
         */
        public $error;
        /**
         * Setup exception.
         *
         * @param string   $error_code      Machine-readable error code, e.g `woocommerce_invalid_product_id`.
         * @param WP_Error $error           The WP_Error object containing all errors relating to stock availability.
         * @param array    $additional_data Extra data (key value pairs) to expose in the error response.
         */
        public function __construct($error_code, $error, $additional_data = [])
        {
        }
        /**
         * Returns the error code.
         *
         * @return string
         */
        public function getErrorCode()
        {
        }
        /**
         * Returns the list of messages.
         *
         * @return WP_Error
         */
        public function getError()
        {
        }
        /**
         * Returns additional error data.
         *
         * @return array
         */
        public function getAdditionalData()
        {
        }
    }
    /**
     * StockAvailabilityException class.
     *
     * This exception is thrown when more than one of a product that can only be purchased individually is in a cart.
     */
    class StockAvailabilityException extends \Exception
    {
        /**
         * Sanitized error code.
         *
         * @var string
         */
        public $error_code;
        /**
         * The name of the product that can only be purchased individually.
         *
         * @var string
         */
        public $product_name;
        /**
         * Additional error data.
         *
         * @var array
         */
        public $additional_data = [];
        /**
         * Setup exception.
         *
         * @param string $error_code       Machine-readable error code, e.g `woocommerce_invalid_product_id`.
         * @param string $product_name     The name of the product that can only be purchased individually.
         * @param array  $additional_data  Extra data (key value pairs) to expose in the error response.
         */
        public function __construct($error_code, $product_name, $additional_data = [])
        {
        }
        /**
         * Returns the error code.
         *
         * @return string
         */
        public function getErrorCode()
        {
        }
        /**
         * Returns additional error data.
         *
         * @return array
         */
        public function getAdditionalData()
        {
        }
        /**
         * Returns the product name.
         *
         * @return string
         */
        public function getProductName()
        {
        }
    }
    /**
     * NotPurchasableException class.
     *
     * This exception is thrown when an item in the cart is not able to be purchased.
     */
    class NotPurchasableException extends \Automattic\WooCommerce\StoreApi\Exceptions\StockAvailabilityException
    {
    }
    /**
     * OutOfStockException class.
     *
     * This exception is thrown when an item in a draft order is out of stock completely.
     */
    class OutOfStockException extends \Automattic\WooCommerce\StoreApi\Exceptions\StockAvailabilityException
    {
    }
    /**
     * PartialOutOfStockException class.
     *
     * This exception is thrown when an item in a draft order has a quantity greater than what is available in stock.
     */
    class PartialOutOfStockException extends \Automattic\WooCommerce\StoreApi\Exceptions\StockAvailabilityException
    {
    }
    /**
     * RouteException class.
     */
    class RouteException extends \Exception
    {
        /**
         * Sanitized error code.
         *
         * @var string
         */
        public $error_code;
        /**
         * Additional error data.
         *
         * @var array
         */
        public $additional_data = [];
        /**
         * Setup exception.
         *
         * @param string $error_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  $additional_data  Extra data (key value pairs) to expose in the error response.
         */
        public function __construct($error_code, $message, $http_status_code = 400, $additional_data = [])
        {
        }
        /**
         * Returns the error code.
         *
         * @return string
         */
        public function getErrorCode()
        {
        }
        /**
         * Returns additional error data.
         *
         * @return array
         */
        public function getAdditionalData()
        {
        }
    }
    /**
     * TooManyInCartException class.
     *
     * This exception is thrown when more than one of a product that can only be purchased individually is in a cart.
     */
    class TooManyInCartException extends \Automattic\WooCommerce\StoreApi\Exceptions\StockAvailabilityException
    {
    }
}
namespace Automattic\WooCommerce\StoreApi {
    /**
     * Formatters class.
     *
     * Allows formatter classes to be registered. Formatters are exposed to extensions via the ExtendSchema class.
     */
    class Formatters
    {
        /**
         * Holds an array of formatter class instances.
         *
         * @var array
         */
        private $formatters = [];
        /**
         * Get a new instance of a formatter class.
         *
         * @throws Exception An Exception is thrown if a non-existing formatter is used and the user is admin.
         *
         * @param string $name Name of the formatter.
         * @return FormatterInterface Formatter class instance.
         */
        public function __get($name)
        {
        }
        /**
         * Register a formatter class for usage.
         *
         * @param string $name Name of the formatter.
         * @param string $class A formatter class name.
         */
        public function register($name, $class)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Formatters {
    /**
     * FormatterInterface.
     */
    interface FormatterInterface
    {
        /**
         * Format a given value and return the result.
         *
         * @param mixed $value Value to format.
         * @param array $options Options that influence the formatting.
         * @return mixed
         */
        public function format($value, array $options = []);
    }
    /**
     * Currency Formatter.
     *
     * Formats an array of monetary values by inserting currency data.
     */
    class CurrencyFormatter implements \Automattic\WooCommerce\StoreApi\Formatters\FormatterInterface
    {
        /**
         * Format a given value and return the result.
         *
         * @param array $value Value to format.
         * @param array $options Options that influence the formatting.
         * @return array
         */
        public function format($value, array $options = [])
        {
        }
    }
    /**
     * Default Formatter.
     */
    class DefaultFormatter implements \Automattic\WooCommerce\StoreApi\Formatters\FormatterInterface
    {
        /**
         * Format a given value and return the result.
         *
         * @param mixed $value Value to format.
         * @param array $options Options that influence the formatting.
         * @return mixed
         */
        public function format($value, array $options = [])
        {
        }
    }
    /**
     * Html Formatter.
     *
     * Formats HTML in API responses.
     *
     * @internal This API is used internally by Blocks--it is still in flux and may be subject to revisions.
     */
    class HtmlFormatter implements \Automattic\WooCommerce\StoreApi\Formatters\FormatterInterface
    {
        /**
         * Format a given value and return the result.
         *
         * The wptexturize, convert_chars, and trim functions are also used in the `the_title` filter.
         * The function wp_kses_post removes disallowed HTML tags.
         *
         * @param string|array $value Value to format.
         * @param array        $options Options that influence the formatting.
         * @return string
         */
        public function format($value, array $options = [])
        {
        }
    }
    /**
     * Money Formatter.
     *
     * Formats monetary values using store settings.
     */
    class MoneyFormatter implements \Automattic\WooCommerce\StoreApi\Formatters\FormatterInterface
    {
        /**
         * Format a given price value and return the result as a string without decimals.
         *
         * @param int|float|string $value Value to format. Int is allowed, as it may also represent a valid price.
         * @param array            $options Options that influence the formatting.
         * @return string
         */
        public function format($value, array $options = [])
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi {
    /**
     * Legacy class.
     */
    class Legacy
    {
        /**
         * Hook into WP lifecycle events.
         */
        public function init()
        {
        }
        /**
         * Attempt to process a payment for the checkout API if no payment methods support the
         * woocommerce_rest_checkout_process_payment_with_context action.
         *
         * @param PaymentContext $context Holds context for the payment.
         * @param PaymentResult  $result  Result of the payment.
         */
        public function process_legacy_payment(\Automattic\WooCommerce\StoreApi\Payments\PaymentContext $context, \Automattic\WooCommerce\StoreApi\Payments\PaymentResult &$result)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Payments {
    /**
     * PaymentContext class.
     */
    class PaymentContext
    {
        /**
         * Payment method ID.
         *
         * @var string
         */
        protected $payment_method = '';
        /**
         * Order object for the order being paid.
         *
         * @var \WC_Order
         */
        protected $order;
        /**
         * Holds data to send to the payment gateway to support payment.
         *
         * @var array Key value pairs.
         */
        protected $payment_data = [];
        /**
         * Magic getter for protected properties.
         *
         * @param string $name Property name.
         */
        public function __get($name)
        {
        }
        /**
         * Set the chosen payment method ID context.
         *
         * @param string $payment_method Payment method ID.
         */
        public function set_payment_method($payment_method)
        {
        }
        /**
         * Retrieve the payment method instance for the current set payment method.
         *
         * @return \WC_Payment_Gateway|null An instance of the payment gateway if it exists.
         */
        public function get_payment_method_instance()
        {
        }
        /**
         * Set the order context.
         *
         * @param \WC_Order $order Order object.
         */
        public function set_order(\WC_Order $order)
        {
        }
        /**
         * Set payment data context.
         *
         * @param array $payment_data Array of key value pairs of data.
         */
        public function set_payment_data($payment_data = [])
        {
        }
    }
    /**
     * PaymentResult class.
     */
    class PaymentResult
    {
        /**
         * List of valid payment statuses.
         *
         * @var array
         */
        protected $valid_statuses = ['success', 'failure', 'pending', 'error'];
        /**
         * Current payment status.
         *
         * @var string
         */
        protected $status = '';
        /**
         * Array of details about the payment.
         *
         * @var string
         */
        protected $payment_details = [];
        /**
         * Redirect URL for checkout.
         *
         * @var string
         */
        protected $redirect_url = '';
        /**
         * Constructor.
         *
         * @param string $status Sets the payment status for the result.
         */
        public function __construct($status = '')
        {
        }
        /**
         * Magic getter for protected properties.
         *
         * @param string $name Property name.
         */
        public function __get($name)
        {
        }
        /**
         * Set payment status.
         *
         * @throws \Exception When an invalid status is provided.
         *
         * @param string $payment_status Status to set.
         */
        public function set_status($payment_status)
        {
        }
        /**
         * Set payment details.
         *
         * @param array $payment_details Array of key value pairs of data.
         */
        public function set_payment_details($payment_details = [])
        {
        }
        /**
         * Set redirect URL.
         *
         * @param array $redirect_url URL to redirect the customer to after checkout.
         */
        public function set_redirect_url($redirect_url = [])
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes {
    /**
     * RouteInterface.
     */
    interface RouteInterface
    {
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path();
        /**
         * Get arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args();
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes\V1\AI {
    /**
     * Middleware class.
     *
     * @internal
     */
    class Middleware
    {
        /**
         * Ensure that the user is allowed to make this request.
         *
         * @throws RouteException If the user is not allowed to make this request.
         * @return boolean
         */
        public static function is_authorized()
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes\V1 {
    /**
     * AbstractRoute class.
     */
    abstract class AbstractRoute implements \Automattic\WooCommerce\StoreApi\Routes\RouteInterface
    {
        /**
         * Schema class instance.
         *
         * @var AbstractSchema
         */
        protected $schema;
        /**
         * Route namespace.
         *
         * @var string
         */
        protected $namespace = 'wc/store/v1';
        /**
         * Schema Controller instance.
         *
         * @var SchemaController
         */
        protected $schema_controller;
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = '';
        /**
         * The routes schema version.
         *
         * @var integer
         */
        const SCHEMA_VERSION = 1;
        /**
         * Constructor.
         *
         * @param SchemaController $schema_controller Schema Controller instance.
         * @param AbstractSchema   $schema Schema class for this route.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\SchemaController $schema_controller, \Automattic\WooCommerce\StoreApi\Schemas\v1\AbstractSchema $schema)
        {
        }
        /**
         * Get the namespace for this route.
         *
         * @return string
         */
        public function get_namespace()
        {
        }
        /**
         * Set the namespace for this route.
         *
         * @param string $namespace Given namespace.
         */
        public function set_namespace($namespace)
        {
        }
        /**
         * Get item schema properties.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Get the route response based on the type of request.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        public function get_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get the route response based on the type of request.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_response_by_request_method(\WP_REST_Request $request)
        {
        }
        /**
         * Converts an error to a response object. Based on \WP_REST_Server.
         *
         * @param \WP_Error $error WP_Error instance.
         * @return \WP_REST_Response List of associative arrays with code and message keys.
         */
        protected function error_to_response($error)
        {
        }
        /**
         * Get route response for GET requests.
         *
         * When implemented, should return a \WP_REST_Response.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get route response for POST requests.
         *
         * When implemented, should return a \WP_REST_Response.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get route response for PUT requests.
         *
         * When implemented, should return a \WP_REST_Response.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_update_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get route response for DELETE requests.
         *
         * When implemented, should return a \WP_REST_Response.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_delete_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get route response when something went wrong.
         *
         * @param string $error_code String based error code.
         * @param string $error_message User facing error message.
         * @param int    $http_status_code HTTP status. Defaults to 500.
         * @param array  $additional_data  Extra data (key value pairs) to expose in the error response.
         * @return \WP_Error WP Error object.
         */
        protected function get_route_error_response($error_code, $error_message, $http_status_code = 500, $additional_data = [])
        {
        }
        /**
         * Get route response when something went wrong and the supplied error is a WP_Error. This currently only happens
         * when an item in the cart is out of stock, partially out of stock, can only be bought individually, or when the
         * item is not purchasable.
         *
         * @param WP_Error $error_object The WP_Error object containing the error.
         * @param int      $http_status_code HTTP status. Defaults to 500.
         * @param array    $additional_data  Extra data (key value pairs) to expose in the error response.
         * @return WP_Error WP Error object.
         */
        protected function get_route_error_response_from_object($error_object, $http_status_code = 500, $additional_data = [])
        {
        }
        /**
         * Prepare a single item for response.
         *
         * @param mixed            $item Item to format to schema.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, \WP_REST_Request $request)
        {
        }
        /**
         * Retrieves the context param.
         *
         * Ensures consistent descriptions between endpoints, and populates enum from schema.
         *
         * @param array $args Optional. Additional arguments for context parameter. Default empty array.
         * @return array Context parameter details.
         */
        protected function get_context_param($args = array())
        {
        }
        /**
         * Prepares a response for insertion into a collection.
         *
         * @param \WP_REST_Response $response Response object.
         * @return array|mixed Response data, ready for insertion into collection data.
         */
        protected function prepare_response_for_collection(\WP_REST_Response $response)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param mixed            $item Item to prepare.
         * @param \WP_REST_Request $request Request object.
         * @return array
         */
        protected function prepare_links($item, $request)
        {
        }
        /**
         * Retrieves the query params for the collections.
         *
         * @return array Query parameters for the collection.
         */
        public function get_collection_params()
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes\V1\AI {
    /**
     * Products class.
     *
     * @internal
     */
    class Products extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'ai/products';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'ai/products';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Generate the content for the products.
         *
         * @param  \WP_REST_Request $request Request object.
         *
         * @return bool|string|\WP_Error|\WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Remove products generated by AI.
         *
         * @param  \WP_REST_Request $request Request object.
         *
         * @return bool|string|\WP_Error|\WP_REST_Response
         */
        protected function get_route_delete_response(\WP_REST_Request $request)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Utilities {
    /**
     * DraftOrderTrait
     *
     * Shared functionality for getting and setting draft order IDs from session.
     */
    trait DraftOrderTrait
    {
        /**
         * Gets draft order data from the customer session.
         *
         * @return integer
         */
        protected function get_draft_order_id()
        {
        }
        /**
         * Updates draft order data in the customer session.
         *
         * @param integer $order_id Draft order ID.
         */
        protected function set_draft_order_id($order_id)
        {
        }
        /**
         * Uses the draft order ID to return an order object, if valid.
         *
         * @return \WC_Order|null;
         */
        protected function get_draft_order()
        {
        }
        /**
         * Whether the passed argument is a draft order or an order that is
         * pending/failed and the cart hasn't changed.
         *
         * @param \WC_Order $order_object Order object to check.
         * @return boolean Whether the order is valid as a draft order.
         */
        protected function is_valid_draft_order($order_object)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes\V1 {
    /**
     * Abstract Cart Route
     */
    abstract class AbstractCartRoute extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\DraftOrderTrait;
        /**
         * The route's schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'cart';
        /**
         * Schema class instance.
         *
         * @var CartSchema
         */
        protected $schema;
        /**
         * Schema class for the cart.
         *
         * @var CartSchema
         */
        protected $cart_schema;
        /**
         * Schema class for the cart item.
         *
         * @var CartItemSchema
         */
        protected $cart_item_schema;
        /**
         * Cart controller class instance.
         *
         * @var CartController
         */
        protected $cart_controller;
        /**
         * Order controller class instance.
         *
         * @var OrderController
         */
        protected $order_controller;
        /**
         * Additional fields controller class instance.
         *
         * @var CheckoutFields
         */
        protected $additional_fields_controller;
        /**
         * True when this route has been requested with a valid cart token.
         *
         * @var bool|null
         */
        protected $has_cart_token = null;
        /**
         * Constructor.
         *
         * @param SchemaController $schema_controller Schema Controller instance.
         * @param AbstractSchema   $schema Schema class for this route.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\SchemaController $schema_controller, \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema $schema)
        {
        }
        /**
         * Are we updating data or getting data?
         *
         * @param \WP_REST_Request $request Request object.
         * @return boolean
         */
        protected function is_update_request(\WP_REST_Request $request)
        {
        }
        /**
         * Get the route response based on the type of request.
         *
         * @param \WP_REST_Request $request Request object.
         *
         * @return \WP_REST_Response
         */
        public function get_response(\WP_REST_Request $request)
        {
        }
        /**
         * Add nonce headers to a response object.
         *
         * @param \WP_REST_Response $response The response object.
         *
         * @return \WP_REST_Response
         */
        protected function add_response_headers(\WP_REST_Response $response)
        {
        }
        /**
         * Load the cart session before handling responses.
         *
         * @param \WP_REST_Request $request Request object.
         */
        protected function load_cart_session(\WP_REST_Request $request)
        {
        }
        /**
         * Generates a cart token for the response headers.
         *
         * Current namespace is used as the token Issuer.
         * *
         *
         * @return string
         */
        protected function get_cart_token()
        {
        }
        /**
         * Gets the secret for the cart token using wp_salt.
         *
         * @return string
         */
        protected function get_cart_token_secret()
        {
        }
        /**
         * Gets the expiration of the cart token. Defaults to 48h.
         *
         * @return int
         */
        protected function get_cart_token_expiration()
        {
        }
        /**
         * Checks if the request has a valid cart token.
         *
         * @param \WP_REST_Request $request Request object.
         * @return bool
         */
        protected function has_cart_token(\WP_REST_Request $request)
        {
        }
        /**
         * Checks if a nonce is required for the route.
         *
         * @param \WP_REST_Request $request Request.
         *
         * @return bool
         */
        protected function requires_nonce(\WP_REST_Request $request)
        {
        }
        /**
         * Triggered after an update to cart data. Re-calculates totals and updates draft orders (if they already exist) to
         * keep all data in sync.
         *
         * @param \WP_REST_Request $request Request object.
         */
        protected function cart_updated(\WP_REST_Request $request)
        {
        }
        /**
         * For non-GET endpoints, require and validate a nonce to prevent CSRF attacks.
         *
         * Nonces will mismatch if the logged in session cookie is different! If using a client to test, set this cookie
         * to match the logged in cookie in your browser.
         *
         * @param \WP_REST_Request $request Request object.
         *
         * @return \WP_Error|boolean
         */
        protected function check_nonce(\WP_REST_Request $request)
        {
        }
        /**
         * Get route response when something went wrong.
         *
         * @param string $error_code String based error code.
         * @param string $error_message User facing error message.
         * @param int    $http_status_code HTTP status. Defaults to 500.
         * @param array  $additional_data Extra data (key value pairs) to expose in the error response.
         *
         * @return \WP_Error WP Error object.
         */
        protected function get_route_error_response($error_code, $error_message, $http_status_code = 500, $additional_data = [])
        {
        }
    }
    /**
     * AbstractTermsRoute class.
     */
    abstract class AbstractTermsRoute extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'term';
        /**
         * Get the query params for collections of attributes.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get terms matching passed in args.
         *
         * @param string           $taxonomy Taxonomy to get terms from.
         * @param \WP_REST_Request $request Request object.
         *
         * @return \WP_REST_Response
         */
        protected function get_terms_response($taxonomy, $request)
        {
        }
        /**
         * Get count of terms for current query.
         *
         * @param string $taxonomy Taxonomy to get terms from.
         * @param array  $args Array of args to pass to wp_count_terms.
         * @return int
         */
        protected function get_term_count($taxonomy, $args)
        {
        }
    }
    /**
     * Batch Route class.
     */
    class Batch extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute implements \Automattic\WooCommerce\StoreApi\Routes\RouteInterface
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'batch';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'batch';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get the route response.
         *
         * @see WP_REST_Server::serve_batch_request_v1
         * https://developer.wordpress.org/reference/classes/wp_rest_server/serve_batch_request_v1/
         *
         * @throws RouteException On error.
         *
         * @param WP_REST_Request $request Request object.
         * @return WP_REST_Response
         */
        public function get_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * Cart class.
     */
    class Cart extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartAddItem class.
     */
    class CartAddItem extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-add-item';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartApplyCoupon class.
     */
    class CartApplyCoupon extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-apply-coupon';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartCoupons class.
     */
    class CartCoupons extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-coupons';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'cart-coupon';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of cart coupons.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Add a coupon to the cart and return the result.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Deletes all coupons in the cart.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_delete_response(\WP_REST_Request $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param string           $coupon_code Coupon code.
         * @param \WP_REST_Request $request Request object.
         * @return array
         */
        protected function prepare_links($coupon_code, $request)
        {
        }
    }
    /**
     * CartCouponsByCode class.
     */
    class CartCouponsByCode extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-coupons-by-code';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'cart-coupon';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a single cart coupon.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Delete a single cart coupon.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_delete_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartExtensions class.
     */
    class CartExtensions extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-extensions';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'cart-extensions';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartItems class.
     */
    class CartItems extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-items';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'cart-item';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of cart items.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Creates one item from the collection.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Deletes all items in the cart.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_delete_response(\WP_REST_Request $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param array            $cart_item Object to prepare.
         * @param \WP_REST_Request $request Request object.
         * @return array
         */
        protected function prepare_links($cart_item, $request)
        {
        }
    }
    /**
     * CartItemsByKey class.
     */
    class CartItemsByKey extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-items-by-key';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'cart-item';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a single cart items.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Update a single cart item.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_update_response(\WP_REST_Request $request)
        {
        }
        /**
         * Delete a single cart item.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_delete_response(\WP_REST_Request $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param array            $cart_item Object to prepare.
         * @param \WP_REST_Request $request Request object.
         * @return array
         */
        protected function prepare_links($cart_item, $request)
        {
        }
    }
    /**
     * CartRemoveCoupon class.
     */
    class CartRemoveCoupon extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-remove-coupon';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartRemoveItem class.
     */
    class CartRemoveItem extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\DraftOrderTrait;
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-remove-item';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * If there is a draft order, releases stock.
         *
         * @return void
         */
        protected function maybe_release_stock()
        {
        }
    }
    /**
     * CartSelectShippingRate class.
     */
    class CartSelectShippingRate extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-select-shipping-rate';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * CartUpdateCustomer class.
     *
     * Updates the customer billing and shipping addresses, recalculates the cart totals, and returns an updated cart.
     */
    class CartUpdateCustomer extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\DraftOrderTrait;
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-update-customer';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Validate address params now they are populated.
         *
         * @param \WP_REST_Request $request Request object.
         * @param array            $billing Billing address.
         * @param array            $shipping Shipping address.
         * @return \WP_Error|true
         */
        protected function validate_address_params($request, $billing, $shipping)
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get full customer billing address.
         *
         * @param \WC_Customer $customer Customer object.
         * @return array
         */
        protected function get_customer_billing_address(\WC_Customer $customer)
        {
        }
        /**
         * Get full customer shipping address.
         *
         * @param \WC_Customer $customer Customer object.
         * @return array
         */
        protected function get_customer_shipping_address(\WC_Customer $customer)
        {
        }
    }
    /**
     * CartUpdateItem class.
     */
    class CartUpdateItem extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-update-item';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         * .
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Utilities {
    /**
     * CheckoutTrait
     *
     * Shared functionality for checkout route.
     */
    trait CheckoutTrait
    {
        /**
         * Prepare a single item for response. Handles setting the status based on the payment result.
         *
         * @param mixed            $item Item to format to schema.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response $response Response data.
         */
        public function prepare_item_for_response($item, \WP_REST_Request $request)
        {
        }
        /**
         * For orders which do not require payment, just update status.
         *
         * @param \WP_REST_Request $request Request object.
         * @param PaymentResult    $payment_result Payment result object.
         */
        private function process_without_payment(\WP_REST_Request $request, \Automattic\WooCommerce\StoreApi\Payments\PaymentResult $payment_result)
        {
        }
        /**
         * Fires an action hook instructing active payment gateways to process the payment for an order and provide a result.
         *
         * @throws RouteException On error.
         *
         * @param \WP_REST_Request $request Request object.
         * @param PaymentResult    $payment_result Payment result object.
         */
        private function process_payment(\WP_REST_Request $request, \Automattic\WooCommerce\StoreApi\Payments\PaymentResult $payment_result)
        {
        }
        /**
         * Gets the chosen payment method ID from the request.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return string
         */
        private function get_request_payment_method_id(\WP_REST_Request $request)
        {
        }
        /**
         * Gets and formats payment request data.
         *
         * @param \WP_REST_Request $request Request object.
         * @return array
         */
        private function get_request_payment_data(\WP_REST_Request $request)
        {
        }
        /**
         * Update the current order using the posted values from the request.
         *
         * @param \WP_REST_Request $request Full details about the request.
         */
        private function update_order_from_request(\WP_REST_Request $request)
        {
        }
        /**
         * Gets the chosen payment method title from the request.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return string
         */
        private function get_request_payment_method_title(\WP_REST_Request $request)
        {
        }
        /**
         * Persist additional fields for the order after validating them.
         *
         * @param \WP_REST_Request $request Full details about the request.
         *
         * @throws RouteException On error.
         */
        private function persist_additional_fields_for_order(\WP_REST_Request $request)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes\V1 {
    /**
     * Checkout class.
     */
    class Checkout extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\DraftOrderTrait;
        use \Automattic\WooCommerce\StoreApi\Utilities\CheckoutTrait;
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'checkout';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'checkout';
        /**
         * Holds the current order being processed.
         *
         * @var \WC_Order
         */
        private $order = null;
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Checks if a nonce is required for the route.
         *
         * @param \WP_REST_Request $request Request.
         * @return bool
         */
        protected function requires_nonce(\WP_REST_Request $request)
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get the route response based on the type of request.
         *
         * @param \WP_REST_Request $request Request object.
         *
         * @return \WP_REST_Response
         */
        public function get_response(\WP_REST_Request $request)
        {
        }
        /**
         * Convert the cart into a new draft order, or update an existing draft order, and return an updated cart response.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Validate required additional fields on request.
         *
         * @param \WP_REST_Request $request Request object.
         *
         * @throws RouteException When a required additional field is missing.
         */
        public function validate_required_additional_fields(\WP_REST_Request $request)
        {
        }
        /**
         * Process an order.
         *
         * 1. Obtain Draft Order
         * 2. Process Request
         * 3. Process Customer
         * 4. Validate Order
         * 5. Process Payment
         *
         * @throws RouteException On error.
         *
         * @param \WP_REST_Request $request Request object.
         *
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get route response when something went wrong.
         *
         * @param string $error_code String based error code.
         * @param string $error_message User facing error message.
         * @param int    $http_status_code HTTP status. Defaults to 500.
         * @param array  $additional_data  Extra data (key value pairs) to expose in the error response.
         * @return \WP_Error WP Error object.
         */
        protected function get_route_error_response($error_code, $error_message, $http_status_code = 500, $additional_data = [])
        {
        }
        /**
         * Get route response when something went wrong.
         *
         * @param \WP_Error $error_object User facing error message.
         * @param int       $http_status_code HTTP status. Defaults to 500.
         * @param array     $additional_data  Extra data (key value pairs) to expose in the error response.
         * @return \WP_Error WP Error object.
         */
        protected function get_route_error_response_from_object($error_object, $http_status_code = 500, $additional_data = [])
        {
        }
        /**
         * Adds additional data to the \WP_Error object.
         *
         * @param \WP_Error $error The error object to add the cart to.
         * @param array     $data The data to add to the error object.
         * @param int       $http_status_code The HTTP status code this error should return.
         * @param bool      $include_cart Whether the cart should be included in the error data.
         * @returns \WP_Error The \WP_Error with the cart added.
         */
        private function add_data_to_error_object($error, $data, $http_status_code, bool $include_cart = false)
        {
        }
        /**
         * Create or update a draft order based on the cart.
         *
         * @param \WP_REST_Request $request Full details about the request.
         * @throws RouteException On error.
         */
        private function create_or_update_draft_order(\WP_REST_Request $request)
        {
        }
        /**
         * Updates the current customer session using data from the request (e.g. address data).
         *
         * Address session data is synced to the order itself later on by OrderController::update_order_from_cart()
         *
         * @param \WP_REST_Request $request Full details about the request.
         */
        private function update_customer_from_request(\WP_REST_Request $request)
        {
        }
        /**
         * Gets the chosen payment method from the request.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WC_Payment_Gateway|null
         */
        private function get_request_payment_method(\WP_REST_Request $request)
        {
        }
        /**
         * Order processing relating to customer account.
         *
         * Creates a customer account as needed (based on request & store settings) and  updates the order with the new customer ID.
         * Updates the order with user details (e.g. address).
         *
         * @throws RouteException API error object with error details.
         * @param \WP_REST_Request $request Request object.
         */
        private function process_customer(\WP_REST_Request $request)
        {
        }
        /**
         * Check request options and store (shop) config to determine if a user account should be created as part of order
         * processing.
         *
         * @param \WP_REST_Request $request The current request object being handled.
         * @return boolean True if a new user account should be created.
         */
        private function should_create_customer_account(\WP_REST_Request $request)
        {
        }
        /**
         * This validates if the order can be placed regarding settings in WooCommerce > Settings > Accounts & Privacy
         * If registration during checkout is disabled, guest checkout is disabled and the user is not logged in, prevent checkout.
         *
         * @throws RouteException If user cannot place order.
         */
        private function validate_user_can_place_order()
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Utilities {
    /**
     * OrderAuthorizationTrait
     *
     * Shared functionality for getting order authorization.
     */
    trait OrderAuthorizationTrait
    {
        /**
         * Check if authorized to get the order.
         *
         * @throws RouteException If the order is not found or the order key is invalid.
         *
         * @param \WP_REST_Request $request Request object.
         * @return boolean|WP_Error
         */
        public function is_authorized(\WP_REST_Request $request)
        {
        }
        /**
         * Validate a given billing email against an existing order.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param integer $order_id Order ID.
         * @param string  $billing_email Billing email.
         */
        public function validate_billing_email_matches_order($order_id, $billing_email)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Routes\V1 {
    /**
     * CheckoutOrder class.
     */
    class CheckoutOrder extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\OrderAuthorizationTrait;
        use \Automattic\WooCommerce\StoreApi\Utilities\CheckoutTrait;
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'checkout-order';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'checkout-order';
        /**
         * Holds the current order being processed.
         *
         * @var \WC_Order
         */
        private $order = null;
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Process an order.
         *
         * 1. Process Request
         * 2. Process Customer
         * 3. Validate Order
         * 4. Process Payment
         *
         * @throws RouteException On error.
         * @throws InvalidStockLevelsInCartException On error.
         *
         * @param \WP_REST_Request $request Request object.
         *
         * @return \WP_REST_Response
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
        /**
         * Updates the current customer session using data from the request (e.g. address data).
         *
         * Address session data is synced to the order itself later on by OrderController::update_order_from_cart()
         *
         * @param \WP_REST_Request $request Full details about the request.
         */
        private function update_billing_address(\WP_REST_Request $request)
        {
        }
        /**
         * Gets the chosen payment method from the request.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WC_Payment_Gateway|null
         */
        private function get_request_payment_method(\WP_REST_Request $request)
        {
        }
        /**
         * Updates the order with user details (e.g. address).
         *
         * @throws RouteException API error object with error details.
         * @param \WP_REST_Request $request Request object.
         */
        private function process_customer(\WP_REST_Request $request)
        {
        }
    }
    /**
     * Order class.
     */
    class Order extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\OrderAuthorizationTrait;
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'order';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'order';
        /**
         * Order controller class instance.
         *
         * @var OrderController
         */
        protected $order_controller;
        /**
         * Constructor.
         *
         * @param SchemaController $schema_controller Schema Controller instance.
         * @param AbstractSchema   $schema Schema class for this route.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\SchemaController $schema_controller, \Automattic\WooCommerce\StoreApi\Schemas\v1\AbstractSchema $schema)
        {
        }
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * Patterns class.
     */
    class Patterns extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'patterns';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'patterns';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Fetch a single pattern from the PTK to ensure the API is available.
         *
         * @param WP_REST_Request $request Request object.
         *
         * @return WP_Error|\WP_HTTP_Response|WP_REST_Response
         * @throws RouteException If the patterns cannot be fetched.
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Fetch the patterns from the PTK and update the transient.
         *
         * @param WP_REST_Request $request Request object.
         *
         * @return WP_REST_Response
         * @throws Exception If the patterns cannot be fetched.
         */
        protected function get_route_post_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductAttributeTerms class.
     */
    class ProductAttributeTerms extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-attribute-terms';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get the query params for collections of attributes.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
        /**
         * Get a collection of attribute terms.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductAttributes class.
     */
    class ProductAttributes extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-attributes';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product-attribute';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of attributes.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductAttributesById class.
     */
    class ProductAttributesById extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-attributes-by-id';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product-attribute';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a single item.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductCategories class.
     */
    class ProductCategories extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-categories';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product-category';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of terms.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductCategoriesById class.
     */
    class ProductCategoriesById extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-categories-by-id';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product-category';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a single item.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductCollectionData route.
     * Get aggregate data from a collection of products.
     *
     * Supports the same parameters as /products, but returns a different response.
     */
    class ProductCollectionData extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-collection-data';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product-collection-data';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of posts and add the post title filter option to \WP_Query.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get the query params for collections of products.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * ProductReviews class.
     */
    class ProductReviews extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-reviews';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product-review';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of reviews.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Prepends internal property prefix to query parameters to match our response fields.
         *
         * @param string $query_param Query parameter.
         * @return string
         */
        protected function normalize_query_param($query_param)
        {
        }
        /**
         * Get the query params for collections of products.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * ProductTags class.
     */
    class ProductTags extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-tags';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of terms.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * Products class.
     */
    class Products extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'products';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a collection of posts and add the post title filter option to \WP_Query.
         *
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Prepare links for the request.
         *
         * @param \WC_Product      $item Product object.
         * @param \WP_REST_Request $request Request object.
         * @return array
         */
        protected function prepare_links($item, $request)
        {
        }
        /**
         * Get the query params for collections of products.
         *
         * @return array
         */
        public function get_collection_params()
        {
        }
    }
    /**
     * ProductsById class.
     */
    class ProductsById extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'products-by-id';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a single item.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
    }
    /**
     * ProductsBySlug class.
     */
    class ProductsBySlug extends \Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute
    {
        /**
         * The route identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'products-by-slug';
        /**
         * The routes schema.
         *
         * @var string
         */
        const SCHEMA_TYPE = 'product';
        /**
         * Get the path of this REST route.
         *
         * @return string
         */
        public function get_path()
        {
        }
        /**
         * Get the path of this rest route.
         *
         * @return string
         */
        public static function get_path_regex()
        {
        }
        /**
         * Get method arguments for this REST route.
         *
         * @return array An array of endpoints.
         */
        public function get_args()
        {
        }
        /**
         * Get a single item.
         *
         * @throws RouteException On error.
         * @param \WP_REST_Request $request Request object.
         * @return \WP_REST_Response
         */
        protected function get_route_response(\WP_REST_Request $request)
        {
        }
        /**
         * Get a product  by slug.
         *
         * @param string $slug The slug of the product.
         */
        public function get_product_by_slug($slug)
        {
        }
        /**
         * Get a product variation by slug.
         *
         * @param string $slug The slug of the product variation.
         */
        private function get_product_variation_by_slug($slug)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi {
    /**
     * RoutesController class.
     */
    class RoutesController
    {
        /**
         * Stores schema_controller.
         *
         * @var SchemaController
         */
        protected $schema_controller;
        /**
         * Stores routes.
         *
         * @var array
         */
        protected $routes = [];
        /**
         * Namespace for the API.
         *
         * @var string
         */
        private static $api_namespace = 'wc/store';
        /**
         * Constructor.
         *
         * @param SchemaController $schema_controller Schema controller class passed to each route.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\SchemaController $schema_controller)
        {
        }
        /**
         * Register all Store API routes. This includes routes under specific version namespaces.
         */
        public function register_all_routes()
        {
        }
        /**
         * Get a route class instance.
         *
         * Each route class is instantized with the SchemaController instance, and its main Schema Type.
         *
         * @throws \Exception If the schema does not exist.
         * @param string $name Name of schema.
         * @param string $version API Version being requested.
         * @return AbstractRoute
         */
        public function get($name, $version = 'v1')
        {
        }
        /**
         * Get a route path without instantiating the corresponding RoutesController object.
         *
         * @throws \Exception If the schema does not exist.
         *
         * @param string $version API Version being requested.
         * @param string $controller Whether to return controller name. If false, returns empty array. Note:
         * When $controller param is true, the output should not be used directly in front-end code, to prevent class names from leaking. It's not a security issue necessarily, but it's not a good practice.
         * When $controller param is false, it currently returns and empty array. But it can be modified in future to return include more details about the route info that can be used in frontend.
         *
         * @return string[] List of route paths.
         */
        public function get_all_routes($version = 'v1', $controller = false)
        {
        }
        /**
         * Register defined list of routes with WordPress.
         *
         * @param string $version API Version being registered..
         * @param string $namespace Overrides the default route namespace.
         */
        protected function register_routes($version = 'v1', $namespace = 'wc/store/v1')
        {
        }
    }
    /**
     * SchemaController class.
     */
    class SchemaController
    {
        /**
         * Stores schema class instances.
         *
         * @var Schemas\V1\AbstractSchema[]
         */
        protected $schemas = [];
        /**
         * Stores Rest Extending instance
         *
         * @var ExtendSchema
         */
        private $extend;
        /**
         * Constructor.
         *
         * @param ExtendSchema $extend Rest Extending instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend)
        {
        }
        /**
         * Get a schema class instance.
         *
         * @throws \Exception If the schema does not exist.
         *
         * @param string $name Name of schema.
         * @param int    $version API Version being requested.
         * @return Schemas\V1\AbstractSchema A new instance of the requested schema.
         */
        public function get($name, $version = 1)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Schemas {
    /**
     * Provides utility functions to extend Store API schemas.
     *
     * Note there are also helpers that map to these methods.
     *
     * @see woocommerce_store_api_register_endpoint_data()
     * @see woocommerce_store_api_register_update_callback()
     * @see woocommerce_store_api_register_payment_requirements()
     * @see woocommerce_store_api_get_formatter()
     */
    final class ExtendSchema
    {
        /**
         * List of Store API schema that is allowed to be extended by extensions.
         *
         * @var string[]
         */
        private $endpoints = [\Automattic\WooCommerce\StoreApi\Schemas\V1\CartItemSchema::IDENTIFIER, \Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema::IDENTIFIER, \Automattic\WooCommerce\StoreApi\Schemas\V1\CheckoutSchema::IDENTIFIER, \Automattic\WooCommerce\StoreApi\Schemas\V1\ProductSchema::IDENTIFIER];
        /**
         * Holds the formatters class instance.
         *
         * @var Formatters
         */
        private $formatters;
        /**
         * Data to be extended
         *
         * @var array
         */
        private $extend_data = [];
        /**
         * Data to be extended
         *
         * @var array
         */
        private $callback_methods = [];
        /**
         * Array of payment requirements
         *
         * @var array
         */
        private $payment_requirements = [];
        /**
         * Constructor
         *
         * @param Formatters $formatters An instance of the formatters class.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Formatters $formatters)
        {
        }
        /**
         * Register endpoint data under a specified namespace
         *
         * @param array $args {
         *     An array of elements that make up a post to update or insert.
         *
         *     @type string   $endpoint Required. The endpoint to extend.
         *     @type string   $namespace Required. Plugin namespace.
         *     @type callable $schema_callback Callback executed to add schema data.
         *     @type callable $data_callback Callback executed to add endpoint data.
         *     @type string   $schema_type The type of data, object or array.
         * }
         *
         * @throws \Exception On failure to register.
         */
        public function register_endpoint_data($args)
        {
        }
        /**
         * Add callback functions that can be executed by the cart/extensions endpoint.
         *
         * @param array $args {
         *     An array of elements that make up the callback configuration.
         *
         *     @type string   $namespace Required. Plugin namespace.
         *     @type callable $callback Required. The function/callable to execute.
         * }
         *
         * @throws \Exception On failure to register.
         */
        public function register_update_callback($args)
        {
        }
        /**
         * Registers and validates payment requirements callbacks.
         *
         * @param array $args {
         *     Array of registration data.
         *
         *     @type callable $data_callback Required. Callback executed to add payment requirements data.
         * }
         *
         * @throws \Exception On failure to register.
         */
        public function register_payment_requirements($args)
        {
        }
        /**
         * Returns a formatter instance.
         *
         * @param string $name Formatter name.
         * @return FormatterInterface
         */
        public function get_formatter($name)
        {
        }
        /**
         * Get callback for a specific endpoint and namespace.
         *
         * @param string $namespace The namespace to get callbacks for.
         *
         * @return callable The callback registered by the extension.
         * @throws \Exception When callback is not callable or parameters are incorrect.
         */
        public function get_update_callback($namespace)
        {
        }
        /**
         * Returns the registered endpoint data
         *
         * @param string $endpoint    A valid identifier.
         * @param array  $passed_args Passed arguments from the Schema class.
         * @return object Returns an casted object with registered endpoint data.
         * @throws \Exception If a registered callback throws an error, or silently logs it.
         */
        public function get_endpoint_data($endpoint, array $passed_args = [])
        {
        }
        /**
         * Returns the registered endpoint schema
         *
         * @param string $endpoint    A valid identifier.
         * @param array  $passed_args Passed arguments from the Schema class.
         * @return object Returns an array with registered schema data.
         * @throws \Exception If a registered callback throws an error, or silently logs it.
         */
        public function get_endpoint_schema($endpoint, array $passed_args = [])
        {
        }
        /**
         * Returns the additional payment requirements for the cart which are required to make payments. Values listed here
         * are compared against each Payment Gateways "supports" flag.
         *
         * @param array $requirements list of requirements that should be added to the collected requirements.
         * @return array Returns a list of payment requirements.
         * @throws \Exception If a registered callback throws an error, or silently logs it.
         */
        public function get_payment_requirements(array $requirements = ['products'])
        {
        }
        /**
         * Throws error and/or silently logs it.
         *
         * @param string|\Throwable $exception_or_error Error message or \Exception.
         * @throws \Exception An error to throw if we have debug enabled and user is admin.
         */
        private function throw_exception($exception_or_error)
        {
        }
        /**
         * Format schema for an extension.
         *
         * @param string $namespace Error message or \Exception.
         * @param array  $schema An error to throw if we have debug enabled and user is admin.
         * @param string $schema_type How should data be shaped.
         * @return array Formatted schema.
         */
        private function format_extensions_properties($namespace, $schema, $schema_type)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Schemas\V1 {
    /**
     * AbstractSchema class.
     *
     * For REST Route Schemas
     */
    abstract class AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'Schema';
        /**
         * Rest extend instance.
         *
         * @var ExtendSchema
         */
        protected $extend;
        /**
         * Schema Controller instance.
         *
         * @var SchemaController
         */
        protected $controller;
        /**
         * Extending key that gets added to endpoint.
         *
         * @var string
         */
        const EXTENDING_KEY = 'extensions';
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Returns the full item schema.
         *
         * @return array
         */
        public function get_item_schema()
        {
        }
        /**
         * Returns the full item response.
         *
         * @param mixed $item Item to get response for.
         * @return array|stdClass
         */
        public function get_item_response($item)
        {
        }
        /**
         * Return schema properties.
         *
         * @return array
         */
        public abstract function get_properties();
        /**
         * Recursive removal of arg_options.
         *
         * @param array $properties Schema properties.
         */
        protected function remove_arg_options($properties)
        {
        }
        /**
         * Returns the public schema.
         *
         * @return array
         */
        public function get_public_item_schema()
        {
        }
        /**
         * Returns extended data for a specific endpoint.
         *
         * @param string $endpoint The endpoint identifier.
         * @param array  ...$passed_args An array of arguments to be passed to callbacks.
         * @return object the data that will get added.
         */
        protected function get_extended_data($endpoint, ...$passed_args)
        {
        }
        /**
         * Gets an array of schema defaults recursively.
         *
         * @param array $properties Schema property data.
         * @return array Array of defaults, pulled from arg_options
         */
        protected function get_recursive_schema_property_defaults($properties)
        {
        }
        /**
         * Gets a function that validates recursively.
         *
         * @param array $properties Schema property data.
         * @return function Anonymous validation callback.
         */
        protected function get_recursive_validate_callback($properties)
        {
        }
        /**
         * Gets a function that sanitizes recursively.
         *
         * @param array $properties Schema property data.
         * @return function Anonymous validation callback.
         */
        protected function get_recursive_sanitize_callback($properties)
        {
        }
        /**
         * Returns extended schema for a specific endpoint.
         *
         * @param string $endpoint The endpoint identifer.
         * @param array  ...$passed_args An array of arguments to be passed to callbacks.
         * @return array the data that will get added.
         */
        protected function get_extended_schema($endpoint, ...$passed_args)
        {
        }
        /**
         * Apply a schema get_item_response callback to an array of items and return the result.
         *
         * @param AbstractSchema $schema Schema class instance.
         * @param array          $items Array of items.
         * @return array Array of values from the callback function.
         */
        protected function get_item_responses_from_schema(\Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema $schema, $items)
        {
        }
        /**
         * Retrieves an array of endpoint arguments from the item schema for the controller.
         *
         * @uses rest_get_endpoint_args_for_schema()
         * @param string $method Optional. HTTP method of the request.
         * @return array Endpoint arguments.
         */
        public function get_endpoint_args_for_item_schema($method = \WP_REST_Server::CREATABLE)
        {
        }
        /**
         * Force all schema properties to be readonly.
         *
         * @param array $properties Schema.
         * @return array Updated schema.
         */
        protected function force_schema_readonly($properties)
        {
        }
        /**
         * Returns consistent currency schema used across endpoints for prices.
         *
         * @return array
         */
        protected function get_store_currency_properties()
        {
        }
        /**
         * Adds currency data to an array of monetary values.
         *
         * @param array $values Monetary amounts.
         * @return array Monetary amounts with currency data appended.
         */
        protected function prepare_currency_response($values)
        {
        }
        /**
         * Convert monetary values from WooCommerce to string based integers, using
         * the smallest unit of a currency.
         *
         * @param string|float $amount Monetary amount with decimals.
         * @param int          $decimals Number of decimals the amount is formatted with.
         * @param int          $rounding_mode Defaults to the PHP_ROUND_HALF_UP constant.
         * @return string      The new amount.
         */
        protected function prepare_money_response($amount, $decimals = 2, $rounding_mode = PHP_ROUND_HALF_UP)
        {
        }
        /**
         * Prepares HTML based content, such as post titles and content, for the API response.
         *
         * @param string|array $response Data to format.
         * @return string|array Formatted data.
         */
        protected function prepare_html_response($response)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Schemas\V1\AI {
    /**
     * ProductsSchema class.
     *
     * @internal
     */
    class ProductsSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'ai/products';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'ai/products';
        /**
         * Products schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Get the Products response.
         *
         * @param array $item Item to get response for.
         *
         * @return array
         */
        public function get_item_response($item)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Schemas\V1 {
    /**
     * AddressSchema class.
     *
     * Provides a generic address schema for composition in other schemas.
     */
    abstract class AbstractAddressSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * Additional fields controller.
         *
         * @var CheckoutFields
         */
        protected $additional_fields_controller;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend ExtendSchema instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Term properties.
         *
         * @internal Note that required properties don't require values, just that they are included in the request.
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Sanitize and format the given address object.
         *
         * @param array            $address Value being sanitized.
         * @param \WP_REST_Request $request The Request.
         * @param string           $param The param being sanitized.
         * @return array
         */
        public function sanitize_callback($address, $request, $param)
        {
        }
        /**
         * Validate the given address object.
         *
         * @see rest_validate_value_from_schema
         *
         * @param array            $address Value being sanitized.
         * @param \WP_REST_Request $request The Request.
         * @param string           $param The param being sanitized.
         * @return true|\WP_Error
         */
        public function validate_callback($address, $request, $param)
        {
        }
        /**
         * Get additional address fields schema.
         *
         * @return array
         */
        protected function get_additional_address_fields_schema()
        {
        }
    }
    /**
     * BatchSchema class.
     */
    class BatchSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'batch';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'batch';
        /**
         * Batch schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
    }
    /**
     * BillingAddressSchema class.
     *
     * Provides a generic billing address schema for composition in other schemas.
     */
    class BillingAddressSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractAddressSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'billing_address';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'billing-address';
        /**
         * Term properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Sanitize and format the given address object.
         *
         * @param array            $address Value being sanitized.
         * @param \WP_REST_Request $request The Request.
         * @param string           $param The param being sanitized.
         * @return array
         */
        public function sanitize_callback($address, $request, $param)
        {
        }
        /**
         * Validate the given address object.
         *
         * @param array            $address Value being validated.
         * @param \WP_REST_Request $request The Request.
         * @param string           $param The param being validated.
         * @return true|\WP_Error
         */
        public function validate_callback($address, $request, $param)
        {
        }
        /**
         * Convert a term object into an object suitable for the response.
         *
         * @param \WC_Order|\WC_Customer $address An object with billing address.
         *
         * @throws RouteException When the invalid object types are provided.
         * @return array
         */
        public function get_item_response($address)
        {
        }
    }
    /**
     * CartCouponSchema class.
     */
    class CartCouponSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'cart_coupon';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-coupon';
        /**
         * Cart schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Check given coupon exists.
         *
         * @param string $coupon_code Coupon code.
         * @return bool
         */
        public function coupon_exists($coupon_code)
        {
        }
        /**
         * Generate a response from passed coupon code.
         *
         * @param string $coupon_code Coupon code from the cart.
         * @return array
         */
        public function get_item_response($coupon_code)
        {
        }
    }
    /**
     * Class CartExtensionsSchema
     */
    class CartExtensionsSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'cart-extensions';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-extensions';
        /**
         * Cart schema instance.
         *
         * @var CartSchema
         */
        public $cart_schema;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Cart extensions schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Handle the request and return a valid response for this endpoint.
         *
         * @param \WP_REST_Request $request Request containing data for the extension callback.
         * @throws RouteException When callback is not callable or parameters are incorrect.
         *
         * @return array
         */
        public function get_item_response($request = null)
        {
        }
    }
    /**
     * CartFeeSchema class.
     */
    class CartFeeSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'cart_fee';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-fee';
        /**
         * Cart schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a WooCommerce cart fee to an object suitable for the response.
         *
         * @param array $fee Cart fee data.
         * @return array
         */
        public function get_item_response($fee)
        {
        }
    }
    /**
     * ProductSchema class.
     */
    class ProductSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'product';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product';
        /**
         * Image attachment schema instance.
         *
         * @var ImageAttachmentSchema
         */
        protected $image_attachment_schema;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Product schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a WooCommerce product into an object suitable for the response.
         *
         * @param \WC_Product $product Product instance.
         * @return array
         */
        public function get_item_response($product)
        {
        }
        /**
         * Get list of product images.
         *
         * @param \WC_Product $product Product instance.
         * @return array
         */
        protected function get_images(\WC_Product $product)
        {
        }
        /**
         * Gets remaining stock amount for a product.
         *
         * @param \WC_Product $product Product instance.
         * @return integer|null
         */
        protected function get_remaining_stock(\WC_Product $product)
        {
        }
        /**
         * If a product has low stock, return the remaining stock amount for display.
         *
         * @param \WC_Product $product Product instance.
         * @return integer|null
         */
        protected function get_low_stock_remaining(\WC_Product $product)
        {
        }
        /**
         * Returns true if the given attribute is valid.
         *
         * @param mixed $attribute Object or variable to check.
         * @return boolean
         */
        protected function filter_valid_attribute($attribute)
        {
        }
        /**
         * Returns true if the given attribute is valid and used for variations.
         *
         * @param mixed $attribute Object or variable to check.
         * @return boolean
         */
        protected function filter_variation_attribute($attribute)
        {
        }
        /**
         * Get variation IDs and attributes from the DB.
         *
         * @param \WC_Product $product Product instance.
         * @returns array
         */
        protected function get_variations(\WC_Product $product)
        {
        }
        /**
         * Get list of product attributes and attribute terms.
         *
         * @param \WC_Product $product Product instance.
         * @return array
         */
        protected function get_attributes(\WC_Product $product)
        {
        }
        /**
         * Prepare an attribute term for the response.
         *
         * @param \WP_Term $term Term object.
         * @return object
         */
        protected function prepare_product_attribute_taxonomy_value(\WP_Term $term)
        {
        }
        /**
         * Prepare an attribute term for the response.
         *
         * @param string $name Attribute term name.
         * @param int    $id Attribute term ID.
         * @param string $slug Attribute term slug.
         * @return object
         */
        protected function prepare_product_attribute_value($name, $id = 0, $slug = '')
        {
        }
        /**
         * Get an array of pricing data.
         *
         * @param \WC_Product $product Product instance.
         * @param string      $tax_display_mode If returned prices are incl or excl of tax.
         * @return array
         */
        protected function prepare_product_price_response(\WC_Product $product, $tax_display_mode = '')
        {
        }
        /**
         * WooCommerce can return prices including or excluding tax; choose the correct method based on tax display mode.
         *
         * @param string $tax_display_mode Provided tax display mode.
         * @return string Valid tax display mode.
         */
        protected function get_tax_display_mode($tax_display_mode = '')
        {
        }
        /**
         * WooCommerce can return prices including or excluding tax; choose the correct method based on tax display mode.
         *
         * @param string $tax_display_mode If returned prices are incl or excl of tax.
         * @return string Function name.
         */
        protected function get_price_function_from_tax_display_mode($tax_display_mode)
        {
        }
        /**
         * Get price range from certain product types.
         *
         * @param \WC_Product $product Product instance.
         * @param string      $tax_display_mode If returned prices are incl or excl of tax.
         * @return object|null
         */
        protected function get_price_range(\WC_Product $product, $tax_display_mode = '')
        {
        }
        /**
         * Returns a list of terms assigned to the product.
         *
         * @param \WC_Product $product Product object.
         * @param string      $taxonomy Taxonomy name.
         * @return array Array of terms (id, name, slug).
         */
        protected function get_term_list(\WC_Product $product, $taxonomy = '')
        {
        }
    }
    /**
     * ItemSchema class.
     */
    abstract class ItemSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\ProductSchema
    {
        /**
         * Item schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Utilities {
    /**
     * ProductItemTrait
     *
     * Shared functionality for formating product item data.
     */
    trait ProductItemTrait
    {
        /**
         * Get an array of pricing data.
         *
         * @param \WC_Product $product Product instance.
         * @param string      $tax_display_mode If returned prices are incl or excl of tax.
         * @return array
         */
        protected function prepare_product_price_response(\WC_Product $product, $tax_display_mode = '')
        {
        }
        /**
         * Format variation data, for example convert slugs such as attribute_pa_size to Size.
         *
         * @param array       $variation_data Array of data from the cart.
         * @param \WC_Product $product Product data.
         * @return array
         */
        protected function format_variation_data($variation_data, $product)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Schemas\V1 {
    /**
     * CartItemSchema class.
     */
    class CartItemSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\ItemSchema
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\ProductItemTrait;
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'cart_item';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-item';
        /**
         * Convert a WooCommerce cart item to an object suitable for the response.
         *
         * @param array $cart_item Cart item array.
         * @return array
         */
        public function get_item_response($cart_item)
        {
        }
        /**
         * Format cart item data removing any HTML tag.
         *
         * @param array $cart_item Cart item array.
         * @return array
         */
        protected function get_item_data($cart_item)
        {
        }
        /**
         * Remove HTML tags from cart item data and set the `hidden` property to `__experimental_woocommerce_blocks_hidden`.
         *
         * @param array $item_data_element Individual element of a cart item data.
         * @return array
         */
        protected function format_item_data_element($item_data_element)
        {
        }
    }
    /**
     * CartSchema class.
     */
    class CartSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'cart';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart';
        /**
         * Item schema instance.
         *
         * @var CartItemSchema
         */
        public $item_schema;
        /**
         * Coupon schema instance.
         *
         * @var CartCouponSchema
         */
        public $coupon_schema;
        /**
         * Product item schema instance representing cross-sell items.
         *
         * @var ProductSchema
         */
        public $cross_sells_item_schema;
        /**
         * Fee schema instance.
         *
         * @var CartFeeSchema
         */
        public $fee_schema;
        /**
         * Shipping rates schema instance.
         *
         * @var CartShippingRateSchema
         */
        public $shipping_rate_schema;
        /**
         * Shipping address schema instance.
         *
         * @var ShippingAddressSchema
         */
        public $shipping_address_schema;
        /**
         * Billing address schema instance.
         *
         * @var BillingAddressSchema
         */
        public $billing_address_schema;
        /**
         * Error schema instance.
         *
         * @var ErrorSchema
         */
        public $error_schema;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Cart schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a woo cart into an object suitable for the response.
         *
         * @param \WC_Cart $cart Cart class instance.
         * @return array
         */
        public function get_item_response($cart)
        {
        }
        /**
         * Get total data.
         *
         * @param \WC_Cart $cart Cart class instance.
         * @return array
         */
        protected function get_totals($cart)
        {
        }
        /**
         * Get tax lines from the cart and format to match schema.
         *
         * @param \WC_Cart $cart Cart class instance.
         * @return array
         */
        protected function get_tax_lines($cart)
        {
        }
        /**
         * Get cart validation errors.
         *
         * @param \WC_Cart $cart Cart class instance.
         * @return array
         */
        protected function get_cart_errors($cart)
        {
        }
    }
    /**
     * CartShippingRateSchema class.
     */
    class CartShippingRateSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'cart-shipping-rate';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'cart-shipping-rate';
        /**
         * Cart schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Schema for a single rate.
         *
         * @return array
         */
        protected function get_rate_properties()
        {
        }
        /**
         * Convert a shipping rate from WooCommerce into a valid response.
         *
         * @param array $package Shipping package complete with rates from WooCommerce.
         * @return array
         */
        public function get_item_response($package)
        {
        }
        /**
         * Gets and formats the destination address of a package.
         *
         * @param array $package Shipping package complete with rates from WooCommerce.
         * @return object
         */
        protected function prepare_package_destination_response($package)
        {
        }
        /**
         * Gets items from a package and creates an array of strings containing product names and quantities.
         *
         * @param array $package Shipping package complete with rates from WooCommerce.
         * @return array
         */
        protected function prepare_package_items_response($package)
        {
        }
        /**
         * Prepare an array of rates from a package for the response.
         *
         * @param array $package Shipping package complete with rates from WooCommerce.
         * @return array
         */
        protected function prepare_package_shipping_rates_response($package)
        {
        }
        /**
         * Response for a single rate.
         *
         * @param WC_Shipping_Rate $rate Rate object.
         * @param string           $selected_rate Selected rate.
         * @return array
         */
        protected function get_rate_response($rate, $selected_rate = '')
        {
        }
        /**
         * Gets a prop of the rate object, if callable.
         *
         * @param WC_Shipping_Rate $rate Rate object.
         * @param string           $prop Prop name.
         * @return string
         */
        protected function get_rate_prop($rate, $prop)
        {
        }
        /**
         * Converts rate meta data into a suitable response object.
         *
         * @param WC_Shipping_Rate $rate Rate object.
         * @return array
         */
        protected function get_rate_meta_data($rate)
        {
        }
    }
    /**
     * CheckoutSchema class.
     */
    class CheckoutSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'checkout';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'checkout';
        /**
         * Billing address schema instance.
         *
         * @var BillingAddressSchema
         */
        protected $billing_address_schema;
        /**
         * Shipping address schema instance.
         *
         * @var ShippingAddressSchema
         */
        protected $shipping_address_schema;
        /**
         * Image Attachment schema instance.
         *
         * @var ImageAttachmentSchema
         */
        protected $image_attachment_schema;
        /**
         * Additional fields controller.
         *
         * @var CheckoutFields
         */
        protected $additional_fields_controller;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Checkout schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Return the response for checkout.
         *
         * @param object $item Results from checkout action.
         * @return array
         */
        public function get_item_response($item)
        {
        }
        /**
         * Get the checkout response based on the current order and any payments.
         *
         * @param \WC_Order          $order          Order object.
         * @param PaymentResult|null $payment_result Payment result object.
         * @return array
         */
        protected function get_checkout_response(\WC_Order $order, ?\Automattic\WooCommerce\StoreApi\Payments\PaymentResult $payment_result = null)
        {
        }
        /**
         * This prepares the payment details for the response so it's following the
         * schema where it's an array of objects.
         *
         * @param array $payment_details An array of payment details from the processed payment.
         *
         * @return array An array of objects where each object has the key and value
         *               as distinct properties.
         */
        protected function prepare_payment_details_for_response(array $payment_details)
        {
        }
        /**
         * Get the additional fields response.
         *
         * @param \WC_Order $order Order object.
         * @return array
         */
        protected function get_additional_fields_response(\WC_Order $order)
        {
        }
        /**
         * Get the schema for additional fields.
         *
         * @return array
         */
        protected function get_additional_fields_schema()
        {
        }
        /**
         * Generate the schema for additional fields.
         *
         * @param array[] ...$args One or more arrays of additional fields.
         * @return array
         */
        protected function generate_additional_fields_schema(...$args)
        {
        }
        /**
         * Check if any additional field is required, so that the parent item is required as well.
         *
         * @param array $additional_fields_schema Additional fields schema.
         * @return bool
         */
        protected function schema_has_required_property($additional_fields_schema)
        {
        }
        /**
         * Sanitize and format additional fields object.
         *
         * @param array $fields Values being sanitized.
         * @return array
         */
        public function sanitize_additional_fields($fields)
        {
        }
        /**
         * Validate additional fields object.
         *
         * @see rest_validate_value_from_schema
         *
         * @param array            $fields Value being sanitized.
         * @param \WP_REST_Request $request The Request.
         * @return true|\WP_Error
         */
        public function validate_additional_fields($fields, $request)
        {
        }
    }
    /**
     * CheckoutOrderSchema class.
     */
    class CheckoutOrderSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\CheckoutSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'checkout-order';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'checkout-order';
        /**
         * Checkout schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
    }
    /**
     * ErrorSchema class.
     */
    class ErrorSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'error';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'error';
        /**
         * Product schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a WP_Error into an object suitable for the response.
         *
         * @param \WP_Error $error Error object.
         * @return array
         */
        public function get_item_response($error)
        {
        }
    }
    /**
     * ImageAttachmentSchema class.
     */
    class ImageAttachmentSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'image';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'image';
        /**
         * Product schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a WooCommerce product into an object suitable for the response.
         *
         * @param int $attachment_id Image attachment ID.
         * @return object|null
         */
        public function get_item_response($attachment_id)
        {
        }
    }
    /**
     * OrderCouponSchema class.
     */
    class OrderCouponSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'order_coupon';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'order-coupon';
        /**
         * Cart schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert an order coupon to an object suitable for the response.
         *
         * @param \WC_Order_Item_Coupon $coupon Order coupon object.
         * @return array
         */
        public function get_item_response($coupon)
        {
        }
    }
    /**
     * OrderFeeSchema class.
     */
    class OrderFeeSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'order_fee';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'order-fee';
        /**
         * Cart schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a WooCommerce cart fee to an object suitable for the response.
         *
         * @param \WC_Order_Item_Fee $fee Order fee object.
         * @return array
         */
        public function get_item_response($fee)
        {
        }
    }
    /**
     * OrderItemSchema class.
     */
    class OrderItemSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\ItemSchema
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\ProductItemTrait;
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'order_item';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'order-item';
        /**
         * Get order items data.
         *
         * @param \WC_Order_Item_Product $order_item Order item instance.
         * @return array
         */
        public function get_item_response($order_item)
        {
        }
        /**
         * Get totals data.
         *
         * @param \WC_Order_Item_Product $order_item Order item instance.
         * @return array
         */
        public function get_totals($order_item)
        {
        }
    }
    /**
     * OrderSchema class.
     */
    class OrderSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'order';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'order';
        /**
         * Item schema instance.
         *
         * @var OrderItemSchema
         */
        public $item_schema;
        /**
         * Order controller class instance.
         *
         * @var OrderController
         */
        protected $order_controller;
        /**
         * Coupon schema instance.
         *
         * @var OrderCouponSchema
         */
        public $coupon_schema;
        /**
         * Product item schema instance representing cross-sell items.
         *
         * @var ProductSchema
         */
        public $cross_sells_item_schema;
        /**
         * Fee schema instance.
         *
         * @var OrderFeeSchema
         */
        public $fee_schema;
        /**
         * Shipping rates schema instance.
         *
         * @var CartShippingRateSchema
         */
        public $shipping_rate_schema;
        /**
         * Shipping address schema instance.
         *
         * @var ShippingAddressSchema
         */
        public $shipping_address_schema;
        /**
         * Billing address schema instance.
         *
         * @var BillingAddressSchema
         */
        public $billing_address_schema;
        /**
         * Error schema instance.
         *
         * @var ErrorSchema
         */
        public $error_schema;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Order schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Get an order for response.
         *
         * @param \WC_Order $order Order instance.
         * @return array
         */
        public function get_item_response($order)
        {
        }
        /**
         * Get total data.
         *
         * @param \WC_Order $order Order instance.
         * @return array
         */
        protected function get_totals($order)
        {
        }
    }
    /**
     * OrderSchema class.
     */
    class PatternsSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'patterns';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'patterns';
        /**
         * Patterns schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Get the Patterns response.
         *
         * @param array $item Item to get response for.
         *
         * @return array
         */
        public function get_item_response($item)
        {
        }
    }
    /**
     * ProductAttributeSchema class.
     */
    class ProductAttributeSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'product_attribute';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-attribute';
        /**
         * Term properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert an attribute object into an object suitable for the response.
         *
         * @param object $attribute Attribute object.
         * @return array
         */
        public function get_item_response($attribute)
        {
        }
    }
    /**
     * TermSchema class.
     */
    class TermSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'term';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'term';
        /**
         * Term properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a term object into an object suitable for the response.
         *
         * @param \WP_Term $term Term object.
         * @return array
         */
        public function get_item_response($term)
        {
        }
    }
    /**
     * ProductCategorySchema class.
     */
    class ProductCategorySchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\TermSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'product-category';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-category';
        /**
         * Image attachment schema instance.
         *
         * @var ImageAttachmentSchema
         */
        protected $image_attachment_schema;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Term properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a term object into an object suitable for the response.
         *
         * @param \WP_Term $term Term object.
         * @return array
         */
        public function get_item_response($term)
        {
        }
        /**
         * Get total number of reviews for products in a category.
         *
         * @param \WP_Term $term Term object.
         * @return int
         */
        protected function get_category_review_count($term)
        {
        }
    }
    /**
     * ProductCollectionDataSchema class.
     */
    class ProductCollectionDataSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'product-collection-data';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-collection-data';
        /**
         * Product collection data schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Format data.
         *
         * @param array $data Collection data to format and return.
         * @return array
         */
        public function get_item_response($data)
        {
        }
    }
    /**
     * ProductReviewSchema class.
     */
    class ProductReviewSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'product_review';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'product-review';
        /**
         * Image attachment schema instance.
         *
         * @var ImageAttachmentSchema
         */
        protected $image_attachment_schema;
        /**
         * Constructor.
         *
         * @param ExtendSchema     $extend Rest Extending instance.
         * @param SchemaController $controller Schema Controller instance.
         */
        public function __construct(\Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema $extend, \Automattic\WooCommerce\StoreApi\SchemaController $controller)
        {
        }
        /**
         * Product review schema properties.
         *
         * @return array
         */
        public function get_properties()
        {
        }
        /**
         * Convert a WooCommerce product into an object suitable for the response.
         *
         * @param \WP_Comment $review Product review object.
         * @return array
         */
        public function get_item_response($review)
        {
        }
    }
    /**
     * ShippingAddressSchema class.
     *
     * Provides a generic shipping address schema for composition in other schemas.
     */
    class ShippingAddressSchema extends \Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractAddressSchema
    {
        /**
         * The schema item name.
         *
         * @var string
         */
        protected $title = 'shipping_address';
        /**
         * The schema item identifier.
         *
         * @var string
         */
        const IDENTIFIER = 'shipping-address';
        /**
         * Convert a term object into an object suitable for the response.
         *
         * @param \WC_Order|\WC_Customer $address An object with shipping address.
         *
         * @throws RouteException When the invalid object types are provided.
         * @return array
         */
        public function get_item_response($address)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi {
    /**
     * SessionHandler class
     */
    final class SessionHandler extends \WC_Session
    {
        /**
         * Token from HTTP headers.
         *
         * @var string
         */
        protected $token;
        /**
         * Table name for session data.
         *
         * @var string Custom session table name
         */
        protected $table;
        /**
         * Expiration timestamp.
         *
         * @var int
         */
        protected $session_expiration;
        /**
         * Constructor for the session class.
         */
        public function __construct()
        {
        }
        /**
         * Init hooks and session data.
         */
        public function init()
        {
        }
        /**
         * Process the token header to load the correct session.
         */
        protected function init_session_from_token()
        {
        }
        /**
         * Returns the session.
         *
         * @param string $customer_id Customer ID.
         * @param mixed  $default Default session value.
         *
         * @return string|array|bool
         */
        public function get_session($customer_id, $default = false)
        {
        }
        /**
         * Save data and delete user session.
         */
        public function save_data()
        {
        }
    }
    /**
     * StoreApi Main Class.
     */
    final class StoreApi
    {
        /**
         * Init and hook in Store API functionality.
         */
        public function init()
        {
        }
        /**
         * Loads the DI container for Store API.
         *
         * @internal This uses the Blocks DI container. If Store API were to move to core, this container could be replaced
         * with a different compatible container.
         *
         * @param boolean $reset Used to reset the container to a fresh instance. Note: this means all dependencies will be reconstructed.
         * @return mixed
         */
        public static function container($reset = false)
        {
        }
    }
}
namespace Automattic\WooCommerce\StoreApi\Utilities {
    /**
     * ArrayUtils class used for custom functions to operate on arrays
     */
    class ArrayUtils
    {
        /**
         * Join a string with a natural language conjunction at the end.
         *
         * @param array $array  The array to join together with the natural language conjunction.
         * @param bool  $enclose_items_with_quotes Whether each item in the array should be enclosed within quotation marks.
         *
         * @return string a string containing a list of items and a natural language conjuction.
         */
        public static function natural_language_join($array, $enclose_items_with_quotes = false)
        {
        }
        /**
         * Check if a string contains any of the items in an array.
         *
         * @param string $needle The string to check.
         * @param array  $haystack  The array of items to check for.
         *
         * @return bool true if the string contains any of the items in the array, false otherwise.
         */
        public static function string_contains_array($needle, $haystack)
        {
        }
    }
    /**
     * Woo Cart Controller class.
     *
     * Helper class to bridge the gap between the cart API and Woo core.
     */
    class CartController
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\DraftOrderTrait;
        /**
         * Makes the cart and sessions available to a route by loading them from core.
         */
        public function load_cart()
        {
        }
        /**
         * Normalizes the cart by fixing any quantity violations.
         */
        public function normalize_cart()
        {
        }
        /**
         * Gets the latest cart instance, and ensures totals have been calculated before returning.
         *
         * @return \WC_Cart
         */
        public function get_cart_for_response()
        {
        }
        /**
         * Recalculates the cart totals and returns the updated cart instance.
         *
         * @since 9.2.0 Calculate shipping was removed here because it's called already by calculate_totals.
         *
         * @return \WC_Cart
         */
        public function calculate_totals()
        {
        }
        /**
         * Based on the core cart class but returns errors rather than rendering notices directly.
         *
         * @todo Overriding the core add_to_cart method was necessary because core outputs notices when an item is added to
         * the cart. For us this would cause notices to build up and output on the store, out of context. Core would need
         * refactoring to split notices out from other cart actions.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @param array $request Add to cart request params.
         * @return string
         */
        public function add_to_cart($request)
        {
        }
        /**
         * Based on core `set_quantity` method, but validates if an item is sold individually first and enforces any limits in
         * place.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @param string  $item_id Cart item id.
         * @param integer $quantity Cart quantity.
         */
        public function set_cart_item_quantity($item_id, $quantity = 1)
        {
        }
        /**
         * Validate all items in the cart and check for errors.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @param \WC_Product $product Product object associated with the cart item.
         * @param array       $request Add to cart request params.
         */
        public function validate_add_to_cart(\WC_Product $product, $request)
        {
        }
        /**
         * Generates the error message for out of stock products and adds product names to it.
         *
         * @param string $singular The message to use when only one product is in the list.
         * @param string $plural The message to use when more than one product is in the list.
         * @param array  $items The list of cart items whose names should be inserted into the message.
         * @returns string The translated and correctly pluralised message.
         */
        private function add_product_names_to_message($singular, $plural, $items)
        {
        }
        /**
         * Takes a string describing the type of stock extension, whether there is a single product or multiple products
         * causing this exception and returns an appropriate error message.
         *
         * @param string $exception_type     The type of exception encountered.
         * @param string $singular_or_plural Whether to get the error message for a single product or multiple.
         *
         * @return string
         */
        private function get_error_message_for_stock_exception_type($exception_type, $singular_or_plural)
        {
        }
        /**
         * Validate cart and check for errors.
         *
         * @throws InvalidCartException Exception if invalid data is detected in the cart.
         */
        public function validate_cart()
        {
        }
        /**
         * When placing an order, validate that the cart is not empty.
         *
         * @throws InvalidCartException Exception if the cart is empty.
         */
        public function validate_cart_not_empty()
        {
        }
        /**
         * Validate all items in the cart and check for errors.
         *
         * @throws InvalidCartException Exception if invalid data is detected due to insufficient stock levels.
         */
        public function validate_cart_items()
        {
        }
        /**
         * This method will take arrays of exceptions relating to stock, and will convert them to a WP_Error object.
         *
         * @param TooManyInCartException[]     $too_many_in_cart_products     Array of TooManyInCartExceptions.
         * @param NotPurchasableException[]    $not_purchasable_products      Array of NotPurchasableExceptions.
         * @param PartialOutOfStockException[] $partial_out_of_stock_products Array of PartialOutOfStockExceptions.
         * @param OutOfStockException[]        $out_of_stock_products         Array of OutOfStockExceptions.
         *
         * @return WP_Error  The WP_Error object returned. Will have errors if any exceptions were in the args. It will be empty if they do not.
         */
        private function stock_exceptions_to_wp_errors($too_many_in_cart_products, $not_purchasable_products, $partial_out_of_stock_products, $out_of_stock_products)
        {
        }
        /**
         * Validates an existing cart item and returns any errors.
         *
         * @throws TooManyInCartException Exception if more than one product that can only be purchased individually is in
         * the cart.
         * @throws PartialOutOfStockException Exception if an item has a quantity greater than what is available in stock.
         * @throws OutOfStockException Exception thrown when an item is entirely out of stock.
         * @throws NotPurchasableException Exception thrown when an item is not purchasable.
         * @param array $cart_item Cart item array.
         */
        public function validate_cart_item($cart_item)
        {
        }
        /**
         * Validate all coupons in the cart and check for errors.
         *
         * @throws InvalidCartException Exception if invalid data is detected.
         */
        public function validate_cart_coupons()
        {
        }
        /**
         * Validate the cart and get a list of errors.
         *
         * @return WP_Error A WP_Error instance containing the cart's errors.
         */
        public function get_cart_errors()
        {
        }
        /**
         * Get main instance of cart class.
         *
         * @throws RouteException When cart cannot be loaded.
         * @return \WC_Cart
         */
        public function get_cart_instance()
        {
        }
        /**
         * Return a cart item from the woo core cart class.
         *
         * @param string $item_id Cart item id.
         * @return array
         */
        public function get_cart_item($item_id)
        {
        }
        /**
         * Returns all cart items.
         *
         * @param callable $callback Optional callback to apply to the array filter.
         * @return array
         */
        public function get_cart_items($callback = null)
        {
        }
        /**
         * Get hashes for items in the current cart. Useful for tracking changes.
         *
         * @return array
         */
        public function get_cart_hashes()
        {
        }
        /**
         * Empty cart contents.
         */
        public function empty_cart()
        {
        }
        /**
         * See if cart has applied coupon by code.
         *
         * @param string $coupon_code Cart coupon code.
         * @return bool
         */
        public function has_coupon($coupon_code)
        {
        }
        /**
         * Returns all applied coupons.
         *
         * @param callable $callback Optional callback to apply to the array filter.
         * @return array
         */
        public function get_cart_coupons($callback = null)
        {
        }
        /**
         * Get shipping packages from the cart with calculated shipping rates.
         *
         * @todo this can be refactored once https://github.com/woocommerce/woocommerce/pull/26101 lands.
         *
         * @param bool $calculate_rates Should rates for the packages also be returned.
         * @return array
         */
        public function get_shipping_packages($calculate_rates = true)
        {
        }
        /**
         * Creates a name for a package.
         *
         * @param array $package Shipping package from WooCommerce.
         * @param int   $index Package number.
         * @return string
         */
        protected function get_package_name($package, $index)
        {
        }
        /**
         * Selects a shipping rate.
         *
         * @param int|string $package_id ID of the package to choose a rate for.
         * @param string     $rate_id ID of the rate being chosen.
         */
        public function select_shipping_rate($package_id, $rate_id)
        {
        }
        /**
         * Based on the core cart class but returns errors rather than rendering notices directly.
         *
         * @todo Overriding the core apply_coupon method was necessary because core outputs notices when a coupon gets
         * applied. For us this would cause notices to build up and output on the store, out of context. Core would need
         * refactoring to split notices out from other cart actions.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @param string $coupon_code Coupon code.
         */
        public function apply_coupon($coupon_code)
        {
        }
        /**
         * Validates an existing cart coupon and returns any errors.
         *
         * @param \WC_Coupon $coupon Coupon object applied to the cart.
         *
         * @throws RouteException Exception if invalid data is detected.
         */
        protected function validate_cart_coupon(\WC_Coupon $coupon)
        {
        }
        /**
         * Gets the qty of a product across line items.
         *
         * @param \WC_Product $product Product object.
         * @return int
         */
        protected function get_product_quantity_in_cart($product)
        {
        }
        /**
         * Gets remaining stock for a product.
         *
         * @param \WC_Product $product Product object.
         * @return int
         */
        protected function get_remaining_stock_for_product($product)
        {
        }
        /**
         * Get a product object to be added to the cart.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @param array $request Add to cart request params.
         * @return \WC_Product|Error Returns a product object if purchasable.
         */
        protected function get_product_for_cart($request)
        {
        }
        /**
         * For a given product, get the product ID.
         *
         * @param \WC_Product $product Product object associated with the cart item.
         * @return int
         */
        protected function get_product_id(\WC_Product $product)
        {
        }
        /**
         * For a given product, get the variation ID.
         *
         * @param \WC_Product $product Product object associated with the cart item.
         * @return int
         */
        protected function get_variation_id(\WC_Product $product)
        {
        }
        /**
         * Default exception thrown when an item cannot be added to the cart.
         *
         * @throws RouteException Exception with code woocommerce_rest_product_not_purchasable.
         *
         * @param \WC_Product $product Product object associated with the cart item.
         */
        protected function throw_default_product_exception(\WC_Product $product)
        {
        }
        /**
         * Filter data for add to cart requests.
         *
         * @param array $request Add to cart request params.
         * @return array Updated request array.
         */
        protected function filter_request_data($request)
        {
        }
        /**
         * If variations are set, validate and format the values ready to add to the cart.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @param array $request Add to cart request params.
         * @return array Updated request array.
         */
        protected function parse_variation_data($request)
        {
        }
        /**
         * Try to match request data to a variation ID and return the ID.
         *
         * @throws RouteException Exception if variation cannot be found.
         *
         * @param array       $request Add to cart request params.
         * @param \WC_Product $product Product being added to the cart.
         * @return int Matching variation ID.
         */
        protected function get_variation_id_from_variation_data($request, $product)
        {
        }
        /**
         * Format and sanitize variation data posted to the API.
         *
         * Labels are converted to names (e.g. Size to pa_size), and values are cleaned.
         *
         * @throws RouteException Exception if variation cannot be found.
         *
         * @param array $variation_data Key value pairs of attributes and values.
         * @param array $variable_product_attributes Product attributes we're expecting.
         * @return array
         */
        protected function sanitize_variation_data($variation_data, $variable_product_attributes)
        {
        }
        /**
         * Get product attributes from the variable product (which may be the parent if the product object is a variation).
         *
         * @throws RouteException Exception if product is invalid.
         *
         * @param \WC_Product $product Product being added to the cart.
         * @return array
         */
        protected function get_variable_product_attributes($product)
        {
        }
    }
    /**
     * JsonWebToken class.
     *
     * Simple Json Web Token generator & verifier static utility class, currently supporting only HS256 signatures.
     */
    final class JsonWebToken
    {
        /**
         * JWT header type.
         *
         * @var string
         */
        private static $type = 'JWT';
        /**
         * JWT algorithm to generate signature.
         *
         * @var string
         */
        private static $algorithm = 'HS256';
        /**
         * Generates a token from provided data and secret.
         *
         * @param array  $payload Payload data.
         * @param string $secret The secret used to generate the signature.
         *
         * @return string
         */
        public static function create(array $payload, string $secret)
        {
        }
        /**
         * Validates a provided token against the provided secret.
         * Checks for format, valid header for our class, expiration claim validity and signature.
         * https://datatracker.ietf.org/doc/html/rfc7519#section-7.2
         *
         * @param string $token Full token string.
         * @param string $secret The secret used to generate the signature.
         *
         * @return bool
         */
        public static function validate(string $token, string $secret)
        {
        }
        /**
         * Returns the decoded/encoded header, payload and signature from a token string.
         *
         * @param string $token Full token string.
         *
         * @return object
         */
        public static function get_parts(string $token)
        {
        }
        /**
         * Generates the json formatted header for our HS256 JWT token.
         *
         * @return string|bool
         */
        private static function generate_header()
        {
        }
        /**
         * Generates a sha256 signature for the provided string using the provided secret.
         *
         * @param string $string Header + Payload token substring.
         * @param string $secret The secret used to generate the signature.
         *
         * @return false|string
         */
        private static function generate_signature(string $string, string $secret)
        {
        }
        /**
         * Generates the payload in json formatted string.
         *
         * @param array $payload Payload data.
         *
         * @return string|bool
         */
        private static function generate_payload(array $payload)
        {
        }
        /**
         * Encodes a string to url safe base64.
         *
         * @param string $string The string to be encoded.
         *
         * @return string
         */
        private static function to_base_64_url(string $string)
        {
        }
        /**
         * Decodes a string encoded using url safe base64, supporting auto padding.
         *
         * @param string $string the string to be decoded.
         *
         * @return string
         */
        private static function from_base_64_url(string $string)
        {
        }
    }
    /**
     * Util class for local pickup related functionality, this contains methods that need to be accessed from places besides
     * the ShippingController, i.e. the OrderController.
     */
    class LocalPickupUtils
    {
        /**
         * Gets the local pickup location settings.
         *
         * @param string $context The context for the settings. Defaults to 'view'.
         */
        public static function get_local_pickup_settings($context = 'view')
        {
        }
        /**
         * Checks if WC Blocks local pickup is enabled.
         *
         * @return bool True if local pickup is enabled.
         */
        public static function is_local_pickup_enabled()
        {
        }
        /**
         * Gets a list of payment method ids that support the 'local-pickup' feature.
         *
         * @return string[] List of payment method ids that support the 'local-pickup' feature.
         */
        public static function get_local_pickup_method_ids()
        {
        }
    }
    /**
     * NoticeHandler class.
     * Helper class to handle notices.
     */
    class NoticeHandler
    {
        /**
         * Convert queued error notices into an exception.
         *
         * For example, Payment methods may add error notices during validate_fields call to prevent checkout.
         * Since we're not rendering notices at all, we need to convert them to exceptions.
         *
         * This method will find the first error message and thrown an exception instead. Discards notices once complete.
         *
         * @throws RouteException If an error notice is detected, Exception is thrown.
         *
         * @param string $error_code Error code for the thrown exceptions.
         */
        public static function convert_notices_to_exceptions($error_code = 'unknown_server_error')
        {
        }
        /**
         * Collects queued error notices into a \WP_Error.
         *
         * For example, cart validation processes may add error notices to prevent checkout.
         * Since we're not rendering notices at all, we need to catch them and group them in a single WP_Error instance.
         *
         * This method will discard notices once complete.
         *
         * @param string $error_code Error code for the thrown exceptions.
         *
         * @return \WP_Error The WP_Error object containing all error notices.
         */
        public static function convert_notices_to_wp_errors($error_code = 'unknown_server_error')
        {
        }
    }
    /**
     * OrderController class.
     * Helper class which creates and syncs orders with the cart.
     */
    class OrderController
    {
        /**
         * Checkout fields controller.
         *
         * @var CheckoutFields
         */
        private \Automattic\WooCommerce\Blocks\Domain\Services\CheckoutFields $additional_fields_controller;
        /**
         * Constructor.
         */
        public function __construct()
        {
        }
        /**
         * Create order and set props based on global settings.
         *
         * @throws RouteException Exception if invalid data is detected.
         *
         * @return \WC_Order A new order object.
         */
        public function create_order_from_cart()
        {
        }
        /**
         * Update an order using data from the current cart.
         *
         * @param \WC_Order $order The order object to update.
         * @param boolean   $update_totals Whether to update totals or not.
         */
        public function update_order_from_cart(\WC_Order $order, $update_totals = true)
        {
        }
        /**
         * Copies order data to customer object (not the session), so values persist for future checkouts.
         *
         * @param \WC_Order $order Order object.
         */
        public function sync_customer_data_with_order(\WC_Order $order)
        {
        }
        /**
         * Final validation ran before payment is taken.
         *
         * By this point we have an order populated with customer data and items.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param \WC_Order $order Order object.
         */
        public function validate_order_before_payment(\WC_Order $order)
        {
        }
        /**
         * Convert a coupon code to a coupon object.
         *
         * @param string $coupon_code Coupon code.
         * @return \WC_Coupon Coupon object.
         */
        protected function get_coupon($coupon_code)
        {
        }
        /**
         * Validate coupons applied to the order and remove those that are not valid.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param \WC_Order $order Order object.
         */
        protected function validate_coupons(\WC_Order $order)
        {
        }
        /**
         * Validates the customer email. This is a required field.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param \WC_Order $order Order object.
         */
        protected function validate_email(\WC_Order $order)
        {
        }
        /**
         * Validates customer address data based on the locale to ensure required fields are set.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param \WC_Order $order Order object.
         */
        protected function validate_addresses(\WC_Order $order)
        {
        }
        /**
         * Check all required address fields are set and return errors if not.
         *
         * @param string $country Country code.
         * @param array  $allowed_countries List of valid country codes.
         * @return boolean True if valid.
         */
        protected function validate_allowed_country($country, array $allowed_countries)
        {
        }
        /**
         * Check all required address fields are set and return errors if not.
         *
         * @param \WC_Order $order Order object.
         * @param string    $address_type billing or shipping address, used in error messages.
         * @param \WP_Error $errors Error object.
         */
        protected function validate_address_fields(\WC_Order $order, $address_type, \WP_Error $errors)
        {
        }
        /**
         * Check email restrictions of a coupon against the order.
         *
         * @throws Exception Exception if invalid data is detected.
         * @param \WC_Coupon $coupon Coupon object applied to the cart.
         * @param \WC_Order  $order Order object.
         */
        protected function validate_coupon_email_restriction(\WC_Coupon $coupon, \WC_Order $order)
        {
        }
        /**
         * Check usage restrictions of a coupon against the order.
         *
         * @throws Exception Exception if invalid data is detected.
         * @param \WC_Coupon $coupon Coupon object applied to the cart.
         * @param \WC_Order  $order Order object.
         */
        protected function validate_coupon_usage_limit(\WC_Coupon $coupon, \WC_Order $order)
        {
        }
        /**
         * Get user email from user id.
         *
         * @param integer $user_id User ID.
         * @return string Email or empty string.
         */
        private function get_email_from_user_id($user_id)
        {
        }
        /**
         * Get the usage count for a coupon based on a list of aliases (ids, emails).
         *
         * @param \WC_Coupon $coupon Coupon object applied to the cart.
         * @param array      $aliases List of aliases to check.
         *
         * @return integer
         */
        private function get_usage_per_aliases($coupon, $aliases)
        {
        }
        /**
         * Check there is a shipping method if it requires shipping.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param boolean $needs_shipping Current order needs shipping.
         * @param array   $chosen_shipping_methods Array of shipping methods.
         */
        public function validate_selected_shipping_methods($needs_shipping, $chosen_shipping_methods = array())
        {
        }
        /**
         * Validate a given order key against an existing order.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param integer $order_id Order ID.
         * @param string  $order_key Order key.
         */
        public function validate_order_key($order_id, $order_key)
        {
        }
        /**
         * Get errors for order stock on failed orders.
         *
         * @throws RouteException Exception if invalid data is detected.
         * @param integer $order_id Order ID.
         */
        public function get_failed_order_stock_error($order_id)
        {
        }
        /**
         * Changes default order status to draft for orders created via this API.
         *
         * @return string
         */
        public function default_order_status()
        {
        }
        /**
         * Create order line items.
         *
         * @param \WC_Order $order The order object to update.
         */
        protected function update_line_items_from_cart(\WC_Order $order)
        {
        }
        /**
         * Update address data from cart and/or customer session data.
         *
         * @param \WC_Order $order The order object to update.
         */
        protected function update_addresses_from_cart(\WC_Order $order)
        {
        }
    }
    /**
     * Pagination class.
     */
    class Pagination
    {
        /**
         * Add pagination headers to a response object.
         *
         * @param \WP_REST_Response $response Reference to the response object.
         * @param \WP_REST_Request  $request The request object.
         * @param int               $total_items Total items found.
         * @param int               $total_pages Total pages found.
         * @return \WP_REST_Response
         */
        public function add_headers($response, $request, $total_items, $total_pages)
        {
        }
        /**
         * Get current page.
         *
         * @param \WP_REST_Request $request The request object.
         * @return int Get the page from the request object.
         */
        protected function get_current_page($request)
        {
        }
        /**
         * Get base for links from the request object.
         *
         * @param \WP_REST_Request $request The request object.
         * @return string
         */
        protected function get_link_base($request)
        {
        }
        /**
         * Add a page link.
         *
         * @param \WP_REST_Response $response Reference to the response object.
         * @param string            $name Page link name. e.g. prev.
         * @param int               $page Page number.
         * @param string            $link_base Base URL.
         */
        protected function add_page_link(&$response, $name, $page, $link_base)
        {
        }
    }
    /**
     * Product Query class.
     *
     * Helper class to handle product queries for the API.
     */
    class ProductQuery
    {
        /**
         * Prepare query args to pass to WP_Query for a REST API request.
         *
         * @param \WP_REST_Request $request Request data.
         * @return array
         */
        public function prepare_objects_query($request)
        {
        }
        /**
         * Convert the tax_query to a meta_query which is needed to support filtering by attributes for variations.
         *
         * @param array $tax_query The tax_query to convert.
         * @return array
         */
        public function convert_tax_query_to_meta_query($tax_query)
        {
        }
        /**
         * Get results of query.
         *
         * @param \WP_REST_Request $request Request data.
         * @return array
         */
        public function get_results($request)
        {
        }
        /**
         * Get objects.
         *
         * @param \WP_REST_Request $request Request data.
         * @return array
         */
        public function get_objects($request)
        {
        }
        /**
         * Get last modified date for all products.
         *
         * @return int timestamp.
         */
        public function get_last_modified()
        {
        }
        /**
         * Add in conditional search filters for products.
         *
         * @param array     $args Query args.
         * @param \WC_Query $wp_query WC_Query object.
         * @return array
         */
        public function add_query_clauses($args, $wp_query)
        {
        }
        /**
         * Add in conditional price filters.
         *
         * @param array     $args Query args.
         * @param \WC_Query $wp_query WC_Query object.
         * @return array
         */
        protected function add_price_filter_clauses($args, $wp_query)
        {
        }
        /**
         * Get query for price filters when dealing with displayed taxes.
         *
         * @param float  $price_filter Price filter to apply.
         * @param string $column Price being filtered (min or max).
         * @param string $operator Comparison operator for column.
         * @return string Constructed query.
         */
        protected function get_price_filter_query_for_displayed_taxes($price_filter, $column = 'min_price', $operator = '>=')
        {
        }
        /**
         * If price filters need adjustment to work with displayed taxes, this returns true.
         *
         * This logic is used when prices are stored in the database differently to how they are being displayed, with regards
         * to taxes.
         *
         * @return boolean
         */
        protected function adjust_price_filters_for_displayed_taxes()
        {
        }
        /**
         * Converts price filter from subunits to decimal.
         *
         * @param string|int $price_filter Raw price filter in subunit format.
         * @return float Price filter in decimal format.
         */
        protected function prepare_price_filter($price_filter)
        {
        }
        /**
         * Adjusts a price filter based on a tax class and whether or not the amount includes or excludes taxes.
         *
         * This calculation logic is based on `wc_get_price_excluding_tax` and `wc_get_price_including_tax` in core.
         *
         * @param float  $price_filter Price filter amount as entered.
         * @param string $tax_class Tax class for adjustment.
         * @return float
         */
        protected function adjust_price_filter_for_tax_class($price_filter, $tax_class)
        {
        }
        /**
         * Join wc_product_meta_lookup to posts if not already joined.
         *
         * @param string $sql SQL join.
         * @return string
         */
        protected function append_product_sorting_table_join($sql)
        {
        }
    }
    /**
     * Product Query filters class.
     */
    class ProductQueryFilters
    {
        /**
         * Get filtered min price for current products.
         *
         * @param \WP_REST_Request $request The request object.
         * @return object
         */
        public function get_filtered_price($request)
        {
        }
        /**
         * Get stock status counts for the current products.
         *
         * @param \WP_REST_Request $request The request object.
         * @return array status=>count pairs.
         */
        public function get_stock_status_counts($request)
        {
        }
        /**
         * Generate calculate query by stock status.
         *
         * @param string $status status to calculate.
         * @param string $product_query_sql product query for current filter state.
         * @param array  $stock_status_options available stock status options.
         *
         * @return false|string
         */
        private function generate_stock_status_count_query($status, $product_query_sql, $stock_status_options)
        {
        }
        /**
         * Get attribute counts for the current products.
         *
         * @param \WP_REST_Request $request The request object.
         * @param array            $attributes Attributes to count, either names or ids.
         * @return array termId=>count pairs.
         */
        public function get_attribute_counts($request, $attributes = [])
        {
        }
        /**
         * Get rating counts for the current products.
         *
         * @param \WP_REST_Request $request The request object.
         * @return array rating=>count pairs.
         */
        public function get_rating_counts($request)
        {
        }
    }
    /**
     * QuantityLimits class.
     *
     * Returns limits for products and cart items when using the StoreAPI and supporting classes.
     */
    final class QuantityLimits
    {
        use \Automattic\WooCommerce\StoreApi\Utilities\DraftOrderTrait;
        /**
         * Get quantity limits (min, max, step/multiple) for a product or cart item.
         *
         * @param array $cart_item A cart item array.
         * @return array
         */
        public function get_cart_item_quantity_limits($cart_item)
        {
        }
        /**
         * Get limits for product add to cart forms.
         *
         * @param \WC_Product $product Product instance.
         * @return array
         */
        public function get_add_to_cart_limits(\WC_Product $product)
        {
        }
        /**
         * Fix a quantity violation by adjusting it to the nearest valid quantity.
         *
         * @param int   $quantity The quantity to fix.
         * @param array $cart_item The cart item.
         * @return int
         */
        public function normalize_cart_item_quantity(int $quantity, array $cart_item)
        {
        }
        /**
         * Return a number using the closest multiple of another number. Used to enforce step/multiple values.
         *
         * @param int    $number Number to round.
         * @param int    $multiple_of The multiple.
         * @param string $rounding_function ceil, floor, or round.
         * @return int
         */
        public function limit_to_multiple(int $number, int $multiple_of, string $rounding_function = 'round')
        {
        }
        /**
         * Check that a given quantity is valid according to any limits in place.
         *
         * @param integer $quantity Quantity to validate.
         * @param array   $cart_item Cart item.
         * @return \WP_Error|true
         */
        public function validate_cart_item_quantity($quantity, $cart_item)
        {
        }
        /**
         * Get the limit for the total number of a product allowed in the cart.
         *
         * This is based on product properties, including remaining stock, and defaults to a maximum of 9999 of any product
         * in the cart at once.
         *
         * @param \WC_Product $product Product instance.
         * @return int
         */
        protected function get_product_quantity_limit(\WC_Product $product)
        {
        }
        /**
         * Returns the remaining stock for a product if it has stock.
         *
         * This also factors in draft orders.
         *
         * @param \WC_Product $product Product instance.
         * @return integer|null
         */
        protected function get_remaining_stock(\WC_Product $product)
        {
        }
        /**
         * Get a quantity for a product or cart item by running it through a filter hook.
         *
         * @param int               $value Value to filter.
         * @param string            $value_type Type of value. Used for filter suffix.
         * @param \WC_Product|array $cart_item_or_product Either a cart item or a product instance.
         * @return int
         */
        protected function filter_numeric_value(int $value, string $value_type, $cart_item_or_product)
        {
        }
        /**
         * Get a quantity for a product or cart item by running it through a filter hook.
         *
         * @param bool              $value Value to filter.
         * @param string            $value_type Type of value. Used for filter suffix.
         * @param \WC_Product|array $cart_item_or_product Either a cart item or a product instance.
         * @return bool
         */
        protected function filter_boolean_value($value, string $value_type, $cart_item_or_product)
        {
        }
    }
    /**
     * RateLimits class.
     */
    class RateLimits extends \WC_Rate_Limiter
    {
        /**
         * Cache group.
         */
        const CACHE_GROUP = 'store_api_rate_limit';
        /**
         * Rate limiting enabled default value.
         *
         * @var boolean
         */
        const ENABLED = false;
        /**
         * Proxy support enabled default value.
         *
         * @var boolean
         */
        const PROXY_SUPPORT = false;
        /**
         * Default amount of max requests allowed for the defined timeframe.
         *
         * @var int
         */
        const LIMIT = 25;
        /**
         * Default time in seconds before rate limits are reset.
         *
         * @var int
         */
        const SECONDS = 10;
        /**
         * Gets a cache prefix.
         *
         * @param string $action_id Identifier of the action.
         * @return string
         */
        protected static function get_cache_key($action_id)
        {
        }
        /**
         * Get current rate limit row from DB and normalize types. This query is not cached, and returns
         * a new rate limit row if none exists.
         *
         * @param string $action_id Identifier of the action.
         * @return object Object containing reset and remaining.
         */
        protected static function get_rate_limit_row($action_id)
        {
        }
        /**
         * Returns current rate limit values using cache where possible.
         *
         * @param string $action_id Identifier of the action.
         * @return object
         */
        public static function get_rate_limit($action_id)
        {
        }
        /**
         * If exceeded, seconds until reset.
         *
         * @param string $action_id Identifier of the action.
         *
         * @return bool|int
         */
        public static function is_exceeded_retry_after($action_id)
        {
        }
        /**
         * Sets the rate limit delay in seconds for action with identifier $id.
         *
         * @param string $action_id Identifier of the action.
         * @return object Current rate limits.
         */
        public static function update_rate_limit($action_id)
        {
        }
        /**
         * Retrieve a cached store api rate limit.
         *
         * @param string $action_id Identifier of the action.
         * @return bool|object
         */
        protected static function get_cached($action_id)
        {
        }
        /**
         * Cache a rate limit.
         *
         * @param string $action_id Identifier of the action.
         * @param object $current_limit Current limit object with expiry and retries remaining.
         * @return bool
         */
        protected static function set_cache($action_id, $current_limit)
        {
        }
        /**
         * Return options for Rate Limits, to be returned by the "woocommerce_store_api_rate_limit_options" filter.
         *
         * @return object Default options.
         */
        public static function get_options()
        {
        }
        /**
         * Gets a single option through provided name.
         *
         * @param string $option Option name.
         *
         * @return mixed
         */
        public static function get_option($option)
        {
        }
    }
    /**
     * SanitizationUtils class.
     * Helper class which sanitizes customer info.
     */
    class SanitizationUtils
    {
        /**
         * Runs wp_kses on an array. This function runs wp_kses on strings in the array and recurses into arrays.
         *
         * @param  array $array The array to run wp_kses on.
         * @return mixed       The array, all string keys will have been run through wp_kses.
         */
        public function wp_kses_array(array $array)
        {
        }
    }
    /**
     * ValidationUtils class.
     * Helper class which validates and update customer info.
     */
    class ValidationUtils
    {
        /**
         * Get list of states for a country.
         *
         * @param string $country Country code.
         * @return array Array of state names indexed by state keys.
         */
        public function get_states_for_country($country)
        {
        }
        /**
         * Validate provided state against a countries list of defined states.
         *
         * If there are no defined states for a country, any given state is valid.
         *
         * @param string $state State name or code (sanitized).
         * @param string $country Country code.
         * @return boolean Valid or not valid.
         */
        public function validate_state($state, $country)
        {
        }
        /**
         * Format a state based on the country. If country has defined states, will return a valid upper case state code.
         *
         * @param string $state State name or code (sanitized).
         * @param string $country Country code.
         * @return string
         */
        public function format_state($state, $country)
        {
        }
    }
}
namespace Automattic\WooCommerce\Utilities {
    /**
     * A class of utilities for dealing with arrays.
     */
    class ArrayUtil
    {
        /**
         * Automatic selector type for the 'select' method.
         */
        public const SELECT_BY_AUTO = 0;
        /**
         * Object method selector type for the 'select' method.
         */
        public const SELECT_BY_OBJECT_METHOD = 1;
        /**
         * Object property selector type for the 'select' method.
         */
        public const SELECT_BY_OBJECT_PROPERTY = 2;
        /**
         * Array key selector type for the 'select' method.
         */
        public const SELECT_BY_ARRAY_KEY = 3;
        /**
         * Get a value from an nested array by specifying the entire key hierarchy with '::' as separator.
         *
         * E.g. for [ 'foo' => [ 'bar' => [ 'fizz' => 'buzz' ] ] ] the value for key 'foo::bar::fizz' would be 'buzz'.
         *
         * @param array  $items The array to get the value from.
         * @param string $key The complete key hierarchy, using '::' as separator.
         * @param mixed  $default_value The value to return if the key doesn't exist in the array.
         *
         * @return mixed The retrieved value, or the supplied default value.
         * @throws \Exception $array is not an array.
         */
        public static function get_nested_value(array $items, string $key, $default_value = null)
        {
        }
        /**
         * Checks if a given key exists in an array and its value can be evaluated as 'true'.
         *
         * @param array  $items The array to check.
         * @param string $key The key for the value to check.
         * @return bool True if the key exists in the array and the value can be evaluated as 'true'.
         */
        public static function is_truthy(array $items, string $key)
        {
        }
        /**
         * Gets the value for a given key from an array, or a default value if the key doesn't exist in the array.
         *
         * This is equivalent to "$array[$key] ?? $default" except in one case:
         * when they key exists, has a null value, and a non-null default is supplied:
         *
         * $array = ['key' => null]
         * $array['key'] ?? 'default' => 'default'
         * ArrayUtil::get_value_or_default($array, 'key', 'default') => null
         *
         * @param array  $items The array to get the value from.
         * @param string $key The key to use to retrieve the value.
         * @param null   $default_value The default value to return if the key doesn't exist in the array.
         * @return mixed|null The value for the key, or the default value passed.
         */
        public static function get_value_or_default(array $items, string $key, $default_value = null)
        {
        }
        /**
         * Converts an array of numbers to a human-readable range, such as "1,2,3,5" to "1-3, 5". It also supports
         * floating point numbers, however with some perhaps unexpected / undefined behaviour if used within a range.
         * Source: https://stackoverflow.com/a/34254663/4574
         *
         * @param array     $items    An array (in any order, see $sort) of individual numbers.
         * @param string    $item_separator  The string that separates sequential range groups.  Defaults to ', '.
         * @param string    $range_separator The string that separates ranges.  Defaults to '-'.  A plausible example otherwise would be ' to '.
         * @param bool|true $sort     Sort the array prior to iterating?  You'll likely always want to sort, but if not, you can set this to false.
         *
         * @return string
         */
        public static function to_ranges_string(array $items, string $item_separator = ', ', string $range_separator = '-', bool $sort = true) : string
        {
        }
        /**
         * Helper function to generate a callback which can be executed on an array to select a value from each item.
         *
         * @param string $selector_name Field/property/method name to select.
         * @param int    $selector_type Selector type.
         *
         * @return \Closure Callback to select the value.
         */
        private static function get_selector_callback(string $selector_name, int $selector_type = self::SELECT_BY_AUTO) : \Closure
        {
        }
        /**
         * Select one single value from all the items in an array of either arrays or objects based on a selector.
         * For arrays, the selector is a key name; for objects, the selector can be either a method name or a property name.
         *
         * @param array  $items Items to apply the selection to.
         * @param string $selector_name Key, method or property name to use as a selector.
         * @param int    $selector_type Selector type, one of the SELECT_BY_* constants.
         * @return array The selected values.
         */
        public static function select(array $items, string $selector_name, int $selector_type = self::SELECT_BY_AUTO) : array
        {
        }
        /**
         * Returns a new assoc array with format [ $key1 => $item1, $key2 => $item2, ... ] where $key is the value of the selector and items are original items passed.
         *
         * @param array  $items Items to use for conversion.
         * @param string $selector_name Key, method or property name to use as a selector.
         * @param int    $selector_type Selector type, one of the SELECT_BY_* constants.
         *
         * @return array The converted assoc array.
         */
        public static function select_as_assoc(array $items, string $selector_name, int $selector_type = self::SELECT_BY_AUTO) : array
        {
        }
        /**
         * Returns whether two assoc array are same. The comparison is done recursively by keys, and the functions returns on first difference found.
         *
         * @param array $array1 First array to compare.
         * @param array $array2 Second array to compare.
         * @param bool  $strict Whether to use strict comparison.
         *
         * @return bool Whether the arrays are different.
         */
        public static function deep_compare_array_diff(array $array1, array $array2, bool $strict = true)
        {
        }
        /**
         * Computes difference between two assoc arrays recursively. Similar to PHP's native assoc_array_diff, but also supports nested arrays.
         *
         * @param array $array1 First array.
         * @param array $array2 Second array.
         * @param bool  $strict Whether to also match type of values.
         *
         * @return array The difference between the two arrays.
         */
        public static function deep_assoc_array_diff(array $array1, array $array2, bool $strict = true) : array
        {
        }
        /**
         * Helper method to compare to compute difference between two arrays. Comparison is done recursively.
         *
         * @param array $array1 First array.
         * @param array $array2 Second array.
         * @param bool  $compare Whether to compare the arrays. If true, then function will return false on first difference, in order to be slightly more efficient.
         * @param bool  $strict Whether to do string comparison.
         *
         * @return array|bool The difference between the two arrays, or if array are same, depending upon $compare param.
         */
        private static function deep_compute_or_compare_array_diff(array $array1, array $array2, bool $compare, bool $strict = true)
        {
        }
        /**
         * Push a value to an array, but only if the value isn't in the array already.
         *
         * @param array $items The array.
         * @param mixed $value The value to maybe push.
         * @return bool True if the value has been added to the array, false if the value was already in the array.
         */
        public static function push_once(array &$items, $value) : bool
        {
        }
        /**
         * Ensure that an associative array has a given key, and if not, set the key to an empty array.
         *
         * @param array  $items The array to check.
         * @param string $key The key to check.
         * @param bool   $throw_if_existing_is_not_array If true, an exception will be thrown if the key already exists in the array but the value is not an array.
         * @return bool True if the key has been added to the array, false if not (the key already existed).
         * @throws \Exception The key already exists in the array but the value is not an array.
         */
        public static function ensure_key_is_array(array &$items, string $key, bool $throw_if_existing_is_not_array = false) : bool
        {
        }
        /**
         * Given an array of associative arrays, all having a shared key name ("column"), generates a new array in which
         * keys are the distinct column values found, and values are arrays with all the matches found
         * (or only the last matching array found, if $single_values is true).
         * See ArrayUtilTest for examples.
         *
         * @param array  $items The array to process.
         * @param string $column The name of the key to group by.
         * @param bool   $single_values True to only return the last suitable array found for each column value.
         * @return array The grouped array.
         */
        public static function group_by_column(array $items, string $column, bool $single_values = false) : array
        {
        }
    }
    /**
     * The DiscountsUtil class provides utilities to assist discounts calculation and validation.
     */
    class DiscountsUtil
    {
        /**
         * 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 static function is_coupon_emails_allowed($check_emails, $restrictions)
        {
        }
    }
    /**
     * Class with methods that allow to retrieve information about the existing WooCommerce features,
     * also has methods for WooCommerce plugins to declare (in)compatibility with the features.
     */
    class FeaturesUtil
    {
        /**
         * Get all the existing WooCommerce features.
         *
         * Returns an associative array where keys are unique feature ids
         * and values are arrays with these keys:
         *
         * - name
         * - description
         * - is_experimental
         * - is_enabled (if $include_enabled_info is passed as true)
         *
         * @param bool $include_experimental Include also experimental/work in progress features in the list.
         * @param bool $include_enabled_info True to include the 'is_enabled' field in the returned features info.
         * @returns array An array of information about existing features.
         */
        public static function get_features(bool $include_experimental = false, bool $include_enabled_info = false) : array
        {
        }
        /**
         * Check if a given feature is currently enabled.
         *
         * @param  string $feature_id Unique feature id.
         * @return bool True if the feature is enabled, false if not or if the feature doesn't exist.
         */
        public static function feature_is_enabled(string $feature_id) : bool
        {
        }
        /**
         * Declare (in)compatibility with a given feature for a given plugin.
         *
         * This method MUST be executed from inside a handler for the 'before_woocommerce_init' hook and
         * SHOULD be executed from the main plugin file passing __FILE__ or 'my-plugin/my-plugin.php' for the
         * $plugin_file argument.
         *
         * @param string $feature_id Unique feature id.
         * @param string $plugin_file The full plugin file path.
         * @param bool   $positive_compatibility True if the plugin declares being compatible with the feature, false if it declares being incompatible.
         * @return bool True on success, false on error (feature doesn't exist or not inside the required hook).
         */
        public static function declare_compatibility(string $feature_id, string $plugin_file, bool $positive_compatibility = true) : bool
        {
        }
        /**
         * Get the ids of the features that a certain plugin has declared compatibility for.
         *
         * This method can't be called before the 'woocommerce_init' hook is fired.
         *
         * @param string $plugin_name Plugin name, in the form 'directory/file.php'.
         * @return array An array having a 'compatible' and an 'incompatible' key, each holding an array of plugin ids.
         */
        public static function get_compatible_features_for_plugin(string $plugin_name) : array
        {
        }
        /**
         * Get the names of the plugins that have been declared compatible or incompatible with a given feature.
         *
         * @param string $feature_id Feature id.
         * @return array An array having a 'compatible' and an 'incompatible' key, each holding an array of plugin names.
         */
        public static function get_compatible_plugins_for_feature(string $feature_id) : array
        {
        }
        /**
         * Sets a flag indicating that it's allowed to enable features for which incompatible plugins are active
         * from the WooCommerce feature settings page.
         */
        public static function allow_enabling_features_with_incompatible_plugins() : void
        {
        }
        /**
         * Sets a flag indicating that it's allowed to activate plugins for which incompatible features are enabled
         * from the WordPress plugins page.
         */
        public static function allow_activating_plugins_with_incompatible_features() : void
        {
        }
    }
    /**
     * A class of utilities for dealing with internationalization.
     */
    final class I18nUtil
    {
        /**
         * A cache for the i18n units data.
         *
         * @var array $units
         */
        private static $units;
        /**
         * Get the translated label for a weight unit of measure.
         *
         * This will return the original input string if it isn't found in the units array. This way a custom unit of
         * measure can be used even if it's not getting translated.
         *
         * @param string $weight_unit The abbreviated weight unit in English, e.g. kg.
         *
         * @return string
         */
        public static function get_weight_unit_label($weight_unit)
        {
        }
        /**
         * Get the translated label for a dimensions unit of measure.
         *
         * This will return the original input string if it isn't found in the units array. This way a custom unit of
         * measure can be used even if it's not getting translated.
         *
         * @param string $dimensions_unit The abbreviated dimension unit in English, e.g. cm.
         *
         * @return string
         */
        public static function get_dimensions_unit_label($dimensions_unit)
        {
        }
    }
    /**
     * A class of utilities for dealing with logging.
     */
    final class LoggingUtil
    {
        /**
         * Get the canonical URL for the Logs tab of the Status admin page.
         *
         * @return string
         */
        public static function get_logs_tab_url() : string
        {
        }
        /**
         * Determine the current value of the logging_enabled setting.
         *
         * @return bool
         */
        public static function logging_is_enabled() : bool
        {
        }
        /**
         * Determine the current value of the default_handler setting.
         *
         * @return string
         */
        public static function get_default_handler() : string
        {
        }
        /**
         * Determine the current value of the retention_period_days setting.
         *
         * @return int
         */
        public static function get_retention_period() : int
        {
        }
        /**
         * Determine the current value of the level_threshold setting.
         *
         * @return string
         */
        public static function get_level_threshold() : string
        {
        }
        /**
         * Generate a public ID for a log file based on its properties.
         *
         * The file ID is the basename of the file without the hash part. It allows us to identify a file without revealing
         * its full name in the filesystem, so that it's difficult to access the file directly with an HTTP request.
         *
         * @param string   $source   The source of the log entries contained in the file.
         * @param int|null $rotation Optional. The 0-based incremental rotation marker, if the file has been rotated.
         *                           Should only be a single digit.
         * @param int      $created  Optional. The date the file was created, as a Unix timestamp.
         *
         * @return string
         */
        public static function generate_log_file_id(string $source, ?int $rotation = null, int $created = 0) : string
        {
        }
        /**
         * Generate a hash to use as the suffix on a log filename.
         *
         * @param string $file_id A file ID (file basename without the hash).
         *
         * @return string
         */
        public static function generate_log_file_hash(string $file_id) : string
        {
        }
        /**
         * Get the directory for storing log files.
         *
         * @param bool $create_dir Optional. True to attempt to create the log directory if it doesn't exist. Default true.
         *
         * @return string The full directory path, with trailing slash.
         */
        public static function get_log_directory(bool $create_dir = true) : string
        {
        }
        /**
         * Calculate the size, in bytes, of the log directory.
         *
         * @return int
         */
        public static function get_log_directory_size() : int
        {
        }
    }
    /**
     * A class of utilities for dealing with numbers.
     */
    final class NumberUtil
    {
        /**
         * Round a number using the built-in `round` function, but unless the value to round is numeric
         * (a number or a string that can be parsed as a number), apply 'floatval' first to it
         * (so it will convert it to 0 in most cases).
         *
         * This is needed because in PHP 7 applying `round` to a non-numeric value returns 0,
         * but in PHP 8 it throws an error. Specifically, in WooCommerce we have a few places where
         * round('') is often executed.
         *
         * @param mixed $val The value to round.
         * @param int   $precision The optional number of decimal digits to round to.
         * @param int   $mode A constant to specify the mode in which rounding occurs.
         *
         * @return float The value rounded to the given precision as a float, or the supplied default value.
         */
        public static function round($val, int $precision = 0, int $mode = PHP_ROUND_HALF_UP) : float
        {
        }
        /**
         * Get the sum of an array of values using the built-in array_sum function, but sanitize the array values
         * first to ensure they are all floats.
         *
         * This is needed because in PHP 8.3 non-numeric values that cannot be cast as an int or a float will
         * cause an E_WARNING to be emitted. Prior to PHP 8.3 these values were just ignored.
         *
         * Note that, unlike the built-in array_sum, this one will always return a float, never an int.
         *
         * @param array $arr The array of values to sum.
         *
         * @return float
         */
        public static function array_sum(array $arr) : float
        {
        }
    }
    /**
     * A class of utilities for dealing with orders.
     */
    final class OrderUtil
    {
        /**
         * Helper function to get screen name of orders page in wp-admin.
         *
         * @return string
         */
        public static function get_order_admin_screen() : string
        {
        }
        /**
         * Helper function to get whether custom order tables are enabled or not.
         *
         * @return bool
         */
        public static function custom_orders_table_usage_is_enabled() : bool
        {
        }
        /**
         * Helper function to get whether the orders cache should be used or not.
         *
         * @return bool True if the orders cache should be used, false otherwise.
         */
        public static function orders_cache_usage_is_enabled() : bool
        {
        }
        /**
         * Checks if posts and order custom table sync is enabled and there are no pending orders.
         *
         * @return bool
         */
        public static function is_custom_order_tables_in_sync() : bool
        {
        }
        /**
         * Gets value of a meta key from WC_Data object if passed, otherwise from the post object.
         * This helper function support backward compatibility for meta box functions, when moving from posts based store to custom tables.
         *
         * @param WP_Post|null  $post Post object, meta will be fetched from this only when `$data` is not passed.
         * @param \WC_Data|null $data WC_Data object, will be preferred over post object when passed.
         * @param string        $key Key to fetch metadata for.
         * @param bool          $single Whether metadata is single.
         *
         * @return array|mixed|string Value of the meta key.
         */
        public static function get_post_or_object_meta(?\WP_Post $post, ?\WC_Data $data, string $key, bool $single)
        {
        }
        /**
         * Helper function to initialize the global $theorder object, mostly used during order meta boxes rendering.
         *
         * @param WC_Order|WP_Post $post_or_order_object Post or order object.
         *
         * @return bool|WC_Order|WC_Order_Refund WC_Order object.
         */
        public static function init_theorder_object($post_or_order_object)
        {
        }
        /**
         * Helper function to id from an post or order object.
         *
         * @param WP_Post/WC_Order $post_or_order_object WP_Post/WC_Order object to get ID for.
         *
         * @return int Order or post ID.
         */
        public static function get_post_or_order_id($post_or_order_object) : int
        {
        }
        /**
         * Checks if passed id, post or order object is a WC_Order object.
         *
         * @param int|WP_Post|WC_Order $order_id Order ID, post object or order object.
         * @param string[]             $types    Types to match against.
         *
         * @return bool Whether the passed param is an order.
         */
        public static function is_order($order_id, $types = array('shop_order'))
        {
        }
        /**
         * Returns type pf passed id, post or order object.
         *
         * @param int|WP_Post|WC_Order $order_id Order ID, post object or order object.
         *
         * @return string|null Type of the order.
         */
        public static function get_order_type($order_id)
        {
        }
        /**
         * Helper method to generate admin url for an order.
         *
         * @param int $order_id Order ID.
         *
         * @return string Admin url for an order.
         */
        public static function get_order_admin_edit_url(int $order_id) : string
        {
        }
        /**
         * Helper method to generate admin URL for new order.
         *
         * @return string Link for new order.
         */
        public static function get_order_admin_new_url() : string
        {
        }
        /**
         * Check if the current admin screen is an order list table.
         *
         * @param string $order_type Optional. The order type to check for. Default shop_order.
         *
         * @return bool
         */
        public static function is_order_list_table_screen($order_type = 'shop_order') : bool
        {
        }
        /**
         * Check if the current admin screen is for editing an order.
         *
         * @param string $order_type Optional. The order type to check for. Default shop_order.
         *
         * @return bool
         */
        public static function is_order_edit_screen($order_type = 'shop_order') : bool
        {
        }
        /**
         * Check if the current admin screen is adding a new order.
         *
         * @param string $order_type Optional. The order type to check for. Default shop_order.
         *
         * @return bool
         */
        public static function is_new_order_screen($order_type = 'shop_order') : bool
        {
        }
        /**
         * Get the name of the database table that's currently in use for orders.
         *
         * @return string
         */
        public static function get_table_for_orders()
        {
        }
        /**
         * Get the name of the database table that's currently in use for orders.
         *
         * @return string
         */
        public static function get_table_for_order_meta()
        {
        }
        /**
         * Counts number of orders of a given type.
         *
         * @since 8.7.0
         *
         * @param string $order_type Order type.
         * @return array<string,int> Array of order counts indexed by order type.
         */
        public static function get_count_for_type($order_type)
        {
        }
        /**
         * Removes the 'wc-' prefix from status.
         *
         * @param string $status The status to remove the prefix from.
         *
         * @return string The status without the prefix.
         * @since 9.2.0
         */
        public static function remove_status_prefix(string $status) : string
        {
        }
    }
    /**
     * A class of utilities for dealing with plugins.
     */
    class PluginUtil
    {
        use \Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
        /**
         * The LegacyProxy instance to use.
         *
         * @var LegacyProxy
         */
        private $proxy;
        /**
         * The cached list of WooCommerce aware plugin ids.
         *
         * @var null|array
         */
        private $woocommerce_aware_plugins = null;
        /**
         * The cached list of enabled WooCommerce aware plugin ids.
         *
         * @var null|array
         */
        private $woocommerce_aware_active_plugins = null;
        /**
         * List of plugins excluded from feature compatibility warnings in UI.
         *
         * @var string[]
         */
        private $plugins_excluded_from_compatibility_ui;
        /**
         * Creates a new instance of the class.
         */
        public function __construct()
        {
        }
        /**
         * Initialize the class instance.
         *
         * @internal
         *
         * @param LegacyProxy $proxy The instance of LegacyProxy to use.
         */
        public final function init(\Automattic\WooCommerce\Proxies\LegacyProxy $proxy)
        {
        }
        /**
         * Wrapper for WP's private `wp_get_active_and_valid_plugins` and `wp_get_active_network_plugins` functions.
         *
         * This combines the results of the two functions to get a list of all plugins that are active within a site.
         * It's more useful than just retrieving the option values because it also validates that the plugin files exist.
         * This wrapper is also a hedge against backward-incompatible changes since both of the WP methods are marked as
         * being "@access private", so if need be we can update our methods here to preserve functionality.
         *
         * Note that the doc block for `wp_get_active_and_valid_plugins` says it returns "Array of paths to plugin files
         * relative to the plugins directory", but it actually returns absolute paths.
         *
         * @return string[] Array of plugin basenames (paths relative to the plugin directory).
         */
        public function get_all_active_valid_plugins()
        {
        }
        /**
         * Get a list with the names of the WordPress plugins that are WooCommerce aware
         * (they have a "WC tested up to" header).
         *
         * @param bool $active_only True to return only active plugins, false to return all the active plugins.
         * @return string[] A list of plugin ids (path/file.php).
         */
        public function get_woocommerce_aware_plugins(bool $active_only = false) : array
        {
        }
        /**
         * Get the printable name of a plugin.
         *
         * @param string $plugin_id Plugin id (path/file.php).
         * @return string Printable plugin name, or the plugin id itself if printable name is not available.
         */
        public function get_plugin_name(string $plugin_id) : string
        {
        }
        /**
         * Check if a plugin is WooCommerce aware.
         *
         * @param string|array $plugin_file_or_data Plugin id (path/file.php) or plugin data (as returned by get_plugins).
         * @return bool True if the plugin exists and is WooCommerce aware.
         * @throws \Exception The input is neither a string nor an array.
         */
        public function is_woocommerce_aware_plugin($plugin_file_or_data) : bool
        {
        }
        /**
         * Match plugin identifier passed as a parameter with the output from `get_plugins()`.
         *
         * @param string $plugin_file Plugin identifier, either 'my-plugin/my-plugin.php', or output from __FILE__.
         *
         * @return string|false Key from the array returned by `get_plugins` if matched. False if no match.
         */
        public function get_wp_plugin_id($plugin_file)
        {
        }
        /**
         * Handle plugin activation and deactivation by clearing the WooCommerce aware plugin ids cache.
         */
        private function handle_plugin_de_activation() : void
        {
        }
        /**
         * Utility method to generate warning string for incompatible features based on active plugins.
         *
         * Additionally, this method will manually print a warning message on the HPOS feature if both
         * the Legacy REST API and HPOS are active.
         *
         * @param string $feature_id Feature id.
         * @param array  $plugin_feature_info Array of plugin feature info, as provided by FeaturesController->get_compatible_plugins_for_feature().
         *
         * @return string Warning string.
         */
        public function generate_incompatible_plugin_feature_warning(string $feature_id, array $plugin_feature_info) : string
        {
        }
        /**
         * Filter plugin/feature compatibility info, returning the names of the plugins/features that are considered incompatible.
         * "Uncertain" information will be included or not depending on the value of the value of the 'plugins_are_incompatible_by_default'
         * flag in the feature definition (default is true).
         *
         * @param string $feature_id Feature id.
         * @param array  $compatibility_info Array containing "compatible', 'incompatible' and 'uncertain' keys.
         * @return array Items in 'incompatible' and 'uncertain' if plugins are incompatible by default with the feature; only items in 'incompatible' otherwise.
         */
        public function get_items_considered_incompatible(string $feature_id, array $compatibility_info) : array
        {
        }
        /**
         * Get the names of the plugins that are excluded from the feature compatibility UI.
         * These plugins won't be considered as incompatible with any existing feature for the purposes
         * of displaying compatibility warning in UI, even if they declare incompatibilities explicitly.
         *
         * @return string[] Plugin names relative to the root plugins directory.
         */
        public function get_plugins_excluded_from_compatibility_ui()
        {
        }
    }
    /**
     * Utility methods related to the REST API.
     */
    class RestApiUtil
    {
        /**
         * Get data from a WooCommerce API endpoint.
         * This method used to be part of the WooCommerce Legacy REST API.
         *
         * @since 9.0.0
         *
         * @param string $endpoint Endpoint.
         * @param array  $params Params to pass with request.
         * @return array|\WP_Error
         */
        public function get_endpoint_data($endpoint, $params = array())
        {
        }
    }
    /**
     * A class of utilities for dealing with strings.
     */
    final class StringUtil
    {
        /**
         * Checks to see whether or not a string starts with another.
         *
         * @param string $string The string we want to check.
         * @param string $starts_with The string we're looking for at the start of $string.
         * @param bool   $case_sensitive Indicates whether the comparison should be case-sensitive.
         *
         * @return bool True if the $string starts with $starts_with, false otherwise.
         */
        public static function starts_with(string $string, string $starts_with, bool $case_sensitive = true) : bool
        {
        }
        /**
         * Checks to see whether or not a string ends with another.
         *
         * @param string $string The string we want to check.
         * @param string $ends_with The string we're looking for at the end of $string.
         * @param bool   $case_sensitive Indicates whether the comparison should be case-sensitive.
         *
         * @return bool True if the $string ends with $ends_with, false otherwise.
         */
        public static function ends_with(string $string, string $ends_with, bool $case_sensitive = true) : bool
        {
        }
        /**
         * Checks if one string is contained into another at any position.
         *
         * @param string $string The string we want to check.
         * @param string $contained The string we're looking for inside $string.
         * @param bool   $case_sensitive Indicates whether the comparison should be case-sensitive.
         * @return bool True if $contained is contained inside $string, false otherwise.
         */
        public static function contains(string $string, string $contained, bool $case_sensitive = true) : bool
        {
        }
        /**
         * Get the name of a plugin in the form 'directory/file.php', as in the keys of the array returned by 'get_plugins'.
         *
         * @param string $plugin_file_path The path of the main plugin file (can be passed as __FILE__ from the plugin itself).
         * @return string The name of the plugin in the form 'directory/file.php'.
         */
        public static function plugin_name_from_plugin_file(string $plugin_file_path) : string
        {
        }
        /**
         * Check if a string is null or is empty.
         *
         * @param string|null $value The string to check.
         * @return bool True if the string is null or is empty.
         */
        public static function is_null_or_empty(?string $value)
        {
        }
        /**
         * Check if a string is null, is empty, or has only whitespace characters
         * (space, tab, vertical tab, form feed, carriage return, new line)
         *
         * @param string|null $value The string to check.
         * @return bool True if the string is null, is empty, or contains only whitespace characters.
         */
        public static function is_null_or_whitespace(?string $value)
        {
        }
        /**
         * Convert an array of values to a list suitable for a SQL "IN" statement
         * (so comma separated and delimited by parenthesis).
         * e.g.: [1,2,3] --> (1,2,3)
         *
         * @param array $values The values to convert.
         * @return string A parenthesized and comma-separated string generated from the values.
         * @throws \InvalidArgumentException Empty values array passed.
         */
        public static function to_sql_list(array $values)
        {
        }
        /**
         * Get the name of a class without the namespace.
         *
         * @param string $class_name The full class name.
         * @return string The class name without the namespace.
         */
        public static function class_name_without_namespace(string $class_name)
        {
        }
        /**
         * Normalize the slashes (/ and \) of a local filesystem path by converting them to DIRECTORY_SEPARATOR.
         *
         * @param string|null $path Path to normalize.
         * @return string|null Normalized path, or null if the input was null.
         */
        public static function normalize_local_path_slashes(?string $path)
        {
        }
    }
    /**
     * Class with date and time utilities.
     */
    class TimeUtil
    {
        /**
         * Instance of a DateTimeZone object representing UTC.
         *
         * @var DateTimeZone
         */
        private static \DateTimeZone $utc_date_time_zone;
        /**
         * Class constructor.
         */
        public function __construct()
        {
        }
        /**
         * Get the instance of the DateTimeZone object representing UTC.
         *
         * @return DateTimeZone DateTimeZone object representing UTC.
         */
        public static function get_utc_date_time_zone() : \DateTimeZone
        {
        }
        /**
         * Check if a string represents a valid date in a given format.
         *
         * @param string $date The date string to check.
         * @param string $format The format to verify the date string against.
         * @return bool True if $date represents a valid date/time according to $format, false otherwise.
         */
        public static function is_valid_date(string $date, string $format = 'Y-m-d H:i:s') : bool
        {
        }
    }
}
namespace {
    /**
     * 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 generic mappings.
     *
     * @since 3.1.0
     * @param array $mappings Importer columns mappings.
     * @return array
     */
    function wc_importer_generic_mappings($mappings)
    {
    }
    /**
     * 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)
    {
    }
    /**
     * Add mappings for WordPress tables.
     *
     * @since 3.1.0
     * @param array $mappings Importer columns mappings.
     * @return array
     */
    function wc_importer_wordpress_mappings($mappings)
    {
    }
    /**
     * Get all WooCommerce screen ids.
     *
     * @return array
     */
    function wc_get_screen_ids()
    {
    }
    /**
     * Get page ID for a specific WC resource.
     *
     * @param string $for Name of the resource.
     *
     * @return string Page ID. Empty string if resource not found.
     */
    function wc_get_page_screen_id($for)
    {
    }
    /**
     * 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.
     * @param string $post_status (default: publish) The post status of the new page.
     * @return int page ID.
     */
    function wc_create_page($slug, $option = '', $page_title = '', $page_content = '', $post_parent = 0, $post_status = 'publish')
    {
    }
    /**
     * Output admin fields.
     *
     * Loops through 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)
    {
    }
    /**
     * Get current admin page URL.
     *
     * Returns an empty string if it cannot generate a URL.
     *
     * @internal
     * @since 4.4.0
     * @return string
     */
    function wc_get_current_admin_url()
    {
    }
    /**
     * Get default product type options.
     *
     * @internal
     * @since 7.9.0
     * @return array
     */
    function wc_get_default_product_type_options()
    {
    }
    /**
     * Output a text input box.
     *
     * @param array        $field Field data.
     * @param WC_Data|null $data  WC_Data object, will be preferred over post object when passed.
     */
    function woocommerce_wp_text_input($field, ?\WC_Data $data = \null)
    {
    }
    /**
     * Output a hidden input box.
     *
     * @param array        $field Field data.
     * @param WC_Data|null $data  WC_Data object, will be preferred over post object when passed.
     */
    function woocommerce_wp_hidden_input($field, ?\WC_Data $data = \null)
    {
    }
    /**
     * Output a textarea input box.
     *
     * @param array        $field Field data.
     * @param WC_Data|null $data  WC_Data object, will be preferred over post object when passed.
     */
    function woocommerce_wp_textarea_input($field, ?\WC_Data $data = \null)
    {
    }
    /**
     * Output a checkbox input box.
     *
     * @param array        $field Field data.
     * @param WC_Data|null $data  WC_Data object, will be preferred over post object when passed.
     */
    function woocommerce_wp_checkbox($field, ?\WC_Data $data = \null)
    {
    }
    /**
     * Output a select input box.
     *
     * @param array        $field Field data.
     * @param WC_Data|null $data  WC_Data object, will be preferred over post object when passed.
     */
    function woocommerce_wp_select($field, ?\WC_Data $data = \null)
    {
    }
    /**
     * Output a radio input box.
     *
     * @param array        $field Field data.
     * @param WC_Data|null $data  WC_Data object, will be preferred over post object when passed.
     */
    function woocommerce_wp_radio($field, ?\WC_Data $data = \null)
    {
    }
    /**
     * Output a note.
     *
     * @param array $field Field data.
     */
    function woocommerce_wp_note($field)
    {
    }
    /**
     * Initialize the WooCommerce legacy reports.
     */
    function woocommerce_legacy_reports_init()
    {
    }
    /**
     * Returns core WC pages to connect to WC-Admin.
     *
     * @return array
     */
    function wc_admin_get_core_pages_to_connect()
    {
    }
    /**
     * Filter breadcrumbs for core pages that aren't explicitly connected.
     *
     * @param array $breadcrumbs Breadcrumb pieces.
     * @return array Filtered breadcrumb pieces.
     */
    function wc_admin_filter_core_page_breadcrumbs($breadcrumbs)
    {
    }
    /**
     * Render the WC-Admin header bar on all WooCommerce core pages.
     *
     * @param bool $is_connected Whether the current page is connected.
     * @param bool $current_page The current page, if connected.
     * @return bool Whether to connect the page.
     */
    function wc_admin_connect_core_pages($is_connected, $current_page)
    {
    }
    /**
     * Format a number using the decimal and thousands separator settings in WooCommerce.
     *
     * @param mixed $number Number to be formatted.
     * @return string
     */
    function wc_admin_number_format($number)
    {
    }
    /**
     * Retrieves a URL to relative path inside WooCommerce admin with
     * the provided query parameters.
     *
     * @param  string $path Relative path of the desired page.
     * @param  array  $query Query parameters to append to the path.
     *
     * @return string       Fully qualified URL pointing to the desired path.
     */
    function wc_admin_url($path = \null, $query = array())
    {
    }
    /**
     * Record an event using Tracks.
     *
     * @internal WooCommerce core only includes Tracks in admin, not the REST API, so we need to include it.
     * @param string $event_name Event name for tracks.
     * @param array  $properties Properties to pass along with event.
     */
    function wc_admin_record_tracks_event($event_name, $properties = array())
    {
    }
    function wc_admin_get_feature_config()
    {
    }
    /**
     * Connect an existing page to WooCommerce Admin.
     * Passthrough to PageController::connect_page().
     *
     * @param array $options Options for PageController::connect_page().
     */
    function wc_admin_connect_page($options)
    {
    }
    /**
     * Register JS-powered WooCommerce Admin Page.
     * Passthrough to PageController::register_page().
     *
     * @param array $options Options for PageController::register_page().
     */
    function wc_admin_register_page($options)
    {
    }
    /**
     * Is this page connected to WooCommerce Admin?
     * Passthrough to PageController::is_connected_page().
     *
     * @return boolean True if the page is connected to WooCommerce Admin.
     */
    function wc_admin_is_connected_page()
    {
    }
    /**
     * Is this a WooCommerce Admin Page?
     * Passthrough to PageController::is_registered_page().
     *
     * @return boolean True if the page is a WooCommerce Admin page.
     */
    function wc_admin_is_registered_page()
    {
    }
    /**
     * Get breadcrumbs for WooCommerce Admin Page navigation.
     * Passthrough to PageController::get_breadcrumbs().
     *
     * @return array Navigation pieces (breadcrumbs).
     */
    function wc_admin_get_breadcrumbs()
    {
    }
    /**
     * Update order stats `status` index length.
     * See: https://github.com/woocommerce/woocommerce-admin/issues/2969.
     */
    function wc_admin_update_0201_order_status_index()
    {
    }
    /**
     * Rename "gross_total" to "total_sales".
     * See: https://github.com/woocommerce/woocommerce-admin/issues/3175
     */
    function wc_admin_update_0230_rename_gross_total()
    {
    }
    /**
     * Remove the note unsnoozing scheduled action.
     */
    function wc_admin_update_0251_remove_unsnooze_action()
    {
    }
    /**
     * Remove Facebook Extension note.
     */
    function wc_admin_update_110_remove_facebook_note()
    {
    }
    /**
     * Remove Dismiss action from tracking opt-in admin note.
     */
    function wc_admin_update_130_remove_dismiss_action_from_tracking_opt_in_note()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_admin_update_130_db_version()
    {
    }
    /**
     * Update DB Version.
     */
    function wc_admin_update_140_db_version()
    {
    }
    /**
     * Remove Facebook Experts note.
     */
    function wc_admin_update_160_remove_facebook_note()
    {
    }
    /**
     * Set "two column" homescreen layout as default for existing stores.
     */
    function wc_admin_update_170_homescreen_layout()
    {
    }
    /**
     * Delete the preexisting export files.
     */
    function wc_admin_update_270_delete_report_downloads()
    {
    }
    /**
     * Update the old task list options.
     */
    function wc_admin_update_271_update_task_list_options()
    {
    }
    /**
     * Update order stats `status`.
     */
    function wc_admin_update_280_order_status()
    {
    }
    /**
     * Update the old task list options.
     */
    function wc_admin_update_290_update_apperance_task_option()
    {
    }
    /**
     * Delete the old woocommerce_default_homepage_layout option.
     */
    function wc_admin_update_290_delete_default_homepage_layout_option()
    {
    }
    /**
     * Use woocommerce_admin_activity_panel_inbox_last_read from the user meta to set wc_admin_notes.is_read col.
     */
    function wc_admin_update_300_update_is_read_from_last_read()
    {
    }
    /**
     * Delete "is_primary" column from the wc_admin_notes table.
     */
    function wc_admin_update_340_remove_is_primary_from_note_action()
    {
    }
    /**
     * Delete the deprecated remote inbox notifications option since transients are now used.
     */
    function wc_update_670_delete_deprecated_remote_inbox_notifications_option()
    {
    }
    /**
     * 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()
    {
    }
    /**
     * Find current item in account menu.
     *
     * @since 9.3.0
     * @param string $endpoint Endpoint.
     * @return bool
     */
    function wc_is_current_account_menu_item($endpoint)
    {
    }
    /**
     * 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 Type of address; 'billing' or 'shipping'.
     * @param  int    $customer_id  Customer ID.
     *                              Defaults 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)
    {
    }
    /**
     * 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)
    {
    }
    /**
     * Helper function :: wc_get_brand_thumbnail_url function.
     *
     * @param  int    $brand_id Brand ID.
     * @param  string $size     Thumbnail image size.
     * @return string
     */
    function wc_get_brand_thumbnail_url($brand_id, $size = 'full')
    {
    }
    /**
     * Helper function :: wc_get_brand_thumbnail_image function.
     *
     * @since 9.4.0
     *
     * @param  object $brand Brand term.
     * @param  string $size  Thumbnail image size.
     * @return string
     */
    function wc_get_brand_thumbnail_image($brand, $size = '')
    {
    }
    /**
     * Retrieves product's brands.
     *
     * @param  int    $post_id Post ID (default: 0).
     * @param  string $sep     Seperator (default: ').
     * @param  string $before  Before item (default: '').
     * @param  string $after   After item (default: '').
     * @return array  List of terms
     */
    function wc_get_brands($post_id = 0, $sep = ', ', $before = '', $after = '')
    {
    }
    /**
     * Polyfill for get_brand_thumbnail_image.
     *
     * @param int    $brand_id Brand ID.
     * @param string $size Thumbnail image size.
     * @return string
     */
    function get_brand_thumbnail_url($brand_id, $size = 'full')
    {
    }
    /**
     * Polyfill for get_brand_thumbnail_image.
     *
     * @param object $brand Brand term.
     * @param string $size Thumbnail image size.
     * @return string
     */
    function get_brand_thumbnail_image($brand, $size = '')
    {
    }
    /**
     * Polyfill for get_brands.
     *
     * @param  int    $post_id Post ID (default: 0).
     * @param  string $sep     Seperator (default: ').
     * @param  string $before  Before item (default: '').
     * @param  string $after   After item (default: '').
     * @return array  List of terms
     */
    function get_brands($post_id = 0, $sep = ', ', $before = '', $after = '')
    {
    }
    /**
     * 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 quantities 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 Either the chosen method ID or false if nothing is chosen yet.
     */
    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 shipping method. e.g. flat_rate:1.
     * @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)
    {
    }
    /**
     * 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, or when processing AJAX requests for updating or processing the checkout.
     *
     * @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.
     *
     * @see wp_doing_ajax() for an equivalent function provided by WordPress since 4.7.0
     * @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)
    {
    }
    /**
     * Check if the current theme is a block theme.
     *
     * @since 6.0.0
     * @return bool
     */
    function wc_current_theme_is_fse_theme()
    {
    }
    /**
     * Check if the current theme has WooCommerce support or is a FSE theme.
     *
     * @since 6.0.0
     * @return bool
     */
    function wc_current_theme_supports_woocommerce_or_fse()
    {
    }
    /**
     * Given an element name, returns a class name.
     *
     * If the WP-related function is not defined or current theme is not a FSE theme, return empty string.
     *
     * @param string $element The name of the element.
     *
     * @since 7.0.1
     * @return string
     */
    function wc_wp_theme_get_element_class_name($element)
    {
    }
    /**
     * Given an element name, returns true or false depending on whether the
     * current theme has styles for that element defined in theme.json.
     *
     * If the theme is not a block theme or the WP-related function is not defined,
     * return false.
     *
     * @param string $element The name of the element.
     *
     * @since 7.4.0
     * @return bool
     */
    function wc_block_theme_has_styles_for_element($element)
    {
    }
    // 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)
    {
    }
    /**
     * Given a path, this will convert any of the subpaths into their corresponding tokens.
     *
     * @since 4.3.0
     * @param string $path The absolute path to tokenize.
     * @param array  $path_tokens An array keyed with the token, containing paths that should be replaced.
     * @return string The tokenized path.
     */
    function wc_tokenize_path($path, $path_tokens)
    {
    }
    /**
     * Given a tokenized path, this will expand the tokens to their full path.
     *
     * @since 4.3.0
     * @param string $path The absolute path to expand.
     * @param array  $path_tokens An array keyed with the token, containing paths that should be expanded.
     * @return string The absolute path.
     */
    function wc_untokenize_path($path, $path_tokens)
    {
    }
    /**
     * Fetches an array containing all of the configurable path constants to be used in tokenization.
     *
     * @return array The key is the define and the path is the constant.
     */
    function wc_get_path_define_tokens()
    {
    }
    /**
     * 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 = '')
    {
    }
    /**
     * Add a template to the template cache.
     *
     * @since 4.3.0
     * @param string $cache_key Object cache key.
     * @param string $template Located template.
     */
    function wc_set_template_cache($cache_key, $template)
    {
    }
    /**
     * Clear the template cache.
     *
     * @since 4.3.0
     */
    function wc_clear_template_cache()
    {
    }
    /**
     * Clear the system status theme info cache.
     *
     * @since 9.4.0
     */
    function wc_clear_system_status_theme_info_cache()
    {
    }
    /**
     * Get Base Currency Code.
     *
     * @return string
     */
    function get_woocommerce_currency()
    {
    }
    /**
     * Get full list of currency codes.
     *
     * Currency symbols and names should follow the Unicode CLDR recommendation (https://cldr.unicode.org/translation/currency-names-and-symbols)
     *
     * @return array
     */
    function get_woocommerce_currencies()
    {
    }
    /**
     * Get all available Currency symbols.
     *
     * Currency symbols and names should follow the Unicode CLDR recommendation (https://cldr.unicode.org/translation/currency-names-and-symbols)
     *
     * @since 4.1.0
     * @return array
     */
    function get_woocommerce_currency_symbols()
    {
    }
    /**
     * Get Currency symbol.
     *
     * Currency symbols and names should follow the Unicode CLDR recommendation (https://cldr.unicode.org/translation/currency-names-and-symbols)
     *
     * @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: "").
     * @return bool
     */
    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 Legacy REST API.
     *
     * Note that as of WooCommerce 9.0 the WooCommerce Legacy REST API has been moved to a dedicated extension,
     * and the implementation of its root endpoint in WooCommerce core is now just a stub that will always return an error.
     * See the setup_legacy_api_stub method in includes/class-woocommerce.php and:
     * https://developer.woocommerce.com/2023/10/03/the-legacy-rest-api-will-move-to-a-dedicated-extension-in-woocommerce-9-0/
     *
     * @deprecated 9.0.0 The Legacy REST API has been removed from WooCommerce core.
     *
     * @since 2.1
     * @param string $path an endpoint to include in the URL.
     * @return string the URL.
     */
    function get_woocommerce_api_url($path)
    {
    }
    /**
     * 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()
    {
    }
    /**
     * Uses geolocation to get the customer country and state only if they are valid values.
     *
     * @since 9.5.0
     * @param array $fallback Fallback location.
     * @return array
     */
    function wc_get_customer_geolocation($fallback = array('country' => '', 'state' => ''))
    {
    }
    /**
     * 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
     * @since 9.3.0 To support shortcodes on other pages besides the main cart page, this returns the current URL if it is the cart page.
     *
     * @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.
     * @param  bool $enabled_only   Whether non-legacy shipping methods should be
     *                              restricted to enabled ones. It doesn't affect
     *                              legacy shipping methods. @since 4.3.0.
     * @return int
     */
    function wc_get_shipping_method_count($include_legacy = \false, $enabled_only = \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, useful for special chars in strings.
     *
     * @param string $a First value.
     * @param string $b Second value.
     * @return int
     */
    function wc_ascii_uasort_comparison($a, $b)
    {
    }
    /**
     * Sort array according to current locale rules and maintaining index association.
     * By default tries to use Collator from PHP Internationalization Functions if available.
     * If PHP Collator class doesn't exists it fallback to removing accepts from a array
     * and by sorting with `uasort( $data, 'strcmp' )` giving support for ASCII values.
     *
     * @since 4.6.0
     * @param array  $data   List of values to sort.
     * @param string $locale Locale.
     * @return array
     */
    function wc_asort_by_locale(&$data, $locale = '')
    {
    }
    /**
     * 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 return the value of wc_get_price_decimals increased by 2 decimals, with WC_ROUNDING_PRECISION being the minimum.
     *
     * @since 2.6.3
     * @return int
     */
    function wc_get_rounding_precision()
    {
    }
    /**
     * Add precision to a number by moving the decimal point to the right as many places as indicated by wc_get_price_decimals().
     * Optionally the result is rounded so that the total number of digits equals wc_get_rounding_precision() plus one.
     *
     * @since  3.2.0
     * @param  float|null $value Number to add precision to.
     * @param  bool       $round If the result should be rounded.
     * @return int|float
     */
    function wc_add_number_precision(?float $value, bool $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.
     *
     * @return WC_Logger_Interface
     */
    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 block some debugging functions. This function provides a safe way to
     * turn an expression into a printable, readable form without calling blocked 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)
    {
    }
    /**
     * 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)
    {
    }
    /**
     * Is the site using a default WP theme?
     *
     * @return boolean
     */
    function wc_is_wp_default_theme_active()
    {
    }
    /**
     * 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 Version information.
     */
    function wc_get_server_database_version()
    {
    }
    /**
     * Initialize and load the cart functionality.
     *
     * @since 3.6.4
     * @return void
     */
    function wc_load_cart()
    {
    }
    /**
     * Test whether the context of execution comes from async action scheduler.
     *
     * @since 4.0.0
     * @return bool
     */
    function wc_is_running_from_async_action_scheduler()
    {
    }
    /**
     * Polyfill for wp_cache_get_multiple for WP versions before 5.5.
     *
     * @param array  $keys   Array of keys to get from group.
     * @param string $group  Optional. Where the cache contents are grouped. Default empty.
     * @param bool   $force  Optional. Whether to force an update of the local cache from the persistent
     *                            cache. Default false.
     * @return array|bool Array of values.
     */
    function wc_cache_get_multiple($keys, $group = '', $force = \false)
    {
    }
    /**
     * 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 ID by code.
     *
     * @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)
    {
    }
    /**
     * 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 _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()
    {
    }
    /**
     * @deprecated 2.3 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.
     * @deprecated 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 mixed  $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)
    {
    }
    /**
     * Registers the default log handler.
     *
     * @deprecated 8.6.0
     * @since 3.0
     * @param array $handlers Handlers.
     * @return array
     */
    function wc_register_default_log_handler($handlers = array())
    {
    }
    /**
     * Get a log file path.
     *
     * @deprecated 8.6.0
     * @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)
    {
    }
    // Once WooCommerce requires PHP 7.4, the "$x = $x ?? ''" constructs can be replaced with "$x ??= ''".
    /**
     * Converts a string (e.g. 'yes' or 'no') to a bool.
     *
     * @since 3.0.0
     * @param string|bool $string String to convert. If a bool is passed it will be returned as-is.
     * @return bool
     */
    function wc_string_to_bool($string)
    {
    }
    /**
     * Converts a bool to a 'yes' or 'no'.
     *
     * @since 3.0.0
     * @param bool|string $bool Bool to convert. If a string is passed it will first be converted to a bool.
     * @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', 'mm', 'cm', 'm'.
     * @param string    $from_unit    Unit to convert from.
     *                                Defaults to ''.
     *                                Options: 'in', 'mm', '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, optionally 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 the decimal separator for prices or 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.
     *
     * Due to the unfiltered_html captability that some (admin) users have, we need to account for slashes.
     *
     * @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)
    {
    }
    /**
     * 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
     * @version 3.9.0
     * @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.
     * @param array  $data        Optional notice data.
     */
    function wc_add_notice($message, $notice_type = 'success', $data = array())
    {
    }
    /**
     * Set all notices at once.
     *
     * @since 2.6.0
     * @param array[] $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|void
     */
    function wc_print_notices($return = \false)
    {
    }
    /**
     * Print a single notice immediately.
     *
     * @since 2.1
     * @version 3.9.0
     * @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.
     * @param array  $data        Optional notice data. @since 3.9.0.
     * @param bool   $return      true to return rather than echo. @since 7.7.0.
     */
    function wc_print_notice($message, $notice_type = 'success', $data = array(), $return = \false)
    {
    }
    /**
     * Returns all queued notices, optionally filtered by a notice type.
     *
     * @since  2.1
     * @version 3.9.0
     * @param  string $notice_type Optional. The singular name of the notice type - either error, success or notice.
     * @return array[]
     */
    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)
    {
    }
    /**
     * Get notice data attribute.
     *
     * @since 3.9.0
     * @param array $notice Notice data.
     * @return string
     */
    function wc_get_notice_data_attr($notice)
    {
    }
    /**
     * 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 with prefix.
     *
     * @since 3.5.4
     * @param string $key Order key without a prefix. By default generates a 13 digit secret.
     * @return string The order key.
     */
    function wc_generate_order_key($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:
     *      - 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.
     * @param string $type   (Optional) Order type. Leave empty to include all 'for order-count' order types. @{see wc_get_order_types()}.
     * @return int
     */
    function wc_orders_count($status, string $type = '')
    {
    }
    /**
     * 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.
     * @param  WC_Order_Item  $item        Item of the order.
     * @return int|bool insert id or false on failure.
     */
    function wc_downloadable_file_permission($download_id, $product, $order, $qty = 1, $item = \null)
    {
    }
    /**
     * 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)
    {
    }
    /**
     * 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 mixed  $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 mixed  $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 mixed  $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)
    {
    }
    /**
     * Replace a page title with the endpoint title.
     *
     * @param  string $title Post title.
     * @return string
     */
    function wc_page_endpoint_title($title)
    {
    }
    /**
     * Replace the title part of the document title.
     *
     * @param array $title {
     *     The document title parts.
     *
     *     @type string $title   Title of the viewed page.
     *     @type string $page    Optional. Page number if paginated.
     *     @type string $tagline Optional. Site description when on home page.
     *     @type string $site    Optional. Site title when not on home page.
     * }
     * @return array
     */
    function wc_page_endpoint_document_title_parts($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 or adjust menu items conditionally.
     *
     * @param array $items Navigation items.
     * @return array
     */
    function wc_nav_menu_items($items)
    {
    }
    /**
     * Hide menu items in navigation blocks conditionally.
     *
     * Does the same thing as wc_nav_menu_items but for block themes.
     *
     * @since 9.3.0
     * @param \WP_Block_list $inner_blocks Inner blocks.
     * @return \WP_Block_list
     */
    function wc_nav_menu_inner_blocks($inner_blocks)
    {
    }
    /**
     * 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)
    {
    }
    /**
     * 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.
     *
     * This function should only be called after 'init' action is finished, as there might be taxonomies that are getting
     * registered during the init action.
     *
     * @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())
    {
    }
    /**
     * Get a product object.
     *
     * @see WC_Product_Factory::get_product_classname
     * @since 3.9.0
     * @param string $product_type Product type. If used an invalid type a WC_Product_Simple instance will be returned.
     * @param int    $product_id   Product ID.
     * @return WC_Product
     */
    function wc_get_product_object($product_type, $product_id = 0)
    {
    }
    /**
     * 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)
    {
    }
    /**
     * Ensure that the product_cat value determined in `wc_product_post_type_link` is the canonical value.
     *
     * If other values are used in this part of the permalink, it will be redirected.
     *
     * @return void
     */
    function wc_product_canonical_redirect() : void
    {
    }
    /**
     * 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.
     * @param string|array $attr Optional. Attributes for the image markup. Default empty.
     * @return string
     */
    function wc_placeholder_img($size = 'woocommerce_thumbnail', $attr = '')
    {
    }
    /**
     * 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)
    {
    }
    /**
     * Check if product unique ID is unique.
     *
     * @since 9.1.0
     * @param int    $product_id Product ID.
     * @param string $global_unique_id Product Unique ID.
     * @return bool
     */
    function wc_product_has_global_unique_id($product_id, $global_unique_id)
    {
    }
    /**
     * 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 product ID by Unique ID.
     *
     * @since  9.1.0
     * @param  string $global_unique_id Product Unique ID.
     * @return int|null
     */
    function wc_get_product_id_by_global_unique_id($global_unique_id)
    {
    }
    /**
     * Get attributes/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|string Price with tax included, or an empty string if price calculation failed.
     */
    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|string Price with tax excluded, or an empty string if price calculation failed.
     */
    function wc_get_price_excluding_tax($product, $args = array())
    {
    }
    /**
     * Returns the price including or excluding tax.
     *
     * By default it's based on the 'woocommerce_tax_display_shop' setting.
     * Set `$arg['display_context']` to 'cart' to base on the 'woocommerce_tax_display_cart' setting instead.
     *
     * @since  3.0.0
     * @since  7.6.0 Added `display_context` argument.
     *
     * @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)
    {
    }
    /**
     * Attach product featured image. Use image filename to match a product sku when product is not provided.
     *
     * @since 8.5.0
     * @param int        $attachment_id Media attachment ID.
     * @param WC_Product $product Optional product object.
     * @param bool       $save_product If true, the changes in the product will be saved before the method returns.
     * @return void
     */
    function wc_product_attach_featured_image($attachment_id, $product = \null, $save_product = \true)
    {
    }
    /**
     * 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 validate.
     * @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 true if the current REST request is from the product editor.
     *
     * @since 8.9.0
     * @return bool
     */
    function wc_rest_is_from_product_editor()
    {
    }
    /**
     * Check if a REST namespace should be loaded. Useful to maintain site performance even when lots of REST namespaces are registered.
     *
     * @since 9.2.0.
     *
     * @param string $ns The namespace to check.
     * @param string $rest_route (Optional) The REST route being checked.
     *
     * @return bool True if the namespace should be loaded, false otherwise.
     */
    function wc_rest_should_load_namespace(string $ns, string $rest_route = '') : bool
    {
    }
    /**
     * 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 operation, 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 string $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)
    {
    }
    /**
     * Check if a product's stock quantity has reached certain thresholds and trigger appropriate actions.
     *
     * This functionality was moved out of `wc_trigger_stock_change_notifications` in order to decouple it from orders,
     * since stock quantity can also be updated in other ways.
     *
     * @param WC_Product $product        The product whose stock level has changed.
     *
     * @return void
     */
    function wc_trigger_stock_change_actions($product)
    {
    }
    /**
     * 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(\WC_Product $product, $exclude_order_id = 0)
    {
    }
    /**
     * Hold stock for an order.
     *
     * @throws ReserveStockException If reserve stock fails.
     *
     * @since 4.1.0
     * @param \WC_Order|int $order Order ID or instance.
     */
    function wc_reserve_stock_for_order($order)
    {
    }
    /**
     * Release held stock for an order.
     *
     * @since 4.3.0
     * @param \WC_Order|int $order Order ID or instance.
     */
    function wc_release_stock_for_order($order)
    {
    }
    /**
     * Return low stock amount to determine if notification needs to be sent
     *
     * Since 5.2.0, this function no longer redirects from variation to its parent product.
     * Low stock amount can now be attached to the variation itself and if it isn't, only
     * then we check the parent product, and if it's not there, then we take the default
     * from the store-wide setting.
     *
     * @param  WC_Product $product Product to get data from.
     * @since  3.5.0
     * @return int
     */
    function wc_get_low_stock_amount(\WC_Product $product)
    {
    }
    /**
     * 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 = '')
    {
    }
    /**
     * Set the current visibility for a product in the woocommerce_loop global.
     *
     * @since 4.4.0
     * @param int  $product_id Product it to cache visibility for.
     * @param bool $value The product visibility value to cache.
     */
    function wc_set_loop_product_visibility($product_id, $value)
    {
    }
    /**
     * Gets the cached current visibility for a product from the woocommerce_loop global.
     *
     * @since 4.4.0
     * @param int $product_id Product id to get the cached visibility for.
     *
     * @return bool|null The cached product visibility, or null if on visibility has been cached for that product.
     */
    function wc_get_loop_product_visibility($product_id)
    {
    }
    /**
     * 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 conditions 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 existence of the terms page and checkbox text.
     *
     * @since 3.4.0
     * @return bool
     */
    function wc_terms_and_conditions_checkbox_enabled()
    {
    }
    /**
     * Get the terms and conditions 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 closing 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()
    {
    }
    /**
     * Output the products header on taxonomy archives.
     */
    function woocommerce_product_taxonomy_archive_header()
    {
    }
    /**
     * 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  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
     */
    function woocommerce_get_product_thumbnail($size = 'woocommerce_thumbnail', $attr = array(), $placeholder = \true)
    {
    }
    /**
     * 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.
     *
     * Hooks: 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?.
     * @param int  $image_index The image index in the gallery.
     * @return string
     */
    function wc_get_gallery_image_html($attachment_id, $main_image = \false, $image_index = -1)
    {
    }
    /**
     * Get alt text based on product name and image position in gallery.
     *
     * @since 9.3.3
     * @param string $product_name Product name.
     * @param bool   $main_image Is this the main image or a thumbnail?.
     * @param int    $image_index Image position in gallery.
     * @return string Alt text.
     */
    function woocommerce_get_alt_from_product_title_and_position($product_name, $main_image, $image_index)
    {
    }
    /**
     * 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 Type of address; 'billing' or 'shipping'.
     */
    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 the redirect URL after logging out. Defaults to the my account page.
     *
     * @since 9.3.0
     * @return string
     */
    function wc_get_logout_redirect_url()
    {
    }
    /**
     * Get logout link.
     *
     * @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.
     *
     * @todo Deprecated this function after dropping support for WP 5.6.
     * @since 3.2.0
     */
    function wc_page_noindex()
    {
    }
    /**
     * Disable search engines indexing core, dynamic, cart/checkout pages.
     * Uses "wp_robots" filter introduced in WP 5.7.
     *
     * @since 5.0.0
     * @param array $robots Associative array of robots directives.
     * @return array Filtered robots directives.
     */
    function wc_page_no_robots($robots)
    {
    }
    /**
     * 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()
    {
    }
    /**
     * Display pay buttons HTML.
     *
     * @since 3.9.0
     */
    function wc_get_pay_buttons()
    {
    }
    /**
     * Update the product archive title to the title of the shop page. Fallback to
     * 'Shop' if the shop page doesn't exist.
     *
     * @param string $post_type_name Post type 'name' label.
     * @param string $post_type      Post type.
     *
     * @return string
     */
    function wc_update_product_archive_title($post_type_name, $post_type)
    {
    }
    // phpcs:enable Generic.Commenting.Todo.TaskFound
    /**
     * Set the version of the hooked blocks in the database. Used when WC is installed for the first time.
     *
     * @since 9.2.0
     *
     * @return void
     */
    function wc_set_hooked_blocks_version()
    {
    }
    /**
     * If the user switches from a classic to a block theme and they haven't already got a woocommerce_hooked_blocks_version,
     * set the version of the hooked blocks in the database, or as "no" to disable all block hooks then set as the latest WC version.
     *
     * @since 9.2.0
     *
     * @param string    $old_name Old theme name.
     * @param \WP_Theme $old_theme Instance of the old theme.
     * @return void
     */
    function wc_set_hooked_blocks_version_on_theme_switch($old_name, $old_theme)
    {
    }
    /**
     * Add aria-label to pagination numbers.
     *
     * @param string $html HTML output.
     * @param array  $args An array of arguments. See paginate_links()
     *                     for information on accepted arguments.
     *
     * @return string
     */
    function wc_add_aria_label_to_pagination_numbers($html, $args)
    {
    }
    /**
     * 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.
     *
     * @param mixed ...$args Variable number of parameters to be passed to the walker.
     * @return mixed
     */
    function wc_walk_category_dropdown_tree(...$args)
    {
    }
    /**
     * 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 Taxonomy.
     * @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 visibility term ids.
     *
     * @since  3.0.0
     * @return int[]
     */
    function wc_get_product_visibility_term_ids()
    {
    }
    /**
     * Recounts all terms.
     *
     * @since 5.2
     * @return void
     */
    function wc_recount_all_terms()
    {
    }
    /**
     * Recounts terms by product.
     *
     * @since 5.2
     * @param int $product_id The ID of the product.
     * @return void
     */
    function _wc_recount_terms_by_product($product_id = '')
    {
    }
    /**
     * 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.
     *
     * @since 9.4.0 Moved woocommerce_registration_error_email_exists filter to the shortcode checkout class.
     * @since 9.4.0 Removed handling for generating username/password based on settings--this is consumed at form level. Here, if data is missing it will be generated.
     *
     * @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 mixed  $_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)
    {
    }
    /**
     * Process the web hooks at the end of the request.
     *
     * @since 4.4.0
     */
    function wc_webhook_execute_queue()
    {
    }
    /**
     * 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()
    {
    }
    /**
     * Register Widgets.
     *
     * @since 2.3.0
     */
    function wc_register_widgets()
    {
    }
    /**
     * Register a checkout field.
     *
     * @param array $options Field arguments. See CheckoutFields::register_checkout_field() for details.
     * @throws \Exception If field registration fails.
     */
    function woocommerce_register_additional_checkout_field($options)
    {
    }
    /**
     * Register a checkout field.
     *
     * @param array $options Field arguments. See CheckoutFields::register_checkout_field() for details.
     * @throws \Exception If field registration fails.
     * @deprecated 5.6.0 Use woocommerce_register_additional_checkout_field() instead.
     */
    function __experimental_woocommerce_blocks_register_checkout_field($options)
    {
    }
    /**
     * Deregister a checkout field.
     *
     * @param string $field_id Field ID.
     * @throws \Exception If field deregistration fails.
     * @internal
     */
    function __internal_woocommerce_blocks_deregister_checkout_field($field_id)
    {
    }
    /**
     * Print client-side navigation meta tag (hard-coded for now).
     */
    function woocommerce_interactivity_add_client_side_navigation_meta_tag()
    {
    }
    /**
     * Merge data into the state with the given namespace.
     *
     * @param string $namespace Namespace.
     * @param array  $data      State to merge.
     *
     * @return array The current state for the given namespace.
     */
    function wc_initial_state($namespace, $data = \null)
    {
    }
    /**
     * Move interactive scripts to the footer. This is a temporary measure to make
     * it work with `wc_store` and it should be replaced with deferred scripts or
     * modules.
     */
    function woocommerce_interactivity_move_interactive_scripts_to_the_footer()
    {
    }
    /**
     * Register the Interactivity API runtime and make it available to be enqueued
     * as a dependency in interactive blocks.
     */
    function woocommerce_interactivity_register_runtime()
    {
    }
    /**
     * Register endpoint data under a specified namespace.
     *
     * @see Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::register_endpoint_data()
     *
     * @param array $args Args to pass to register_endpoint_data.
     * @returns boolean|\WP_Error True on success, WP_Error on fail.
     */
    function woocommerce_store_api_register_endpoint_data($args)
    {
    }
    /**
     * Add callback functions that can be executed by the cart/extensions endpoint.
     *
     * @see Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::register_update_callback()
     *
     * @param array $args Args to pass to register_update_callback.
     * @returns boolean|\WP_Error True on success, WP_Error on fail.
     */
    function woocommerce_store_api_register_update_callback($args)
    {
    }
    /**
     * Registers and validates payment requirements callbacks.
     *
     * @see Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::register_payment_requirements()
     *
     * @param array $args Args to pass to register_payment_requirements.
     * @returns boolean|\WP_Error True on success, WP_Error on fail.
     */
    function woocommerce_store_api_register_payment_requirements($args)
    {
    }
    /**
     * Returns a formatter instance.
     *
     * @see Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::get_formatter()
     *
     * @param string $name Formatter name.
     * @return Automattic\WooCommerce\StoreApi\Formatters\FormatterInterface
     */
    function woocommerce_store_api_get_formatter($name)
    {
    }
    /**
     * Returns the main instance of WC.
     *
     * @since  2.1
     * @return WooCommerce
     */
    function WC()
    {
    }
    /**
     * Returns the WooCommerce object container.
     * Code in the `includes` directory should use the container to get instances of classes in the `src` directory.
     *
     * @since  4.4.0
     * @return \Automattic\WooCommerce\Container The WooCommerce object container.
     */
    function wc_get_container()
    {
    }
}
namespace {
define('WC_VERSION', '0.0.0');
}
