1<?php
2/** @generate-function-entries */
3
4final class Ev {
5    final public static function supportedBackends() : int {}
6    final public static function recommendedBackends() : int {}
7    final public static function embeddableBackends() : int {}
8    final public static function sleep(float $seconds) : void {}
9    final public static function time() : float {}
10    final public static function feedSignal(int $signum) : void {}
11    final public static function feedSignalEvent(int $signum) : void {}
12    final public static function run(int $flags = 0) : void {}
13    final public static function now() : float {}
14    final public static function stop(int $how = 0) : void {}
15    final public static function iteration() : int {}
16    final public static function depth() : int {}
17    final public static function backend() : int {}
18    final public static function nowUpdate() : void {}
19    final public static function suspend() : void {}
20    final public static function resume() : void {}
21    final public static function verify() : void {}
22}
23
24final class EvLoop {
25    public function __construct(int $flags = Ev::FLAG_AUTO, ?mixed $data = null, float $io_interval = 0., float $timeout_interval = 0.) {}
26    public static function defaultLoop(int $flags = Ev::FLAG_AUTO, ?mixed $data = null, float $io_interval = 0., float $timeout_interval = 0.): EvLoop {}
27    public function loopFork(): void {}
28    public function verify(): void {}
29    public function invokePending(): void {}
30    public function nowUpdate(): void {}
31    public function suspend(): void {}
32    public function resume(): void {}
33    public function backend(): int {}
34    public function now(): float {}
35    public function run(int $flags = 0): void {}
36    public function stop(int $how = 0): void {}
37    final public function io(mixed $fd, int $events, mixed $callback, ?mixed $data = null, int $priority = 0): EvIo {}
38    final public function timer(float $after, float $repeat, mixed $callback, ?mixed $data = null, int $priority = 0): EvTimer {}
39#if EV_PERIODIC_ENABLE
40    final public function periodic(float $offset, float $interval, mixed $reschedule_cb, mixed $callback, ?mixed $data = null, int $priority = 0): EvPeriodic {}
41#endif
42#if EV_SIGNAL_ENABLE
43    final public function signal(int $signum, mixed $callback, ?mixed $data = null, int $priority = 0): EvSignal {}
44#endif
45#if EV_CHILD_ENABLE
46    final public function child(int $pid, bool $trace, mixed $callback, ?mixed $data = null, int $priority = 0): EvChild {}
47#endif
48#if EV_STAT_ENABLE
49    final public function stat(string $path, float $interval, mixed $callback, ?mixed $data = null, int $priority = 0): EvStat {}
50#endif
51#if EV_IDLE_ENABLE
52    final public function idle(mixed $callback, ?mixed $data = null, int $priority = 0): EvIdle {}
53#endif
54#if EV_CHECK_ENABLE
55    final public function check(): EvCheck {}
56#endif
57#if EV_PREPARE_ENABLE
58    final public function prepare(): EvPrepare {}
59#endif
60#if EV_EMBED_ENABLE
61    final public function embed(): EvEmbed {}
62#endif
63#if EV_FORK_ENABLE
64    final public function fork(): EvFork {}
65#endif
66}
67
68abstract class EvWatcher {
69    public function start() : void {}
70    public function stop() : void {}
71    public function clear() : int {}
72    public function invoke(int $revents) : void {}
73    public function feed(int $revents) : void {}
74    public function getLoop() : ?EvLoop {}
75    public function keepalive(bool $value = true) : bool {}
76    public function setCallback(mixed $callback) : void {}
77}
78
79class EvIo extends EvWatcher {
80    public function __construct(mixed $fd, int $events, mixed $callback, ?mixed $data = null, int $priority = 0) {}
81    final public static function createStopped(mixed $fd, int $events, mixed $callback, ?mixed $data = null, int $priority = 0): EvIo {}
82    public function set(mixed $fd, int $events): void {}
83}
84
85class EvTimer extends EvWatcher {
86    public function __construct(float $after, float $repeat, mixed $callback, ?mixed $data = null, int $priority = 0) {}
87    final public static function createStopped(float $after, float $repeat, mixed $callback, ?mixed $data = null, int $priority = 0): EvTimer {}
88    public function set(float $after, float $repeat): void {}
89    public function again(): void {}
90
91}
92
93#if EV_PERIODIC_ENABLE
94class EvPeriodic extends EvWatcher {
95    public function __construct(float $offset, float $interval, ?mixed $reschedule_cb, mixed $callback, ?mixed $data = null, int $priority = 0) {}
96    final public static function createStopped(float $offset, float $interval, ?mixed $reschedule_cb, mixed $callback, ?mixed $data = null, int $priority = 0): EvPeriodic {}
97    public function set(float $offset, float $interval, ?mixed $reschedule_cb = null): void {}
98    public function again(): void {}
99    public function at(): float {}
100}
101#endif
102
103#if EV_SIGNAL_ENABLE
104class EvSignal extends EvWatcher {
105    public function __construct(int $signum, mixed $callback, ?mixed $data = null, int $priority = 0) {}
106    final public static function createStopped(int $signum, mixed $callback, ?mixed $data = null, int $priority = 0): EvSignal {}
107    public function set(int $signum): void {}
108}
109#endif
110
111#if EV_CHILD_ENABLE
112class EvChild extends EvWatcher {
113    public function __construct(int $pid, bool $trace, mixed $callback, ?mixed $data = null, int $priority = 0) {}
114    final public static function createStopped(int $pid, bool $trace, mixed $callback, ?mixed $data = null, int $priority = 0): EvChild {}
115    public function set(int $pid, bool $trace): void {}
116}
117#endif
118
119#if EV_STAT_ENABLE
120class EvStat extends EvWatcher {
121    public function __construct(string $path, float $interval, mixed $callback, ?mixed $data = null, int $priority = 0) {}
122    final public static function createStopped(string $path, float $interval, mixed $callback, ?mixed $data = null, int $priority = 0): EvStat {}
123    public function set(string $path, float $interval): void {}
124    public function attr() : mixed|false {}
125    public function prev() : mixed|false {}
126    public function stat() : bool {}
127}
128#endif
129
130#if EV_IDLE_ENABLE
131class EvIdle extends EvWatcher {
132    public function __construct(mixed $callback, ?mixed $data = null, int $priority = 0) {}
133    final public static function createStopped(mixed $callback, ?mixed $data = null, int $priority = 0): EvIdle {}
134}
135#endif
136
137#if EV_CHECK_ENABLE
138class EvCheck extends EvWatcher {
139    public function __construct(mixed $callback, ?mixed $data = null, int $priority = 0) {}
140    final public static function createStopped(mixed $callback, ?mixed $data = null, int $priority = 0): EvCheck {}
141}
142#endif
143
144#if EV_PREPARE_ENABLE
145class EvPrepare extends EvWatcher {
146    public function __construct(mixed $callback, ?mixed $data = null, int $priority = 0) {}
147    final public static function createStopped(mixed $callback, ?mixed $data = null, int $priority = 0): EvPrepare {}
148}
149#endif
150
151#if EV_EMBED_ENABLE
152class EvEmbed extends EvWatcher {
153    public function __construct(EvLoop $other, mixed $callback, ?mixed $data = null, int $priority = 0) {}
154    final public static function createStopped(EvLoop $other, mixed $callback, ?mixed $data = null, int $priority = 0): EvEmbed {}
155    public function set(EvLoop $other): void {}
156    public function sweep(): void {}
157}
158#endif
159
160#if EV_FORK_ENABLE
161class EvFork extends EvWatcher {
162    public function __construct(EvLoop $loop, mixed $callback, ?mixed $data = null, int $priority = 0) {}
163    final public static function createStopped(EvLoop $loop, mixed $callback, ?mixed $data = null, int $priority = 0): EvFork {}
164}
165#endif
166