intelephense

1.14.41.16.1
lib/stub/intl/intl.php
lib/stub/intl/intl.php
+97−26
Index: package/lib/stub/intl/intl.php
===================================================================
--- package/lib/stub/intl/intl.php
+++ package/lib/stub/intl/intl.php
@@ -931,8 +931,14 @@
     /**
      * @since 8.4
      */
     public const ROUND_HALFODD = 8;
+    public const DECIMAL_COMPACT_SHORT = 14;
+    public const DECIMAL_COMPACT_LONG = 15;
+    public const CURRENCY_ISO = 10;
+    public const CURRENCY_PLURAL = 11;
+    public const CASH_CURRENCY = 13;
+    public const CURRENCY_STANDARD = 16;
 
     /**
      * @link https://www.php.net/manual/en/class.numberformatter.php
      * @param string $locale
@@ -976,9 +982,9 @@
      */
     #[TentativeType]
     public static function create(
         #[LanguageAware(['8.0' => 'string'], default: '')] $locale,
-        #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([NumberFormatter::PATTERN_DECIMAL,
+        #[LanguageAware(['8.0' => 'int'], default: '')] #[EV([NumberFormatter::DECIMAL, NumberFormatter::PATTERN_DECIMAL,
             NumberFormatter::PATTERN_RULEBASED, NumberFormatter::CURRENCY, NumberFormatter::PERCENT,
             NumberFormatter::SCIENTIFIC, NumberFormatter::SPELLOUT, NumberFormatter::ORDINAL,
             NumberFormatter::DURATION, NumberFormatter::PATTERN_RULEBASED, NumberFormatter::CURRENCY_ACCOUNTING,
             NumberFormatter::DEFAULT_STYLE, NumberFormatter::IGNORE])] $style,
@@ -1019,8 +1025,9 @@
      * @param int &$offset [optional] <p>
      * Offset in the string at which to begin parsing. On return, this value
      * will hold the offset at which parsing ended.
      * </p>
+     * @param-out int $offset
      * @return mixed The value of the parsed number or <b>FALSE</b> on error.
      */
     #[TentativeType]
     public function parse(
@@ -1056,12 +1063,14 @@
      * @param string &$currency <p>
      * Parameter to receive the currency name (3-letter ISO 4217 currency
      * code).
      * </p>
+     * @param-out string $currency
      * @param int &$offset [optional] <p>
      * Offset in the string at which to begin parsing. On return, this value
      * will hold the offset at which parsing ended.
      * </p>
+     * @param-out int $offset
      * @return float|false The parsed numeric value or <b>FALSE</b> on error.
      */
     #[TentativeType]
     public function parseCurrency(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$currency, &$offset = null): float|false {}
@@ -1688,8 +1697,23 @@
      * @return string|false The corresponding locale identifier.
      */
     #[TentativeType]
     public static function acceptFromHttp(#[LanguageAware(['8.0' => 'string'], default: '')] $header): string|false {}
+
+    /**
+     * @since 8.5
+     */
+    public static function isRightToLeft(string $locale): bool {}
+
+    /**
+     * @since 8.5
+     */
+    public static function addLikelySubtags(string $locale): string|false {}
+
+    /**
+     * @since 8.5
+     */
+    public static function minimizeSubtags(string $locale): string|false {}
 }
 
 class MessageFormatter
 {
@@ -1927,9 +1951,9 @@
         #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $dateType,
         #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $timeType,
         #[ElementAvailable(from: '8.1')] int $dateType = 0,
         #[ElementAvailable(from: '8.1')] int $timeType = 0,
-        $timezone = null,
+        #[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone = null,
         $calendar = null,
         #[LanguageAware(['8.0' => 'string|null'], default: '')] $pattern = null
     ) {}
 
@@ -1974,9 +1998,9 @@
         #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $dateType,
         #[ElementAvailable(from: '5.3', to: '8.0')] #[LanguageAware(['8.0' => 'int'], default: '')] $timeType,
         #[ElementAvailable(from: '8.1')] int $dateType = 0,
         #[ElementAvailable(from: '8.1')] int $timeType = 0,
-        $timezone = null,
+        #[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone = null,
         #[LanguageAware(['8.0' => 'IntlCalendar|int|null'], default: '')] $calendar = null,
         #[LanguageAware(['8.0' => 'string|null'], default: '')] $pattern = null
     ): ?IntlDateFormatter {}
 
