<?php

/**
 * @generate-class-entries
 * @generate-c-enums
 */

/* array.c */

/**
 * @var int
 * @cvalue PHP_EXTR_OVERWRITE
 */
const EXTR_OVERWRITE = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_SKIP
 */
const EXTR_SKIP = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_PREFIX_SAME
 */
const EXTR_PREFIX_SAME = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_PREFIX_ALL
 */
const EXTR_PREFIX_ALL = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_PREFIX_INVALID
 */
const EXTR_PREFIX_INVALID = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_PREFIX_IF_EXISTS
 */
const EXTR_PREFIX_IF_EXISTS = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_IF_EXISTS
 */
const EXTR_IF_EXISTS = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_EXTR_REFS
 */
const EXTR_REFS = UNKNOWN;

/**
 * @var int
 * @cvalue PHP_SORT_ASC
 */
const SORT_ASC = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_SORT_DESC
 */
const SORT_DESC = UNKNOWN;

/**
 * @var int
 * @cvalue PHP_SORT_REGULAR
 */
const SORT_REGULAR = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_SORT_NUMERIC
 */
const SORT_NUMERIC = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_SORT_STRING
 */
const SORT_STRING = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_SORT_LOCALE_STRING
 */
const SORT_LOCALE_STRING = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_SORT_NATURAL
 */
const SORT_NATURAL = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_SORT_FLAG_CASE
 */
const SORT_FLAG_CASE = UNKNOWN;

enum SortDirection {
    case Ascending;
    case Descending;
}

/**
 * @var int
 * @cvalue PHP_CASE_LOWER
 */
const CASE_LOWER = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_CASE_UPPER
 */
const CASE_UPPER = UNKNOWN;

/**
 * @var int
 * @cvalue PHP_COUNT_NORMAL
 */
const COUNT_NORMAL = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_COUNT_RECURSIVE
 */
const COUNT_RECURSIVE = UNKNOWN;

/**
 * @var int
 * @cvalue ARRAY_FILTER_USE_VALUE
 */
const ARRAY_FILTER_USE_VALUE = UNKNOWN;
/**
 * @var int
 * @cvalue ARRAY_FILTER_USE_BOTH
 */
const ARRAY_FILTER_USE_BOTH = UNKNOWN;
/**
 * @var int
 * @cvalue ARRAY_FILTER_USE_KEY
 */
const ARRAY_FILTER_USE_KEY = UNKNOWN;

/* assert.c */

/**
 * @var int
 * @cvalue PHP_ASSERT_ACTIVE
 */
#[\Deprecated(since: '8.3', message: 'as assert_options() is deprecated')]
const ASSERT_ACTIVE = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ASSERT_CALLBACK
 */
#[\Deprecated(since: '8.3', message: 'as assert_options() is deprecated')]
const ASSERT_CALLBACK = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ASSERT_BAIL
 */
#[\Deprecated(since: '8.3', message: 'as assert_options() is deprecated')]
const ASSERT_BAIL = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ASSERT_WARNING
 */
#[\Deprecated(since: '8.3', message: 'as assert_options() is deprecated')]
const ASSERT_WARNING = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ASSERT_EXCEPTION
 */
#[\Deprecated(since: '8.3', message: 'as assert_options() is deprecated')]
const ASSERT_EXCEPTION = UNKNOWN;

/* basic_functions.h */

/**
 * @var int
 * @cvalue PHP_CONNECTION_ABORTED
 */
const CONNECTION_ABORTED = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_CONNECTION_NORMAL
 */
const CONNECTION_NORMAL = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_CONNECTION_TIMEOUT
 */
const CONNECTION_TIMEOUT = UNKNOWN;

/**
 * @var int
 * @cvalue ZEND_INI_USER
 */
const INI_USER = UNKNOWN;
/**
 * @var int
 * @cvalue ZEND_INI_PERDIR
 */
const INI_PERDIR = UNKNOWN;
/**
 * @var int
 * @cvalue ZEND_INI_SYSTEM
 */
const INI_SYSTEM = UNKNOWN;
/**
 * @var int
 * @cvalue ZEND_INI_ALL
 */
const INI_ALL = UNKNOWN;

/**
 * @var int
 * @cvalue ZEND_INI_SCANNER_NORMAL
 */
const INI_SCANNER_NORMAL = UNKNOWN;
/**
 * @var int
 * @cvalue ZEND_INI_SCANNER_RAW
 */
const INI_SCANNER_RAW = UNKNOWN;
/**
 * @var int
 * @cvalue ZEND_INI_SCANNER_TYPED
 */
const INI_SCANNER_TYPED = UNKNOWN;

/**
 * @var int
 * @cvalue PHP_URL_SCHEME
 */
const PHP_URL_SCHEME = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_HOST
 */
const PHP_URL_HOST = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_PORT
 */
const PHP_URL_PORT = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_USER
 */
const PHP_URL_USER = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_PASS
 */
const PHP_URL_PASS = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_PATH
 */
const PHP_URL_PATH = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_QUERY
 */
const PHP_URL_QUERY = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_URL_FRAGMENT
 */
const PHP_URL_FRAGMENT = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_QUERY_RFC1738
 */
const PHP_QUERY_RFC1738 = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_QUERY_RFC3986
 */
const PHP_QUERY_RFC3986 = UNKNOWN;

/**
 * @cvalue M_E
 */
const M_E = 2.718281828459045;
/**
 * @cvalue M_LOG2E
 */
const M_LOG2E = 1.4426950408889634074;
/**
 * @cvalue M_LOG10E
 */
const M_LOG10E = 0.43429448190325182765;
/**
 * @cvalue M_LN2
 */
const M_LN2 = 0.69314718055994530942;
/**
 * @cvalue M_LN10
 */
const M_LN10 = 2.30258509299404568402;
/**
 * @cvalue M_PI
 */
const M_PI = 3.14159265358979323846;
/**
 * @cvalue M_PI_2
 */
const M_PI_2 = 1.57079632679489661923;
/**
 * @cvalue M_PI_4
 */
const M_PI_4 = 0.78539816339744830962;
/**
 * @cvalue M_1_PI
 */
const M_1_PI = 0.31830988618379067154;
/**
 * @cvalue M_2_PI
 */
const M_2_PI = 0.63661977236758134308;
/**
 * @cvalue M_SQRTPI
 */
const M_SQRTPI = 1.77245385090551602729;
/**
 * @cvalue M_2_SQRTPI
 */
const M_2_SQRTPI = 1.12837916709551257390;
/**
 * @cvalue M_LNPI
 */
const M_LNPI = 1.14472988584940017414;
/**
 * @cvalue M_EULER
 */
const M_EULER = 0.57721566490153286061;
/**
 * @cvalue M_SQRT2
 */
const M_SQRT2 = 1.41421356237309504880;
/**
 * @cvalue M_SQRT1_2
 */
const M_SQRT1_2 = 0.70710678118654752440;
/**
 * @cvalue M_SQRT3
 */
const M_SQRT3 = 1.73205080756887729352;
/**
 * @var float
 * @cvalue ZEND_INFINITY
 */
const INF = UNKNOWN;
/**
 * @var float
 * @cvalue ZEND_NAN
 */
const NAN = UNKNOWN;

/**
 * @var int
 * @cvalue PHP_ROUND_HALF_UP
 */
const PHP_ROUND_HALF_UP = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ROUND_HALF_DOWN
 */
const PHP_ROUND_HALF_DOWN = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ROUND_HALF_EVEN
 */
const PHP_ROUND_HALF_EVEN = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_ROUND_HALF_ODD
 */
const PHP_ROUND_HALF_ODD = UNKNOWN;

/* crypt.c */

/**
 * @var int
 * @cvalue PHP_MAX_SALT_LEN
 */
const CRYPT_SALT_LENGTH = UNKNOWN;
const CRYPT_STD_DES = 1;
const CRYPT_EXT_DES = 1;
const CRYPT_MD5 = 1;
const CRYPT_BLOWFISH = 1;
const CRYPT_SHA256 = 1;
const CRYPT_SHA512 = 1;

/* dns.c */

#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
/**
 * @var int
 * @cvalue PHP_DNS_A
 */
const DNS_A = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_NS
 */
const DNS_NS = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_CNAME
 */
const DNS_CNAME = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_SOA
 */
const DNS_SOA = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_PTR
 */
const DNS_PTR = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_HINFO
 */
const DNS_HINFO = UNKNOWN;
#if (!defined(PHP_WIN32))
/**
 * @var int
 * @cvalue PHP_DNS_CAA
 */
const DNS_CAA = UNKNOWN;
#endif
/**
 * @var int
 * @cvalue PHP_DNS_MX
 */
const DNS_MX = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_TXT
 */
const DNS_TXT = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_SRV
 */
const DNS_SRV = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_NAPTR
 */
const DNS_NAPTR = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_AAAA
 */
const DNS_AAAA = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_A6
 */
const DNS_A6 = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_ANY
 */
const DNS_ANY = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_DNS_ALL
 */
const DNS_ALL = UNKNOWN;
#endif

/* html.c */

/**
* @var int
* @cvalue PHP_HTML_SPECIALCHARS
*/
const HTML_SPECIALCHARS = UNKNOWN;
/**
* @var int
* @cvalue PHP_HTML_ENTITIES
*/
const HTML_ENTITIES = UNKNOWN;
/**
* @var int
* @cvalue ENT_COMPAT
*/
const ENT_COMPAT = UNKNOWN;
/**
* @var int
* @cvalue ENT_QUOTES
*/
const ENT_QUOTES = UNKNOWN;
/**
* @var int
* @cvalue ENT_NOQUOTES
*/
const ENT_NOQUOTES = UNKNOWN;
/**
* @var int
* @cvalue ENT_IGNORE
*/
const ENT_IGNORE = UNKNOWN;
/**
* @var int
* @cvalue ENT_SUBSTITUTE
*/
const ENT_SUBSTITUTE = UNKNOWN;
/**
* @var int
* @cvalue ENT_DISALLOWED
*/
const ENT_DISALLOWED = UNKNOWN;
/**
* @var int
* @cvalue ENT_HTML401
*/
const ENT_HTML401 = UNKNOWN;
/**
* @var int
* @cvalue ENT_XML1
*/
const ENT_XML1 = UNKNOWN;
/**
* @var int
* @cvalue ENT_XHTML
*/
const ENT_XHTML = UNKNOWN;
/**
* @var int
* @cvalue ENT_HTML5
*/
const ENT_HTML5 = UNKNOWN;

