<?php

// === SUPPORTED ===

define('FILE_APPEND', 1);

define('STDIN', 'php://stdin');
define('STDOUT', 'php://stdout');
define('STDERR', 'php://stderr');

function basename ($name ::: string, $suffix ::: string = ''): string;


define('STREAM_CLIENT_CONNECT', 1);
define('DEFAULT_SOCKET_TIMEOUT', 60);

function stream_socket_client ($url ::: string, &$error_number ::: mixed = TODO, &$error_description ::: mixed = TODO, $timeout ::: float = DEFAULT_SOCKET_TIMEOUT, $flags ::: int = STREAM_CLIENT_CONNECT, $context ::: mixed = null) ::: mixed;
function fopen ($filename ::: string, $mode ::: string) ::: mixed;
/** @kphp-extern-func-info interruptible */
function fwrite ($stream ::: mixed, $text ::: string) ::: int | false;
function fflush ($stream ::: mixed) ::: bool;
function fclose ($stream ::: mixed) ::: bool;

function file_get_contents ($name ::: string) ::: string | false;

// === UNSUPPORTED ===

/** @kphp-extern-func-info generate-stub */
function chmod ($name ::: string, $mode ::: int) ::: bool;
/** @kphp-extern-func-info generate-stub */
function copy ($from ::: string, $to ::: string) ::: bool;
/** @kphp-extern-func-info generate-stub */
function dirname ($name ::: string) ::: string;
/** @kphp-extern-func-info generate-stub */
function file ($name ::: string) ::: string[] | false;
/** @kphp-extern-func-info generate-stub */
function file_put_contents ($name ::: string, $content ::: mixed, $flags ::: int = 0) ::: int | false;
/** @kphp-extern-func-info generate-stub */
function file_exists ($name ::: string) ::: bool;
/** @kphp-extern-func-info generate-stub */
function filesize ($name ::: string) ::: int | false;
/** @kphp-extern-func-info generate-stub */
function filectime ($name ::: string) ::: int | false;
/** @kphp-extern-func-info generate-stub */
function filemtime ($name ::: string) ::: int | false;
/** @kphp-extern-func-info generate-stub */
function is_dir ($name ::: string) ::: bool;
/** @kphp-extern-func-info generate-stub */
function is_file ($name ::: string) ::: bool;
/** @kphp-extern-func-info generate-stub */
function is_readable ($name ::: string) ::: bool;
/** @kphp-extern-func-info generate-stub */
function mkdir ($name ::: string, $mode ::: int = 0777, $recursive ::: bool = false) ::: bool;
/** @kphp-extern-func-info generate-stub */
function realpath ($path ::: string) ::: string | false;
/** @kphp-extern-func-info generate-stub */
function rename ($oldname ::: string, $newname ::: string) ::: bool;
/** @kphp-extern-func-info generate-stub */
function scandir ($directory ::: string) ::: string[] | false;
/** @kphp-extern-func-info generate-stub */
function tempnam ($dir ::: string, $prefix ::: string) ::: string | false;
/** @kphp-extern-func-info generate-stub */
function unlink ($name ::: string) ::: bool;


 /** @kphp-extern-func-info generate-stub */
function fgetcsv ($stream ::: mixed, $length ::: int = 0, $delimiter ::: string = ",", $enclosure ::: string = "\"", $escape ::: string = "\\") ::: mixed[] | false;

define('SEEK_SET', 0);
define('SEEK_END', 1);
define('SEEK_CUR', 2);

 /** @kphp-extern-func-info generate-stub */
function fseek ($stream ::: mixed, $offset ::: int, $whence ::: int = SEEK_SET) ::: int;
 /** @kphp-extern-func-info generate-stub */
function rewind ($stream ::: mixed) ::: bool;
 /** @kphp-extern-func-info generate-stub */
function ftell ($stream ::: mixed) ::: int | false;
 /** @kphp-extern-func-info generate-stub */
function fread ($stream ::: mixed, $length ::: int) ::: string | false;
 /** @kphp-extern-func-info generate-stub */
function fgetc ($stream ::: mixed) ::: string | false;
 /** @kphp-extern-func-info generate-stub */
function fpassthru ($stream ::: mixed) ::: int | false;
 /** @kphp-extern-func-info generate-stub */
function fgets ($stream ::: mixed, $length ::: int = -1) ::: string | false;
 /** @kphp-extern-func-info generate-stub */
function feof ($stream ::: mixed) ::: bool;

/** @kphp-extern-func-info generate-stub */
function stream_context_create ($options ::: mixed = array()) ::: mixed;


function fprintf ($stream, $format ::: string, ...$args) ::: int;
function fputcsv ($stream, $fields ::: array, $delimiter = ",", $enclosure = "\"", $escape = "\\") ::: int | false;
function printf ($format ::: string, ...$args) ::: int;
function sprintf ($format ::: string, ...$args) ::: string;
function vsprintf ($format ::: string, $args ::: array) ::: string;