@@ -2107,9 +2131,9 @@
      * @return bool|null <b>TRUE</b> on success or <b>FALSE</b> on failure.
      */
     #[TentativeType]
     #[LanguageAware(['8.3' => 'bool'], default: 'bool|null')]
-    public function setTimeZone($timezone) {}
+    public function setTimeZone(#[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone) {}
 
     /**
      * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
      * Set the pattern used for the IntlDateFormatter
@@ -2228,8 +2252,9 @@
      * otherwise it will contain the position at which parsing ended (and the error occurred).
      * This variable will contain the end position if the parse fails.
      * If $parse_pos > strlen($value), the parse fails immediately.
      * </p>
+     * @param-out int $offset
      * @return int|float|false timestamp parsed value
      */
     #[TentativeType]
     public function parse(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$offset = null): int|float|false {}
@@ -2246,8 +2271,9 @@
      * If no error occurs before $value is consumed, $parse_pos will contain -1
      * otherwise it will contain the position at which parsing ended .
      * If $parse_pos > strlen($value), the parse fails immediately.
      * </p>
+     * @param-out int $offset
      * @return array|false Localtime compatible array of integers : contains 24 hour clock value in tm_hour field
      */
     #[TentativeType]
     public function localtime(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$offset = null): array|false {}
@@ -2504,9 +2530,10 @@
      * or <b>FALSE</b> if none exists, or on failure.
      */
     #[Pure]
     #[TentativeType]
-    public function getErrorCode(): int|false {}
+    #[LanguageAware(['8.5' => 'int'], default: 'int|false')]
+    public function getErrorCode() {}
 
     /**
      * (PHP &gt;= 5.4.0, PECL intl &gt;= 2.0.0)<br/>
      * Get last error message
@@ -2515,9 +2542,10 @@
      * or <b>FALSE</b> if none exists, or on failure.
      */
     #[Pure]
     #[TentativeType]
-    public function getErrorMessage(): string|false {}
+    #[LanguageAware(['8.5' => 'string'], default: 'string|false')]
+    public function getErrorMessage() {}
 }
 
 /**
  * @link https://php.net/manual/en/class.spoofchecker.php
@@ -2575,8 +2603,9 @@
      * @param string $string <p>
      * </p>
      * @param string &$errorCode [optional] <p>
      * </p>
+     * @param-out string $errorCode
      * @return bool
      */
     #[TentativeType]
     public function isSuspicious(#[LanguageAware(['8.0' => 'string'], default: '')] $string, &$errorCode = null): bool {}
@@ -2590,8 +2619,9 @@
      * @param string $string2 <p>
      * </p>
      * @param int &$errorCode [optional] <p>
      * </p>
+     * @param-out int $errorCode
      * @return bool
      */
     #[TentativeType]
     public function areConfusable(
@@ -2854,9 +2884,12 @@
      * The created {@link https://secure.php.net/manual/en/class.intlcalendar.php IntlCalendar} instance or <b>NULL</b> on
      * failure.
      */
     #[TentativeType]
-    public static function createInstance($timezone = null, #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale = null): ?IntlCalendar {}
+    public static function createInstance(
+        #[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone = null,
+        #[LanguageAware(['8.0' => 'string|null'], default: '')] $locale = null
+    ): ?IntlCalendar {}
 
     /**
      * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a1)<br/>
      * Compare time of two IntlCalendar objects for equality
@@ -3486,9 +3519,9 @@
      * </ul>
      * @return bool Returns <b>TRUE</b> on success and <b>FALSE</b> on failure.
      */
     #[TentativeType]
-    public function setTimeZone($timezone): bool {}
+    public function setTimeZone(#[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone): bool {}
 
     /**
      * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a2)<br/>
      * Convert an IntlCalendar into a DateTime object
@@ -3597,9 +3630,9 @@
      * @param mixed $countryOrRawOffset [optional]
      * @return IntlIterator|false an iterator or <b>FALSE</b> on failure
      */
     #[TentativeType]
-    public static function createEnumeration($countryOrRawOffset): IntlIterator|false {}
+    public static function createEnumeration(#[LanguageAware(['8.5' => 'string|int|null'], default: '')] $countryOrRawOffset): IntlIterator|false {}
 
     /**
      * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a1)<br/>
      * Create a timezone object for the given ID
@@ -3641,8 +3674,9 @@
      * Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
      * @link https://secure.php.net/manual/en/intltimezone.getcanonicalid.php
      * @param string $timezoneId
      * @param bool &$isSystemId [optional]
+     * @param-out bool $isSystemId
      * @return string|false the timezone ID or <b>FALSE</b> on failure
      */
     #[TentativeType]
     public static function getCanonicalID(#[LanguageAware(['8.0' => 'string'], default: '')] $timezoneId, &$isSystemId): string|false {}
@@ -3737,13 +3771,15 @@
      *   if true, `date' is local wall time; otherwise it is in GMT time.
      * @param int &$rawOffset
      *   output parameter to receive the raw offset, that is, the offset not
      *   including DST adjustments
+     * @param-out int $rawOffset
      * @param int &$dstOffset
      *   output parameter to receive the DST offset, that is, the offset to be added
      *   to `rawOffset' to obtain the total offset between local and GMT time. If
      *   DST is not in effect, this value is zero; otherwise it is a positive value,
      *   typically one hour.
+     * @param-out int $dstOffset
      * @return bool boolean indication of success
      */
     #[TentativeType]
     public function getOffset(
@@ -4111,8 +4147,9 @@
  * @param int &$offset [optional] <p>
  * Offset in the string at which to begin parsing. On return, this value
  * will hold the offset at which parsing ended.
  * </p>
+ * @param-out int $offset
  * @return int|float|false The value of the parsed number or <b>FALSE</b> on error.
  */
 #[Pure]
 function numfmt_parse(NumberFormatter $formatter, string $string, int $type = NumberFormatter::TYPE_DOUBLE, &$offset = null): int|float|false {}
@@ -4142,12 +4179,14 @@
  * @param string &$currency <p>
  * Parameter to receive the currency name (3-letter ISO 4217 currency
  * code).
  * </p>
+ * @param-out string $currency
  * @param int &$offset [optional] <p>
  * Offset in the string at which to begin parsing. On return, this value
  * will hold the offset at which parsing ended.
  * </p>
+ * @param-out int $offset
  * @return float|false The parsed numeric value or <b>FALSE</b> on error.
  */
 function numfmt_parse_currency(NumberFormatter $formatter, string $string, &$currency, &$offset = null): float|false {}
 
@@ -4797,9 +4836,9 @@
     #[ElementAvailable(from: '5.3', to: '8.0')] int $dateType,
     #[ElementAvailable(from: '8.1')] int $dateType = 0,
     #[ElementAvailable(from: '5.3', to: '8.0')] int $timeType,
     #[ElementAvailable(from: '8.1')] int $timeType = 0,
-    $timezone = null,
+    #[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone = null,
     IntlCalendar|int|null $calendar = null,
     #[LanguageAware(['8.0' => 'string|null'], default: 'string')] $pattern = null
 ): ?IntlDateFormatter {}
 
@@ -4945,9 +4984,9 @@
  * </p>
  * @return bool|null <b>TRUE</b> on success or <b>FALSE</b> on failure.
  */
 #[LanguageAware(['8.3' => 'bool'], default: 'bool|null')]
-function datefmt_set_timezone(IntlDateFormatter $formatter, $timezone) {}
+function datefmt_set_timezone(IntlDateFormatter $formatter, #[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone) {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Get the pattern used for the IntlDateFormatter
@@ -5059,8 +5098,9 @@
  * otherwise it will contain the position at which parsing ended (and the error occurred).
  * This variable will contain the end position if the parse fails.
  * If $parse_pos > strlen($value), the parse fails immediately.
  * </p>
+ * @param-out int $offset
  * @return int|float|false timestamp parsed value
  */
 function datefmt_parse(IntlDateFormatter $formatter, string $string, &$offset = null): int|float|false {}
 
@@ -5077,8 +5117,9 @@
  * If no error occurs before $value is consumed, $parse_pos will contain -1
  * otherwise it will contain the position at which parsing ended .
  * If $parse_pos > strlen($value), the parse fails immediately.
  * </p>
+ * @param-out int $offset
  * @return array|false Localtime compatible array of integers : contains 24 hour clock value in tm_hour field
  */
 function datefmt_localtime(IntlDateFormatter $formatter, string $string, &$offset = null): array|false {}
 
@@ -5132,9 +5173,9 @@
  * </p>
  * @return int|false the position as an integer. If needle is not found, strpos() will return boolean FALSE.
  */
 #[Pure]
-function grapheme_strpos(string $haystack, string $needle, int $offset = 0): int|false {}
+function grapheme_strpos(string $haystack, string $needle, int $offset = 0, #[ElementAvailable(from: '8.5')] string $locale = ""): int|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Find position (in grapheme units) of first occurrence of a case-insensitive string
@@ -5153,9 +5194,9 @@
  * </p>
  * @return int|false the position as an integer. If needle is not found, grapheme_stripos() will return boolean FALSE.
  */
 #[Pure]
-function grapheme_stripos(string $haystack, string $needle, int $offset = 0): int|false {}
+function grapheme_stripos(string $haystack, string $needle, int $offset = 0, #[ElementAvailable(from: '8.5')] string $locale = ""): int|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Find position (in grapheme units) of last occurrence of a string
@@ -5174,9 +5215,9 @@
  * </p>
  * @return int|false the position as an integer. If needle is not found, grapheme_strrpos() will return boolean FALSE.
  */
 #[Pure]
-function grapheme_strrpos(string $haystack, string $needle, int $offset = 0): int|false {}
+function grapheme_strrpos(string $haystack, string $needle, int $offset = 0, #[ElementAvailable(from: '8.5')] string $locale = ""): int|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Find position (in grapheme units) of last occurrence of a case-insensitive string
@@ -5195,9 +5236,9 @@
  * </p>
  * @return int|false the position as an integer. If needle is not found, grapheme_strripos() will return boolean FALSE.
  */
 #[Pure]
-function grapheme_strripos(string $haystack, string $needle, int $offset = 0): int|false {}
+function grapheme_strripos(string $haystack, string $needle, int $offset = 0, #[ElementAvailable(from: '8.5')] string $locale = ""): int|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Return part of a string
@@ -5225,9 +5266,9 @@
  * or <strong>FALSE</strong> if $length is negative and $start denotes a position beyond truncation $length,<br />
  * or also <strong>FALSE</strong> if $start denotes a position beyond $string length</p>
  */
 #[Pure]
-function grapheme_substr(string $string, int $offset, ?int $length = null): string|false {}
+function grapheme_substr(string $string, int $offset, ?int $length = null, #[ElementAvailable(from: '8.5')] string $locale = ""): string|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Returns part of haystack string from the first occurrence of needle to the end of haystack.
@@ -5244,9 +5285,9 @@
  * </p>
  * @return string|false the portion of string, or FALSE if needle is not found.
  */
 #[Pure]
-function grapheme_strstr(string $haystack, string $needle, bool $beforeNeedle = false): string|false {}
+function grapheme_strstr(string $haystack, string $needle, bool $beforeNeedle = false, #[ElementAvailable(from: '8.5')] string $locale = ""): string|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
@@ -5263,9 +5304,9 @@
  * </p>
  * @return string|false the portion of $haystack, or FALSE if $needle is not found.
  */
 #[Pure]
-function grapheme_stristr(string $haystack, string $needle, bool $beforeNeedle = false): string|false {}
+function grapheme_stristr(string $haystack, string $needle, bool $beforeNeedle = false, #[ElementAvailable(from: '8.5')] string $locale = ""): string|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.
@@ -5296,8 +5337,9 @@
  * @param int &$next [optional] <p>
  * Reference to a value that will be set to the next starting position.
  * When the call returns, this may point to the first byte position past the end of the string.
  * </p>
+ * @param-out int $next
  * @return string|false A string starting at offset $start and ending on a default grapheme cluster
  * boundary that conforms to the $size and $extract_type specified.
  */
 function grapheme_extract(string $haystack, int $size, int $type = 0, int $offset = 0, &$next = null): string|false {}
@@ -5325,11 +5367,12 @@
  * a boolean indicating whether the usage of the transitional mechanisms of UTS #46
  * either has or would have changed the result and 'errors',
  * which is an int representing a bitset of the error constants IDNA_ERROR_*.
  * </p>
+ * @param-out array $idna_info
  * @return string|false The ACE encoded version of the domain name or <b>FALSE</b> on failure.
  */
-function idn_to_ascii(string $domain, int $flags = 0, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info): string|false {}
+function idn_to_ascii(string $domain, int $flags = IDNA_DEFAULT, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info): string|false {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PHP 7, PECL intl &gt;= 1.0.2, PHP 7, PECL idn &gt;= 0.1)<br/>
  * Convert domain name from IDNA ASCII to Unicode.
@@ -5351,13 +5394,14 @@
  * a boolean indicating whether the usage of the transitional mechanisms of UTS #46
  * either has or would have changed the result and 'errors',
  * which is an int representing a bitset of the error constants IDNA_ERROR_*.
  * </p>
+ * @param-out array $idna_info
  * @return string|false The UTF-8 encoded version of the domain name or <b>FALSE</b> on failure.
  * RFC 3490 4.2 states though "ToUnicode never fails. If any step fails, then the original input
  * sequence is returned immediately in that step."
  */
-function idn_to_utf8(string $domain, int $flags = 0, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info): string|false {}
+function idn_to_utf8(string $domain, int $flags = IDNA_DEFAULT, int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info): string|false {}
 
 /**
  * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a1)<br/>
  * Create a new IntlCalendar
@@ -5404,9 +5448,9 @@
  * failure.
  * @since 5.5
  */
 #[Pure]
-function intlcal_create_instance($timezone = null, ?string $locale = null): ?IntlCalendar {}
+function intlcal_create_instance(#[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone = null, ?string $locale = null): ?IntlCalendar {}
 
 /**
  * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a1)<br/>
  * Get set of locale keyword values
@@ -5556,9 +5600,9 @@
  * </ul>
  * @return bool Returns <b>TRUE</b> on success and <b>FALSE</b> on failure.
  * @since 5.5
  */
-function intlcal_set_time_zone(IntlCalendar $calendar, $timezone): bool {}
+function intlcal_set_time_zone(IntlCalendar $calendar, #[LanguageAware(['8.5' => 'IntlTimeZone|DateTimeZone|string|null'], default: '')] $timezone): bool {}
 
 /**
  * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a1)<br/>
  * Whether this object's time is after that of the passed object
@@ -6323,9 +6367,9 @@
  * @return IntlIterator|false
  * @since 5.5
  */
 #[Pure]
-function intltz_create_enumeration($countryOrRawOffset): IntlIterator|false {}
+function intltz_create_enumeration(#[LanguageAware(['8.5' => 'string|int|null'], default: '')] $countryOrRawOffset): IntlIterator|false {}
 
 /**
  * (PHP 5 &gt;=5.5.0 PECL intl &gt;= 3.0.0a1)<br/>
  * @link https://secure.php.net/manual/en/intltimezone.createtimezone.php
@@ -6351,8 +6395,9 @@
  * Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
  * @link https://secure.php.net/manual/en/intltimezone.getcanonicalid.php
  * @param string $timezoneId
  * @param bool &$isSystemId [optional]
+ * @param-out bool $isSystemId
  * @return string|false
  * @since 5.5
  */
 #[Pure]
@@ -6452,9 +6497,11 @@
  * @param IntlTimeZone $timezone
  * @param float $timestamp
  * @param bool $local
  * @param int &$rawOffset
+ * @param-out int $rawOffset
  * @param int &$dstOffset
+ * @param-out int $dstOffset
  * @return bool
  * @since 5.5
  */
 #[Pure]
@@ -6728,9 +6775,10 @@
  * or <b>FALSE</b> if none exists, or on failure.
  * @since 5.4
  */
 #[Pure(true)]
-function transliterator_get_error_code(Transliterator $transliterator): int|false {}
+#[LanguageAware(['8.5' => 'int'], default: 'int|false')]
+function transliterator_get_error_code(Transliterator $transliterator) {}
 
 /**
  * (PHP &gt;= 5.4.0, PECL intl &gt;= 2.0.0)<br/>
  * Get last error message
@@ -6740,9 +6788,10 @@
  * or <b>FALSE</b> if none exists, or on failure.
  * @since 5.4
  */
 #[Pure(true)]
-function transliterator_get_error_message(Transliterator $transliterator): string|false {}
+#[LanguageAware(['8.5' => 'string'], default: 'string|false')]
+function transliterator_get_error_message(Transliterator $transliterator) {}
 
 /**
  * (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)<br/>
  * Get the last error code
@@ -6870,8 +6919,28 @@
  */
 function intltz_get_iana_id(string $timezoneId): string|false {}
 
 /**
+ * @since 8.5
+ */
+function grapheme_levenshtein(string $string1, string $string2, int $insertion_cost = 1, int $replacement_cost = 1, int $deletion_cost = 1, string $locale = ""): int|false {}
+
+/**
+ * @since 8.5
+ */
+function locale_is_right_to_left(string $locale): bool {}
+
+/**
+ * @since 8.5
+ */
+function locale_add_likely_subtags(string $locale): string|false {}
+
+/**
+ * @since 8.5
+ */
+function locale_minimize_subtags(string $locale): string|false {}
+
+/**
  * Limit on locale length, set to 80 in PHP code. Locale names longer
  * than this limit will not be accepted.
  * @link https://php.net/manual/en/intl.constants.php
  */
@@ -7029,9 +7098,9 @@
  * Prohibit processing of unassigned codepoints in the input for IDN
  * functions and do not check if the input conforms to domain name ASCII rules.
  * @link https://php.net/manual/en/intl.constants.php
  */
-define('IDNA_DEFAULT', 0);
+define('IDNA_DEFAULT', 48);
 
 /**
  * Allow processing of unassigned codepoints in the input for IDN functions.
  * @link https://php.net/manual/en/intl.constants.php
@@ -7633,8 +7702,9 @@
      * @param int $reason
      * @param string $source
      * @param string $codePoint
      * @param int &$error
+     * @param-out int $error
      * @return array|string|int|null
      */
     #[TentativeType]
     public function fromUCallback(
@@ -7797,8 +7867,9 @@
      * @param int $reason
      * @param string $source
      * @param string $codeUnits
      * @param int &$error
+     * @param-out int $error
      * @return array|string|int|null
      */
     #[TentativeType]
     public function toUCallback(