/* image.c */

/**
 * @var int
 * @cvalue IMAGE_FILETYPE_GIF
 */
const IMAGETYPE_GIF = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_JPEG
 */
const IMAGETYPE_JPEG = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_PNG
 */
const IMAGETYPE_PNG = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_SWF
 */
const IMAGETYPE_SWF = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_PSD
 */
const IMAGETYPE_PSD = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_BMP
 */
const IMAGETYPE_BMP = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_TIFF_II
 */
const IMAGETYPE_TIFF_II = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_TIFF_MM
 */
const IMAGETYPE_TIFF_MM = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_JPC
 */
const IMAGETYPE_JPC = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_JP2
 */
const IMAGETYPE_JP2 = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_JPX
 */
const IMAGETYPE_JPX = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_JB2
 */
const IMAGETYPE_JB2 = UNKNOWN;
#if (defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB))
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_SWC
 */
const IMAGETYPE_SWC = UNKNOWN;
#endif
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_IFF
 */
const IMAGETYPE_IFF = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_WBMP
 */
const IMAGETYPE_WBMP = UNKNOWN;
/* keep alias */
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_JPC
 */
const IMAGETYPE_JPEG2000 = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_XBM
 */
const IMAGETYPE_XBM = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_ICO
 */
const IMAGETYPE_ICO = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_WEBP
 */
const IMAGETYPE_WEBP = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_AVIF
 */
const IMAGETYPE_AVIF = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_HEIF
 */
const IMAGETYPE_HEIF = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_UNKNOWN
 */
const IMAGETYPE_UNKNOWN = UNKNOWN;
/**
 * @var int
 * @cvalue IMAGE_FILETYPE_FIXED_COUNT
 */
const IMAGETYPE_COUNT = UNKNOWN;

/* info.c */

/**
 * @var int
 * @cvalue PHP_INFO_GENERAL
 */
const INFO_GENERAL = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_CREDITS
*/
const INFO_CREDITS = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_CONFIGURATION
*/
const INFO_CONFIGURATION = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_MODULES
*/
const INFO_MODULES = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_ENVIRONMENT
*/
const INFO_ENVIRONMENT = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_VARIABLES
*/
const INFO_VARIABLES = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_LICENSE
*/
const INFO_LICENSE = UNKNOWN;
/**
* @var int
* @cvalue PHP_INFO_ALL
*/
const INFO_ALL = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_GROUP
*/
const CREDITS_GROUP = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_GENERAL
*/
const CREDITS_GENERAL = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_SAPI
*/
const CREDITS_SAPI = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_MODULES
*/
const CREDITS_MODULES = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_DOCS
*/
const CREDITS_DOCS = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_FULLPAGE
*/
const CREDITS_FULLPAGE = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_QA
*/
const CREDITS_QA = UNKNOWN;
/**
* @var int
* @cvalue PHP_CREDITS_ALL
*/
const CREDITS_ALL = UNKNOWN;

/* syslog.c */

/* error levels */

/**
 * system unusable
 * @var int
 * @cvalue LOG_EMERG
 */
const LOG_EMERG = UNKNOWN;
/**
 * immediate action required
 * @var int
 * @cvalue LOG_ALERT
 */
const LOG_ALERT = UNKNOWN;
/**
 * critical conditions
 * @var int
 * @cvalue LOG_CRIT
 */
const LOG_CRIT = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_ERR
 */
const LOG_ERR = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_WARNING
 */
const LOG_WARNING = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_NOTICE
 */
const LOG_NOTICE = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_INFO
 */
const LOG_INFO = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_DEBUG
 */
const LOG_DEBUG = UNKNOWN;
/* facility: type of program logging the message */
/**
 * @var int
 * @cvalue LOG_KERN
 */
const LOG_KERN = UNKNOWN;
/**
 * generic user level
 * @var int
 * @cvalue LOG_USER
 */
const LOG_USER = UNKNOWN;
/**
 * log to email
 * @var int
 * @cvalue LOG_MAIL
 */
const LOG_MAIL = UNKNOWN;
/**
 * other system daemons
 * @var int
 * @cvalue LOG_DAEMON
 */
const LOG_DAEMON = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_AUTH
 */
const LOG_AUTH = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_SYSLOG
 */
const LOG_SYSLOG = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LPR
 */
const LOG_LPR = UNKNOWN;
#ifdef LOG_NEWS
/* No LOG_NEWS on HP-UX */
/**
 * usenet new
 * @var int
 * @cvalue LOG_NEWS
 */
const LOG_NEWS = UNKNOWN;
#endif
#ifdef LOG_UUCP
/* No LOG_UUCP on HP-UX */
/**
 * @var int
 * @cvalue LOG_UUCP
 */
const LOG_UUCP = UNKNOWN;
#endif
#ifdef LOG_CRON
/* apparently some systems don't have this one */
/**
 * @var int
 * @cvalue LOG_CRON
 */
const LOG_CRON = UNKNOWN;
#endif
#ifdef LOG_AUTHPRIV
/* AIX doesn't have LOG_AUTHPRIV */
/**
 * @var int
 * @cvalue LOG_AUTHPRIV
 */
const LOG_AUTHPRIV = UNKNOWN;
#endif
#ifndef PHP_WIN32
/**
 * @var int
 * @cvalue LOG_LOCAL0
 */
const LOG_LOCAL0 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL1
 */
const LOG_LOCAL1 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL2
 */
const LOG_LOCAL2 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL3
 */
const LOG_LOCAL3 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL4
 */
const LOG_LOCAL4 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL5
 */
const LOG_LOCAL5 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL6
 */
const LOG_LOCAL6 = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_LOCAL7
 */
const LOG_LOCAL7 = UNKNOWN;
#endif
/* options */
/**
 * @var int
 * @cvalue LOG_PID
 */
const LOG_PID = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_CONS
 */
const LOG_CONS = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_ODELAY
 */
const LOG_ODELAY = UNKNOWN;
/**
 * @var int
 * @cvalue LOG_NDELAY
 */
const LOG_NDELAY = UNKNOWN;
#ifdef LOG_NOWAIT
/**
 * @var int
 * @cvalue LOG_NOWAIT
 */
const LOG_NOWAIT = UNKNOWN;
#endif
#ifdef LOG_PERROR
/* AIX doesn't have LOG_PERROR */
/**
 * log to stderr
 * @var int
 * @cvalue LOG_PERROR
 */
const LOG_PERROR = UNKNOWN;
#endif

/* string.c */

/**
 * @var int
 * @cvalue PHP_STR_PAD_LEFT
 */
const STR_PAD_LEFT = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_STR_PAD_RIGHT
 */
const STR_PAD_RIGHT = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_STR_PAD_BOTH
 */
const STR_PAD_BOTH = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_PATHINFO_DIRNAME
 */
const PATHINFO_DIRNAME = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_PATHINFO_BASENAME
 */
const PATHINFO_BASENAME = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_PATHINFO_EXTENSION
 */
const PATHINFO_EXTENSION = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_PATHINFO_FILENAME
 */
const PATHINFO_FILENAME = UNKNOWN;
/**
 * @var int
 * @cvalue PHP_PATHINFO_ALL
 */
const PATHINFO_ALL = UNKNOWN;

/**
 * If last members of struct lconv equal CHAR_MAX, no grouping is done
 * @var int
 * @cvalue CHAR_MAX
 */
const CHAR_MAX = UNKNOWN;
/**
 * @var int
 * @cvalue LC_CTYPE
 */
const LC_CTYPE = UNKNOWN;
/**
 * @var int
 * @cvalue LC_NUMERIC
 */
const LC_NUMERIC = UNKNOWN;
/**
 * @var int
 * @cvalue LC_TIME
 */
const LC_TIME = UNKNOWN;
/**
 * @var int
 * @cvalue LC_COLLATE
 */
const LC_COLLATE = UNKNOWN;
/**
 * @var int
 * @cvalue LC_MONETARY
 */
const LC_MONETARY = UNKNOWN;
/**
 * @var int
 * @cvalue LC_ALL
 */
const LC_ALL = UNKNOWN;
#ifdef LC_MESSAGES
/**
 * @var int
 * @cvalue LC_MESSAGES
 */
const LC_MESSAGES = UNKNOWN;
#endif

#ifdef HAVE_NL_LANGINFO
#ifdef ABDAY_1
/**
 * @var int
 * @cvalue ABDAY_1
 */
const ABDAY_1 = UNKNOWN;
/**
 * @var int
 * @cvalue ABDAY_2
 */
const ABDAY_2 = UNKNOWN;
/**
 * @var int
 * @cvalue ABDAY_3
 */
const ABDAY_3 = UNKNOWN;
/**
 * @var int
 * @cvalue ABDAY_4
 */
const ABDAY_4 = UNKNOWN;
/**
 * @var int
 * @cvalue ABDAY_5
 */
const ABDAY_5 = UNKNOWN;
/**
 * @var int
 * @cvalue ABDAY_6
 */
const ABDAY_6 = UNKNOWN;
/**
 * @var int
 * @cvalue ABDAY_7
 */
const ABDAY_7 = UNKNOWN;
#endif
#ifdef DAY_1
/**
 * @var int
 * @cvalue DAY_1
 */
const DAY_1 = UNKNOWN;
/**
 * @var int
 * @cvalue DAY_2
 */
const DAY_2 = UNKNOWN;
/**
 * @var int
 * @cvalue DAY_3
 */
const DAY_3 = UNKNOWN;
/**
 * @var int
 * @cvalue DAY_4
 */
const DAY_4 = UNKNOWN;
/**
 * @var int
 * @cvalue DAY_5
 */
const DAY_5 = UNKNOWN;
/**
 * @var int
 * @cvalue DAY_6
 */
const DAY_6 = UNKNOWN;
/**
 * @var int
 * @cvalue DAY_7
 */
const DAY_7 = UNKNOWN;
#endif
#ifdef ABMON_1
/**
 * @var int
 * @cvalue ABMON_1
 */
const ABMON_1 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_2
 */
const ABMON_2 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_3
 */
const ABMON_3 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_4
 */
const ABMON_4 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_5
 */
const ABMON_5 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_6
 */
const ABMON_6 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_7
 */
const ABMON_7 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_8
 */
const ABMON_8 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_9
 */
const ABMON_9 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_10
 */
const ABMON_10 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_11
 */
const ABMON_11 = UNKNOWN;
/**
 * @var int
 * @cvalue ABMON_12
 */
const ABMON_12 = UNKNOWN;
#endif
#ifdef MON_1
/**
 * @var int
 * @cvalue MON_1
 */
const MON_1 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_2
 */
const MON_2 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_3
 */
const MON_3 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_4
 */
const MON_4 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_5
 */
const MON_5 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_6
 */
const MON_6 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_7
 */
const MON_7 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_8
 */
const MON_8 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_9
 */
const MON_9 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_10
 */
const MON_10 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_11
 */
const MON_11 = UNKNOWN;
/**
 * @var int
 * @cvalue MON_12
 */
const MON_12 = UNKNOWN;
#endif
#ifdef AM_STR
/**
 * @var int
 * @cvalue AM_STR
 */
const AM_STR = UNKNOWN;
#endif
#ifdef PM_STR
/**
 * @var int
 * @cvalue PM_STR
 */
const PM_STR = UNKNOWN;
#endif
#ifdef D_T_FMT
/**
 * @var int
 * @cvalue D_T_FMT
 */
const D_T_FMT = UNKNOWN;
#endif
#ifdef D_FMT
/**
 * @var int
 * @cvalue D_FMT
 */
const D_FMT = UNKNOWN;
#endif
#ifdef T_FMT
/**
 * @var int
 * @cvalue T_FMT
 */
const T_FMT = UNKNOWN;
#endif
#ifdef T_FMT_AMPM
/**
 * @var int
 * @cvalue T_FMT_AMPM
 */
const T_FMT_AMPM = UNKNOWN;
#endif
#ifdef ERA
/**
 * @var int
 * @cvalue ERA
 */
const ERA = UNKNOWN;
#endif
#ifdef ERA_YEAR
/**
 * @var int
 * @cvalue ERA_YEAR
 */
const ERA_YEAR = UNKNOWN;
#endif
#ifdef ERA_D_T_FMT
/**
 * @var int
 * @cvalue ERA_D_T_FMT
 */
const ERA_D_T_FMT = UNKNOWN;
#endif
#ifdef ERA_D_FMT
/**
 * @var int
 * @cvalue ERA_D_FMT
 */
const ERA_D_FMT = UNKNOWN;
#endif
#ifdef ERA_T_FMT
/**
 * @var int
 * @cvalue ERA_T_FMT
 */
const ERA_T_FMT = UNKNOWN;
#endif
#ifdef ALT_DIGITS
/**
 * @var int
 * @cvalue ALT_DIGITS
 */
const ALT_DIGITS = UNKNOWN;
#endif
#ifdef INT_CURR_SYMBOL
/**
 * @var int
 * @cvalue INT_CURR_SYMBOL
 */
const INT_CURR_SYMBOL = UNKNOWN;
#endif
#ifdef CURRENCY_SYMBOL
/**
 * @var int
 * @cvalue CURRENCY_SYMBOL
 */
const CURRENCY_SYMBOL = UNKNOWN;
#endif
#ifdef CRNCYSTR
/**
 * @var int
 * @cvalue CRNCYSTR
 */
const CRNCYSTR = UNKNOWN;
#endif
#ifdef MON_DECIMAL_POINT
/**
 * @var int
 * @cvalue MON_DECIMAL_POINT
 */
const MON_DECIMAL_POINT = UNKNOWN;
#endif
#ifdef MON_THOUSANDS_SEP
/**
 * @var int
 * @cvalue MON_THOUSANDS_SEP
 */
const MON_THOUSANDS_SEP = UNKNOWN;
#endif
#ifdef MON_GROUPING
/**
 * @var int
 * @cvalue MON_GROUPING
 */
const MON_GROUPING = UNKNOWN;
#endif
#ifdef POSITIVE_SIGN
/**
 * @var int
 * @cvalue POSITIVE_SIGN
 */
const POSITIVE_SIGN = UNKNOWN;
#endif
#ifdef NEGATIVE_SIGN
/**
 * @var int
 * @cvalue NEGATIVE_SIGN
 */
const NEGATIVE_SIGN = UNKNOWN;
#endif
#ifdef INT_FRAC_DIGITS
/**
 * @var int
 * @cvalue INT_FRAC_DIGITS
 */
const INT_FRAC_DIGITS = UNKNOWN;
#endif
#ifdef FRAC_DIGITS
/**
 * @var int
 * @cvalue FRAC_DIGITS
 */
const FRAC_DIGITS = UNKNOWN;
#endif
#ifdef P_CS_PRECEDES
/**
 * @var int
 * @cvalue P_CS_PRECEDES
 */
const P_CS_PRECEDES = UNKNOWN;
#endif
#ifdef P_SEP_BY_SPACE
/**
 * @var int
 * @cvalue P_SEP_BY_SPACE
 */
const P_SEP_BY_SPACE = UNKNOWN;
#endif
#ifdef N_CS_PRECEDES
/**
 * @var int
 * @cvalue N_CS_PRECEDES
 */
const N_CS_PRECEDES = UNKNOWN;
#endif
#ifdef N_SEP_BY_SPACE
/**
 * @var int
 * @cvalue N_SEP_BY_SPACE
 */
const N_SEP_BY_SPACE = UNKNOWN;
#endif
#ifdef P_SIGN_POSN
/**
 * @var int
 * @cvalue P_SIGN_POSN
 */
const P_SIGN_POSN = UNKNOWN;
#endif
#ifdef N_SIGN_POSN
/**
 * @var int
 * @cvalue N_SIGN_POSN
 */
const N_SIGN_POSN = UNKNOWN;
#endif
#ifdef DECIMAL_POINT
/**
 * @var int
 * @cvalue DECIMAL_POINT
 */
const DECIMAL_POINT = UNKNOWN;
#endif
#ifdef RADIXCHAR
/**
 * @var int
 * @cvalue RADIXCHAR
 */
const RADIXCHAR = UNKNOWN;
#endif
#ifdef THOUSANDS_SEP
/**
 * @var int
 * @cvalue THOUSANDS_SEP
 */
const THOUSANDS_SEP = UNKNOWN;
#endif
#ifdef THOUSEP
/**
 * @var int
 * @cvalue THOUSEP
 */
const THOUSEP = UNKNOWN;
#endif
#ifdef GROUPING
/**
 * @var int
 * @cvalue GROUPING
 */
const GROUPING = UNKNOWN;
#endif
#ifdef YESEXPR
/**
 * @var int
 * @cvalue YESEXPR
 */
const YESEXPR = UNKNOWN;
#endif
#ifdef NOEXPR
/**
 * @var int
 * @cvalue NOEXPR
 */
const NOEXPR = UNKNOWN;
#endif
#ifdef YESSTR
/**
 * @var int
 * @cvalue YESSTR
 */
const YESSTR = UNKNOWN;
#endif
#ifdef NOSTR
/**
 * @var int
 * @cvalue NOSTR
 */
const NOSTR = UNKNOWN;
#endif
#ifdef CODESET
/**
 * @var int
 * @cvalue CODESET
 */
const CODESET = UNKNOWN;
#endif
#endif

/** @undocumentable */
#[AllowDynamicProperties]
final class __PHP_Incomplete_Class
{
}

class AssertionError extends Error
{
}

/* main/main.c */

function set_time_limit(int $seconds): bool {}

/* main/SAPI.c */

function header_register_callback(callable $callback): bool {}

/* main/output.c */

/** @param callable|null $callback */
function ob_start($callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool {}

function ob_flush(): bool {}

function ob_clean(): bool {}

function ob_end_flush(): bool {}

function ob_end_clean(): bool {}

/** @refcount 1 */
function ob_get_flush(): string|false {}

/** @refcount 1 */
function ob_get_clean(): string|false {}

function ob_get_contents(): string|false {}

function ob_get_level(): int {}

function ob_get_length(): int|false {}

/**
 * @return array<int, string>
 * @refcount 1
 */
function ob_list_handlers(): array {}

/**
 * @return array<int|string, int|string|array>
 * @refcount 1
 */
function ob_get_status(bool $full_status = false): array {}

function ob_implicit_flush(bool $enable = true): void {}

function output_reset_rewrite_vars(): bool {}

function output_add_rewrite_var(string $name, string $value): bool {}

/* main/streams/userspace.c */

function stream_wrapper_register(string $protocol, string $class, int $flags = 0): bool {}

/** @alias stream_wrapper_register */
function stream_register_wrapper(string $protocol, string $class, int $flags = 0): bool {}

function stream_wrapper_unregister(string $protocol): bool {}

function stream_wrapper_restore(string $protocol): bool {}

/* array.c */

function array_push(array &$array, mixed ...$values): int {}

function krsort(array &$array, int $flags = SORT_REGULAR): true {}

function ksort(array &$array, int $flags = SORT_REGULAR): true {}

/** @compile-time-eval */
function count(Countable|array $value, int $mode = COUNT_NORMAL): int {}

/** @alias count */
function sizeof(Countable|array $value, int $mode = COUNT_NORMAL): int {}

function natsort(array &$array): true {}

function natcasesort(array &$array): true {}

function asort(array &$array, int $flags = SORT_REGULAR): true {}

function arsort(array &$array, int $flags = SORT_REGULAR): true {}

function sort(array &$array, int $flags = SORT_REGULAR): true {}

function rsort(array &$array, int $flags = SORT_REGULAR): true {}

function usort(array &$array, callable $callback): true {}

function uasort(array &$array, callable $callback): true {}

function uksort(array &$array, callable $callback): true {}

function end(array|object &$array): mixed {}

function prev(array|object &$array): mixed {}

function next(array|object &$array): mixed {}

function reset(array|object &$array): mixed {}

function current(array|object $array): mixed {}

/** @alias current */
function pos(array|object $array): mixed {}

function key(array|object $array): int|string|null {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 */
function min(mixed $value, mixed ...$values): mixed {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 */
function max(mixed $value, mixed ...$values): mixed {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 3}
 */
function clamp(mixed $value, mixed $min, mixed $max): mixed {}

function array_walk(array|object &$array, callable $callback, mixed $arg = UNKNOWN): true {}

function array_walk_recursive(array|object &$array, callable $callback, mixed $arg = UNKNOWN): true {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 * @frameless-function {"arity": 3}
 */
function in_array(mixed $needle, array $haystack, bool $strict = false): bool {}

/**
 * @compile-time-eval
 */
function array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false {}

/**
 * @prefer-ref $array
 * @forbid-dynamic-calls
 */
function extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int {}

/**
 * @param array|string $var_name
 * @param array|string $var_names
 * @return array<string, mixed|ref>
 * @refcount 1
 * @forbid-dynamic-calls
 */
function compact($var_name, ...$var_names): array {}

/** @return array<int, mixed> */
function array_fill(int $start_index, int $count, mixed $value): array {}

/** @refcount 1 */
function array_fill_keys(array $keys, mixed $value): array {}

function range(string|int|float $start, string|int|float $end, int|float $step = 1): array {}

function shuffle(array &$array): true {}

function array_pop(array &$array): mixed {}

function array_shift(array &$array): mixed {}

function array_unshift(array &$array, mixed ...$values): int {}

function array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array {}

/**
 * @compile-time-eval
 */
function array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array {}

/**
 * @compile-time-eval
 */
function array_merge(array ...$arrays): array {}

/**
 * @compile-time-eval
 */
function array_merge_recursive(array ...$arrays): array {}

/**
 * @compile-time-eval
 */
function array_replace(array $array, array ...$replacements): array {}

/**
 * @compile-time-eval
 */
function array_replace_recursive(array $array, array ...$replacements): array {}

/**
 * @return array<int, int|string>
 * @compile-time-eval
 */
function array_keys(array $array, mixed $filter_value = UNKNOWN, bool $strict = false): array {}

/**
 * @compile-time-eval
 */
function array_key_first(array $array): int|string|null {}

/**
 * @compile-time-eval
 */
function array_key_last(array $array): int|string|null {}

/**
 * @compile-time-eval
 */
function array_first(array $array): mixed {}

/**
 * @compile-time-eval
 */
function array_last(array $array): mixed {}

/**
 * @return array<int, mixed|ref>
 * @compile-time-eval
 */
function array_values(array $array): array {}

/**
 * @return array<int|string, int>
 * @compile-time-eval
 * @refcount 1
 */
function array_count_values(array $array): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_reverse(array $array, bool $preserve_keys = false): array {}

function array_pad(array $array, int $length, mixed $value): array {}

/**
 * @return array<int|string, int|string>
 * @compile-time-eval
 * @refcount 1
 */
function array_flip(array $array): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_change_key_case(array $array, int $case = CASE_LOWER): array {}

/**
 * @compile-time-eval
 */
function array_unique(array $array, int $flags = SORT_STRING): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_intersect_key(array $array, array ...$arrays): array {}

/**
 * @param array|callable $rest
 */
function array_intersect_ukey(array $array, ...$rest): array {}

/**
 * @compile-time-eval
 */
function array_intersect(array $array, array ...$arrays): array {}

/**
 * @param array|callable $rest
 */
function array_uintersect(array $array, ...$rest): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_intersect_assoc(array $array, array ...$arrays): array {}

/**
 * @param array|callable $rest
 * @refcount 1
 */
function array_uintersect_assoc(array $array, ...$rest): array {}

/**
 * @param array|callable $rest
 */
function array_intersect_uassoc(array $array, ...$rest): array {}

/**
 * @param array|callable $rest
 */
function array_uintersect_uassoc(array $array, ...$rest): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_diff_key(array $array, array ...$arrays): array {}

/**
 * @param array|callable $rest
 * @refcount 1
 */
function array_diff_ukey(array $array, ...$rest): array {}

/**
 * @compile-time-eval
 */
function array_diff(array $array, array ...$arrays): array {}

/**
 * @param array|callable $rest
 * @refcount 1
 */
function array_udiff(array $array, ...$rest): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function array_diff_assoc(array $array, array ...$arrays): array {}

/**
 * @param array|callable $rest
 * @refcount 1
 */
function array_diff_uassoc(array $array, ...$rest): array {}

/**
 * @param array|callable $rest
 * @refcount 1
 */
function array_udiff_assoc(array $array, ...$rest): array {}

/**
 * @param array|callable $rest
 * @refcount 1
 */
function array_udiff_uassoc(array $array, ...$rest): array {}

/**
 * @param array $array
 * @param array|int $rest
 * @prefer-ref $array
 * @prefer-ref $rest
 */
function array_multisort(&$array, &...$rest): true {}

/** @return int|string|array<int, int|string> */
function array_rand(array $array, int $num = 1): int|string|array {}

/**
 * @compile-time-eval
 */
function array_sum(array $array): int|float {}

/**
 * @compile-time-eval
 */
function array_product(array $array): int|float {}

function array_reduce(array $array, callable $callback, mixed $initial = null): mixed {}

function array_filter(array $array, ?callable $callback = null, int $mode = ARRAY_FILTER_USE_VALUE): array {}

function array_find(array $array, callable $callback): mixed {}

function array_find_key(array $array, callable $callback): mixed {}

function array_any(array $array, callable $callback): bool {}

function array_all(array $array, callable $callback): bool {}

function array_map(?callable $callback, array $array, array ...$arrays): array {}

/**
 * @param string|int $key
 * @compile-time-eval
 */
function array_key_exists($key, array $array): bool {}

/**
 * @param string|int $key
 * @alias array_key_exists
 */
function key_exists($key, array $array): bool {}

/**
 * @compile-time-eval
 */
function array_chunk(array $array, int $length, bool $preserve_keys = false): array {}

/**
 * @compile-time-eval
 */
function array_combine(array $keys, array $values): array {}

/** @compile-time-eval */
function array_is_list(array $array): bool {}

/* base64.c */

/**
 * @compile-time-eval
 * @refcount 1
 */
function base64_encode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function base64_decode(string $string, bool $strict = false): string|false {}

/* basic_functions.c */

function constant(string $name): mixed {}

function ip2long(string $ip): int|false {}

/** @refcount 1 */
function long2ip(int $ip): string {}

/**
 * @return string|array<string, string>|false
 * @refcount 1
 */
function getenv(?string $name = null, bool $local_only = false): string|array|false {}

#ifdef HAVE_PUTENV
function putenv(string $assignment): bool {}
#endif

/**
 * @param int $rest_index
 * @return array<int|string, string|array|false>|false
 * @refcount 1
 */
function getopt(string $short_options, array $long_options = [], &$rest_index = null): array|false {}

function flush(): void {}

function sleep(int $seconds): int {}

function usleep(int $microseconds): void {}

#ifdef HAVE_NANOSLEEP
/**
 * @return array<string, int>|bool
 * @refcount 1
 */
function time_nanosleep(int $seconds, int $nanoseconds): array|bool {}

function time_sleep_until(float $timestamp): bool {}
#endif

/** @refcount 1 */
function get_current_user(): string {}

/** @return string|array<int|string, string|array>|false */
function get_cfg_var(string $option): string|array|false {}

function error_log(string $message, int $message_type = 0, ?string $destination = null, ?string $additional_headers = null): bool {}

/**
 * @return array<string, int|string|array>|null
 * @refcount 1
 */
function error_get_last(): ?array {}

function error_clear_last(): void {}

function call_user_func(callable $callback, mixed ...$args): mixed {}

function call_user_func_array(callable $callback, array $args): mixed {}

function forward_static_call(callable $callback, mixed ...$args): mixed {}

function forward_static_call_array(callable $callback, array $args): mixed {}

function register_shutdown_function(callable $callback, mixed ...$args): void {}

/** @refcount 1 */
function highlight_file(string $filename, bool $return = false): string|bool {}

/** @alias highlight_file */
function show_source(string $filename, bool $return = false): string|bool {}

/** @refcount 1 */
function php_strip_whitespace(string $filename): string {}

/** @refcount 1 */
function highlight_string(string $string, bool $return = false): string|true {}

function ini_get(string $option): string|false {}

/**
 * @return array<string, string|array|null>|false
 * @refcount 1
 */
function ini_get_all(?string $extension = null, bool $details = true): array|false {}

function ini_set(string $option, string|int|float|bool|null $value): string|false {}

/** @alias ini_set */
function ini_alter(string $option, string|int|float|bool|null $value): string|false {}

function ini_restore(string $option): void {}

function ini_parse_quantity(string $shorthand): int {}

/** @refcount 1 */
function set_include_path(string $include_path): string|false {}

function get_include_path(): string|false {}

/** @refcount 1 */
function print_r(mixed $value, bool $return = false): string|true {}

function connection_aborted(): int {}

function connection_status(): int {}

function ignore_user_abort(?bool $enable = null): int {}

#ifdef HAVE_GETSERVBYNAME
function getservbyname(string $service, string $protocol): int|false {}
#endif

#ifdef HAVE_GETSERVBYPORT
/** @refcount 1 */
function getservbyport(int $port, string $protocol): string|false {}
#endif

#ifdef HAVE_GETPROTOBYNAME
function getprotobyname(string $protocol): int|false {}
#endif

#ifdef HAVE_GETPROTOBYNUMBER
/** @refcount 1 */
function getprotobynumber(int $protocol): string|false {}
#endif

function register_tick_function(callable $callback, mixed ...$args): bool {}

function unregister_tick_function(callable $callback): void {}

function is_uploaded_file(string $filename): bool {}

function move_uploaded_file(string $from, string $to): bool {}

/**
 * @return array<int|string, bool|int|float|string|array|null>|false
 * @refcount 1
 */
function parse_ini_file(string $filename, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array|false {}

/**
 * @return array<int|string, bool|int|float|string|array|null>|false
 * @compile-time-eval
 * @refcount 1
 */
function parse_ini_string(string $ini_string, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array|false {}

#if ZEND_DEBUG
/**
 * @return array<string, string|array>
 * @refcount 1
 */
function config_get_hash(): array {}
#endif

#ifdef HAVE_GETLOADAVG
/**
 * @return array<int, float>|false
 * @refcount 1
 */
function sys_getloadavg(): array|false {}
#endif

/* browscap.c */

/**
 * @return object|array<string, mixed>|false
 * @refcount 1
 */
function get_browser(?string $user_agent = null, bool $return_array = false): object|array|false {}

/* crc32.c */

/** @compile-time-eval */
function crc32(string $string): int {}

/* crypt.c */

/** @refcount 1 */
function crypt(#[\SensitiveParameter] string $string, string $salt): string {}

/* datetime.c */

#ifdef HAVE_STRPTIME
/**
 * @return array<string, int|string>|false
 * @refcount 1
 */
#[\Deprecated(since: '8.2', message: 'use date_parse_from_format() (for locale-independent parsing), or IntlDateFormatter::parse() (for locale-dependent parsing) instead')]
function strptime(string $timestamp, string $format): array|false {}
#endif

/* dns.c */

#ifdef HAVE_GETHOSTNAME
/** @refcount 1 */
function gethostname(): string|false {}
#endif

/** @refcount 1 */
function gethostbyaddr(string $ip): string|false {}

/** @refcount 1 */
function gethostbyname(string $hostname): string {}

/**
 * @return array<int, string>|false
 * @refcount 1
 */
function gethostbynamel(string $hostname): array|false {}

#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC))
function dns_check_record(string $hostname, string $type = "MX"): bool {}

/** @alias dns_check_record */
function checkdnsrr(string $hostname, string $type = "MX"): bool {}

/**
 * @param array $authoritative_name_servers
 * @param array $additional_records
 * @return array<int, array>|false
 * @refcount 1
 */
function dns_get_record(string $hostname, int $type = DNS_ANY, &$authoritative_name_servers = null, &$additional_records = null, bool $raw = false): array|false {}

/**
 * @param array $hosts
 * @param array $weights
 */
function dns_get_mx(string $hostname, &$hosts, &$weights = null): bool {}

/**
 * @param array $hosts
 * @param array $weights
 * @alias dns_get_mx
 */
function getmxrr(string $hostname, &$hosts, &$weights = null): bool {}
#endif

/* net.c */

#if (defined(PHP_WIN32) || defined(HAVE_GETIFADDRS) || defined(__PASE__))
function net_get_interfaces(): array|false {}
#endif

/* ftok.c */

#ifdef HAVE_FTOK
function ftok(string $filename, string $project_id): int {}
#endif

/* hrtime.c */

function hrtime(bool $as_number = false): array|int|float|false {}

/* md5.c */

/** @refcount 1 */
function md5(string $string, bool $binary = false): string {}

/** @refcount 1 */
function md5_file(string $filename, bool $binary = false): string|false {}

/* pageinfo.c */

function getmyuid(): int|false {}

function getmygid(): int|false {}

function getmypid(): int|false {}

function getmyinode(): int|false {}

function getlastmod(): int|false {}

/* sha1.c */

/** @refcount 1 */
function sha1(string $string, bool $binary = false): string {}

/** @refcount 1 */
function sha1_file(string $filename, bool $binary = false): string|false {}

/* syslog.c */

#ifdef HAVE_SYSLOG_H
function openlog(string $prefix, int $flags, int $facility): true {}

function closelog(): true {}

function syslog(int $priority, string $message): true {}
#endif

/** @refcount 1 */
function inet_ntop(string $ip): string|false {}

/** @refcount 1 */
function inet_pton(string $ip): string|false {}

/* metaphone.c */

/** @refcount 1 */
function metaphone(string $string, int $max_phonemes = 0): string {}

/* {{{ head.c */
function header(string $header, bool $replace = true, int $response_code = 0): void {}

function header_remove(?string $name = null): void {}

function setrawcookie(string $name, string $value = "", array|int $expires_or_options = 0, string $path = "", string $domain = "", bool $secure = false, bool $httponly = false): bool {}

function setcookie(string $name, string $value = "", array|int $expires_or_options = 0, string $path = "", string $domain = "", bool $secure = false, bool $httponly = false): bool {}

function http_response_code(int $response_code = 0): int|bool {}

/**
 * @param string $filename
 * @param int $line
 */
function headers_sent(&$filename = null, &$line = null): bool {}

/**
 * @return array<int, string>
 * @refcount 1
 */
function headers_list(): array {}

/* {{{ html.c */

/** @refcount 1 */
function htmlspecialchars(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $encoding = null, bool $double_encode = true): string {}

function htmlspecialchars_decode(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401): string {}

function html_entity_decode(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $encoding = null): string {}

/** @refcount 1 */
function htmlentities(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $encoding = null, bool $double_encode = true): string {}

/**
 * @return array<string, string>
 * @refcount 1
 */
function get_html_translation_table(int $table = HTML_SPECIALCHARS, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, string $encoding = "UTF-8"): array {}

/* }}} */

/* assert.c */

function assert(mixed $assertion, Throwable|string|null $description = null): bool {}

#[\Deprecated(since: '8.3')]
function assert_options(int $option, mixed $value = UNKNOWN): mixed {}

/* string.c */

/**
 * @compile-time-eval
 * @refcount 1
 */
function bin2hex(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function hex2bin(string $string): string|false {}

/**
 * @compile-time-eval
 */
function strspn(string $string, string $characters, int $offset = 0, ?int $length = null): int {}

/**
 * @compile-time-eval
 */
function strcspn(string $string, string $characters, int $offset = 0, ?int $length = null): int {}

#ifdef HAVE_NL_LANGINFO
/** @refcount 1 */
function nl_langinfo(int $item): string|false {}
#endif

function strcoll(string $string1, string $string2): int {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 1}
 * @frameless-function {"arity": 2}
 */
function trim(string $string, string $characters = " \f\n\r\t\v\0"): string {}

/** @compile-time-eval */
function rtrim(string $string, string $characters = " \f\n\r\t\v\0"): string {}

/** @alias rtrim */
function chop(string $string, string $characters = " \f\n\r\t\v\0"): string {}

/** @compile-time-eval */
function ltrim(string $string, string $characters = " \f\n\r\t\v\0"): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function wordwrap(string $string, int $width = 75, string $break = "\n", bool $cut_long_words = false): string {}

/**
 * @return array<int, string>
 * @compile-time-eval
 * @refcount 1
 */
function explode(string $separator, string $string, int $limit = PHP_INT_MAX): array {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 1}
 * @frameless-function {"arity": 2}
 */
function implode(string|array $separator, ?array $array = null): string {}

/** @alias implode */
function join(string|array $separator, ?array $array = null): string {}

/**
 * @refcount 1
 */
function strtok(string $string, ?string $token = null): string|false {}

/** @compile-time-eval */
function strtoupper(string $string): string {}

/** @compile-time-eval */
function strtolower(string $string): string {}

function str_increment(string $string): string {}

function str_decrement(string $string): string {}

/** @refcount 1 */
function basename(string $path, string $suffix = ""): string {}

/**
 * @refcount 1
 * @frameless-function {"arity": 1}
 * @frameless-function {"arity": 2}
 */
function dirname(string $path, int $levels = 1): string {}

/**
 * @return array<string, string>|string
 * @refcount 1
 */
function pathinfo(string $path, int $flags = PATHINFO_ALL): array|string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function stristr(string $haystack, string $needle, bool $before_needle = false): string|false {}

/**
 * @compile-time-eval
 * @refcount 1
 * @frameless-function {"arity": 2}
 * @frameless-function {"arity": 3}
 */
function strstr(string $haystack, string $needle, bool $before_needle = false): string|false {}

/** @alias strstr */
function strchr(string $haystack, string $needle, bool $before_needle = false): string|false {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 * @frameless-function {"arity": 3}
 */
function strpos(string $haystack, string $needle, int $offset = 0): int|false {}

/** @compile-time-eval */
function stripos(string $haystack, string $needle, int $offset = 0): int|false {}

/** @compile-time-eval */
function strrpos(string $haystack, string $needle, int $offset = 0): int|false {}

/** @compile-time-eval */
function strripos(string $haystack, string $needle, int $offset = 0): int|false {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function strrchr(string $haystack, string $needle, bool $before_needle = false): string|false {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 */
function str_contains(string $haystack, string $needle): bool {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 */
function str_starts_with(string $haystack, string $needle): bool {}

/** @compile-time-eval */
function str_ends_with(string $haystack, string $needle): bool {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function chunk_split(string $string, int $length = 76, string $separator = "\r\n"): string {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 * @frameless-function {"arity": 3}
 */
function substr(string $string, int $offset, ?int $length = null): string {}

/**
 * @return string|array<int|string, string>
 * @compile-time-eval
 */
function substr_replace(array|string $string, array|string $replace, array|int $offset, array|int|null $length = null): string|array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function quotemeta(string $string): string {}

/** @compile-time-eval */
function ord(string $character): int {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function chr(int $codepoint): string {}

/** @compile-time-eval */
function ucfirst(string $string): string {}

/** @compile-time-eval */
function lcfirst(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function ucwords(string $string, string $separators = " \t\r\n\f\v"): string {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 2}
 * @frameless-function {"arity": 3}
 */
function strtr(string $string, string|array $from, ?string $to = null): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function strrev(string $string): string {}

/** @param float $percent */
function similar_text(string $string1, string $string2, &$percent = null): int {}

/**
 * @compile-time-eval
 */
function addcslashes(string $string, string $characters): string {}

/**
 * @compile-time-eval
 */
function addslashes(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function stripcslashes(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function stripslashes(string $string): string {}

/**
 * @param int $count
 * @return string|array<int|string, string>
 * @compile-time-eval
 * @frameless-function {"arity": 3}
 */
function str_replace(array|string $search, array|string $replace, string|array $subject, &$count = null): string|array {}

/**
 * @param int $count
 * @return string|array<int|string, string>
 * @compile-time-eval
 */
function str_ireplace(array|string $search, array|string $replace, string|array $subject, &$count = null): string|array {}

/** @refcount 1 */
function hebrev(string $string, int $max_chars_per_line = 0): string {}

/**
 * @compile-time-eval
 */
function nl2br(string $string, bool $use_xhtml = true): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function strip_tags(string $string, array|string|null $allowed_tags = null): string {}

/**
 * @param array|string|null $locales
 * @param string|null $rest
 */
function setlocale(int $category, $locales, ...$rest): string|false {}

/** @param array $result */
function parse_str(string $string, &$result): void {}

/**
 * @return array<int, string|null>
 * @refcount 1
 */
function str_getcsv(string $string, string $separator = ",", string $enclosure = "\"", string $escape = "\\"): array {}

/** @refcount 1 */
function str_repeat(string $string, int $times): string {}

/**
 * @return array<int, int>|string
 * @compile-time-eval
 * @refcount 1
 */
function count_chars(string $string, int $mode = 0): array|string {}

function strnatcmp(string $string1, string $string2): int {}

/**
 * @return array<string, int|string|array>
 * @refcount 1
 */
function localeconv(): array {}

function strnatcasecmp(string $string1, string $string2): int {}

/**
 * @compile-time-eval
 */
function substr_count(string $haystack, string $needle, int $offset = 0, ?int $length = null): int {}

function str_pad(string $string, int $length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string {}

/**
 * @return array<int, mixed>|int|null
 * @refcount 1
 */
function sscanf(string $string, string $format, mixed &...$vars): array|int|null {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function str_rot13(string $string): string {}

/** @refcount 1 */
function str_shuffle(string $string): string {}

/**
 * @return array<int, string>|int
 * @refcount 1
 */
function str_word_count(string $string, int $format = 0, ?string $characters = null): array|int {}

/**
 * @return array<int, string>
 * @compile-time-eval
 */
function str_split(string $string, int $length = 1): array {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function strpbrk(string $string, string $characters): string|false {}

/**
 * @compile-time-eval
 */
function substr_compare(string $haystack, string $needle, int $offset, ?int $length = null, bool $case_insensitive = false): int {}

/**
 * @compile-time-eval
 * @refcount 1
 */
#[\Deprecated(since: '8.2', message: 'visit the php.net documentation for various alternatives')]
function utf8_encode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
#[\Deprecated(since: '8.2', message: 'visit the php.net documentation for various alternatives')]
function utf8_decode(string $string): string {}

/* dir.c */

/**
 * @param resource|null $context
 * @return resource|false
 */
function opendir(string $directory, $context = null) {}

/**
 * @param resource|null $context
 * @refcount 1
 */
function dir(string $directory, $context = null): Directory|false {}

/** @param resource|null $dir_handle */
function closedir($dir_handle = null): void {}

function chdir(string $directory): bool {}

#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC))
function chroot(string $directory): bool {}
#endif

/** @refcount 1 */
function getcwd(): string|false {}

/** @param resource|null $dir_handle */
function rewinddir($dir_handle = null): void {}

/**
 * @param resource|null $dir_handle
 * @refcount 1
 */
function readdir($dir_handle = null): string|false {}

/**
 * @param resource|null $context
 * @return array<int, string>|false
 * @refcount 1
 */
function scandir(string $directory, int $sorting_order = SCANDIR_SORT_ASCENDING, $context = null): array|false {}

/**
 * @return array<int, string>|false
 */
function glob(string $pattern, int $flags = 0): array|false {}

/* exec.c */

/**
 * @param array $output
 * @param int $result_code
 * @refcount 1
 */
function exec(string $command, &$output = null, &$result_code = null): string|false {}

/**
 * @param int $result_code
 * @refcount 1
 */
function system(string $command, &$result_code = null): string|false {}

/** @param int $result_code */
function passthru(string $command, &$result_code = null): false|null {}

/** @refcount 1 */
function escapeshellcmd(string $command): string {}

/** @refcount 1 */
function escapeshellarg(string $arg): string {}

/** @refcount 1 */
function shell_exec(string $command): string|false|null {}

#ifdef HAVE_NICE
function proc_nice(int $priority): bool {}
#endif

/* file.c */

/**
 * @param resource $stream
 * @param int $would_block
 */
function flock($stream, int $operation, &$would_block = null): bool {}

/**
 * @return array<string, string>|false
 * @refcount 1
 */
function get_meta_tags(string $filename, bool $use_include_path = false): array|false {}

/** @param resource $handle */
function pclose($handle): int {}

/**
 * @return resource|false
 * @refcount 1
 */
function popen(string $command, string $mode) {}

/** @param resource|null $context */
function readfile(string $filename, bool $use_include_path = false, $context = null): int|false {}

/** @param resource $stream */
function rewind($stream): bool {}

/** @param resource|null $context */
function rmdir(string $directory, $context = null): bool {}

function umask(?int $mask = null): int {}

/** @param resource $stream */
function fclose($stream): bool {}

/** @param resource $stream */
function feof($stream): bool {}

/** @param resource $stream */
function fgetc($stream): string|false {}

/**
 * @param resource $stream
 * @refcount 1
 */
function fgets($stream, ?int $length = null): string|false {}

/**
 * @param resource $stream
 * @refcount 1
 */
function fread($stream, int $length): string|false {}

/**
 * @param resource|null $context
 * @return resource|false
 * @refcount 1
 */
function fopen(string $filename, string $mode, bool $use_include_path = false, $context = null) {}

/**
 * @param resource $stream
 * @return array<int, mixed>|int|false|null
 * @refcount 1
 */
function fscanf($stream, string $format, mixed &...$vars): array|int|false|null {}

/** @param resource $stream */
function fpassthru($stream): int {}

/** @param resource $stream */
function ftruncate($stream, int $size): bool {}

/**
 * @param resource $stream
 * @return array<int|string, int>|false
 * @refcount 1
 */
function fstat($stream): array|false {}

/** @param resource $stream */
function fseek($stream, int $offset, int $whence = SEEK_SET): int {}

/** @param resource $stream */
function ftell($stream): int|false {}

/** @param resource $stream */
function fflush($stream): bool {}

/** @param resource $stream */
function fsync($stream): bool {}

/** @param resource $stream */
function fdatasync($stream): bool {}

/** @param resource $stream */
function fwrite($stream, string $data, ?int $length = null): int|false {}

/**
 * @param resource $stream
 * @alias fwrite
 */
function fputs($stream, string $data, ?int $length = null): int|false {}

/** @param resource|null $context */
function mkdir(string $directory, int $permissions = 0777, bool $recursive = false, $context = null): bool {}

/** @param resource|null $context */
function rename(string $from, string $to, $context = null): bool {}

/** @param resource|null $context */
function copy(string $from, string $to, $context = null): bool {}

/** @refcount 1 */
function tempnam(string $directory, string $prefix): string|false {}

/**
 * @return resource|false
 * @refcount 1
 */
function tmpfile() {}

/**
 * @param resource|null $context
 * @return array<int, string>|false
 * @refcount 1
 */
function file(string $filename, int $flags = 0, $context = null): array|false {}

/**
 * @param resource|null $context
 * @refcount 1
 */
function file_get_contents(string $filename, bool $use_include_path = false, $context = null, int $offset = 0, ?int $length = null): string|false {}

/** @param resource|null $context */
function unlink(string $filename, $context = null): bool {}

/** @param resource|null $context */
function file_put_contents(string $filename, mixed $data, int $flags = 0, $context = null): int|false {}

/** @param resource $stream */
function fputcsv($stream, array $fields, string $separator = ",", string $enclosure = "\"", string $escape = "\\", string $eol = "\n"): int|false {}

/**
 * @param resource $stream
 * @return array<int, string|null>|false
 * @refcount 1
 */
function fgetcsv($stream, ?int $length = null, string $separator = ",", string $enclosure = "\"", string $escape = "\\"): array|false {}

/** @refcount 1 */
function realpath(string $path): string|false {}

#ifdef HAVE_FNMATCH
function fnmatch(string $pattern, string $filename, int $flags = 0): bool {}
#endif

/** @refcount 1 */
function sys_get_temp_dir(): string {}

/* filestat.c */

function fileatime(string $filename): int|false {}

function filectime(string $filename): int|false {}

function filegroup(string $filename): int|false {}

function fileinode(string $filename): int|false {}

function filemtime(string $filename): int|false {}

function fileowner(string $filename): int|false {}

function fileperms(string $filename): int|false {}

function filesize(string $filename): int|false {}

/** @refcount 1 */
function filetype(string $filename): string|false {}

function file_exists(string $filename): bool {}

function is_writable(string $filename): bool {}

/** @alias is_writable */
function is_writeable(string $filename): bool {}

function is_readable(string $filename): bool {}

function is_executable(string $filename): bool {}

function is_file(string $filename): bool {}

function is_dir(string $filename): bool {}

function is_link(string $filename): bool {}

/**
 * @return array<int|string, bool|int|string>|false
 * @refcount 1
 */
function stat(string $filename): array|false {}

/**
 * @return array<int|string, bool|int|string>|false
 * @refcount 1
 */
function lstat(string $filename): array|false {}

function chown(string $filename, string|int $user): bool {}

function chgrp(string $filename, string|int $group): bool {}

#ifdef HAVE_LCHOWN
function lchown(string $filename, string|int $user): bool {}

function lchgrp(string $filename, string|int $group): bool {}
#endif

function chmod(string $filename, int $permissions): bool {}

#ifdef HAVE_UTIME
function touch(string $filename, ?int $mtime = null, ?int $atime = null): bool {}
#endif

function clearstatcache(bool $clear_realpath_cache = false, string $filename = ""): void {}

function disk_total_space(string $directory): float|false {}

function disk_free_space(string $directory): float|false {}

/** @alias disk_free_space */
function diskfreespace(string $directory): float|false {}

/**
 * @return array<string, array>
 * @refcount 1
 */
function realpath_cache_get(): array {}

function realpath_cache_size(): int {}

/* formatted_print.c */

/** @refcount 1 */
function sprintf(string $format, mixed ...$values): string {}

function printf(string $format, mixed ...$values): int {}

function vprintf(string $format, array $values): int {}

/** @refcount 1 */
function vsprintf(string $format, array $values): string {}

/** @param resource $stream */
function fprintf($stream, string $format, mixed ...$values): int {}

/** @param resource $stream */
function vfprintf($stream, string $format, array $values): int {}

/* fsock.c */

/**
 * @param int $error_code
 * @param string $error_message
 * @return resource|false
 * @refcount 1
 */
function fsockopen(string $hostname, int $port = -1, &$error_code = null, &$error_message = null, ?float $timeout = null) {}

/**
 * @param int $error_code
 * @param string $error_message
 * @return resource|false
 */
function pfsockopen(string $hostname, int $port = -1, &$error_code = null, &$error_message = null, ?float $timeout = null) {}

/* http.c */

/** @refcount 1 */
function http_build_query(array|object $data, string $numeric_prefix = "", ?string $arg_separator = null, int $encoding_type = PHP_QUERY_RFC1738): string {}

function http_get_last_response_headers(): ?array {}

function http_clear_last_response_headers(): void {}

/**
 * @param array|null $options
 * @return array<int, array>
 * @refcount 1
 */
function request_parse_body(?array $options = null): array {}

/* image.c */

/**
 * @compile-time-eval
 * @refcount 1
 */
function image_type_to_mime_type(int $image_type): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function image_type_to_extension(int $image_type, bool $include_dot = true): string|false {}

/**
 * @param array $image_info
 * @return array<int|string, int|string>|false
 * @refcount 1
 */
function getimagesize(string $filename, &$image_info = null): array|false {}

/**
 * @param array $image_info
 * @return array<int|string, int|string>|false
 * @refcount 1
 */
function getimagesizefromstring(string $string, &$image_info = null): array|false {}

/* info.c */

function phpinfo(int $flags = INFO_ALL): true {} // make return type void

/**
 * @compile-time-eval
 * @refcount 1
 */
function phpversion(?string $extension = null): string|false {}

function phpcredits(int $flags = CREDITS_ALL): true {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function php_sapi_name(): string|false {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function php_uname(string $mode = "a"): string {}

/** @refcount 1 */
function php_ini_scanned_files(): string|false {}

/** @refcount 1 */
function php_ini_loaded_file(): string|false {}

/* iptc.c */

/** @refcount 1 */
function iptcembed(string $iptc_data, string $filename, int $spool = 0): string|bool {}

/**
 * @return array<string, array>|false
 * @refcount 1
 */
function iptcparse(string $iptc_block): array|false {}

/* levenshtein.c */

function levenshtein(string $string1, string $string2, int $insertion_cost = 1, int $replacement_cost = 1, int $deletion_cost = 1): int {}

/* link.c */

#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32))
/** @refcount 1 */
function readlink(string $path): string|false {}

function linkinfo(string $path): int|false {}

function symlink(string $target, string $link): bool {}

function link(string $target, string $link): bool {}
#endif

/* mail.c */

function mail(string $to, string $subject, string $message, array|string $additional_headers = [], string $additional_params = ""): bool {}

/* math.c */

/** @compile-time-eval */
function abs(int|float $num): int|float {}

/** @compile-time-eval */
function ceil(int|float $num): float {}

/** @compile-time-eval */
function floor(int|float $num): float {}

enum RoundingMode {
    case HalfAwayFromZero;
    case HalfTowardsZero;
    case HalfEven;
    case HalfOdd;
    case TowardsZero;
    case AwayFromZero;
    case NegativeInfinity;
    case PositiveInfinity;
}

/** @compile-time-eval */
function round(int|float $num, int $precision = 0, int|RoundingMode $mode = RoundingMode::HalfAwayFromZero): float {}

/** @compile-time-eval */
function sin(float $num): float {}

/** @compile-time-eval */
function cos(float $num): float {}

/** @compile-time-eval */
function tan(float $num): float {}

/** @compile-time-eval */
function asin(float $num): float {}

/** @compile-time-eval */
function acos(float $num): float {}

/** @compile-time-eval */
function atan(float $num): float {}

/** @compile-time-eval */
function atanh(float $num): float {}

/** @compile-time-eval */
function atan2(float $y, float $x): float {}

/** @compile-time-eval */
function sinh(float $num): float {}

/** @compile-time-eval */
function cosh(float $num): float {}

/** @compile-time-eval */
function tanh(float $num): float {}

/** @compile-time-eval */
function asinh(float $num): float {}

/** @compile-time-eval */
function acosh(float $num): float {}

/** @compile-time-eval */
function expm1(float $num): float {}

/** @compile-time-eval */
function log1p(float $num): float {}

/** @compile-time-eval */
function pi(): float {}

/** @compile-time-eval */
function is_finite(float $num): bool {}

/** @compile-time-eval */
function is_nan(float $num): bool {}

/** @compile-time-eval */
function intdiv(int $num1, int $num2): int {}

/** @compile-time-eval */
function is_infinite(float $num): bool {}

/** @compile-time-eval */
function pow(mixed $num, mixed $exponent): int|float|object {}

/** @compile-time-eval */
function exp(float $num): float {}

/** @compile-time-eval */
function log(float $num, float $base = M_E): float {}

/** @compile-time-eval */
function log10(float $num): float {}

/** @compile-time-eval */
function sqrt(float $num): float {}

/** @compile-time-eval */
function hypot(float $x, float $y): float {}

/** @compile-time-eval */
function deg2rad(float $num): float {}

/** @compile-time-eval */
function rad2deg(float $num): float {}

/** @compile-time-eval */
function bindec(string $binary_string): int|float {}

/** @compile-time-eval */
function hexdec(string $hex_string): int|float {}

/** @compile-time-eval */
function octdec(string $octal_string): int|float {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function decbin(int $num): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function decoct(int $num): string {}

/**
 * @compile-time-eval
 * @refcount 1
 * @frameless-function {"arity": 1}
 */
function dechex(int $num): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function base_convert(string $num, int $from_base, int $to_base): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function number_format(float $num, int $decimals = 0, ?string $decimal_separator = ".", ?string $thousands_separator = ","): string {}

/**
 * @compile-time-eval
 */
function fmod(float $num1, float $num2): float {}

/**
 * @compile-time-eval
 */
function fdiv(float $num1, float $num2): float {}

/**
 * @compile-time-eval
 */
function fpow(float $num, float $exponent): float {}

/* microtime.c */

#ifdef HAVE_GETTIMEOFDAY
/** @refcount 1 */
function microtime(bool $as_float = false): string|float {}

/**
 * @return array<string, int>|float
 * @refcount 1
 */
function gettimeofday(bool $as_float = false): array|float {}
#endif

#ifdef HAVE_GETRUSAGE
/**
 * @return array<string, int>|false
 * @refcount 1
 */
function getrusage(int $mode = 0): array|false {}
#endif

/* pack.c */

/**
 * @compile-time-eval
 * @refcount 1
 */
function pack(string $format, mixed ...$values): string {}

/**
 * @return array<int|string, mixed>|false
 * @compile-time-eval
 * @refcount 1
 */
function unpack(string $format, string $string, int $offset = 0): array|false {}

/* password.c */

/**
 * @return array<string, string|array|null>
 * @refcount 1
 */
function password_get_info(string $hash): array {}

/**
 * @refcount 1
 */
function password_hash(#[\SensitiveParameter] string $password, string|int|null $algo, array $options = []): string {}

function password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool {}

function password_verify(#[\SensitiveParameter] string $password, string $hash): bool {}

/**
 * @compile-time-eval
 */
function password_algos(): array {}

/* proc_open.c */

#ifdef PHP_CAN_SUPPORT_PROC_OPEN
/**
 * @param array $pipes
 * @return resource|false
 * @refcount 1
 */
function proc_open(array|string $command, array $descriptor_spec, &$pipes, ?string $cwd = null, ?array $env_vars = null, ?array $options = null) {}

/** @param resource $process */
function proc_close($process): int {}

/** @param resource $process */
function proc_terminate($process, int $signal = 15): bool {}

/**
 * @param resource $process
 * @return array<string, bool|int|string>
 * @refcount 1
 */
function proc_get_status($process): array {}
#endif

/* quot_print.c */

/**
 * @compile-time-eval
 * @refcount 1
 */
function quoted_printable_decode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function quoted_printable_encode(string $string): string {}

/* soundex.c */

/** @refcount 1 */
function soundex(string $string): string {}

/* streamsfuncs.c */

/**
 * @param resource|null $context
 */
function stream_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, ?int $microseconds = null, $context = null): int|false {}

/**
 * @return resource
 * @refcount 1
 */
function stream_context_create(?array $options = null, ?array $params = null) {}

/** @param resource $context */
function stream_context_set_params($context, array $params): true {}

/**
 * @param resource $context
 * @return array<string, mixed>
 * @refcount 1
 */
function stream_context_get_params($context): array {}

/** @param resource $context */
function stream_context_set_option($context, array|string $wrapper_or_options, ?string $option_name = null, mixed $value = UNKNOWN): true {}

/** @param resource $context */
function stream_context_set_options($context, array $options): true {}

/**
 * @param resource $stream_or_context
 * @return array<string, mixed>
 */
function stream_context_get_options($stream_or_context): array {}

/** @return resource */
function stream_context_get_default(?array $options = null) {}

/** @return resource */
function stream_context_set_default(array $options) {}

/**
 * @param resource $stream
 * @return resource|false
 */
function stream_filter_prepend($stream, string $filter_name, int $mode = 0, mixed $params = UNKNOWN) {}

/**
 * @param resource $stream
 * @return resource|false
 */
function stream_filter_append($stream, string $filter_name, int $mode = 0, mixed $params = UNKNOWN) {}

/** @param resource $stream_filter */
function stream_filter_remove($stream_filter): bool {}

/**
 * @param int $error_code
 * @param string $error_message
 * @param resource|null $context
 * @return resource|false
 * @refcount 1
 */
function stream_socket_client(string $address, &$error_code = null, &$error_message = null, ?float $timeout = null, int $flags = STREAM_CLIENT_CONNECT, $context = null) {}

/**
 * @param int $error_code
 * @param string $error_message
 * @param resource|null $context
 * @return resource|false
 * @refcount 1
 */
function stream_socket_server(string $address, &$error_code = null, &$error_message = null, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context = null) {}

/**
 * @param resource $socket
 * @param string $peer_name
 * @return resource|false
 * @refcount 1
 */
function stream_socket_accept($socket, ?float $timeout = null, &$peer_name = null) {}

/** @param resource $socket */
function stream_socket_get_name($socket, bool $remote): string|false {}

/**
 * @param resource $socket
 * @param string|null $address
 * @refcount 1
 */
function stream_socket_recvfrom($socket, int $length, int $flags = 0, &$address = null): string|false {}

/** @param resource $socket */
function stream_socket_sendto($socket, string $data, int $flags = 0, string $address = ""): int|false {}

/**
 * @param resource $stream
 * @param resource|null $session_stream
 */
function stream_socket_enable_crypto($stream, bool $enable, ?int $crypto_method = null, $session_stream = null): int|bool {}

/**
 * @param resource $stream
 */
function stream_socket_get_crypto_status($stream): int {}

#ifdef HAVE_SHUTDOWN
/** @param resource $stream */
function stream_socket_shutdown($stream, int $mode): bool {}
#endif

#ifdef HAVE_SOCKETPAIR
/**
 * @param resource|null $context
 * @return array<int, resource>|false
 * @refcount 1
 */
function stream_socket_pair(int $domain, int $type, int $protocol, $context = null): array|false {}
#endif

/**
 * @param resource $from
 * @param resource $to
 * @param resource|null $context
 */
function stream_copy_to_stream($from, $to, ?int $length = null, int $offset = 0, $context = null): int|false {}

/**
 * @param resource $stream
 * @refcount 1
 */
function stream_get_contents($stream, ?int $length = null, int $offset = -1): string|false {}

/** @param resource $stream */
function stream_supports_lock($stream): bool {}

/** @param resource $stream */
function stream_set_write_buffer($stream, int $size): int {}

/**
 * @param resource $stream
 * @alias stream_set_write_buffer
 */
function set_file_buffer($stream, int $size): int {}

/** @param resource $stream */
function stream_set_read_buffer($stream, int $size): int {}

/** @param resource $stream */
function stream_set_blocking($stream, bool $enable): bool {}

/**
 * @param resource $stream
 * @alias stream_set_blocking
 */
function socket_set_blocking($stream, bool $enable): bool {}

/**
 * @param resource $stream
 * @return array<string, mixed>
 */
function stream_get_meta_data($stream): array {}

/**
 * @param resource $stream
 * @return array<string, mixed>
 * @alias stream_get_meta_data
 */
function socket_get_status($stream): array {}

/**
 * @param resource $stream
 * @refcount 1
 */
function stream_get_line($stream, int $length, string $ending = ""): string|false {}

/** @refcount 1 */
function stream_resolve_include_path(string $filename): string|false {}

/**
 * @return array<int, string>
 * @refcount 1
 */
function stream_get_wrappers(): array {}

/**
 * @return array<int, StreamError>
 */
function stream_last_errors(): array {}

function stream_clear_errors(): void {}

/**
 * @return array<int, string>
 * @refcount 1
 */
function stream_get_transports(): array {}

/**
 * @param resource|string $stream
 * @param resource|null $context
 */
function stream_is_local($stream, $context = null): bool {}

/** @param resource $stream */
function stream_isatty($stream): bool {}

#ifdef PHP_WIN32
/** @param resource $stream */
function sapi_windows_vt100_support($stream, ?bool $enable = null): bool {}
#endif

/** @param resource $stream */
function stream_set_chunk_size($stream, int $size): int {}

#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
/** @param resource $stream */
function stream_set_timeout($stream, int $seconds, int $microseconds = 0): bool {}

/**
 * @param resource $stream
 * @alias stream_set_timeout
 */
#[\Deprecated(since: '8.5', message: "use stream_set_timeout() instead")]
function socket_set_timeout($stream, int $seconds, int $microseconds = 0): bool {}
#endif

/* type.c */

/**
 * @compile-time-eval
 */
function gettype(mixed $value): string {}

/**
 * @compile-time-eval
 */
function get_debug_type(mixed $value): string {}

function settype(mixed &$var, string $type): bool {}

/**
 * @compile-time-eval
 */
function intval(mixed $value, int $base = 10): int {}

/**
 * @compile-time-eval
 */
function floatval(mixed $value): float {}

/** @alias floatval */
function doubleval(mixed $value): float {}

/**
 * @compile-time-eval
 */
function boolval(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function strval(mixed $value): string {}

/**
 * @compile-time-eval
 */
function is_null(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_resource(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_bool(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_int(mixed $value): bool {}

/** @alias is_int */
function is_integer(mixed $value): bool {}

/** @alias is_int */
function is_long(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_float(mixed $value): bool {}

/** @alias is_float */
function is_double(mixed $value): bool {}

/**
 * @compile-time-eval
 * @frameless-function {"arity": 1}
 */
function is_numeric(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_string(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_array(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_object(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_scalar(mixed $value): bool {}

/** @param string $callable_name */
function is_callable(mixed $value, bool $syntax_only = false, &$callable_name = null): bool {}

/**
 * @compile-time-eval
 */
function is_iterable(mixed $value): bool {}

/**
 * @compile-time-eval
 */
function is_countable(mixed $value): bool {}

/* uniqid.c */

#ifdef HAVE_GETTIMEOFDAY
/** @refcount 1 */
function uniqid(string $prefix = "", bool $more_entropy = false): string {}
#endif

/* url.c */

/**
 * @return int|string|array<string, int|string>|null|false
 * @compile-time-eval
 * @refcount 1
 */
function parse_url(string $url, int $component = -1): int|string|array|null|false {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function urlencode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function urldecode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function rawurlencode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function rawurldecode(string $string): string {}

/**
 * @param resource|null $context
 * @return array<int|string, string|array>|false
 * @refcount 1
 */
function get_headers(string $url, bool $associative = false, $context = null): array|false {}

/* user_filters.c */

/**
 * @param resource $brigade
 * @refcount 1
 */
function stream_bucket_make_writeable($brigade): ?StreamBucket {}

/** @param resource $brigade */
function stream_bucket_prepend($brigade, StreamBucket $bucket): void {}

/** @param resource $brigade */
function stream_bucket_append($brigade, StreamBucket $bucket): void {}

/**
 * @param resource $stream
 * @refcount 1
 */
function stream_bucket_new($stream, string $buffer): StreamBucket {}

/**
 * @return array<int, string>
 * @refcount 1
 */
function stream_get_filters(): array {}

function stream_filter_register(string $filter_name, string $class): bool {}

/* uuencode.c */

/**
 * @compile-time-eval
 * @refcount 1
 */
function convert_uuencode(string $string): string {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function convert_uudecode(string $string): string|false {}

/* var.c */

function var_dump(mixed $value, mixed ...$values): void {}

/** @refcount 1 */
function var_export(mixed $value, bool $return = false): ?string {}

function debug_zval_dump(mixed $value, mixed ...$values): void {}

/**
 * @compile-time-eval
 * @refcount 1
 */
function serialize(mixed $value): string {}

function unserialize(string $data, array $options = []): mixed {}

function memory_get_usage(bool $real_usage = false): int {}

function memory_get_peak_usage(bool $real_usage = false): int {}

function memory_reset_peak_usage(): void {}

/* versioning.c */

/** @compile-time-eval */
function version_compare(string $version1, string $version2, ?string $operator = null): int|bool {}

/* win32/codepage.c */

#ifdef PHP_WIN32
function sapi_windows_cp_set(int $codepage): bool {}

function sapi_windows_cp_get(string $kind = ""): int {}

function sapi_windows_cp_conv(int|string $in_codepage, int|string $out_codepage, string $subject): ?string {}

function sapi_windows_cp_is_utf8(): bool {}

function sapi_windows_set_ctrl_handler(?callable $handler, bool $add = true): bool {}

function sapi_windows_generate_ctrl_event(int $event, int $pid = 0): bool {}
#endif
