26 14:02:34 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="--_NmP-215108abdd27613f-Part_1"
X-DKIM: signer='opencollective.com' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 4.3 (++++)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (4.3 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: amazonaws.com]
  3.0 BODY_CONTAINS_AMAZONAWS BODY: Body contains ".amazonaws.com"
  1.5 HTML_MESSAGE           BODY: HTML included in message
 -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from
                             envelope-from domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [159.112.241.190 listed in list.dnswl.org]
SpamTally: Final spam score: 43

----_NmP-215108abdd27613f-Part_1
Content-Type: multipart/alternative;
 boundary="--_NmP-215108abdd27613f-Part_2"

----_NmP-215108abdd27613f-Part_2
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

[https://images.opencollective.com/proxy/images/?src=3Dhttps%3A%2F%2Fopenco=
llective-production.s3.us-west-1.amazonaws.com%2Fbcf2cd90-fe5e-11e8-a43f-c3=
617d26bf4e.png&height=3D160]

Dear Josephine Pfeiffer,

Thank you for your continued support! Your latest monthly contribution of =
$25.00
was received on February 2nd 2026. As the collective's fiscal =
sponsor, Open
Source Collective, a public recognized tax-exempt =
organization under IRS Section
501(c)(6), acknowledges your donation.

You can follow our future activities and how we will be spending the money =
on
our open collective page: https://opencollective.com/crystal-lang
[https://opencollective.com/crystal-lang].


HELP US RAISE MORE MONEY!

See our activities and transparent budget on
https://opencollective.=
com/crystal-lang/donate
[https://opencollective.com/crystal-lang/donate], =
and share the link to help us
spread the word!


=F0=9F=93=8E ATTACHMENTS

 * A PDF receipt of your contribution to Crystal Language

To manage your recurring contributions, Sign in
[https://opencollective.=
com/dashboard/josielol/outgoing-contributions?status=3DACTIVE&status=3DERRO=
R&type=3DRECURRING]
and go to your profile page.
If you need help, contact =
support [support@opencollective.com].

Warmly,

Lauren Gardner - Executive =
Director
Open Source Collective
440 N Barranca Ave #3939
Covina, CA 91723
EIN 82-2037583

[https://opencollective.com/static/images/email/logo-email-=
footer@2x.png]
https://opencollective.com

We can do great things together

Come chat with us on our public Discord [https://discord.opencollective.=
com].

Made with =E2=9D=A4=EF=B8=8F from all over the world
[https://documentation.opencollective.com/our-organization/our-team]
----_NmP-215108abdd27613f-Part_2
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8">
  <title></title>
  <style>
@media only screen and (min-device-width: 601px) {
  .content {
    width: 600px !important;
  }
}
=2Ebtn.blue:hover {
  background: linear-gradient(180deg,#297EFF 0%,#1869F5 100%);
  background-color: #297EFF;
  border-color: #297EFF;
  color: #FFFFFF;
}
</style>
</head>
<body margin=3D"0" padding=3D"0" yahoo style=3D"margin: 0; padding: 0; min-=
width: 100%;">

<table bgcolor=3D"white" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" w=
idth=3D"100%" style=3D"font-family:'Helvetica Neue',Helvetica,Arial,sans-se=
rif;box-sizing:border-box;font-size:14px;"><tr><td align=3D"center" valign=
=3D"top">
  <!--[if (gte mso 9)|(IE)]>
    <table width=3D"600" align=3D"center" cellpadding=3D"0" cellspacing=3D"=
0" border=3D"0"><tr><td>
  <![endif]-->
  <table class=3D"content" border=3D"0" width=3D"100%" cellpadding=3D"0" ce=
llspacing=3D"0" style=3D"width: 100%; max-width: 600px; padding: 0 10px;">
    <tr>
      <td></td>
      <td>

<center>
  <img src=3D"https://images.opencollective.com/proxy/images/?src&#x3D;http=
s%3A%2F%2Fopencollective-production.s3.us-west-1.amazonaws.com%2Fbcf2cd90-f=
e5e-11e8-a43f-c3617d26bf4e.png&amp;height&#x3D;160" height=3D"80" style=3D"=
max-width: 100%;">
</center>

<p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Arial,s=
ans-serif; font-size: 14px; line-height: 18px;">Dear Josephine Pfeiffer,</p=
>

    <p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Ari=
al,sans-serif; font-size: 14px; line-height: 18px;">Thank you for your cont=
inued support! Your latest monthly contribution of $25.00  was received on =
February 2nd 2026.
      As the collective's fiscal sponsor, Open Source Collective, a public =
recognized tax-exempt organization under IRS Section 501(c)(6), acknowledge=
s your donation.</p>

<p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Arial,s=
ans-serif; font-size: 14px; line-height: 18px;">You can follow our future a=
ctivities and how we will be spending the money on our open collective page=
:
  <a href=3D"https://opencollective.com/crystal-lang" style=3D"text-decorat=
ion: none; color: #297EFF;">https://opencollective.com/crystal-lang</a>.
</p>

<h2 style=3D"color: #303233; font-family: 'Helvetica Neue',Helvetica,Arial,=
sans-serif; font-weight: normal; font-size: 20px; line-height: 24px; text-a=
lign: center;">Help us raise more money!</h2>
<p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Arial,s=
ans-serif; font-size: 14px; line-height: 18px;">See our activities and tran=
sparent budget on
  <a href=3D"https://opencollective.com/crystal-lang/donate" style=3D"text-=
decoration: none; color: #297EFF;">https://opencollective.com/crystal-lang/=
donate</a>, and share the link to help us spread the word!
</p>


<h2 style=3D"color: #303233; font-family: 'Helvetica Neue',Helvetica,Arial,=
sans-serif; font-weight: normal; font-size: 20px; line-height: 24px; text-a=
lign: center;">=F0=9F=93=8E Attachments</h2>
<ul style=3D"padding-left: 20px;">
  <li style=3D"margin: 5px 0px; line-height: 1.4; font-size: 14px; color: #=
494B4D;">A PDF receipt of your contribution to Crystal Language</li>
</ul>


<p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Arial,s=
ans-serif; font-size: 14px; line-height: 18px;">
    To manage your recurring contributions, <a href=3D"https://opencollecti=
ve.com/dashboard/josielol/outgoing-contributions?status&#x3D;ACTIVE&amp;sta=
tus&#x3D;ERROR&amp;type&#x3D;RECURRING" style=3D"text-decoration: none; col=
or: #297EFF;">Sign in</a> and
    go to your profile page.
    <br>
  If you need help, contact <a href=3D"mailto:support@opencollective.com" s=
tyle=3D"text-decoration: none; color: #297EFF;">support</a>.
</p>

<p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Arial,s=
ans-serif; font-size: 14px; line-height: 18px;">Warmly,</p>

<p style=3D"color: #494B4D; font-family: 'Helvetica Neue',Helvetica,Arial,s=
ans-serif; font-size: 14px; line-height: 18px;">
Lauren Gardner - Executive Director<br>
Open Source Collective<br>
440 N Barranca Ave #3939<br>
Covina, CA 91723<br>
EIN 82-2037583
</p>

</td>
</tr>
<tr>
  <td colspan=3D"3" height=3D"40"></td>
</tr>
<tr>
  <td colspan=3D"3" align=3D"center">
    <table width=3D"100%">
      <tr>
        <td></td>
        <td width=3D"200">
          <a href=3D"https://opencollective.com" style=3D"text-decoration: =
none; color: #297EFF;">
            <img width=3D"220" height=3D"28" src=3D"https://opencollective.=
com/static/images/email/logo-email-footer@2x.png" style=3D"max-width: 100%;=
">
          </a>
        </td>
        <td></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
  <td colspan=3D"3" align=3D"center" style=3D"font-family:'Helvetica Neue',=
Helvetica,Arial,sans-serif;box-sizing:border-box;font-size:12px;color:#999;=
">
    We can do great things together<br><br>

    Come chat with us on our public
    <a href=3D"https://discord.opencollective.com" style=3D"text-decoration=
: none; color: #297EFF;">Discord</a>.
    <br><br>
    Made with =E2=9D=A4=EF=B8=8F from <a href=3D"https://documentation.open=
collective.com/our-organization/our-team" style=3D"text-decoration: none; c=
olor: #297EFF;">all over the world</a>
  </td>
</tr>
<tr>
  <td colspan=3D"3" height=3D"10"></td>
</tr>
</table><!-- 600px width content table -->

<!--[if (gte mso 9)|(IE)]>
  </td></tr></table>
<![endif]-->

</td>
</tr>
</table><!-- 100% width table -->
<!-- OpenCollective.com -->
<img width=3D"1" height=3D"1" alt=3D"" src=3D"http://email.opencollective.c=
om/o/eJwEwFuuhCAMANDVyB-mPMrjg8VgaSM3XjHomFn-nFaM8amR4mJiBPCQ0au9SLUpBgJhYd=
O2hBBMbeSyeBGITvUSm8sWg9Xk66YTAurgOGggIcS8VbS4eBgXnzSOg-npL680_tUsl3AX4fm3e=
KiT9qOfn-9Ku3rKmI3nes1BfN_c1FvsLwAA__8ZUTKl"></body>

</html>
----_NmP-215108abdd27613f-Part_2--

----_NmP-215108abdd27613f-Part_1
Content-Type: application/pdf;
 name=transaction_crystal-lang_2026-02-02_94e4ee8e-5ffd-4073-923d-d95b4248ea5a.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0=transaction_crystal-lang_2026-02-02_94e4ee8e-5ffd-;
 filename*1=4073-923d-d95b4248ea5a.pdf

JVBERi0xLjMKJf////8KOSAwIG9iago8PAovUyAvVVJJCi9VUkkgKGh0dHBzOi8vb3BlbmNvbGxl
Y3RpdmUuY29tL29wZW5zb3VyY2UpCj4+CmVuZG9iagoxMCAwIG9iago8PAovU3VidHlwZSAvTGlu
awovQSA5IDAgUgovVHlwZSAvQW5ub3QKL1JlY3QgWzMyIDc4OS43MzY2MDUgNDY1LjUxMyA4MDku
ODkwMDE1XQovQm9yZGVyIFswIDAgMF0KL0YgNAo+PgplbmRvYmoKMTEgMCBvYmoKPDwKL1R5cGUg
L0V4dEdTdGF0ZQovY2EgMQo+PgplbmRvYmoKMTQgMCBvYmoKPDwKL1MgL1VSSQovVVJJIChodHRw
czovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuc291cmNlKQo+PgplbmRvYmoKMTUgMCBvYmoKPDwK
L1N1YnR5cGUgL0xpbmsKL0EgMTQgMCBSCi9UeXBlIC9Bbm5vdAovUmVjdCBbMzIgNzM3LjQyOTc4
NiA0NjUuNTEzIDc0OS41MzIwNTldCi9Cb3JkZXIgWzAgMCAwXQovRiA0Cj4+CmVuZG9iagoxOCAw
IG9iago8PAovUyAvVVJJCi9VUkkgKGh0dHBzOi8vb3Njb2xsZWN0aXZlLm9yZy8pCj4+CmVuZG9i
agoxOSAwIG9iago8PAovU3VidHlwZSAvTGluawovQSAxOCAwIFIKL1R5cGUgL0Fubm90Ci9SZWN0
IFsxNDEuODQzMTQgMzIgMjIxLjg0MzE0IDExMl0KL0JvcmRlciBbMCAwIDBdCi9GIDQKPj4KZW5k
b2JqCjggMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAxIDAgUgovTWVkaWFCb3ggWzAgMCA1
OTUuMjgwMDI5IDg0MS44OTAwMTVdCi9Db250ZW50cyA2IDAgUgovUmVzb3VyY2VzIDcgMCBSCi9V
c2VyVW5pdCAxCi9Bbm5vdHMgWzEwIDAgUiAxNSAwIFIgMTkgMCBSXQo+PgplbmRvYmoKNyAwIG9i
ago8PAovUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0KL0V4dEdT
dGF0ZSA8PAovR3MxIDExIDAgUgo+PgovRm9udCA8PAovRjIgMTIgMCBSCi9GMyAxMyAwIFIKL0Yz
MiAxNiAwIFIKL0YxIDE3IDAgUgo+PgovWE9iamVjdCA8PAovSTEgMjAgMCBSCj4+Cj4+CmVuZG9i
agoyMiAwIG9iagoocmVhY3QtcGRmKQplbmRvYmoKMjMgMCBvYmoKKHJlYWN0LXBkZikKZW5kb2Jq
CjI0IDAgb2JqCihEOjIwMjYwMjAyMTQwMjM0WikKZW5kb2JqCjIxIDAgb2JqCjw8Ci9Qcm9kdWNl
ciAyMiAwIFIKL0NyZWF0b3IgMjMgMCBSCi9DcmVhdGlvbkRhdGUgMjQgMCBSCj4+CmVuZG9iagox
NyAwIG9iago8PAovVHlwZSAvRm9udAovQmFzZUZvbnQgL0hlbHZldGljYQovU3VidHlwZSAvVHlw
ZTEKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjI2IDAgb2JqCjw8Ci9UeXBl
IC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1NSQUxHSytJbnRlci1Cb2xkCi9GbGFncyA0Ci9G
b250QkJveCBbLTc5My4zMjM4NjQgLTMxOS42MDIyNzMgMjU4My4wOTY1OTEgMTA5MC45MDkwOTFd
Ci9JdGFsaWNBbmdsZSAwCi9Bc2NlbnQgOTY4Ljc1Ci9EZXNjZW50IC0yNDEuNDc3MjczCi9DYXBI
ZWlnaHQgNzI3LjI3MjcyNwovWEhlaWdodCA1NDUuNDU0NTQ1Ci9TdGVtViAwCi9Gb250RmlsZTMg
MjUgMCBSCj4+CmVuZG9iagoyNyAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvQ0lERm9u
dFR5cGUwCi9CYXNlRm9udCAvU1JBTEdLK0ludGVyLUJvbGQKL0NJRFN5c3RlbUluZm8gPDwKL1Jl
Z2lzdHJ5IChBZG9iZSkKL09yZGVyaW5nIChJZGVudGl0eSkKL1N1cHBsZW1lbnQgMAo+PgovRm9u
dERlc2NyaXB0b3IgMjYgMCBSCi9XIFswIFsyOTU2IDc4MS45NjAyMjcgNjMyLjQ1NzM4NiA1OTcu
NjU2MjUgNjIxLjgwMzk3NyAyMzEuODg5MjA1IDY1NC44Mjk1NDUgNjEzLjYzNjM2NCA2MjEuODAz
OTc3IDQwOC43MzU3OTUgNTg3LjM1Nzk1NSA3NTIuMTMwNjgyIDI3Mi4wMTcwNDUgMzg4LjQ5NDMx
OCAyNzIuMDE3MDQ1IDU4NS45Mzc1IDY2MC44NjY0NzcgNjQ3LjcyNzI3MyA1ODAuMjU1NjgyIDU4
NS45Mzc1IDkxMS45MzE4MTggNjU2LjI1IDcyNy4yNzI3MjcgNTYxLjc4OTc3MyA3ODIuNjcwNDU1
IDY2OC4zMjM4NjQgNzI0LjQzMTgxOCA3MjkuNDAzNDA5IDU3My44NjM2MzYgNzM1LjA4NTIyNyA3
NDcuODY5MzE4IDU2Ny40NzE1OTEgNjU0LjgyOTU0NSA2MjkuOTcxNTkxIDY0NC41MzEyNSAyOTcu
NTg1MjI3IDY4OC4yMTAyMjddXQo+PgplbmRvYmoKMTIgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1
YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvU1JBTEdLK0ludGVyLUJvbGQKL0VuY29kaW5nIC9JZGVu
dGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzI3IDAgUl0KL1RvVW5pY29kZSAyOCAwIFIKPj4KZW5k
b2JqCjMwIDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1VPTUtDRitJ
bnRlci1SZWd1bGFyCi9GbGFncyA0Ci9Gb250QkJveCBbLTczOC42MzYzNjQgLTMxOS42MDIyNzMg
MjU4My4wOTY1OTEgMTA5MC45MDkwOTFdCi9JdGFsaWNBbmdsZSAwCi9Bc2NlbnQgOTY4Ljc1Ci9E
ZXNjZW50IC0yNDEuNDc3MjczCi9DYXBIZWlnaHQgNzI3LjI3MjcyNwovWEhlaWdodCA1NDUuNDU0
NTQ1Ci9TdGVtViAwCi9Gb250RmlsZTMgMjkgMCBSCj4+CmVuZG9iagozMSAwIG9iago8PAovVHlw
ZSAvRm9udAovU3VidHlwZSAvQ0lERm9udFR5cGUwCi9CYXNlRm9udCAvVU9NS0NGK0ludGVyLVJl
Z3VsYXIKL0NJRFN5c3RlbUluZm8gPDwKL1JlZ2lzdHJ5IChBZG9iZSkKL09yZGVyaW5nIChJZGVu
dGl0eSkKL1N1cHBsZW1lbnQgMAo+PgovRm9udERlc2NyaXB0b3IgMzAgMCBSCi9XIFswIFsyODAw
IDY0Mi4wNDU0NTUgNjI1IDI4MS4yNSA3NTIuODQwOTA5IDY1MC41NjgxODIgNTYzLjkyMDQ1NSAz
NzIuMTU5MDkxIDU4NS4yMjcyNzMgNTU4LjIzODYzNiA2NzYuMTM2MzY0IDU1Ni44MTgxODIgNTgy
LjM4NjM2NCA2MzAuNjgxODE4IDYzNi4zNjM2MzYgNjIzLjU3OTU0NSAyNzkuODI5NTQ1IDcyNy4y
NzI3MjcgNTk2LjU5MDkwOSAyMzcuMjE1OTA5IDQ2NC40ODg2MzYgNTcxLjAyMjcyNyA2MDUuMTEz
NjM2IDc0MS40NzcyNzMgMzYzLjYzNjM2NCA2MjAuNzM4NjM2IDYzNy43ODQwOTEgNTIyLjcyNzI3
MyAzNjAuNzk1NDU1IDg2OS4zMTgxODIgNTkwLjkwOTA5MSA2MDkuMzc1IDI3NS41NjgxODIgMzU2
LjUzNDA5MSAyMzcuMjE1OTA5IDI3NS41NjgxODIgNTgwLjk2NTkwOSA1NDIuNjEzNjM2IDYzNC45
NDMxODIgNjM5LjIwNDU0NSA0NTEuNzA0NTQ1IDYxNi40NzcyNzMgNDYwLjIyNzI3MyA2MDcuOTU0
NTQ1IDQ2MC4yMjcyNzMgNjIwLjczODYzNiA1NTcuNTI4NDA5IDg4OS4yMDQ1NDUgNTk4LjAxMTM2
NCA3MTguNzUgMjY0LjIwNDU0NSA2NDIuMDQ1NDU1IDYyMy41Nzk1NDUgNTYyLjUgNjA5LjM3NSAz
NjIuMjE1OTA5IDU0NC4wMzQwOTEgMzYyLjIxNTkwOSA2MzcuNzg0MDkxIDgxMi41XV0KPj4KZW5k
b2JqCjEzIDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL1VP
TUtDRitJbnRlci1SZWd1bGFyCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRz
IFszMSAwIFJdCi9Ub1VuaWNvZGUgMzIgMCBSCj4+CmVuZG9iagozNCAwIG9iago8PAovVHlwZSAv
Rm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9CUFNBSFgrSW50ZXItSXRhbGljCi9GbGFncyA2OAov
Rm9udEJCb3ggWy03NDQuMzE4MTgyIC0zMTkuNjAyMjczIDI1OTguMDExMzY0IDEwOTAuOTA5MDkx
XQovSXRhbGljQW5nbGUgLTkuMzk5OTk0Ci9Bc2NlbnQgOTY4Ljc1Ci9EZXNjZW50IC0yNDEuNDc3
MjczCi9DYXBIZWlnaHQgNzI3LjI3MjcyNwovWEhlaWdodCA1NDUuNDU0NTQ1Ci9TdGVtViAwCi9G
b250RmlsZTMgMzMgMCBSCj4+CmVuZG9iagozNSAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlw
ZSAvQ0lERm9udFR5cGUwCi9CYXNlRm9udCAvQlBTQUhYK0ludGVyLUl0YWxpYwovQ0lEU3lzdGVt
SW5mbyA8PAovUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVu
dCAwCj4+Ci9Gb250RGVzY3JpcHRvciAzNCAwIFIKL1cgWzAgWzI4MDAgNTk4LjAxMTM2NCAyNjQu
MjA0NTQ1IDc1Mi44NDA5MDkgMjgxLjI1IDYxNi40NzcyNzMgNjA1LjExMzYzNiA0NjAuMjI3Mjcz
IDYyNSA2MzYuMzYzNjM2IDU3MS4wMjI3MjcgNjA3Ljk1NDU0NSA2NDIuMDQ1NDU1IDU5MC45MDkw
OTEgMjM3LjIxNTkwOSA1MjIuNzI3MjczIDYwOS4zNzUgNTYzLjkyMDQ1NSA1NTcuNTI4NDA5IDg2
OS4zMTgxODIgNTgzLjgwNjgxOCA1ODUuMjI3MjczIDM2My42MzYzNjQgNTk2LjU5MDkwOSA2MjIu
MTU5MDkxIDU4MC45NjU5MDkgNTU4LjIzODYzNiA2MjAuNzM4NjM2IDIzNy4yMTU5MDkgMzczLjU3
OTU0NSAzNjAuNzk1NDU1IDc0MS40NzcyNzMgMjc1LjU2ODE4MiA2MzcuNzg0MDkxIDUzOS43NzI3
MjcgNTU2LjgxODE4MiAyNzkuODI5NTQ1IDM2Mi4yMTU5MDkgODEyLjUgMzYyLjIxNTkwOSA5MzYu
MDc5NTQ1IDQ2MC4yMjcyNzMgNjA5LjM3NSAyNzUuNTY4MTgyIDM1Ni41MzQwOTEgNjA5LjM3NSA2
MzAuNjgxODE4XV0KPj4KZW5kb2JqCjE2IDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9U
eXBlMAovQmFzZUZvbnQgL0JQU0FIWCtJbnRlci1JdGFsaWMKL0VuY29kaW5nIC9JZGVudGl0eS1I
Ci9EZXNjZW5kYW50Rm9udHMgWzM1IDAgUl0KL1RvVW5pY29kZSAzNiAwIFIKPj4KZW5kb2JqCjQg
MCBvYmoKPDwKPj4KZW5kb2JqCjMgMCBvYmoKPDwKL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDEgMCBS
Ci9OYW1lcyAyIDAgUgovVmlld2VyUHJlZmVyZW5jZXMgNSAwIFIKPj4KZW5kb2JqCjEgMCBvYmoK
PDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFs4IDAgUl0KPj4KZW5kb2JqCjIgMCBvYmoK
PDwKL0Rlc3RzIDw8CiAgL05hbWVzIFsKXQo+Pgo+PgplbmRvYmoKNSAwIG9iago8PAovRGlzcGxh
eURvY1RpdGxlIHRydWUKPj4KZW5kb2JqCjI4IDAgb2JqCjw8Ci9MZW5ndGggMzg4Ci9GaWx0ZXIg
L0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nF2Sy2rDMBBF9/4KLdtFsSVbcQIhUNyNF31QNx9gS6PU
0MhGURb5+6I7agtdxHA8Mzdzkim7/qn3cxTlW1jMQFG42dtAl+UaDImJTrMvpBJ2NjETnuY8rkXZ
9U/D7RLp3Hu3iP2+EKJ8p9N8ieEm7h7tMtF9evcaLIXZn8TdsRvwZriu6xedyUdRFYeDsOSKsnse
15fxTKLE6ENvycc53h6O3fDX8XFbSSiw5JXMYumyjobC6E9U7Kuqqg5755w7FOTtv3Ld8tTkzOcY
frrxBMgEjWNQCdpcqRNsNEMDIAadQOW2TQJdM7Roy2lbpOWAHUAxjGjLMxM2yGBQMQwWMw0DobJj
cKhsABI+DUdL+GjeTcJnIxng03KAZB/LAB+dA+DT8JdK+LS8m4SPzmnw0bkNPjpHw0eztoRPu2WA
T8M/ooRPk9Pg07C2go/iaAWfmndT8Kk5WsFHcZqCT13hAvJfnW4h3e3vnZlrCOQjjhu3la5q9vR7
/+uypil8vgFHh8+2CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwKL0xlbmd0aCA0NzcKL0Zp
bHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnicXZRNb5wwEIbv/Aof00MEtvlIpNVKFblwSFt1
mx8A9rBByhrEsof99xXvO02rHkB6GM8wj82Qt91Ll6bN5D/WOZxkM+OU4irX+bYGMYOcp5RZZ+IU
NiXcw6VfsrztXk736yaXLo2zORwyY/Kfcp6u23o3D1/jPMiX/dn3Nco6pbN5eGtPeHK6LcuHXCRt
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
xVwVHVPOAF2tQ3xYw4JgMVJ5sbL4KMYdxNxibC3EeqyaiOYEMxpicRucXgwlS8ADtB3s9lUKplZY
uvWoRgrYjRwjtl03th3FbUZTd0DtrjWbzILueozRu5sx1qBmTqhVXR1qcmHtZAhAzWbdctYkyLFA
SznQ4Xhsko5HJmEsJmL97/n//24416rH7GcwV5OTsCqIfi285fdqlunokDEGHx3qxaStwzEvdvGf
9pR2qheSyNgyBZeiF0+qeBJvBK+FgXukbJmC5RiL41XMRjvEgX9TZALegH5YhkeydDwxCf+Aufja
eY4ufNcDfjjQosPuHXArVMN7vVNGSSd6oc2MVbEFozEjecLvVZ3aDIqB4J0mxdJI6emR4H8RQDbE
Q5mF/ih6sHL6fzCBxHAWBoKYdC4P7r2gtAnN4IKMw3v1NQoO7G75n+r9P6TrkeQKZW5kc3RyZWFt
CmVuZG9iagozNyAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL0hlaWdo
dCAyMDAKL1dpZHRoIDIwMAovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9EZWNvZGUgWzAgMV0KL0xlbmd0aCAzMDYwCj4+CnN0
cmVhbQp4nO2be3AUVRaH55yeSTIJTB4QHoJgQiDGbCTIwopGBMEtXvJwVyxegbDoqqUlqAViUQqL
4qqLIAoqsKsiFLAiKm9QUUADJIKwAgLJSoiGhEDCkNckM31vtnoCZPp29/S9YbesrbrfX1CVPnN+
99XnnnPa4ZBIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpH8lwCAX9cB
RFQ0EFvqCigKOFDB63ACHKC50TITAICIrTqk/KbXbZlpSYlRKKwlaKJ18m8HjZ74SJajhcOg2YCo
Nl3TMlOc4iYQAOP7Tp7/3me79393OP+bzz9e9uyDN7sBkNuWprrj0Jnvf3GkqKKqYRG0ZDgBASNS
Rz6z9KMd+/IWx4maQFQ8dy3cX1RRTyhRA4GAqlK1tvz0tpnpEcinBBBj7nztyLkaoqoqUcmSFugA
xMjuj249VVYTICQQ2NhWEXzc03v+MT+lRCW08SrB/1HfzmlpUfZKACO7PXSwgdIrFgh5Q1gHYGTS
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
CmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDM4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNDY2
NiAwMDAwMCBuIAowMDAwMDA0NzIzIDAwMDAwIG4gCjAwMDAwMDQ1NzkgMDAwMDAgbiAKMDAwMDAw
NDU1OCAwMDAwMCBuIAowMDAwMDA0NzcwIDAwMDAwIG4gCjAwMDAwMzE5NjkgMDAwMDAgbiAKMDAw
MDAwMDc5MiAwMDAwMCBuIAowMDAwMDAwNjMxIDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAK
MDAwMDAwMDA4OSAwMDAwMCBuIAowMDAwMDAwMjEwIDAwMDAwIG4gCjAwMDAwMDIwODIgMDAwMDAg
biAKMDAwMDAwMzMxMCAwMDAwMCBuIAowMDAwMDAwMjU1IDAwMDAwIG4gCjAwMDAwMDAzMzAgMDAw
MDAgbiAKMDAwMDAwNDQxMSAwMDAwMCBuIAowMDAwMDAxMTM5IDAwMDAwIG4gCjAwMDAwMDA0NTIg
MDAwMDAgbiAKMDAwMDAwMDUxNSAwMDAwMCBuIAowMDAwMDI1NDg0IDAwMDAwIG4gCjAwMDAwMDEw
NjMgMDAwMDAgbiAKMDAwMDAwMDk3MSAwMDAwMCBuIAowMDAwMDAwOTk5IDAwMDAwIG4gCjAwMDAw
MDEwMjcgMDAwMDAgbiAKMDAwMDAwNTgyNCAwMDAwMCBuIAowMDAwMDAxMjM3IDAwMDAwIG4gCjAw
MDAwMDE0OTkgMDAwMDAgbiAKMDAwMDAwNDgxMyAwMDAwMCBuIAowMDAwMDEwMzI5IDAwMDAwIG4g
CjAwMDAwMDIyMjcgMDAwMDAgbiAKMDAwMDAwMjQ5MiAwMDAwMCBuIAowMDAwMDA1Mjc0IDAwMDAw
IG4gCjAwMDAwMTY3NzUgMDAwMDAgbiAKMDAwMDAwMzQ1OCAwMDAwMCBuIAowMDAwMDAzNzMxIDAw
MDAwIG4gCjAwMDAwMTYyNzIgMDAwMDAgbiAKMDAwMDAyMjIzOCAwMDAwMCBuIAp0cmFpbGVyCjw8
Ci9TaXplIDM4Ci9Sb290IDMgMCBSCi9JbmZvIDIxIDAgUgovSUQgWzwzMTk3YjBlZjg3M2VkOTFk
NjQ2ZDZhY2ZjOGFlZmYxYz4gPDMxOTdiMGVmODczZWQ5MWQ2NDZkNmFjZmM4YWVmZjFjPl0KPj4K
c3RhcnR4cmVmCjM3NDEwCiUlRU9GCg==
----_NmP-215108abdd27613f-Part_1--

From - Mon Feb 02 14:15:42 2026
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <zuerich-bounces@chaostreff.ch>
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id MPP7JoyxgGk+ghQAYBR5ng
	(envelope-from <zuerich-bounces@chaostreff.ch>); Mon, 02 Feb 2026 14:15:40 +0000
Return-path: <zuerich-bounces@chaostreff.ch>
Envelope-to: pfeifferj@archlinux.ch
Delivery-date: Mon, 02 Feb 2026 14:15:40 +0000
Received: from chaos01.kabelsalat.ch ([185.95.216.171])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <zuerich-bounces@chaostreff.ch>)
	id 1vmuiJ-00000006OR4-1g9s
	for pfeifferj@archlinux.ch;
	Mon, 02 Feb 2026 14:15:40 +0000
Received: from chaos01.kabelsalat.ch (localhost [127.0.0.1])
	by chaos01.kabelsalat.ch (Postfix) with ESMTP id 1E8B22321A;
	Mon, 02 Feb 2026 15:15:36 +0100 (CET)
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=194.126.200.224;
 helo=mail-gateway-shared02.cyon.net; envelope-from=nussgipfel@brain4free.org;
 receiver=chaostreff.ch 
Received: from mail-gateway-shared02.cyon.net (mail-gateway-shared02.cyon.net
 [194.126.200.224])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest
 SHA256)
	(No client certificate requested)
	by chaos01.kabelsalat.ch (Postfix) with ESMTPS id 777E022248;
	Mon, 02 Feb 2026 15:15:21 +0100 (CET)
Received: from s075.cyon.net ([149.126.4.84])
	by mail-gateway-shared02.cyon.net with esmtpsa
 (TLS1.2:ECDHE_SECP256R1__RSA_SHA512__AES_256_GCM:256)
	(Exim)
	(envelope-from <nussgipfel@brain4free.org>)
	id 1vmuhy-00FdxS-28;
	Mon, 02 Feb 2026 15:15:20 +0100
Received: from [10.20.10.51] (port=65020 helo=mail.cyon.ch)
	by s075.cyon.net with esmtpa (Exim 4.98.1)
	(envelope-from <nussgipfel@brain4free.org>)
	id 1vmuht-0000000Dqk5-1Zsp;
	Mon, 02 Feb 2026 15:15:13 +0100
Date: Mon, 2 Feb 2026 15:15:08 +0100
From: Christoph Zimmermann <nussgipfel@brain4free.org>
To: bitwascherei@chaostreff.ch, zuerich@chaostreff.ch,
 office@digitale-gesellschaft.ch
Message-ID: <20260202151508.05754224@toughfrinz.lan>
In-Reply-To: <20260117133705.5753ea93@toughfrinz.lan>
References: <20260117133705.5753ea93@toughfrinz.lan>
X-Mailer: Claws Mail 4.3.1 (GTK 3.24.51; x86_64-pc-linux-gnu)
MIME-Version: 1.0
X-AntiAbuse: T/**
 * The `node:fs` module enables interacting with the file system in a
 * way modeled on standard POSIX functions.
 *
 * To use the promise-based APIs:
 *
 * ```js
 * import * as fs from 'node:fs/promises';
 * ```
 *
 * To use the callback and sync APIs:
 *
 * ```js
 * import * as fs from 'node:fs';
 * ```
 *
 * All file system operations have synchronous, callback, and promise-based
 * forms, and are accessible using both CommonJS syntax and ES6 Modules (ESM).
 * @see [source](https://github.com/nodejs/node/blob/v22.x/lib/fs.js)
 */
declare module "fs" {
    import * as stream from "node:stream";
    import { Abortable, EventEmitter } from "node:events";
    import { URL } from "node:url";
    import * as promises from "node:fs/promises";
    export { promises };
    /**
     * Valid types for path values in "fs".
     */
    export type PathLike = string | Buffer | URL;
    export type PathOrFileDescriptor = PathLike | number;
    export type TimeLike = string | number | Date;
    export type NoParamCallback = (err: NodeJS.ErrnoException | null) => void;
    export type BufferEncodingOption =
        | "buffer"
        | {
            encoding: "buffer";
        };
    export interface ObjectEncodingOptions {
        encoding?: BufferEncoding | null | undefined;
    }
    export type EncodingOption = ObjectEncodingOptions | BufferEncoding | undefined | null;
    export type OpenMode = number | string;
    export type Mode = number | string;
    export interface StatsBase<T> {
        isFile(): boolean;
        isDirectory(): boolean;
        isBlockDevice(): boolean;
        isCharacterDevice(): boolean;
        isSymbolicLink(): boolean;
        isFIFO(): boolean;
        isSocket(): boolean;
        dev: T;
        ino: T;
        mode: T;
        nlink: T;
        uid: T;
        gid: T;
        rdev: T;
        size: T;
        blksize: T;
        blocks: T;
        atimeMs: T;
        mtimeMs: T;
        ctimeMs: T;
        birthtimeMs: T;
        atime: Date;
        mtime: Date;
        ctime: Date;
        birthtime: Date;
    }
    export interface Stats extends StatsBase<number> {}
    /**
     * A `fs.Stats` object provides information about a file.
     *
     * Objects returned from {@link stat}, {@link lstat}, {@link fstat}, and
     * their synchronous counterparts are of this type.
     * If `bigint` in the `options` passed to those methods is true, the numeric values
     * will be `bigint` instead of `number`, and the object will contain additional
     * nanosecond-precision properties suffixed with `Ns`. `Stat` objects are not to be created directly using the `new` keyword.
     *
     * ```console
     * Stats {
     *   dev: 2114,
     *   ino: 48064969,
     *   mode: 33188,
     *   nlink: 1,
     *   uid: 85,
     *   gid: 100,
     *   rdev: 0,
     *   size: 527,
     *   blksize: 4096,
     *   blocks: 8,
     *   atimeMs: 1318289051000.1,
     *   mtimeMs: 1318289051000.1,
     *   ctimeMs: 1318289051000.1,
     *   birthtimeMs: 1318289051000.1,
     *   atime: Mon, 10 Oct 2011 23:24:11 GMT,
     *   mtime: Mon, 10 Oct 2011 23:24:11 GMT,
     *   ctime: Mon, 10 Oct 2011 23:24:11 GMT,
     *   birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
     * ```
     *
     * `bigint` version:
     *
     * ```console
     * BigIntStats {
     *   dev: 2114n,
     *   ino: 48064969n,
     *   mode: 33188n,
     *   nlink: 1n,
     *   uid: 85n,
     *   gid: 100n,
     *   rdev: 0n,
     *   size: 527n,
     *   blksize: 4096n,
     *   blocks: 8n,
     *   atimeMs: 1318289051000n,
     *   mtimeMs: 1318289051000n,
     *   ctimeMs: 1318289051000n,
     *   birthtimeMs: 1318289051000n,
     *   atimeNs: 1318289051000000000n,
     *   mtimeNs: 1318289051000000000n,
     *   ctimeNs: 1318289051000000000n,
     *   birthtimeNs: 1318289051000000000n,
     *   atime: Mon, 10 Oct 2011 23:24:11 GMT,
     *   mtime: Mon, 10 Oct 2011 23:24:11 GMT,
     *   ctime: Mon, 10 Oct 2011 23:24:11 GMT,
     *   birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
     * ```
     * @since v0.1.21
     */
    export class Stats {
        private constructor();
    }
    export interface StatsFsBase<T> {
        /** Type of file system. */
        type: T;
        /**  Optimal transfer block size. */
        bsize: T;
        /**  Total data blocks in file system. */
        blocks: T;
        /** Free blocks in file system. */
        bfree: T;
        /** Available blocks for unprivileged users */
        bavail: T;
        /** Total file nodes in file system. */
        files: T;
        /** Free file nodes in file system. */
        ffree: T;
    }
    export interface StatsFs extends StatsFsBase<number> {}
    /**
     * Provides information about a mounted file system.
     *
     * Objects returned from {@link statfs} and its synchronous counterpart are of
     * this type. If `bigint` in the `options` passed to those methods is `true`, the
     * numeric values will be `bigint` instead of `number`.
     *
     * ```console
     * StatFs {
     *   type: 1397114950,
     *   bsize: 4096,
     *   blocks: 121938943,
     *   bfree: 61058895,
     *   bavail: 61058895,
     *   files: 999,
     *   ffree: 1000000
     * }
     * ```
     *
     * `bigint` version:
     *
     * ```console
     * StatFs {
     *   type: 1397114950n,
     *   bsize: 4096n,
     *   blocks: 121938943n,
     *   bfree: 61058895n,
     *   bavail: 61058895n,
     *   files: 999n,
     *   ffree: 1000000n
     * }
     * ```
     * @since v19.6.0, v18.15.0
     */
    export class StatsFs {}
    export interface BigIntStatsFs extends StatsFsBase<bigint> {}
    export interface StatFsOptions {
        bigint?: boolean | undefined;
    }
    /**
     * A representation of a directory entry, which can be a file or a subdirectory
     * within the directory, as returned by reading from an `fs.Dir`. The
     * directory entry is a combination of the file name and file type pairs.
     *
     * Additionally, when {@link readdir} or {@link readdirSync} is called with
     * the `withFileTypes` option set to `true`, the resulting array is filled with `fs.Dirent` objects, rather than strings or `Buffer` s.
     * @since v10.10.0
     */
    export class Dirent {
        /**
         * Returns `true` if the `fs.Dirent` object describes a regular file.
         * @since v10.10.0
         */
        isFile(): boolean;
        /**
         * Returns `true` if the `fs.Dirent` object describes a file system
         * directory.
         * @since v10.10.0
         */
        isDirectory(): boolean;
        /**
         * Returns `true` if the `fs.Dirent` object describes a block device.
         * @since v10.10.0
         */
        isBlockDevice(): boolean;
        /**
         * Returns `true` if the `fs.Dirent` object describes a character device.
         * @since v10.10.0
         */
        isCharacterDevice(): boolean;
        /**
         * Returns `true` if the `fs.Dirent` object describes a symbolic link.
         * @since v10.10.0
         */
        isSymbolicLink(): boolean;
        /**
         * Returns `true` if the `fs.Dirent` object describes a first-in-first-out
         * (FIFO) pipe.
         * @since v10.10.0
         */
        isFIFO(): boolean;
        /**
         * Returns `true` if the `fs.Dirent` object describes a socket.
         * @since v10.10.0
         */
        isSocket(): boolean;
        /**
         * The file name that this `fs.Dirent` object refers to. The type of this
         * value is determined by the `options.encoding` passed to {@link readdir} or {@link readdirSync}.
         * @since v10.10.0
         */
        name: string;
        /**
         * The base path that this `fs.Dirent` object refers to.
         * @since v20.12.0
         */
        parentPath: string;
        /**
         * Alias for `dirent.parentPath`.
         * @since v20.1.0
         * @deprecated Since v20.12.0
         */
        path: string;
    }
    /**
     * A class representing a directory stream.
     *
     * Created by {@link opendir}, {@link opendirSync}, or `fsPromises.opendir()`.
     *
     * ```js
     * import { opendir } from 'node:fs/promises';
     *
     * try {
     *   const dir = await opendir('./');
     *   for await (const dirent of dir)
     *     console.log(dirent.name);
     * } catch (err) {
     *   console.error(err);
     * }
     * ```
     *
     * When using the async iterator, the `fs.Dir` object will be automatically
     * closed after the iterator exits.
     * @since v12.12.0
     */
    export class Dir implements AsyncIterable<Dirent> {
        /**
         * The read-only path of this directory as was provided to {@link opendir},{@link opendirSync}, or `fsPromises.opendir()`.
         * @since v12.12.0
         */
        readonly path: string;
        /**
         * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read.
         */
        [Symbol.asyncIterator](): NodeJS.AsyncIterator<Dirent>;
        /**
         * Asynchronously close the directory's underlying resource handle.
         * Subsequent reads will result in errors.
         *
         * A promise is returned that will be fulfilled after the resource has been
         * closed.
         * @since v12.12.0
         */
        close(): Promise<void>;
        close(cb: NoParamCallback): void;
        /**
         * Synchronously close the directory's underlying resource handle.
         * Subsequent reads will result in errors.
         * @since v12.12.0
         */
        closeSync(): void;
        /**
         * Asynchronously read the next directory entry via [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) as an `fs.Dirent`.
         *
         * A promise is returned that will be fulfilled with an `fs.Dirent`, or `null` if there are no more directory entries to read.
         *
         * Directory entries returned by this function are in no particular order as
         * provided by the operating system's underlying directory mechanisms.
         * Entries added or removed while iterating over the directory might not be
         * included in the iteration results.
         * @since v12.12.0
         * @return containing {fs.Dirent|null}
         */
        read(): Promise<Dirent | null>;
        read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void;
        /**
         * Synchronously read the next directory entry as an `fs.Dirent`. See the
         * POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more detail.
         *
         * If there are no more directory entries to read, `null` will be returned.
         *
         * Directory entries returned by this function are in no particular order as
         * provided by the operating system's underlying directory mechanisms.
         * Entries added or removed while iterating over the directory might not be
         * included in the iteration results.
         * @since v12.12.0
         */
        readSync(): Dirent | null;
    }
    /**
     * Class: fs.StatWatcher
     * @since v14.3.0, v12.20.0
     * Extends `EventEmitter`
     * A successful call to {@link watchFile} method will return a new fs.StatWatcher object.
     */
    export interface StatWatcher extends EventEmitter {
        /**
         * When called, requests that the Node.js event loop _not_ exit so long as the `fs.StatWatcher` is active. Calling `watcher.ref()` multiple times will have
         * no effect.
         *
         * By default, all `fs.StatWatcher` objects are "ref'ed", making it normally
         * unnecessary to call `watcher.ref()` unless `watcher.unref()` had been
         * called previously.
         * @since v14.3.0, v12.20.0
         */
        ref(): this;
        /**
         * When called, the active `fs.StatWatcher` object will not require the Node.js
         * event loop to remain active. If there is no other activity keeping the
         * event loop running, the process may exit before the `fs.StatWatcher` object's
         * callback is invoked. Calling `watcher.unref()` multiple times will have
         * no effect.
         * @since v14.3.0, v12.20.0
         */
        unref(): this;
    }
    export interface FSWatcher extends EventEmitter {
        /**
         * Stop watching for changes on the given `fs.FSWatcher`. Once stopped, the `fs.FSWatcher` object is no longer usable.
         * @since v0.5.8
         */
        close(): void;
        /**
         * When called, requests that the Node.js event loop _not_ exit so long as the `fs.FSWatcher` is active. Calling `watcher.ref()` multiple times will have
         * no effect.
         *
         * By default, all `fs.FSWatcher` objects are "ref'ed", making it normally
         * unnecessary to call `watcher.ref()` unless `watcher.unref()` had been
         * called previously.
         * @since v14.3.0, v12.20.0
         */
        ref(): this;
        /**
         * When called, the active `fs.FSWatcher` object will not require the Node.js
         * event loop to remain active. If there is no other activity keeping the
         * event loop running, the process may exit before the `fs.FSWatcher` object's
         * callback is invoked. Calling `watcher.unref()` multiple times will have
         * no effect.
         * @since v14.3.0, v12.20.0
         */
        unref(): this;
        /**
         * events.EventEmitter
         *   1. change
         *   2. close
         *   3. error
         */
        addListener(event: string, listener: (...args: any[]) => void): this;
        addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
        addListener(event: "close", listener: () => void): this;
        addListener(event: "error", listener: (error: Error) => void): this;
        on(event: string, listener: (...args: any[]) => void): this;
        on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
        on(event: "close", listener: () => void): this;
        on(event: "error", listener: (error: Error) => void): this;
        once(event: string, listener: (...args: any[]) => void): this;
        once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
        once(event: "close", listener: () => void): this;
        once(event: "error", listener: (error: Error) => void): this;
        prependListener(event: string, listener: (...args: any[]) => void): this;
        prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
        prependListener(event: "close", listener: () => void): this;
        prependListener(event: "error", listener: (error: Error) => void): this;
        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
        prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
        prependOnceListener(event: "close", listener: () => void): this;
        prependOnceListener(event: "error", listener: (error: Error) => void): this;
    }
    /**
     * Instances of `fs.ReadStream` are created and returned using the {@link createReadStream} function.
     * @since v0.1.93
     */
    export class ReadStream extends stream.Readable {
        close(callback?: (err?: NodeJS.ErrnoException | null) => void): void;
        /**
         * The number of bytes that have been read so far.
         * @since v6.4.0
         */
        bytesRead: number;
        /**
         * The path to the file the stream is reading from as specified in the first
         * argument to `fs.createReadStream()`. If `path` is passed as a string, then`readStream.path` will be a string. If `path` is passed as a `Buffer`, then`readStream.path` will be a
         * `Buffer`. If `fd` is specified, then`readStream.path` will be `undefined`.
         * @since v0.1.93
         */
        path: string | Buffer;
        /**
         * This property is `true` if the underlying file has not been opened yet,
         * i.e. before the `'ready'` event is emitted.
         * @since v11.2.0, v10.16.0
         */
        pending: boolean;
        /**
         * events.EventEmitter
         *   1. open
         *   2. close
         *   3. ready
         */
        addListener<K extends keyof ReadStreamEvents>(event: K, listener: ReadStreamEvents[K]): this;
        on<K extends keyof ReadStreamEvents>(event: K, listener: ReadStreamEvents[K]): this;
        once<K extends keyof ReadStreamEvents>(event: K, listener: ReadStreamEvents[K]): this;
        prependListener<K extends keyof ReadStreamEvents>(event: K, listener: ReadStreamEvents[K]): this;
        prependOnceListener<K extends keyof ReadStreamEvents>(event: K, listener: ReadStreamEvents[K]): this;
    }

    /**
     * The Keys are events of the ReadStream and the values are the functions that are called when the event is emitted.
     */
    type ReadStreamEvents = {
        close: () => void;
        data: (chunk: Buffer | string) => void;
        end: () => void;
        error: (err: Error) => void;
        open: (fd: number) => void;
        pause: () => void;
        readable: () => void;
        ready: () => void;
        resume: () => void;
    } & CustomEvents;

    /**
     * string & {} allows to allow any kind of strings for the event
     * but still allows to have auto completion for the normal events.
     */
    type CustomEvents = { [Key in string & {} | symbol]: (...args: any[]) => void };

    /**
     * The Keys are events of the WriteStream and the values are the functions that are called when the event is emitted.
     */
    type WriteStreamEvents = {
        close: () => void;
        drain: () => void;
        error: (err: Error) => void;
        finish: () => void;
        open: (fd: number) => void;
        pipe: (src: stream.Readable) => void;
        ready: () => void;
        unpipe: (src: stream.Readable) => void;
    } & CustomEvents;
    /**
     * * Extends `stream.Writable`
     *
     * Instances of `fs.WriteStream` are created and returned using the {@link createWriteStream} function.
     * @since v0.1.93
     */
    export class WriteStream extends stream.Writable {
        /**
         * Closes `writeStream`. Optionally accepts a
         * callback that will be executed once the `writeStream`is closed.
         * @since v0.9.4
         */
        close(callback?: (err?: NodeJS.ErrnoException | null) => void): void;
        /**
         * The number of bytes written so far. Does not include data that is still queued
         * for writing.
         * @since v0.4.7
         */
        bytesWritten: number;
        /**
         * The path to the file the stream is writing to as specified in the first
         * argument to {@link createWriteStream}. If `path` is passed as a string, then`writeStream.path` will be a string. If `path` is passed as a `Buffer`, then`writeStream.path` will be a
         * `Buffer`.
         * @since v0.1.93
         */
        path: string | Buffer;
        /**
         * This property is `true` if the underlying file has not been opened yet,
         * i.e. before the `'ready'` event is emitted.
         * @since v11.2.0
         */
        pending: boolean;
        /**
         * events.EventEmitter
         *   1. open
         *   2. close
         *   3. ready
         */
        addListener<K extends keyof WriteStreamEvents>(event: K, listener: WriteStreamEvents[K]): this;
        on<K extends keyof WriteStreamEvents>(event: K, listener: WriteStreamEvents[K]): this;
        once<K extends keyof WriteStreamEvents>(event: K, listener: WriteStreamEvents[K]): this;
        prependListener<K extends keyof WriteStreamEvents>(event: K, listener: WriteStreamEvents[K]): this;
        prependOnceListener<K extends keyof WriteStreamEvents>(event: K, listener: WriteStreamEvents[K]): this;
    }
    /**
     * Asynchronously rename file at `oldPath` to the pathname provided
     * as `newPath`. In the case that `newPath` already exists, it will
     * be overwritten. If there is a directory at `newPath`, an error will
     * be raised instead. No arguments other than a possible exception are
     * given to the completion callback.
     *
     * See also: [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html).
     *
     * ```js
     * import { rename } from 'node:fs';
     *
     * rename('oldFile.txt', 'newFile.txt', (err) => {
     *   if (err) throw err;
     *   console.log('Rename complete!');
     * });
     * ```
     * @since v0.0.2
     */
    export function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
    export namespace rename {
        /**
         * Asynchronous rename(2) - Change the name or location of a file or directory.
         * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         */
        function __promisify__(oldPath: PathLike, newPath: PathLike): Promise<void>;
    }
    /**
     * Renames the file from `oldPath` to `newPath`. Returns `undefined`.
     *
     * See the POSIX [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html) documentation for more details.
     * @since v0.1.21
     */
    export function renameSync(oldPath: PathLike, newPath: PathLike): void;
    /**
     * Truncates the file. No arguments other than a possible exception are
     * given to the completion callback. A file descriptor can also be passed as the
     * first argument. In this case, `fs.ftruncate()` is called.
     *
     * ```js
     * import { truncate } from 'node:fs';
     * // Assuming that 'path/file.txt' is a regular file.
     * truncate('path/file.txt', (err) => {
     *   if (err) throw err;
     *   console.log('path/file.txt was truncated');
     * });
     * ```
     *
     * Passing a file descriptor is deprecated and may result in an error being thrown
     * in the future.
     *
     * See the POSIX [`truncate(2)`](http://man7.org/linux/man-pages/man2/truncate.2.html) documentation for more details.
     * @since v0.8.6
     * @param [len=0]
     */
    export function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void;
    /**
     * Asynchronous truncate(2) - Truncate a file to a specified length.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export function truncate(path: PathLike, callback: NoParamCallback): void;
    export namespace truncate {
        /**
         * Asynchronous truncate(2) - Truncate a file to a specified length.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param len If not specified, defaults to `0`.
         */
        function __promisify__(path: PathLike, len?: number | null): Promise<void>;
    }
    /**
     * Truncates the file. Returns `undefined`. A file descriptor can also be
     * passed as the first argument. In this case, `fs.ftruncateSync()` is called.
     *
     * Passing a file descriptor is deprecated and may result in an error being thrown
     * in the future.
     * @since v0.8.6
     * @param [len=0]
     */
    export function truncateSync(path: PathLike, len?: number | null): void;
    /**
     * Truncates the file descriptor. No arguments other than a possible exception are
     * given to the completion callback.
     *
     * See the POSIX [`ftruncate(2)`](http://man7.org/linux/man-pages/man2/ftruncate.2.html) documentation for more detail.
     *
     * If the file referred to by the file descriptor was larger than `len` bytes, only
     * the first `len` bytes will be retained in the file.
     *
     * For example, the following program retains only the first four bytes of the
     * file:
     *
     * ```js
     * import { open, close, ftruncate } from 'node:fs';
     *
     * function closeFd(fd) {
     *   close(fd, (err) => {
     *     if (err) throw err;
     *   });
     * }
     *
     * open('temp.txt', 'r+', (err, fd) => {
     *   if (err) throw err;
     *
     *   try {
     *     ftruncate(fd, 4, (err) => {
     *       closeFd(fd);
     *       if (err) throw err;
     *     });
     *   } catch (err) {
     *     closeFd(fd);
     *     if (err) throw err;
     *   }
     * });
     * ```
     *
     * If the file previously was shorter than `len` bytes, it is extended, and the
     * extended part is filled with null bytes (`'\0'`):
     *
     * If `len` is negative then `0` will be used.
     * @since v0.8.6
     * @param [len=0]
     */
    export function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void;
    /**
     * Asynchronous ftruncate(2) - Truncate a file to a specified length.
     * @param fd A file descriptor.
     */
    export function ftruncate(fd: number, callback: NoParamCallback): void;
    export namespace ftruncate {
        /**
         * Asynchronous ftruncate(2) - Truncate a file to a specified length.
         * @param fd A file descriptor.
         * @param len If not specified, defaults to `0`.
         */
        function __promisify__(fd: number, len?: number | null): Promise<void>;
    }
    /**
     * Truncates the file descriptor. Returns `undefined`.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link ftruncate}.
     * @since v0.8.6
     * @param [len=0]
     */
    export function ftruncateSync(fd: number, len?: number | null): void;
    /**
     * Asynchronously changes owner and group of a file. No arguments other than a
     * possible exception are given to the completion callback.
     *
     * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail.
     * @since v0.1.97
     */
    export function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
    export namespace chown {
        /**
         * Asynchronous chown(2) - Change ownership of a file.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
    }
    /**
     * Synchronously changes owner and group of a file. Returns `undefined`.
     * This is the synchronous version of {@link chown}.
     *
     * See the POSIX [`chown(2)`](http://man7.org/linux/man-pages/man2/chown.2.html) documentation for more detail.
     * @since v0.1.97
     */
    export function chownSync(path: PathLike, uid: number, gid: number): void;
    /**
     * Sets the owner of the file. No arguments other than a possible exception are
     * given to the completion callback.
     *
     * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail.
     * @since v0.4.7
     */
    export function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void;
    export namespace fchown {
        /**
         * Asynchronous fchown(2) - Change ownership of a file.
         * @param fd A file descriptor.
         */
        function __promisify__(fd: number, uid: number, gid: number): Promise<void>;
    }
    /**
     * Sets the owner of the file. Returns `undefined`.
     *
     * See the POSIX [`fchown(2)`](http://man7.org/linux/man-pages/man2/fchown.2.html) documentation for more detail.
     * @since v0.4.7
     * @param uid The file's new owner's user id.
     * @param gid The file's new group's group id.
     */
    export function fchownSync(fd: number, uid: number, gid: number): void;
    /**
     * Set the owner of the symbolic link. No arguments other than a possible
     * exception are given to the completion callback.
     *
     * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more detail.
     */
    export function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
    export namespace lchown {
        /**
         * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
    }
    /**
     * Set the owner for the path. Returns `undefined`.
     *
     * See the POSIX [`lchown(2)`](http://man7.org/linux/man-pages/man2/lchown.2.html) documentation for more details.
     * @param uid The file's new owner's user id.
     * @param gid The file's new group's group id.
     */
    export function lchownSync(path: PathLike, uid: number, gid: number): void;
    /**
     * Changes the access and modification times of a file in the same way as {@link utimes}, with the difference that if the path refers to a symbolic
     * link, then the link is not dereferenced: instead, the timestamps of the
     * symbolic link itself are changed.
     *
     * No arguments other than a possible exception are given to the completion
     * callback.
     * @since v14.5.0, v12.19.0
     */
    export function lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void;
    export namespace lutimes {
        /**
         * Changes the access and modification times of a file in the same way as `fsPromises.utimes()`,
         * with the difference that if the path refers to a symbolic link, then the link is not
         * dereferenced: instead, the timestamps of the symbolic link itself are changed.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param atime The last access time. If a string is provided, it will be coerced to number.
         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
         */
        function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void>;
    }
    /**
     * Change the file system timestamps of the symbolic link referenced by `path`.
     * Returns `undefined`, or throws an exception when parameters are incorrect or
     * the operation fails. This is the synchronous version of {@link lutimes}.
     * @since v14.5.0, v12.19.0
     */
    export function lutimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void;
    /**
     * Asynchronously changes the permissions of a file. No arguments other than a
     * possible exception are given to the completion callback.
     *
     * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail.
     *
     * ```js
     * import { chmod } from 'node:fs';
     *
     * chmod('my_file.txt', 0o775, (err) => {
     *   if (err) throw err;
     *   console.log('The permissions for file "my_file.txt" have been changed!');
     * });
     * ```
     * @since v0.1.30
     */
    export function chmod(path: PathLike, mode: Mode, callback: NoParamCallback): void;
    export namespace chmod {
        /**
         * Asynchronous chmod(2) - Change permissions of a file.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
         */
        function __promisify__(path: PathLike, mode: Mode): Promise<void>;
    }
    /**
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link chmod}.
     *
     * See the POSIX [`chmod(2)`](http://man7.org/linux/man-pages/man2/chmod.2.html) documentation for more detail.
     * @since v0.6.7
     */
    export function chmodSync(path: PathLike, mode: Mode): void;
    /**
     * Sets the permissions on the file. No arguments other than a possible exception
     * are given to the completion callback.
     *
     * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail.
     * @since v0.4.7
     */
    export function fchmod(fd: number, mode: Mode, callback: NoParamCallback): void;
    export namespace fchmod {
        /**
         * Asynchronous fchmod(2) - Change permissions of a file.
         * @param fd A file descriptor.
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
         */
        function __promisify__(fd: number, mode: Mode): Promise<void>;
    }
    /**
     * Sets the permissions on the file. Returns `undefined`.
     *
     * See the POSIX [`fchmod(2)`](http://man7.org/linux/man-pages/man2/fchmod.2.html) documentation for more detail.
     * @since v0.4.7
     */
    export function fchmodSync(fd: number, mode: Mode): void;
    /**
     * Changes the permissions on a symbolic link. No arguments other than a possible
     * exception are given to the completion callback.
     *
     * This method is only implemented on macOS.
     *
     * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail.
     * @deprecated Since v0.4.7
     */
    export function lchmod(path: PathLike, mode: Mode, callback: NoParamCallback): void;
    /** @deprecated */
    export namespace lchmod {
        /**
         * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
         */
        function __promisify__(path: PathLike, mode: Mode): Promise<void>;
    }
    /**
     * Changes the permissions on a symbolic link. Returns `undefined`.
     *
     * This method is only implemented on macOS.
     *
     * See the POSIX [`lchmod(2)`](https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2) documentation for more detail.
     * @deprecated Since v0.4.7
     */
    export function lchmodSync(path: PathLike, mode: Mode): void;
    /**
     * Asynchronous [`stat(2)`](http://man7.org/linux/man-pages/man2/stat.2.html). The callback gets two arguments `(err, stats)` where`stats` is an `fs.Stats` object.
     *
     * In case of an error, the `err.code` will be one of `Common System Errors`.
     *
     * {@link stat} follows symbolic links. Use {@link lstat} to look at the
     * links themselves.
     *
     * Using `fs.stat()` to check for the existence of a file before calling`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended.
     * Instead, user code should open/read/write the file directly and handle the
     * error raised if the file is not available.
     *
     * To check if a file exists without manipulating it afterwards, {@link access} is recommended.
     *
     * For example, given the following directory structure:
     *
     * ```text
     * - txtDir
     * -- file.txt
     * - app.js
     * ```
     *
     * The next program will check for the stats of the given paths:
     *
     * ```js
     * import { stat } from 'node:fs';
     *
     * const pathsToCheck = ['./txtDir', './txtDir/file.txt'];
     *
     * for (let i = 0; i < pathsToCheck.length; i++) {
     *   stat(pathsToCheck[i], (err, stats) => {
     *     console.log(stats.isDirectory());
     *     console.log(stats);
     *   });
     * }
     * ```
     *
     * The resulting output will resemble:
     *
     * ```console
     * true
     * Stats {
     *   dev: 16777220,
     *   mode: 16877,
     *   nlink: 3,
     *   uid: 501,
     *   gid: 20,
     *   rdev: 0,
     *   blksize: 4096,
     *   ino: 14214262,
     *   size: 96,
     *   blocks: 0,
     *   atimeMs: 1561174653071.963,
     *   mtimeMs: 1561174614583.3518,
     *   ctimeMs: 1561174626623.5366,
     *   birthtimeMs: 1561174126937.2893,
     *   atime: 2019-06-22T03:37:33.072Z,
     *   mtime: 2019-06-22T03:36:54.583Z,
     *   ctime: 2019-06-22T03:37:06.624Z,
     *   birthtime: 2019-06-22T03:28:46.937Z
     * }
     * false
     * Stats {
     *   dev: 16777220,
     *   mode: 33188,
     *   nlink: 1,
     *   uid: 501,
     *   gid: 20,
     *   rdev: 0,
     *   blksize: 4096,
     *   ino: 14214074,
     *   size: 8,
     *   blocks: 8,
     *   atimeMs: 1561174616618.8555,
     *   mtimeMs: 1561174614584,
     *   ctimeMs: 1561174614583.8145,
     *   birthtimeMs: 1561174007710.7478,
     *   atime: 2019-06-22T03:36:56.619Z,
     *   mtime: 2019-06-22T03:36:54.584Z,
     *   ctime: 2019-06-22T03:36:54.584Z,
     *   birthtime: 2019-06-22T03:26:47.711Z
     * }
     * ```
     * @since v0.0.2
     */
    export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
    export function stat(
        path: PathLike,
        options:
            | (StatOptions & {
                bigint?: false | undefined;
            })
            | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void,
    ): void;
    export function stat(
        path: PathLike,
        options: StatOptions & {
            bigint: true;
        },
        callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void,
    ): void;
    export function stat(
        path: PathLike,
        options: StatOptions | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void,
    ): void;
    export namespace stat {
        /**
         * Asynchronous stat(2) - Get file status.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(
            path: PathLike,
            options?: StatOptions & {
                bigint?: false | undefined;
            },
        ): Promise<Stats>;
        function __promisify__(
            path: PathLike,
            options: StatOptions & {
                bigint: true;
            },
        ): Promise<BigIntStats>;
        function __promisify__(path: PathLike, options?: StatOptions): Promise<Stats | BigIntStats>;
    }
    export interface StatSyncFn extends Function {
        (path: PathLike, options?: undefined): Stats;
        (
            path: PathLike,
            options?: StatSyncOptions & {
                bigint?: false | undefined;
                throwIfNoEntry: false;
            },
        ): Stats | undefined;
        (
            path: PathLike,
            options: StatSyncOptions & {
                bigint: true;
                throwIfNoEntry: false;
            },
        ): BigIntStats | undefined;
        (
            path: PathLike,
            options?: StatSyncOptions & {
                bigint?: false | undefined;
            },
        ): Stats;
        (
            path: PathLike,
            options: StatSyncOptions & {
                bigint: true;
            },
        ): BigIntStats;
        (
            path: PathLike,
            options: StatSyncOptions & {
                bigint: boolean;
                throwIfNoEntry?: false | undefined;
            },
        ): Stats | BigIntStats;
        (path: PathLike, options?: StatSyncOptions): Stats | BigIntStats | undefined;
    }
    /**
     * Synchronous stat(2) - Get file status.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export const statSync: StatSyncFn;
    /**
     * Invokes the callback with the `fs.Stats` for the file descriptor.
     *
     * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail.
     * @since v0.1.95
     */
    export function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
    export function fstat(
        fd: number,
        options:
            | (StatOptions & {
                bigint?: false | undefined;
            })
            | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void,
    ): void;
    export function fstat(
        fd: number,
        options: StatOptions & {
            bigint: true;
        },
        callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void,
    ): void;
    export function fstat(
        fd: number,
        options: StatOptions | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void,
    ): void;
    export namespace fstat {
        /**
         * Asynchronous fstat(2) - Get file status.
         * @param fd A file descriptor.
         */
        function __promisify__(
            fd: number,
            options?: StatOptions & {
                bigint?: false | undefined;
            },
        ): Promise<Stats>;
        function __promisify__(
            fd: number,
            options: StatOptions & {
                bigint: true;
            },
        ): Promise<BigIntStats>;
        function __promisify__(fd: number, options?: StatOptions): Promise<Stats | BigIntStats>;
    }
    /**
     * Retrieves the `fs.Stats` for the file descriptor.
     *
     * See the POSIX [`fstat(2)`](http://man7.org/linux/man-pages/man2/fstat.2.html) documentation for more detail.
     * @since v0.1.95
     */
    export function fstatSync(
        fd: number,
        options?: StatOptions & {
            bigint?: false | undefined;
        },
    ): Stats;
    export function fstatSync(
        fd: number,
        options: StatOptions & {
            bigint: true;
        },
    ): BigIntStats;
    export function fstatSync(fd: number, options?: StatOptions): Stats | BigIntStats;
    /**
     * Retrieves the `fs.Stats` for the symbolic link referred to by the path.
     * The callback gets two arguments `(err, stats)` where `stats` is a `fs.Stats` object. `lstat()` is identical to `stat()`, except that if `path` is a symbolic
     * link, then the link itself is stat-ed, not the file that it refers to.
     *
     * See the POSIX [`lstat(2)`](http://man7.org/linux/man-pages/man2/lstat.2.html) documentation for more details.
     * @since v0.1.30
     */
    export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
    export function lstat(
        path: PathLike,
        options:
            | (StatOptions & {
                bigint?: false | undefined;
            })
            | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void,
    ): void;
    export function lstat(
        path: PathLike,
        options: StatOptions & {
            bigint: true;
        },
        callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void,
    ): void;
    export function lstat(
        path: PathLike,
        options: StatOptions | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void,
    ): void;
    export namespace lstat {
        /**
         * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(
            path: PathLike,
            options?: StatOptions & {
                bigint?: false | undefined;
            },
        ): Promise<Stats>;
        function __promisify__(
            path: PathLike,
            options: StatOptions & {
                bigint: true;
            },
        ): Promise<BigIntStats>;
        function __promisify__(path: PathLike, options?: StatOptions): Promise<Stats | BigIntStats>;
    }
    /**
     * Asynchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which
     * contains `path`. The callback gets two arguments `(err, stats)` where `stats`is an `fs.StatFs` object.
     *
     * In case of an error, the `err.code` will be one of `Common System Errors`.
     * @since v19.6.0, v18.15.0
     * @param path A path to an existing file or directory on the file system to be queried.
     */
    export function statfs(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void): void;
    export function statfs(
        path: PathLike,
        options:
            | (StatFsOptions & {
                bigint?: false | undefined;
            })
            | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void,
    ): void;
    export function statfs(
        path: PathLike,
        options: StatFsOptions & {
            bigint: true;
        },
        callback: (err: NodeJS.ErrnoException | null, stats: BigIntStatsFs) => void,
    ): void;
    export function statfs(
        path: PathLike,
        options: StatFsOptions | undefined,
        callback: (err: NodeJS.ErrnoException | null, stats: StatsFs | BigIntStatsFs) => void,
    ): void;
    export namespace statfs {
        /**
         * Asynchronous statfs(2) - Returns information about the mounted file system which contains path. The callback gets two arguments (err, stats) where stats is an <fs.StatFs> object.
         * @param path A path to an existing file or directory on the file system to be queried.
         */
        function __promisify__(
            path: PathLike,
            options?: StatFsOptions & {
                bigint?: false | undefined;
            },
        ): Promise<StatsFs>;
        function __promisify__(
            path: PathLike,
            options: StatFsOptions & {
                bigint: true;
            },
        ): Promise<BigIntStatsFs>;
        function __promisify__(path: PathLike, options?: StatFsOptions): Promise<StatsFs | BigIntStatsFs>;
    }
    /**
     * Synchronous [`statfs(2)`](http://man7.org/linux/man-pages/man2/statfs.2.html). Returns information about the mounted file system which
     * contains `path`.
     *
     * In case of an error, the `err.code` will be one of `Common System Errors`.
     * @since v19.6.0, v18.15.0
     * @param path A path to an existing file or directory on the file system to be queried.
     */
    export function statfsSync(
        path: PathLike,
        options?: StatFsOptions & {
            bigint?: false | undefined;
        },
    ): StatsFs;
    export function statfsSync(
        path: PathLike,
        options: StatFsOptions & {
            bigint: true;
        },
    ): BigIntStatsFs;
    export function statfsSync(path: PathLike, options?: StatFsOptions): StatsFs | BigIntStatsFs;
    /**
     * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export const lstatSync: StatSyncFn;
    /**
     * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. No arguments other than
     * a possible
     * exception are given to the completion callback.
     * @since v0.1.31
     */
    export function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
    export namespace link {
        /**
         * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
         * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(existingPath: PathLike, newPath: PathLike): Promise<void>;
    }
    /**
     * Creates a new link from the `existingPath` to the `newPath`. See the POSIX [`link(2)`](http://man7.org/linux/man-pages/man2/link.2.html) documentation for more detail. Returns `undefined`.
     * @since v0.1.31
     */
    export function linkSync(existingPath: PathLike, newPath: PathLike): void;
    /**
     * Creates the link called `path` pointing to `target`. No arguments other than a
     * possible exception are given to the completion callback.
     *
     * See the POSIX [`symlink(2)`](http://man7.org/linux/man-pages/man2/symlink.2.html) documentation for more details.
     *
     * The `type` argument is only available on Windows and ignored on other platforms.
     * It can be set to `'dir'`, `'file'`, or `'junction'`. If the `type` argument is
     * not a string, Node.js will autodetect `target` type and use `'file'` or `'dir'`.
     * If the `target` does not exist, `'file'` will be used. Windows junction points
     * require the destination path to be absolute. When using `'junction'`, the`target` argument will automatically be normalized to absolute path. Junction
     * points on NTFS volumes can only point to directories.
     *
     * Relative targets are relative to the link's parent directory.
     *
     * ```js
     * import { symlink } from 'node:fs';
     *
     * symlink('./mew', './mewtwo', callback);
     * ```
     *
     * The above example creates a symbolic link `mewtwo` which points to `mew` in the
     * same directory:
     *
     * ```bash
     * $ tree .
     * .
     * ├── mew
     * └── mewtwo -> ./mew
     * ```
     * @since v0.1.31
     * @param [type='null']
     */
    export function symlink(
        target: PathLike,
        path: PathLike,
        type: symlink.Type | undefined | null,
        callback: NoParamCallback,
    ): void;
    /**
     * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
     */
    export function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void;
    export namespace symlink {
        /**
         * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
         * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
         * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
         * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
         * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
         */
        function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise<void>;
        type Type = "dir" | "file" | "junction";
    }
    /**
     * Returns `undefined`.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link symlink}.
     * @since v0.1.31
     * @param [type='null']
     */
    export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;
    /**
     * Reads the contents of the symbolic link referred to by `path`. The callback gets
     * two arguments `(err, linkString)`.
     *
     * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use for
     * the link path passed to the callback. If the `encoding` is set to `'buffer'`,
     * the link path returned will be passed as a `Buffer` object.
     * @since v0.1.31
     */
    export function readlink(
        path: PathLike,
        options: EncodingOption,
        callback: (err: NodeJS.ErrnoException | null, linkString: string) => void,
    ): void;
    /**
     * Asynchronous readlink(2) - read value of a symbolic link.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readlink(
        path: PathLike,
        options: BufferEncodingOption,
        callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void,
    ): void;
    /**
     * Asynchronous readlink(2) - read value of a symbolic link.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readlink(
        path: PathLike,
        options: EncodingOption,
        callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void,
    ): void;
    /**
     * Asynchronous readlink(2) - read value of a symbolic link.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export function readlink(
        path: PathLike,
        callback: (err: NodeJS.ErrnoException | null, linkString: string) => void,
    ): void;
    export namespace readlink {
        /**
         * Asynchronous readlink(2) - read value of a symbolic link.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(path: PathLike, options?: EncodingOption): Promise<string>;
        /**
         * Asynchronous readlink(2) - read value of a symbolic link.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(path: PathLike, options: BufferEncodingOption): Promise<Buffer>;
        /**
         * Asynchronous readlink(2) - read value of a symbolic link.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(path: PathLike, options?: EncodingOption): Promise<string | Buffer>;
    }
    /**
     * Returns the symbolic link's string value.
     *
     * See the POSIX [`readlink(2)`](http://man7.org/linux/man-pages/man2/readlink.2.html) documentation for more details.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use for
     * the link path returned. If the `encoding` is set to `'buffer'`,
     * the link path returned will be passed as a `Buffer` object.
     * @since v0.1.31
     */
    export function readlinkSync(path: PathLike, options?: EncodingOption): string;
    /**
     * Synchronous readlink(2) - read value of a symbolic link.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readlinkSync(path: PathLike, options: BufferEncodingOption): Buffer;
    /**
     * Synchronous readlink(2) - read value of a symbolic link.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readlinkSync(path: PathLike, options?: EncodingOption): string | Buffer;
    /**
     * Asynchronously computes the canonical pathname by resolving `.`, `..`, and
     * symbolic links.
     *
     * A canonical pathname is not necessarily unique. Hard links and bind mounts can
     * expose a file system entity through many pathnames.
     *
     * This function behaves like [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html), with some exceptions:
     *
     * 1. No case conversion is performed on case-insensitive file systems.
     * 2. The maximum number of symbolic links is platform-independent and generally
     * (much) higher than what the native [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html) implementation supports.
     *
     * The `callback` gets two arguments `(err, resolvedPath)`. May use `process.cwd` to resolve relative paths.
     *
     * Only paths that can be converted to UTF8 strings are supported.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use for
     * the path passed to the callback. If the `encoding` is set to `'buffer'`,
     * the path returned will be passed as a `Buffer` object.
     *
     * If `path` resolves to a socket or a pipe, the function will return a system
     * dependent name for that object.
     * @since v0.1.31
     */
    export function realpath(
        path: PathLike,
        options: EncodingOption,
        callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void,
    ): void;
    /**
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function realpath(
        path: PathLike,
        options: BufferEncodingOption,
        callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void,
    ): void;
    /**
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function realpath(
        path: PathLike,
        options: EncodingOption,
        callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void,
    ): void;
    /**
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export function realpath(
        path: PathLike,
        callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void,
    ): void;
    export namespace realpath {
        /**
         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(path: PathLike, options?: EncodingOption): Promise<string>;
        /**
         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(path: PathLike, options: BufferEncodingOption): Promise<Buffer>;
        /**
         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(path: PathLike, options?: EncodingOption): Promise<string | Buffer>;
        /**
         * Asynchronous [`realpath(3)`](http://man7.org/linux/man-pages/man3/realpath.3.html).
         *
         * The `callback` gets two arguments `(err, resolvedPath)`.
         *
         * Only paths that can be converted to UTF8 strings are supported.
         *
         * The optional `options` argument can be a string specifying an encoding, or an
         * object with an `encoding` property specifying the character encoding to use for
         * the path passed to the callback. If the `encoding` is set to `'buffer'`,
         * the path returned will be passed as a `Buffer` object.
         *
         * On Linux, when Node.js is linked against musl libc, the procfs file system must
         * be mounted on `/proc` in order for this function to work. Glibc does not have
         * this restriction.
         * @since v9.2.0
         */
        function native(
            path: PathLike,
            options: EncodingOption,
            callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void,
        ): void;
        function native(
            path: PathLike,
            options: BufferEncodingOption,
            callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void,
        ): void;
        function native(
            path: PathLike,
            options: EncodingOption,
            callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void,
        ): void;
        function native(
            path: PathLike,
            callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void,
        ): void;
    }
    /**
     * Returns the resolved pathname.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link realpath}.
     * @since v0.1.31
     */
    export function realpathSync(path: PathLike, options?: EncodingOption): string;
    /**
     * Synchronous realpath(3) - return the canonicalized absolute pathname.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function realpathSync(path: PathLike, options: BufferEncodingOption): Buffer;
    /**
     * Synchronous realpath(3) - return the canonicalized absolute pathname.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function realpathSync(path: PathLike, options?: EncodingOption): string | Buffer;
    export namespace realpathSync {
        function native(path: PathLike, options?: EncodingOption): string;
        function native(path: PathLike, options: BufferEncodingOption): Buffer;
        function native(path: PathLike, options?: EncodingOption): string | Buffer;
    }
    /**
     * Asynchronously removes a file or symbolic link. No arguments other than a
     * possible exception are given to the completion callback.
     *
     * ```js
     * import { unlink } from 'node:fs';
     * // Assuming that 'path/file.txt' is a regular file.
     * unlink('path/file.txt', (err) => {
     *   if (err) throw err;
     *   console.log('path/file.txt was deleted');
     * });
     * ```
     *
     * `fs.unlink()` will not work on a directory, empty or otherwise. To remove a
     * directory, use {@link rmdir}.
     *
     * See the POSIX [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html) documentation for more details.
     * @since v0.0.2
     */
    export function unlink(path: PathLike, callback: NoParamCallback): void;
    export namespace unlink {
        /**
         * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(path: PathLike): Promise<void>;
    }
    /**
     * Synchronous [`unlink(2)`](http://man7.org/linux/man-pages/man2/unlink.2.html). Returns `undefined`.
     * @since v0.1.21
     */
    export function unlinkSync(path: PathLike): void;
    export interface RmDirOptions {
        /**
         * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or
         * `EPERM` error is encountered, Node.js will retry the operation with a linear
         * backoff wait of `retryDelay` ms longer on each try. This option represents the
         * number of retries. This option is ignored if the `recursive` option is not
         * `true`.
         * @default 0
         */
        maxRetries?: number | undefined;
        /**
         * @deprecated since v14.14.0 In future versions of Node.js and will trigger a warning
         * `fs.rmdir(path, { recursive: true })` will throw if `path` does not exist or is a file.
         * Use `fs.rm(path, { recursive: true, force: true })` instead.
         *
         * If `true`, perform a recursive directory removal. In
         * recursive mode, operations are retried on failure.
         * @default false
         */
        recursive?: boolean | undefined;
        /**
         * The amount of time in milliseconds to wait between retries.
         * This option is ignored if the `recursive` option is not `true`.
         * @default 100
         */
        retryDelay?: number | undefined;
    }
    /**
     * Asynchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). No arguments other than a possible exception are given
     * to the completion callback.
     *
     * Using `fs.rmdir()` on a file (not a directory) results in an `ENOENT` error on
     * Windows and an `ENOTDIR` error on POSIX.
     *
     * To get a behavior similar to the `rm -rf` Unix command, use {@link rm} with options `{ recursive: true, force: true }`.
     * @since v0.0.2
     */
    export function rmdir(path: PathLike, callback: NoParamCallback): void;
    export function rmdir(path: PathLike, options: RmDirOptions, callback: NoParamCallback): void;
    export namespace rmdir {
        /**
         * Asynchronous rmdir(2) - delete a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         */
        function __promisify__(path: PathLike, options?: RmDirOptions): Promise<void>;
    }
    /**
     * Synchronous [`rmdir(2)`](http://man7.org/linux/man-pages/man2/rmdir.2.html). Returns `undefined`.
     *
     * Using `fs.rmdirSync()` on a file (not a directory) results in an `ENOENT` error
     * on Windows and an `ENOTDIR` error on POSIX.
     *
     * To get a behavior similar to the `rm -rf` Unix command, use {@link rmSync} with options `{ recursive: true, force: true }`.
     * @since v0.1.21
     */
    export function rmdirSync(path: PathLike, options?: RmDirOptions): void;
    export interface RmOptions {
        /**
         * When `true`, exceptions will be ignored if `path` does not exist.
         * @default false
         */
        force?: boolean | undefined;
        /**
         * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or
         * `EPERM` error is encountered, Node.js will retry the operation with a linear
         * backoff wait of `retryDelay` ms longer on each try. This option represents the
         * number of retries. This option is ignored if the `recursive` option is not
         * `true`.
         * @default 0
         */
        maxRetries?: number | undefined;
        /**
         * If `true`, perform a recursive directory removal. In
         * recursive mode, operations are retried on failure.
         * @default false
         */
        recursive?: boolean | undefined;
        /**
         * The amount of time in milliseconds to wait between retries.
         * This option is ignored if the `recursive` option is not `true`.
         * @default 100
         */
        retryDelay?: number | undefined;
    }
    /**
     * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility). No arguments other than a possible exception are given to the
     * completion callback.
     * @since v14.14.0
     */
    export function rm(path: PathLike, callback: NoParamCallback): void;
    export function rm(path: PathLike, options: RmOptions, callback: NoParamCallback): void;
    export namespace rm {
        /**
         * Asynchronously removes files and directories (modeled on the standard POSIX `rm` utility).
         */
        function __promisify__(path: PathLike, options?: RmOptions): Promise<void>;
    }
    /**
     * Synchronously removes files and directories (modeled on the standard POSIX `rm` utility). Returns `undefined`.
     * @since v14.14.0
     */
    export function rmSync(path: PathLike, options?: RmOptions): void;
    export interface MakeDirectoryOptions {
        /**
         * Indicates whether parent folders should be created.
         * If a folder was created, the path to the first created folder will be returned.
         * @default false
         */
        recursive?: boolean | undefined;
        /**
         * A file mode. If a string is passed, it is parsed as an octal integer. If not specified
         * @default 0o777
         */
        mode?: Mode | undefined;
    }
    /**
     * Asynchronously creates a directory.
     *
     * The callback is given a possible exception and, if `recursive` is `true`, the
     * first directory path created, `(err[, path])`.`path` can still be `undefined` when `recursive` is `true`, if no directory was
     * created (for instance, if it was previously created).
     *
     * The optional `options` argument can be an integer specifying `mode` (permission
     * and sticky bits), or an object with a `mode` property and a `recursive` property indicating whether parent directories should be created. Calling `fs.mkdir()` when `path` is a directory that
     * exists results in an error only
     * when `recursive` is false. If `recursive` is false and the directory exists,
     * an `EEXIST` error occurs.
     *
     * ```js
     * import { mkdir } from 'node:fs';
     *
     * // Create ./tmp/a/apple, regardless of whether ./tmp and ./tmp/a exist.
     * mkdir('./tmp/a/apple', { recursive: true }, (err) => {
     *   if (err) throw err;
     * });
     * ```
     *
     * On Windows, using `fs.mkdir()` on the root directory even with recursion will
     * result in an error:
     *
     * ```js
     * import { mkdir } from 'node:fs';
     *
     * mkdir('/', { recursive: true }, (err) => {
     *   // => [Error: EPERM: operation not permitted, mkdir 'C:\']
     * });
     * ```
     *
     * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details.
     * @since v0.1.8
     */
    export function mkdir(
        path: PathLike,
        options: MakeDirectoryOptions & {
            recursive: true;
        },
        callback: (err: NodeJS.ErrnoException | null, path?: string) => void,
    ): void;
    /**
     * Asynchronous mkdir(2) - create a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
     */
    export function mkdir(
        path: PathLike,
        options:
            | Mode
            | (MakeDirectoryOptions & {
                recursive?: false | undefined;
            })
            | null
            | undefined,
        callback: NoParamCallback,
    ): void;
    /**
     * Asynchronous mkdir(2) - create a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
     */
    export function mkdir(
        path: PathLike,
        options: Mode | MakeDirectoryOptions | null | undefined,
        callback: (err: NodeJS.ErrnoException | null, path?: string) => void,
    ): void;
    /**
     * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export function mkdir(path: PathLike, callback: NoParamCallback): void;
    export namespace mkdir {
        /**
         * Asynchronous mkdir(2) - create a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
         */
        function __promisify__(
            path: PathLike,
            options: MakeDirectoryOptions & {
                recursive: true;
            },
        ): Promise<string | undefined>;
        /**
         * Asynchronous mkdir(2) - create a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
         */
        function __promisify__(
            path: PathLike,
            options?:
                | Mode
                | (MakeDirectoryOptions & {
                    recursive?: false | undefined;
                })
                | null,
        ): Promise<void>;
        /**
         * Asynchronous mkdir(2) - create a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
         */
        function __promisify__(
            path: PathLike,
            options?: Mode | MakeDirectoryOptions | null,
        ): Promise<string | undefined>;
    }
    /**
     * Synchronously creates a directory. Returns `undefined`, or if `recursive` is `true`, the first directory path created.
     * This is the synchronous version of {@link mkdir}.
     *
     * See the POSIX [`mkdir(2)`](http://man7.org/linux/man-pages/man2/mkdir.2.html) documentation for more details.
     * @since v0.1.21
     */
    export function mkdirSync(
        path: PathLike,
        options: MakeDirectoryOptions & {
            recursive: true;
        },
    ): string | undefined;
    /**
     * Synchronous mkdir(2) - create a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
     */
    export function mkdirSync(
        path: PathLike,
        options?:
            | Mode
            | (MakeDirectoryOptions & {
                recursive?: false | undefined;
            })
            | null,
    ): void;
    /**
     * Synchronous mkdir(2) - create a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
     */
    export function mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions | null): string | undefined;
    /**
     * Creates a unique temporary directory.
     *
     * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory. Due to platform
     * inconsistencies, avoid trailing `X` characters in `prefix`. Some platforms,
     * notably the BSDs, can return more than six random characters, and replace
     * trailing `X` characters in `prefix` with random characters.
     *
     * The created directory path is passed as a string to the callback's second
     * parameter.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use.
     *
     * ```js
     * import { mkdtemp } from 'node:fs';
     * import { join } from 'node:path';
     * import { tmpdir } from 'node:os';
     *
     * mkdtemp(join(tmpdir(), 'foo-'), (err, directory) => {
     *   if (err) throw err;
     *   console.log(directory);
     *   // Prints: /tmp/foo-itXde2 or C:\Users\...\AppData\Local\Temp\foo-itXde2
     * });
     * ```
     *
     * The `fs.mkdtemp()` method will append the six randomly selected characters
     * directly to the `prefix` string. For instance, given a directory `/tmp`, if the
     * intention is to create a temporary directory _within_`/tmp`, the `prefix`must end with a trailing platform-specific path separator
     * (`import { sep } from 'node:path'`).
     *
     * ```js
     * import { tmpdir } from 'node:os';
     * import { mkdtemp } from 'node:fs';
     *
     * // The parent directory for the new temporary directory
     * const tmpDir = tmpdir();
     *
     * // This method is *INCORRECT*:
     * mkdtemp(tmpDir, (err, directory) => {
     *   if (err) throw err;
     *   console.log(directory);
     *   // Will print something similar to `/tmpabc123`.
     *   // A new temporary directory is created at the file system root
     *   // rather than *within* the /tmp directory.
     * });
     *
     * // This method is *CORRECT*:
     * import { sep } from 'node:path';
     * mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
     *   if (err) throw err;
     *   console.log(directory);
     *   // Will print something similar to `/tmp/abc123`.
     *   // A new temporary directory is created within
     *   // the /tmp directory.
     * });
     * ```
     * @since v5.10.0
     */
    export function mkdtemp(
        prefix: string,
        options: EncodingOption,
        callback: (err: NodeJS.ErrnoException | null, folder: string) => void,
    ): void;
    /**
     * Asynchronously creates a unique temporary directory.
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function mkdtemp(
        prefix: string,
        options:
            | "buffer"
            | {
                encoding: "buffer";
            },
        callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void,
    ): void;
    /**
     * Asynchronously creates a unique temporary directory.
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function mkdtemp(
        prefix: string,
        options: EncodingOption,
        callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void,
    ): void;
    /**
     * Asynchronously creates a unique temporary directory.
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
     */
    export function mkdtemp(
        prefix: string,
        callback: (err: NodeJS.ErrnoException | null, folder: string) => void,
    ): void;
    export namespace mkdtemp {
        /**
         * Asynchronously creates a unique temporary directory.
         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(prefix: string, options?: EncodingOption): Promise<string>;
        /**
         * Asynchronously creates a unique temporary directory.
         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(prefix: string, options: BufferEncodingOption): Promise<Buffer>;
        /**
         * Asynchronously creates a unique temporary directory.
         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(prefix: string, options?: EncodingOption): Promise<string | Buffer>;
    }
    /**
     * Returns the created directory path.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link mkdtemp}.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use.
     * @since v5.10.0
     */
    export function mkdtempSync(prefix: string, options?: EncodingOption): string;
    /**
     * Synchronously creates a unique temporary directory.
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function mkdtempSync(prefix: string, options: BufferEncodingOption): Buffer;
    /**
     * Synchronously creates a unique temporary directory.
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function mkdtempSync(prefix: string, options?: EncodingOption): string | Buffer;
    /**
     * Reads the contents of a directory. The callback gets two arguments `(err, files)` where `files` is an array of the names of the files in the directory excluding `'.'` and `'..'`.
     *
     * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use for
     * the filenames passed to the callback. If the `encoding` is set to `'buffer'`,
     * the filenames returned will be passed as `Buffer` objects.
     *
     * If `options.withFileTypes` is set to `true`, the `files` array will contain `fs.Dirent` objects.
     * @since v0.1.8
     */
    export function readdir(
        path: PathLike,
        options:
            | {
                encoding: BufferEncoding | null;
                withFileTypes?: false | undefined;
                recursive?: boolean | undefined;
            }
            | BufferEncoding
            | undefined
            | null,
        callback: (err: NodeJS.ErrnoException | null, files: string[]) => void,
    ): void;
    /**
     * Asynchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readdir(
        path: PathLike,
        options:
            | {
                encoding: "buffer";
                withFileTypes?: false | undefined;
                recursive?: boolean | undefined;
            }
            | "buffer",
        callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void,
    ): void;
    /**
     * Asynchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readdir(
        path: PathLike,
        options:
            | (ObjectEncodingOptions & {
                withFileTypes?: false | undefined;
                recursive?: boolean | undefined;
            })
            | BufferEncoding
            | undefined
            | null,
        callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void,
    ): void;
    /**
     * Asynchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export function readdir(
        path: PathLike,
        callback: (err: NodeJS.ErrnoException | null, files: string[]) => void,
    ): void;
    /**
     * Asynchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
     */
    export function readdir(
        path: PathLike,
        options: ObjectEncodingOptions & {
            withFileTypes: true;
            recursive?: boolean | undefined;
        },
        callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void,
    ): void;
    export namespace readdir {
        /**
         * Asynchronous readdir(3) - read a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(
            path: PathLike,
            options?:
                | {
                    encoding: BufferEncoding | null;
                    withFileTypes?: false | undefined;
                    recursive?: boolean | undefined;
                }
                | BufferEncoding
                | null,
        ): Promise<string[]>;
        /**
         * Asynchronous readdir(3) - read a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(
            path: PathLike,
            options:
                | "buffer"
                | {
                    encoding: "buffer";
                    withFileTypes?: false | undefined;
                    recursive?: boolean | undefined;
                },
        ): Promise<Buffer[]>;
        /**
         * Asynchronous readdir(3) - read a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
         */
        function __promisify__(
            path: PathLike,
            options?:
                | (ObjectEncodingOptions & {
                    withFileTypes?: false | undefined;
                    recursive?: boolean | undefined;
                })
                | BufferEncoding
                | null,
        ): Promise<string[] | Buffer[]>;
        /**
         * Asynchronous readdir(3) - read a directory.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param options If called with `withFileTypes: true` the result data will be an array of Dirent
         */
        function __promisify__(
            path: PathLike,
            options: ObjectEncodingOptions & {
                withFileTypes: true;
                recursive?: boolean | undefined;
            },
        ): Promise<Dirent[]>;
    }
    /**
     * Reads the contents of the directory.
     *
     * See the POSIX [`readdir(3)`](http://man7.org/linux/man-pages/man3/readdir.3.html) documentation for more details.
     *
     * The optional `options` argument can be a string specifying an encoding, or an
     * object with an `encoding` property specifying the character encoding to use for
     * the filenames returned. If the `encoding` is set to `'buffer'`,
     * the filenames returned will be passed as `Buffer` objects.
     *
     * If `options.withFileTypes` is set to `true`, the result will contain `fs.Dirent` objects.
     * @since v0.1.21
     */
    export function readdirSync(
        path: PathLike,
        options?:
            | {
                encoding: BufferEncoding | null;
                withFileTypes?: false | undefined;
                recursive?: boolean | undefined;
            }
            | BufferEncoding
            | null,
    ): string[];
    /**
     * Synchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readdirSync(
        path: PathLike,
        options:
            | {
                encoding: "buffer";
                withFileTypes?: false | undefined;
                recursive?: boolean | undefined;
            }
            | "buffer",
    ): Buffer[];
    /**
     * Synchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
     */
    export function readdirSync(
        path: PathLike,
        options?:
            | (ObjectEncodingOptions & {
                withFileTypes?: false | undefined;
                recursive?: boolean | undefined;
            })
            | BufferEncoding
            | null,
    ): string[] | Buffer[];
    /**
     * Synchronous readdir(3) - read a directory.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
     */
    export function readdirSync(
        path: PathLike,
        options: ObjectEncodingOptions & {
            withFileTypes: true;
            recursive?: boolean | undefined;
        },
    ): Dirent[];
    /**
     * Closes the file descriptor. No arguments other than a possible exception are
     * given to the completion callback.
     *
     * Calling `fs.close()` on any file descriptor (`fd`) that is currently in use
     * through any other `fs` operation may lead to undefined behavior.
     *
     * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail.
     * @since v0.0.2
     */
    export function close(fd: number, callback?: NoParamCallback): void;
    export namespace close {
        /**
         * Asynchronous close(2) - close a file descriptor.
         * @param fd A file descriptor.
         */
        function __promisify__(fd: number): Promise<void>;
    }
    /**
     * Closes the file descriptor. Returns `undefined`.
     *
     * Calling `fs.closeSync()` on any file descriptor (`fd`) that is currently in use
     * through any other `fs` operation may lead to undefined behavior.
     *
     * See the POSIX [`close(2)`](http://man7.org/linux/man-pages/man2/close.2.html) documentation for more detail.
     * @since v0.1.21
     */
    export function closeSync(fd: number): void;
    /**
     * Asynchronous file open. See the POSIX [`open(2)`](http://man7.org/linux/man-pages/man2/open.2.html) documentation for more details.
     *
     * `mode` sets the file mode (permission and sticky bits), but only if the file was
     * created. On Windows, only the write permission can be manipulated; see {@link chmod}.
     *
     * The callback gets two arguments `(err, fd)`.
     *
     * Some characters (`< > : " / \ | ? *`) are reserved under Windows as documented
     * by [Naming Files, Paths, and Namespaces](https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file). Under NTFS, if the filename contains
     * a colon, Node.js will open a file system stream, as described by [this MSDN page](https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams).
     *
     * Functions based on `fs.open()` exhibit this behavior as well:`fs.writeFile()`, `fs.readFile()`, etc.
     * @since v0.0.2
     * @param [flags='r'] See `support of file system `flags``.
     * @param [mode=0o666]
     */
    export function open(
        path: PathLike,
        flags: OpenMode | undefined,
        mode: Mode | undefined | null,
        callback: (err: NodeJS.ErrnoException | null, fd: number) => void,
    ): void;
    /**
     * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * @param [flags='r'] See `support of file system `flags``.
     */
    export function open(
        path: PathLike,
        flags: OpenMode | undefined,
        callback: (err: NodeJS.ErrnoException | null, fd: number) => void,
    ): void;
    /**
     * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     */
    export function open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
    export namespace open {
        /**
         * Asynchronous open(2) - open and possibly create a file.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
         */
        function __promisify__(path: PathLike, flags: OpenMode, mode?: Mode | null): Promise<number>;
    }
    /**
     * Returns an integer representing the file descriptor.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link open}.
     * @since v0.1.21
     * @param [flags='r']
     * @param [mode=0o666]
     */
    export function openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number;
    /**
     * Change the file system timestamps of the object referenced by `path`.
     *
     * The `atime` and `mtime` arguments follow these rules:
     *
     * * Values can be either numbers representing Unix epoch time in seconds, `Date`s, or a numeric string like `'123456789.0'`.
     * * If the value can not be converted to a number, or is `NaN`, `Infinity`, or `-Infinity`, an `Error` will be thrown.
     * @since v0.4.2
     */
    export function utimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void;
    export namespace utimes {
        /**
         * Asynchronously change file timestamps of the file referenced by the supplied path.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * @param atime The last access time. If a string is provided, it will be coerced to number.
         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
         */
        function __promisify__(path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void>;
    }
    /**
     * Returns `undefined`.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link utimes}.
     * @since v0.4.2
     */
    export function utimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void;
    /**
     * Change the file system timestamps of the object referenced by the supplied file
     * descriptor. See {@link utimes}.
     * @since v0.4.2
     */
    export function futimes(fd: number, atime: TimeLike, mtime: TimeLike, callback: NoParamCallback): void;
    export namespace futimes {
        /**
         * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
         * @param fd A file descriptor.
         * @param atime The last access time. If a string is provided, it will be coerced to number.
         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
         */
        function __promisify__(fd: number, atime: TimeLike, mtime: TimeLike): Promise<void>;
    }
    /**
     * Synchronous version of {@link futimes}. Returns `undefined`.
     * @since v0.4.2
     */
    export function futimesSync(fd: number, atime: TimeLike, mtime: TimeLike): void;
    /**
     * Request that all data for the open file descriptor is flushed to the storage
     * device. The specific implementation is operating system and device specific.
     * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. No arguments other
     * than a possible exception are given to the completion callback.
     * @since v0.1.96
     */
    export function fsync(fd: number, callback: NoParamCallback): void;
    export namespace fsync {
        /**
         * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
         * @param fd A file descriptor.
         */
        function __promisify__(fd: number): Promise<void>;
    }
    /**
     * Request that all data for the open file descriptor is flushed to the storage
     * device. The specific implementation is operating system and device specific.
     * Refer to the POSIX [`fsync(2)`](http://man7.org/linux/man-pages/man2/fsync.2.html) documentation for more detail. Returns `undefined`.
     * @since v0.1.96
     */
    export function fsyncSync(fd: number): void;
    /**
     * Write `buffer` to the file specified by `fd`.
     *
     * `offset` determines the part of the buffer to be written, and `length` is
     * an integer specifying the number of bytes to write.
     *
     * `position` refers to the offset from the beginning of the file where this data
     * should be written. If `typeof position !== 'number'`, the data will be written
     * at the current position. See [`pwrite(2)`](http://man7.org/linux/man-pages/man2/pwrite.2.html).
     *
     * The callback will be given three arguments `(err, bytesWritten, buffer)` where `bytesWritten` specifies how many _bytes_ were written from `buffer`.
     *
     * If this method is invoked as its `util.promisify()` ed version, it returns
     * a promise for an `Object` with `bytesWritten` and `buffer` properties.
     *
     * It is unsafe to use `fs.write()` multiple times on the same file without waiting
     * for the callback. For this scenario, {@link createWriteStream} is
     * recommended.
     *
     * On Linux, positional writes don't work when the file is opened in append mode.
     * The kernel ignores the position argument and always appends the data to
     * the end of the file.
     * @since v0.0.2
     * @param [offset=0]
     * @param [length=buffer.byteLength - offset]
     * @param [position='null']
     */
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
        fd: number,
        buffer: TBuffer,
        offset: number | undefined | null,
        length: number | undefined | null,
        position: number | undefined | null,
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
    ): void;
    /**
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
     * @param fd A file descriptor.
     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
     */
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
        fd: number,
        buffer: TBuffer,
        offset: number | undefined | null,
        length: number | undefined | null,
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
    ): void;
    /**
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
     * @param fd A file descriptor.
     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
     */
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
        fd: number,
        buffer: TBuffer,
        offset: number | undefined | null,
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
    ): void;
    /**
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
     * @param fd A file descriptor.
     */
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
        fd: number,
        buffer: TBuffer,
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
    ): void;
    /**
     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
     * @param fd A file descriptor.
     * @param string A string to write.
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
     * @param encoding The expected string encoding.
     */
    export function write(
        fd: number,
        string: string,
        position: number | undefined | null,
        encoding: BufferEncoding | undefined | null,
        callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void,
    ): void;
    /**
     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
     * @param fd A file descriptor.
     * @param string A string to write.
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
     */
    export function write(
        fd: number,
        string: string,
        position: number | undefined | null,
        callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void,
    ): void;
    /**
     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
     * @param fd A file descriptor.
     * @param string A string to write.
     */
    export function write(
        fd: number,
        string: string,
        callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void,
    ): void;
    export namespace write {
        /**
         * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
         * @param fd A file descriptor.
         * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
         * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
         */
        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
            fd: number,
            buffer?: TBuffer,
            offset?: number,
            length?: number,
            position?: number | null,
        ): Promise<{
            bytesWritten: number;
            buffer: TBuffer;
        }>;
        /**
         * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
         * @param fd A file descriptor.
         * @param string A string to write.
         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
         * @param encoding The expected string encoding.
         */
        function __promisify__(
            fd: number,
            string: string,
            position?: number | null,
            encoding?: BufferEncoding | null,
        ): Promise<{
            bytesWritten: number;
            buffer: string;
        }>;
    }
    /**
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link write}.
     * @since v0.1.21
     * @param [offset=0]
     * @param [length=buffer.byteLength - offset]
     * @param [position='null']
     * @return The number of bytes written.
     */
    export function writeSync(
        fd: number,
        buffer: NodeJS.ArrayBufferView,
        offset?: number | null,
        length?: number | null,
        position?: number | null,
    ): number;
    /**
     * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written.
     * @param fd A file descriptor.
     * @param string A string to write.
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
     * @param encoding The expected string encoding.
     */
    export function writeSync(
        fd: number,
        string: string,
        position?: number | null,
        encoding?: BufferEncoding | null,
    ): number;
    export type ReadPosition = number | bigint;
    export interface ReadSyncOptions {
        /**
         * @default 0
         */
        offset?: number | undefined;
        /**
         * @default `length of buffer`
         */
        length?: number | undefined;
        /**
         * @default null
         */
        position?: ReadPosition | null | undefined;
    }
    export interface ReadAsyncOptions<TBuffer extends NodeJS.ArrayBufferView> extends ReadSyncOptions {
        buffer?: TBuffer;
    }
    /**
     * Read data from the file specified by `fd`.
     *
     * The callback is given the three arguments, `(err, bytesRead, buffer)`.
     *
     * If the file is not modified concurrently, the end-of-file is reached when the
     * number of bytes read is zero.
     *
     * If this method is invoked as its `util.promisify()` ed version, it returns
     * a promise for an `Object` with `bytesRead` and `buffer` properties.
     * @since v0.0.2
     * @param buffer The buffer that the data will be written to.
     * @param offset The position in `buffer` to write the data to.
     * @param length The number of bytes to read.
     * @param position Specifies where to begin reading from in the file. If `position` is `null` or `-1 `, data will be read from the current file position, and the file position will be updated. If
     * `position` is an integer, the file position will be unchanged.
     */
    export function read<TBuffer extends NodeJS.ArrayBufferView>(
        fd: number,
        buffer: TBuffer,
        offset: number,
        length: number,
        position: ReadPosition | null,
        callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void,
    ): void;
    /**
     * Similar to the above `fs.read` function, this version takes an optional `options` object.
     * If not otherwise specified in an `options` object,
     * `buffer` defaults to `Buffer.alloc(16384)`,
     * `offset` defaults to `0`,
     * `length` defaults to `buffer.byteLength`, `- offset` as of Node 17.6.0
     * `position` defaults to `null`
     * @since v12.17.0, 13.11.0
     */
    export function read<TBuffer extends NodeJS.ArrayBufferView>(
        fd: number,
        options: ReadAsyncOptions<TBuffer>,
        callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void,
    ): void;
    export function read(
        fd: number,
        callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: NodeJS.ArrayBufferView) => void,
    ): void;
    export namespace read {
        /**
         * @param fd A file descriptor.
         * @param buffer The buffer that the data will be written to.
         * @param offset The offset in the buffer at which to start writing.
         * @param length The number of bytes to read.
         * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
         */
        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
            fd: number,
            buffer: TBuffer,
            offset: number,
            length: number,
            position: number | null,
        ): Promise<{
            bytesRead: number;
            buffer: TBuffer;
        }>;
        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
            fd: number,
            options: ReadAsyncOptions<TBuffer>,
        ): Promise<{
            bytesRead: number;
            buffer: TBuffer;
        }>;
        function __promisify__(fd: number): Promise<{
            bytesRead: number;
            buffer: NodeJS.ArrayBufferView;
        }>;
    }
    /**
     * Returns the number of `bytesRead`.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link read}.
     * @since v0.1.21
     * @param [position='null']
     */
    export function readSync(
        fd: number,
        buffer: NodeJS.ArrayBufferView,
        offset: number,
        length: number,
        position: ReadPosition | null,
    ): number;
    /**
     * Similar to the above `fs.readSync` function, this version takes an optional `options` object.
     * If no `options` object is specified, it will default with the above values.
     */
    export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, opts?: ReadSyncOptions): number;
    /**
     * Asynchronously reads the entire contents of a file.
     *
     * ```js
     * import { readFile } from 'node:fs';
     *
     * readFile('/etc/passwd', (err, data) => {
     *   if (err) throw err;
     *   console.log(data);
     * });
     * ```
     *
     * The callback is passed two arguments `(err, data)`, where `data` is the
     * contents of the file.
     *
     * If no encoding is specified, then the raw buffer is returned.
     *
     * If `options` is a string, then it specifies the encoding:
     *
     * ```js
     * import { readFile } from 'node:fs';
     *
     * readFile('/etc/passwd', 'utf8', callback);
     * ```
     *
     * When the path is a directory, the behavior of `fs.readFile()` and {@link readFileSync} is platform-specific. On macOS, Linux, and Windows, an
     * error will be returned. On FreeBSD, a representation of the directory's contents
     * will be returned.
     *
     * ```js
     * import { readFile } from 'node:fs';
     *
     * // macOS, Linux, and Windows
     * readFile('<directory>', (err, data) => {
     *   // => [Error: EISDIR: illegal operation on a directory, read <directory>]
     * });
     *
     * //  FreeBSD
     * readFile('<directory>', (err, data) => {
     *   // => null, <data>
     * });
     * ```
     *
     * It is possible to abort an ongoing request using an `AbortSignal`. If a
     * request is aborted the callback is called with an `AbortError`:
     *
     * ```js
     * import { readFile } from 'node:fs';
     *
     * const controller = new AbortController();
     * const signal = controller.signal;
     * readFile(fileInfo[0].name, { signal }, (err, buf) => {
     *   // ...
     * });
     * // When you want to abort the request
     * controller.abort();
     * ```
     *
     * The `fs.readFile()` function buffers the entire file. To minimize memory costs,
     * when possible prefer streaming via `fs.createReadStream()`.
     *
     * Aborting an ongoing request does not abort individual operating
     * system requests but rather the internal buffering `fs.readFile` performs.
     * @since v0.1.29
     * @param path filename or file descriptor
     */
    export function readFile(
        path: PathOrFileDescriptor,
        options:
            | ({
                encoding?: null | undefined;
                flag?: string | undefined;
            } & Abortable)
            | undefined
            | null,
        callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void,
    ): void;
    /**
     * Asynchronously reads the entire contents of a file.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
     * If a flag is not provided, it defaults to `'r'`.
     */
    export function readFile(
        path: PathOrFileDescriptor,
        options:
            | ({
                encoding: BufferEncoding;
                flag?: string | undefined;
            } & Abortable)
            | BufferEncoding,
        callback: (err: NodeJS.ErrnoException | null, data: string) => void,
    ): void;
    /**
     * Asynchronously reads the entire contents of a file.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
     * If a flag is not provided, it defaults to `'r'`.
     */
    export function readFile(
        path: PathOrFileDescriptor,
        options:
            | (ObjectEncodingOptions & {
                flag?: string | undefined;
            } & Abortable)
            | BufferEncoding
            | undefined
            | null,
        callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void,
    ): void;
    /**
     * Asynchronously reads the entire contents of a file.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     */
    export function readFile(
        path: PathOrFileDescriptor,
        callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void,
    ): void;
    export namespace readFile {
        /**
         * Asynchronously reads the entire contents of a file.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
         * @param options An object that may contain an optional flag.
         * If a flag is not provided, it defaults to `'r'`.
         */
        function __promisify__(
            path: PathOrFileDescriptor,
            options?: {
                encoding?: null | undefined;
                flag?: string | undefined;
            } | null,
        ): Promise<Buffer>;
        /**
         * Asynchronously reads the entire contents of a file.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
         * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
         * If a flag is not provided, it defaults to `'r'`.
         */
        function __promisify__(
            path: PathOrFileDescriptor,
            options:
                | {
                    encoding: BufferEncoding;
                    flag?: string | undefined;
                }
                | BufferEncoding,
        ): Promise<string>;
        /**
         * Asynchronously reads the entire contents of a file.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
         * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
         * If a flag is not provided, it defaults to `'r'`.
         */
        function __promisify__(
            path: PathOrFileDescriptor,
            options?:
                | (ObjectEncodingOptions & {
                    flag?: string | undefined;
                })
                | BufferEncoding
                | null,
        ): Promise<string | Buffer>;
    }
    /**
     * Returns the contents of the `path`.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link readFile}.
     *
     * If the `encoding` option is specified then this function returns a
     * string. Otherwise it returns a buffer.
     *
     * Similar to {@link readFile}, when the path is a directory, the behavior of `fs.readFileSync()` is platform-specific.
     *
     * ```js
     * import { readFileSync } from 'node:fs';
     *
     * // macOS, Linux, and Windows
     * readFileSync('<directory>');
     * // => [Error: EISDIR: illegal operation on a directory, read <directory>]
     *
     * //  FreeBSD
     * readFileSync('<directory>'); // => <data>
     * ```
     * @since v0.1.8
     * @param path filename or file descriptor
     */
    export function readFileSync(
        path: PathOrFileDescriptor,
        options?: {
            encoding?: null | undefined;
            flag?: string | undefined;
        } | null,
    ): Buffer;
    /**
     * Synchronously reads the entire contents of a file.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
     * If a flag is not provided, it defaults to `'r'`.
     */
    export function readFileSync(
        path: PathOrFileDescriptor,
        options:
            | {
                encoding: BufferEncoding;
                flag?: string | undefined;
            }
            | BufferEncoding,
    ): string;
    /**
     * Synchronously reads the entire contents of a file.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
     * If a flag is not provided, it defaults to `'r'`.
     */
    export function readFileSync(
        path: PathOrFileDescriptor,
        options?:
            | (ObjectEncodingOptions & {
                flag?: string | undefined;
            })
            | BufferEncoding
            | null,
    ): string | Buffer;
    export type WriteFileOptions =
        | (
            & ObjectEncodingOptions
            & Abortable
            & {
                mode?: Mode | undefined;
                flag?: string | undefined;
                flush?: boolean | undefined;
            }
        )
        | BufferEncoding
        | null;
    /**
     * When `file` is a filename, asynchronously writes data to the file, replacing the
     * file if it already exists. `data` can be a string or a buffer.
     *
     * When `file` is a file descriptor, the behavior is similar to calling `fs.write()` directly (which is recommended). See the notes below on using
     * a file descriptor.
     *
     * The `encoding` option is ignored if `data` is a buffer.
     *
     * The `mode` option only affects the newly created file. See {@link open} for more details.
     *
     * ```js
     * import { writeFile } from 'node:fs';
     * import { Buffer } from 'node:buffer';
     *
     * const data = new Uint8Array(Buffer.from('Hello Node.js'));
     * writeFile('message.txt', data, (err) => {
     *   if (err) throw err;
     *   console.log('The file has been saved!');
     * });
     * ```
     *
     * If `options` is a string, then it specifies the encoding:
     *
     * ```js
     * import { writeFile } from 'node:fs';
     *
     * writeFile('message.txt', 'Hello Node.js', 'utf8', callback);
     * ```
     *
     * It is unsafe to use `fs.writeFile()` multiple times on the same file without
     * waiting for the callback. For this scenario, {@link createWriteStream} is
     * recommended.
     *
     * Similarly to `fs.readFile` \- `fs.writeFile` is a convenience method that
     * performs multiple `write` calls internally to write the buffer passed to it.
     * For performance sensitive code consider using {@link createWriteStream}.
     *
     * It is possible to use an `AbortSignal` to cancel an `fs.writeFile()`.
     * Cancelation is "best effort", and some amount of data is likely still
     * to be written.
     *
     * ```js
     * import { writeFile } from 'node:fs';
     * import { Buffer } from 'node:buffer';
     *
     * const controller = new AbortController();
     * const { signal } = controller;
     * const data = new Uint8Array(Buffer.from('Hello Node.js'));
     * writeFile('message.txt', data, { signal }, (err) => {
     *   // When a request is aborted - the callback is called with an AbortError
     * });
     * // When the request should be aborted
     * controller.abort();
     * ```
     *
     * Aborting an ongoing request does not abort individual operating
     * system requests but rather the internal buffering `fs.writeFile` performs.
     * @since v0.1.29
     * @param file filename or file descriptor
     */
    export function writeFile(
        file: PathOrFileDescriptor,
        data: string | NodeJS.ArrayBufferView,
        options: WriteFileOptions,
        callback: NoParamCallback,
    ): void;
    /**
     * Asynchronously writes data to a file, replacing the file if it already exists.
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
     */
    export function writeFile(
        path: PathOrFileDescriptor,
        data: string | NodeJS.ArrayBufferView,
        callback: NoParamCallback,
    ): void;
    export namespace writeFile {
        /**
         * Asynchronously writes data to a file, replacing the file if it already exists.
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
         * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
         * If `encoding` is not supplied, the default of `'utf8'` is used.
         * If `mode` is not supplied, the default of `0o666` is used.
         * If `mode` is a string, it is parsed as an octal integer.
         * If `flag` is not supplied, the default of `'w'` is used.
         */
        function __promisify__(
            path: PathOrFileDescriptor,
            data: string | NodeJS.ArrayBufferView,
            options?: WriteFileOptions,
        ): Promise<void>;
    }
    /**
     * Returns `undefined`.
     *
     * The `mode` option only affects the newly created file. See {@link open} for more details.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link writeFile}.
     * @since v0.1.29
     * @param file filename or file descriptor
     */
    export function writeFileSync(
        file: PathOrFileDescriptor,
        data: string | NodeJS.ArrayBufferView,
        options?: WriteFileOptions,
    ): void;
    /**
     * Asynchronously append data to a file, creating the file if it does not yet
     * exist. `data` can be a string or a `Buffer`.
     *
     * The `mode` option only affects the newly created file. See {@link open} for more details.
     *
     * ```js
     * import { appendFile } from 'node:fs';
     *
     * appendFile('message.txt', 'data to append', (err) => {
     *   if (err) throw err;
     *   console.log('The "data to append" was appended to file!');
     * });
     * ```
     *
     * If `options` is a string, then it specifies the encoding:
     *
     * ```js
     * import { appendFile } from 'node:fs';
     *
     * appendFile('message.txt', 'data to append', 'utf8', callback);
     * ```
     *
     * The `path` may be specified as a numeric file descriptor that has been opened
     * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will
     * not be closed automatically.
     *
     * ```js
     * import { open, close, appendFile } from 'node:fs';
     *
     * function closeFd(fd) {
     *   close(fd, (err) => {
     *     if (err) throw err;
     *   });
     * }
     *
     * open('message.txt', 'a', (err, fd) => {
     *   if (err) throw err;
     *
     *   try {
     *     appendFile(fd, 'data to append', 'utf8', (err) => {
     *       closeFd(fd);
     *       if (err) throw err;
     *     });
     *   } catch (err) {
     *     closeFd(fd);
     *     throw err;
     *   }
     * });
     * ```
     * @since v0.6.7
     * @param path filename or file descriptor
     */
    export function appendFile(
        path: PathOrFileDescriptor,
        data: string | Uint8Array,
        options: WriteFileOptions,
        callback: NoParamCallback,
    ): void;
    /**
     * Asynchronously append data to a file, creating the file if it does not exist.
     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
     */
    export function appendFile(file: PathOrFileDescriptor, data: string | Uint8Array, callback: NoParamCallback): void;
    export namespace appendFile {
        /**
         * Asynchronously append data to a file, creating the file if it does not exist.
         * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
         * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
         * If `encoding` is not supplied, the default of `'utf8'` is used.
         * If `mode` is not supplied, the default of `0o666` is used.
         * If `mode` is a string, it is parsed as an octal integer.
         * If `flag` is not supplied, the default of `'a'` is used.
         */
        function __promisify__(
            file: PathOrFileDescriptor,
            data: string | Uint8Array,
            options?: WriteFileOptions,
        ): Promise<void>;
    }
    /**
     * Synchronously append data to a file, creating the file if it does not yet
     * exist. `data` can be a string or a `Buffer`.
     *
     * The `mode` option only affects the newly created file. See {@link open} for more details.
     *
     * ```js
     * import { appendFileSync } from 'node:fs';
     *
     * try {
     *   appendFileSync('message.txt', 'data to append');
     *   console.log('The "data to append" was appended to file!');
     * } catch (err) {
     *   // Handle the error
     * }
     * ```
     *
     * If `options` is a string, then it specifies the encoding:
     *
     * ```js
     * import { appendFileSync } from 'node:fs';
     *
     * appendFileSync('message.txt', 'data to append', 'utf8');
     * ```
     *
     * The `path` may be specified as a numeric file descriptor that has been opened
     * for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will
     * not be closed automatically.
     *
     * ```js
     * import { openSync, closeSync, appendFileSync } from 'node:fs';
     *
     * let fd;
     *
     * try {
     *   fd = openSync('message.txt', 'a');
     *   appendFileSync(fd, 'data to append', 'utf8');
     * } catch (err) {
     *   // Handle the error
     * } finally {
     *   if (fd !== undefined)
     *     closeSync(fd);
     * }
     * ```
     * @since v0.6.7
     * @param path filename or file descriptor
     */
    export function appendFileSync(
        path: PathOrFileDescriptor,
        data: string | Uint8Array,
        options?: WriteFileOptions,
    ): void;
    /**
     * Watch for changes on `filename`. The callback `listener` will be called each
     * time the file is accessed.
     *
     * The `options` argument may be omitted. If provided, it should be an object. The `options` object may contain a boolean named `persistent` that indicates
     * whether the process should continue to run as long as files are being watched.
     * The `options` object may specify an `interval` property indicating how often the
     * target should be polled in milliseconds.
     *
     * The `listener` gets two arguments the current stat object and the previous
     * stat object:
     *
     * ```js
     * import { watchFile } from 'node:fs';
     *
     * watchFile('message.text', (curr, prev) => {
     *   console.log(`the current mtime is: ${curr.mtime}`);
     *   console.log(`the previous mtime was: ${prev.mtime}`);
     * });
     * ```
     *
     * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`,
     * the numeric values in these objects are specified as `BigInt`s.
     *
     * To be notified when the file was modified, not just accessed, it is necessary
     * to compare `curr.mtimeMs` and `prev.mtimeMs`.
     *
     * When an `fs.watchFile` operation results in an `ENOENT` error, it
     * will invoke the listener once, with all the fields zeroed (or, for dates, the
     * Unix Epoch). If the file is created later on, the listener will be called
     * again, with the latest stat objects. This is a change in functionality since
     * v0.10.
     *
     * Using {@link watch} is more efficient than `fs.watchFile` and `fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and `fs.unwatchFile` when possible.
     *
     * When a file being watched by `fs.watchFile()` disappears and reappears,
     * then the contents of `previous` in the second callback event (the file's
     * reappearance) will be the same as the contents of `previous` in the first
     * callback event (its disappearance).
     *
     * This happens when:
     *
     * * the file is deleted, followed by a restore
     * * the file is renamed and then renamed a second time back to its original name
     * @since v0.1.31
     */
    export interface WatchFileOptions {
        bigint?: boolean | undefined;
        persistent?: boolean | undefined;
        interval?: number | undefined;
    }
    /**
     * Watch for changes on `filename`. The callback `listener` will be called each
     * time the file is accessed.
     *
     * The `options` argument may be omitted. If provided, it should be an object. The `options` object may contain a boolean named `persistent` that indicates
     * whether the process should continue to run as long as files are being watched.
     * The `options` object may specify an `interval` property indicating how often the
     * target should be polled in milliseconds.
     *
     * The `listener` gets two arguments the current stat object and the previous
     * stat object:
     *
     * ```js
     * import { watchFile } from 'node:fs';
     *
     * watchFile('message.text', (curr, prev) => {
     *   console.log(`the current mtime is: ${curr.mtime}`);
     *   console.log(`the previous mtime was: ${prev.mtime}`);
     * });
     * ```
     *
     * These stat objects are instances of `fs.Stat`. If the `bigint` option is `true`,
     * the numeric values in these objects are specified as `BigInt`s.
     *
     * To be notified when the file was modified, not just accessed, it is necessary
     * to compare `curr.mtimeMs` and `prev.mtimeMs`.
     *
     * When an `fs.watchFile` operation results in an `ENOENT` error, it
     * will invoke the listener once, with all the fields zeroed (or, for dates, the
     * Unix Epoch). If the file is created later on, the listener will be called
     * again, with the latest stat objects. This is a change in functionality since
     * v0.10.
     *
     * Using {@link watch} is more efficient than `fs.watchFile` and `fs.unwatchFile`. `fs.watch` should be used instead of `fs.watchFile` and `fs.unwatchFile` when possible.
     *
     * When a file being watched by `fs.watchFile()` disappears and reappears,
     * then the contents of `previous` in the second callback event (the file's
     * reappearance) will be the same as the contents of `previous` in the first
     * callback event (its disappearance).
     *
     * This happens when:
     *
     * * the file is deleted, followed by a restore
     * * the file is renamed and then renamed a second time back to its original name
     * @since v0.1.31
     */
    export function watchFile(
        filename: PathLike,
        options:
            | (WatchFileOptions & {
                bigint?: false | undefined;
            })
            | undefined,
        listener: StatsListener,
    ): StatWatcher;
    export function watchFile(
        filename: PathLike,
        options:
            | (WatchFileOptions & {
                bigint: true;
            })
            | undefined,
        listener: BigIntStatsListener,
    ): StatWatcher;
    /**
     * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
     */
    export function watchFile(filename: PathLike, listener: StatsListener): StatWatcher;
    /**
     * Stop watching for changes on `filename`. If `listener` is specified, only that
     * particular listener is removed. Otherwise, _all_ listeners are removed,
     * effectively stopping watching of `filename`.
     *
     * Calling `fs.unwatchFile()` with a filename that is not being watched is a
     * no-op, not an error.
     *
     * Using {@link watch} is more efficient than `fs.watchFile()` and `fs.unwatchFile()`. `fs.watch()` should be used instead of `fs.watchFile()` and `fs.unwatchFile()` when possible.
     * @since v0.1.31
     * @param listener Optional, a listener previously attached using `fs.watchFile()`
     */
    export function unwatchFile(filename: PathLike, listener?: StatsListener): void;
    export function unwatchFile(filename: PathLike, listener?: BigIntStatsListener): void;
    export interface WatchOptions extends Abortable {
        encoding?: BufferEncoding | "buffer" | undefined;
        persistent?: boolean | undefined;
        recursive?: boolean | undefined;
    }
    export type WatchEventType = "rename" | "change";
    export type WatchListener<T> = (event: WatchEventType, filename: T | null) => void;
    export type StatsListener = (curr: Stats, prev: Stats) => void;
    export type BigIntStatsListener = (curr: BigIntStats, prev: BigIntStats) => void;
    /**
     * Watch for changes on `filename`, where `filename` is either a file or a
     * directory.
     *
     * The second argument is optional. If `options` is provided as a string, it
     * specifies the `encoding`. Otherwise `options` should be passed as an object.
     *
     * The listener callback gets two arguments `(eventType, filename)`. `eventType`is either `'rename'` or `'change'`, and `filename` is the name of the file
     * which triggered the event.
     *
     * On most platforms, `'rename'` is emitted whenever a filename appears or
     * disappears in the directory.
     *
     * The listener callback is attached to the `'change'` event fired by `fs.FSWatcher`, but it is not the same thing as the `'change'` value of `eventType`.
     *
     * If a `signal` is passed, aborting the corresponding AbortController will close
     * the returned `fs.FSWatcher`.
     * @since v0.5.10
     * @param listener
     */
    export function watch(
        filename: PathLike,
        options:
            | (WatchOptions & {
                encoding: "buffer";
            })
            | "buffer",
        listener?: WatchListener<Buffer>,
    ): FSWatcher;
    /**
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
     * If `encoding` is not supplied, the default of `'utf8'` is used.
     * If `persistent` is not supplied, the default of `true` is used.
     * If `recursive` is not supplied, the default of `false` is used.
     */
    export function watch(
        filename: PathLike,
        options?: WatchOptions | BufferEncoding | null,
        listener?: WatchListener<string>,
    ): FSWatcher;
    /**
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
     * If `encoding` is not supplied, the default of `'utf8'` is used.
     * If `persistent` is not supplied, the default of `true` is used.
     * If `recursive` is not supplied, the default of `false` is used.
     */
    export function watch(
        filename: PathLike,
        options: WatchOptions | string,
        listener?: WatchListener<string | Buffer>,
    ): FSWatcher;
    /**
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
     */
    export function watch(filename: PathLike, listener?: WatchListener<string>): FSWatcher;
    /**
     * Test whether or not the given path exists by checking with the file system.
     * Then call the `callback` argument with either true or false:
     *
     * ```js
     * import { exists } from 'node:fs';
     *
     * exists('/etc/passwd', (e) => {
     *   console.log(e ? 'it exists' : 'no passwd!');
     * });
     * ```
     *
     * **The parameters for this callback are not consistent with other Node.js**
     * **callbacks.** Normally, the first parameter to a Node.js callback is an `err` parameter, optionally followed by other parameters. The `fs.exists()` callback
     * has only one boolean parameter. This is one reason `fs.access()` is recommended
     * instead of `fs.exists()`.
     *
     * Using `fs.exists()` to check for the existence of a file before calling `fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. Doing
     * so introduces a race condition, since other processes may change the file's
     * state between the two calls. Instead, user code should open/read/write the
     * file directly and handle the error raised if the file does not exist.
     *
     * **write (NOT RECOMMENDED)**
     *
     * ```js
     * import { exists, open, close } from 'node:fs';
     *
     * exists('myfile', (e) => {
     *   if (e) {
     *     console.error('myfile already exists');
     *   } else {
     *     open('myfile', 'wx', (err, fd) => {
     *       if (err) throw err;
     *
     *       try {
     *         writeMyData(fd);
     *       } finally {
     *         close(fd, (err) => {
     *           if (err) throw err;
     *         });
     *       }
     *     });
     *   }
     * });
     * ```
     *
     * **write (RECOMMENDED)**
     *
     * ```js
     * import { open, close } from 'node:fs';
     * open('myfile', 'wx', (err, fd) => {
     *   if (err) {
     *     if (err.code === 'EEXIST') {
     *       console.error('myfile already exists');
     *       return;
     *     }
     *
     *     throw err;
     *   }
     *
     *   try {
     *     writeMyData(fd);
     *   } finally {
     *     close(fd, (err) => {
     *       if (err) throw err;
     *     });
     *   }
     * });
     * ```
     *
     * **read (NOT RECOMMENDED)**
     *
     * ```js
     * import { open, close, exists } from 'node:fs';
     *
     * exists('myfile', (e) => {
     *   if (e) {
     *     open('myfile', 'r', (err, fd) => {
     *       if (err) throw err;
     *
     *       try {
     *         readMyData(fd);
     *       } finally {
     *         close(fd, (err) => {
     *           if (err) throw err;
     *         });
     *       }
     *     });
     *   } else {
     *     console.error('myfile does not exist');
     *   }
     * });
     * ```
     *
     * **read (RECOMMENDED)**
     *
     * ```js
     * import { open, close } from 'node:fs';
     *
     * open('myfile', 'r', (err, fd) => {
     *   if (err) {
     *     if (err.code === 'ENOENT') {
     *       console.error('myfile does not exist');
     *       return;
     *     }
     *
     *     throw err;
     *   }
     *
     *   try {
     *     readMyData(fd);
     *   } finally {
     *     close(fd, (err) => {
     *       if (err) throw err;
     *     });
     *   }
     * });
     * ```
     *
     * The "not recommended" examples above check for existence and then use the
     * file; the "recommended" examples are better because they use the file directly
     * and handle the error, if any.
     *
     * In general, check for the existence of a file only if the file won't be
     * used directly, for example when its existence is a signal from another
     * process.
     * @since v0.0.2
     * @deprecated Since v1.0.0 - Use {@link stat} or {@link access} instead.
     */
    export function exists(path: PathLike, callback: (exists: boolean) => void): void;
    /** @deprecated */
    export namespace exists {
        /**
         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         */
        function __promisify__(path: PathLike): Promise<boolean>;
    }
    /**
     * Returns `true` if the path exists, `false` otherwise.
     *
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link exists}.
     *
     * `fs.exists()` is deprecated, but `fs.existsSync()` is not. The `callback` parameter to `fs.exists()` accepts parameters that are inconsistent with other
     * Node.js callbacks. `fs.existsSync()` does not use a callback.
     *
     * ```js
     * import { existsSync } from 'node:fs';
     *
     * if (existsSync('/etc/passwd'))
     *   console.log('The path exists.');
     * ```
     * @since v0.1.21
     */
    export function existsSync(path: PathLike): boolean;
    export namespace constants {
        // File Access Constants
        /** Constant for fs.access(). File is visible to the calling process. */
        const F_OK: number;
        /** Constant for fs.access(). File can be read by the calling process. */
        const R_OK: number;
        /** Constant for fs.access(). File can be written by the calling process. */
        const W_OK: number;
        /** Constant for fs.access(). File can be executed by the calling process. */
        const X_OK: number;
        // File Copy Constants
        /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */
        const COPYFILE_EXCL: number;
        /**
         * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink.
         * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
         */
        const COPYFILE_FICLONE: number;
        /**
         * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink.
         * If the underlying platform does not support copy-on-write, then the operation will fail with an error.
         */
        const COPYFILE_FICLONE_FORCE: number;
        // File Open Constants
        /** Constant for fs.open(). Flag indicating to open a file for read-only access. */
        const O_RDONLY: number;
        /** Constant for fs.open(). Flag indicating to open a file for write-only access. */
        const O_WRONLY: number;
        /** Constant for fs.open(). Flag indicating to open a file for read-write access. */
        const O_RDWR: number;
        /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */
        const O_CREAT: number;
        /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */
        const O_EXCL: number;
        /**
         * Constant for fs.open(). Flag indicating that if path identifies a terminal device,
         * opening the path shall not cause that terminal to become the controlling terminal for the process
         * (if the process does not already have one).
         */
        const O_NOCTTY: number;
        /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */
        const O_TRUNC: number;
        /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */
        const O_APPEND: number;
        /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */
        const O_DIRECTORY: number;
        /**
         * constant for fs.open().
         * Flag indicating reading accesses to the file system will no longer result in
         * an update to the atime information associated with the file.
         * This flag is available on Linux operating systems only.
         */
        const O_NOATIME: number;
        /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */
        const O_NOFOLLOW: number;
        /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */
        const O_SYNC: number;
        /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */
        const O_DSYNC: number;
        /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */
        const O_SYMLINK: number;
        /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */
        const O_DIRECT: number;
        /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */
        const O_NONBLOCK: number;
        // File Type Constants
        /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */
        const S_IFMT: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */
        const S_IFREG: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */
        const S_IFDIR: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */
        const S_IFCHR: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */
        const S_IFBLK: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */
        const S_IFIFO: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */
        const S_IFLNK: number;
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */
        const S_IFSOCK: number;
        // File Mode Constants
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */
        const S_IRWXU: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */
        const S_IRUSR: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */
        const S_IWUSR: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */
        const S_IXUSR: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */
        const S_IRWXG: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */
        const S_IRGRP: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */
        const S_IWGRP: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */
        const S_IXGRP: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */
        const S_IRWXO: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */
        const S_IROTH: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */
        const S_IWOTH: number;
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */
        const S_IXOTH: number;
        /**
         * When set, a memory file mapping is used to access the file. This flag
         * is available on Windows operating systems only. On other operating systems,
         * this flag is ignored.
         */
        const UV_FS_O_FILEMAP: number;
    }
    /**
     * Tests a user's permissions for the file or directory specified by `path`.
     * The `mode` argument is an optional integer that specifies the accessibility
     * checks to be performed. `mode` should be either the value `fs.constants.F_OK` or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`, `fs.constants.W_OK`, and `fs.constants.X_OK`
     * (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for
     * possible values of `mode`.
     *
     * The final argument, `callback`, is a callback function that is invoked with
     * a possible error argument. If any of the accessibility checks fail, the error
     * argument will be an `Error` object. The following examples check if `package.json` exists, and if it is readable or writable.
     *
     * ```js
     * import { access, constants } from 'node:fs';
     *
     * const file = 'package.json';
     *
     * // Check if the file exists in the current directory.
     * access(file, constants.F_OK, (err) => {
     *   console.log(`${file} ${err ? 'does not exist' : 'exists'}`);
     * });
     *
     * // Check if the file is readable.
     * access(file, constants.R_OK, (err) => {
     *   console.log(`${file} ${err ? 'is not readable' : 'is readable'}`);
     * });
     *
     * // Check if the file is writable.
     * access(file, constants.W_OK, (err) => {
     *   console.log(`${file} ${err ? 'is not writable' : 'is writable'}`);
     * });
     *
     * // Check if the file is readable and writable.
     * access(file, constants.R_OK | constants.W_OK, (err) => {
     *   console.log(`${file} ${err ? 'is not' : 'is'} readable and writable`);
     * });
     * ```
     *
     * Do not use `fs.access()` to check for the accessibility of a file before calling `fs.open()`, `fs.readFile()`, or `fs.writeFile()`. Doing
     * so introduces a race condition, since other processes may change the file's
     * state between the two calls. Instead, user code should open/read/write the
     * file directly and handle the error raised if the file is not accessible.
     *
     * **write (NOT RECOMMENDED)**
     *
     * ```js
     * import { access, open, close } from 'node:fs';
     *
     * access('myfile', (err) => {
     *   if (!err) {
     *     console.error('myfile already exists');
     *     return;
     *   }
     *
     *   open('myfile', 'wx', (err, fd) => {
     *     if (err) throw err;
     *
     *     try {
     *       writeMyData(fd);
     *     } finally {
     *       close(fd, (err) => {
     *         if (err) throw err;
     *       });
     *     }
     *   });
     * });
     * ```
     *
     * **write (RECOMMENDED)**
     *
     * ```js
     * import { open, close } from 'node:fs';
     *
     * open('myfile', 'wx', (err, fd) => {
     *   if (err) {
     *     if (err.code === 'EEXIST') {
     *       console.error('myfile already exists');
     *       return;
     *     }
     *
     *     throw err;
     *   }
     *
     *   try {
     *     writeMyData(fd);
     *   } finally {
     *     close(fd, (err) => {
     *       if (err) throw err;
     *     });
     *   }
     * });
     * ```
     *
     * **read (NOT RECOMMENDED)**
     *
     * ```js
     * import { access, open, close } from 'node:fs';
     * access('myfile', (err) => {
     *   if (err) {
     *     if (err.code === 'ENOENT') {
     *       console.error('myfile does not exist');
     *       return;
     *     }
     *
     *     throw err;
     *   }
     *
     *   open('myfile', 'r', (err, fd) => {
     *     if (err) throw err;
     *
     *     try {
     *       readMyData(fd);
     *     } finally {
     *       close(fd, (err) => {
     *         if (err) throw err;
     *       });
     *     }
     *   });
     * });
     * ```
     *
     * **read (RECOMMENDED)**
     *
     * ```js
     * import { open, close } from 'node:fs';
     *
     * open('myfile', 'r', (err, fd) => {
     *   if (err) {
     *     if (err.code === 'ENOENT') {
     *       console.error('myfile does not exist');
     *       return;
     *     }
     *
     *     throw err;
     *   }
     *
     *   try {
     *     readMyData(fd);
     *   } finally {
     *     close(fd, (err) => {
     *       if (err) throw err;
     *     });
     *   }
     * });
     * ```
     *
     * The "not recommended" examples above check for accessibility and then use the
     * file; the "recommended" examples are better because they use the file directly
     * and handle the error, if any.
     *
     * In general, check for the accessibility of a file only if the file will not be
     * used directly, for example when its accessibility is a signal from another
     * process.
     *
     * On Windows, access-control policies (ACLs) on a directory may limit access to
     * a file or directory. The `fs.access()` function, however, does not check the
     * ACL and therefore may report that a path is accessible even if the ACL restricts
     * the user from reading or writing to it.
     * @since v0.11.15
     * @param [mode=fs.constants.F_OK]
     */
    export function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void;
    /**
     * Asynchronously tests a user's permissions for the file specified by path.
     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
     */
    export function access(path: PathLike, callback: NoParamCallback): void;
    export namespace access {
        /**
         * Asynchronously tests a user's permissions for the file specified by path.
         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
         * URL support is _experimental_.
         */
        function __promisify__(path: PathLike, mode?: number): Promise<void>;
    }
    /**
     * Synchronously tests a user's permissions for the file or directory specified
     * by `path`. The `mode` argument is an optional integer that specifies the
     * accessibility checks to be performed. `mode` should be either the value `fs.constants.F_OK` or a mask consisting of the bitwise OR of any of `fs.constants.R_OK`, `fs.constants.W_OK`, and
     * `fs.constants.X_OK` (e.g.`fs.constants.W_OK | fs.constants.R_OK`). Check `File access constants` for
     * possible values of `mode`.
     *
     * If any of the accessibility checks fail, an `Error` will be thrown. Otherwise,
     * the method will return `undefined`.
     *
     * ```js
     * import { accessSync, constants } from 'node:fs';
     *
     * try {
     *   accessSync('etc/passwd', constants.R_OK | constants.W_OK);
     *   console.log('can read/write');
     * } catch (err) {
     *   console.error('no access!');
     * }
     * ```
     * @since v0.11.15
     * @param [mode=fs.constants.F_OK]
     */
    export function accessSync(path: PathLike, mode?: number): void;
    interface StreamOptions {
        flags?: string | undefined;
        encoding?: BufferEncoding | undefined;
        fd?: number | promises.FileHandle | undefined;
        mode?: number | undefined;
        autoClose?: boolean | undefined;
        emitClose?: boolean | undefined;
        start?: number | undefined;
        signal?: AbortSignal | null | undefined;
        highWaterMark?: number | undefined;
    }
    interface FSImplementation {
        open?: (...args: any[]) => any;
        close?: (...args: any[]) => any;
    }
    interface CreateReadStreamFSImplementation extends FSImplementation {
        read: (...args: any[]) => any;
    }
    interface CreateWriteStreamFSImplementation extends FSImplementation {
        write: (...args: any[]) => any;
        writev?: (...args: any[]) => any;
    }
    interface ReadStreamOptions extends StreamOptions {
        fs?: CreateReadStreamFSImplementation | null | undefined;
        end?: number | undefined;
    }
    interface WriteStreamOptions extends StreamOptions {
        fs?: CreateWriteStreamFSImplementation | null | undefined;
        flush?: boolean | undefined;
    }
    /**
     * `options` can include `start` and `end` values to read a range of bytes from
     * the file instead of the entire file. Both `start` and `end` are inclusive and
     * start counting at 0, allowed values are in the
     * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. If `fd` is specified and `start` is
     * omitted or `undefined`, `fs.createReadStream()` reads sequentially from the
     * current file position. The `encoding` can be any one of those accepted by `Buffer`.
     *
     * If `fd` is specified, `ReadStream` will ignore the `path` argument and will use
     * the specified file descriptor. This means that no `'open'` event will be
     * emitted. `fd` should be blocking; non-blocking `fd`s should be passed to `net.Socket`.
     *
     * If `fd` points to a character device that only supports blocking reads
     * (such as keyboard or sound card), read operations do not finish until data is
     * available. This can prevent the process from exiting and the stream from
     * closing naturally.
     *
     * By default, the stream will emit a `'close'` event after it has been
     * destroyed.  Set the `emitClose` option to `false` to change this behavior.
     *
     * By providing the `fs` option, it is possible to override the corresponding `fs` implementations for `open`, `read`, and `close`. When providing the `fs` option,
     * an override for `read` is required. If no `fd` is provided, an override for `open` is also required. If `autoClose` is `true`, an override for `close` is
     * also required.
     *
     * ```js
     * import { createReadStream } from 'node:fs';
     *
     * // Create a stream from some character device.
     * const stream = createReadStream('/dev/input/event0');
     * setTimeout(() => {
     *   stream.close(); // This may not close the stream.
     *   // Artificially marking end-of-stream, as if the underlying resource had
     *   // indicated end-of-file by itself, allows the stream to close.
     *   // This does not cancel pending read operations, and if there is such an
     *   // operation, the process may still not be able to exit successfully
     *   // until it finishes.
     *   stream.push(null);
     *   stream.read(0);
     * }, 100);
     * ```
     *
     * If `autoClose` is false, then the file descriptor won't be closed, even if
     * there's an error. It is the application's responsibility to close it and make
     * sure there's no file descriptor leak. If `autoClose` is set to true (default
     * behavior), on `'error'` or `'end'` the file descriptor will be closed
     * automatically.
     *
     * `mode` sets the file mode (permission and sticky bits), but only if the
     * file was created.
     *
     * An example to read the last 10 bytes of a file which is 100 bytes long:
     *
     * ```js
     * import { createReadStream } from 'node:fs';
     *
     * createReadStream('sample.txt', { start: 90, end: 99 });
     * ```
     *
     * If `options` is a string, then it specifies the encoding.
     * @since v0.1.31
     */
    export function createReadStream(path: PathLike, options?: BufferEncoding | ReadStreamOptions): ReadStream;
    /**
     * `options` may also include a `start` option to allow writing data at some
     * position past the beginning of the file, allowed values are in the
     * \[0, [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\] range. Modifying a file rather than
     * replacing it may require the `flags` option to be set to `r+` rather than the
     * default `w`. The `encoding` can be any one of those accepted by `Buffer`.
     *
     * If `autoClose` is set to true (default behavior) on `'error'` or `'finish'` the file descriptor will be closed automatically. If `autoClose` is false,
     * then the file descriptor won't be closed, even if there's an error.
     * It is the application's responsibility to close it and make sure there's no
     * file descriptor leak.
     *
     * By default, the stream will emit a `'close'` event after it has been
     * destroyed.  Set the `emitClose` option to `false` to change this behavior.
     *
     * By providing the `fs` option it is possible to override the corresponding `fs` implementations for `open`, `write`, `writev`, and `close`. Overriding `write()` without `writev()` can reduce
     * performance as some optimizations (`_writev()`)
     * will be disabled. When providing the `fs` option, overrides for at least one of `write` and `writev` are required. If no `fd` option is supplied, an override
     * for `open` is also required. If `autoClose` is `true`, an override for `close` is also required.
     *
     * Like `fs.ReadStream`, if `fd` is specified, `fs.WriteStream` will ignore the `path` argument and will use the specified file descriptor. This means that no `'open'` event will be
     * emitted. `fd` should be blocking; non-blocking `fd`s
     * should be passed to `net.Socket`.
     *
     * If `options` is a string, then it specifies the encoding.
     * @since v0.1.31
     */
    export function createWriteStream(path: PathLike, options?: BufferEncoding | WriteStreamOptions): WriteStream;
    /**
     * Forces all currently queued I/O operations associated with the file to the
     * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. No arguments other
     * than a possible
     * exception are given to the completion callback.
     * @since v0.1.96
     */
    export function fdatasync(fd: number, callback: NoParamCallback): void;
    export namespace fdatasync {
        /**
         * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
         * @param fd A file descriptor.
         */
        function __promisify__(fd: number): Promise<void>;
    }
    /**
     * Forces all currently queued I/O operations associated with the file to the
     * operating system's synchronized I/O completion state. Refer to the POSIX [`fdatasync(2)`](http://man7.org/linux/man-pages/man2/fdatasync.2.html) documentation for details. Returns `undefined`.
     * @since v0.1.96
     */
    export function fdatasyncSync(fd: number): void;
    /**
     * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it
     * already exists. No arguments other than a possible exception are given to the
     * callback function. Node.js makes no guarantees about the atomicity of the copy
     * operation. If an error occurs after the destination file has been opened for
     * writing, Node.js will attempt to remove the destination.
     *
     * `mode` is an optional integer that specifies the behavior
     * of the copy operation. It is possible to create a mask consisting of the bitwise
     * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`).
     *
     * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already
     * exists.
     * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a
     * copy-on-write reflink. If the platform does not support copy-on-write, then a
     * fallback copy mechanism is used.
     * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to
     * create a copy-on-write reflink. If the platform does not support
     * copy-on-write, then the operation will fail.
     *
     * ```js
     * import { copyFile, constants } from 'node:fs';
     *
     * function callback(err) {
     *   if (err) throw err;
     *   console.log('source.txt was copied to destination.txt');
     * }
     *
     * // destination.txt will be created or overwritten by default.
     * copyFile('source.txt', 'destination.txt', callback);
     *
     * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists.
     * copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL, callback);
     * ```
     * @since v8.5.0
     * @param src source filename to copy
     * @param dest destination filename of the copy operation
     * @param [mode=0] modifiers for copy operation.
     */
    export function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void;
    export function copyFile(src: PathLike, dest: PathLike, mode: number, callback: NoParamCallback): void;
    export namespace copyFile {
        function __promisify__(src: PathLike, dst: PathLike, mode?: number): Promise<void>;
    }
    /**
     * Synchronously copies `src` to `dest`. By default, `dest` is overwritten if it
     * already exists. Returns `undefined`. Node.js makes no guarantees about the
     * atomicity of the copy operation. If an error occurs after the destination file
     * has been opened for writing, Node.js will attempt to remove the destination.
     *
     * `mode` is an optional integer that specifies the behavior
     * of the copy operation. It is possible to create a mask consisting of the bitwise
     * OR of two or more values (e.g.`fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE`).
     *
     * * `fs.constants.COPYFILE_EXCL`: The copy operation will fail if `dest` already
     * exists.
     * * `fs.constants.COPYFILE_FICLONE`: The copy operation will attempt to create a
     * copy-on-write reflink. If the platform does not support copy-on-write, then a
     * fallback copy mechanism is used.
     * * `fs.constants.COPYFILE_FICLONE_FORCE`: The copy operation will attempt to
     * create a copy-on-write reflink. If the platform does not support
     * copy-on-write, then the operation will fail.
     *
     * ```js
     * import { copyFileSync, constants } from 'node:fs';
     *
     * // destination.txt will be created or overwritten by default.
     * copyFileSync('source.txt', 'destination.txt');
     * console.log('source.txt was copied to destination.txt');
     *
     * // By using COPYFILE_EXCL, the operation will fail if destination.txt exists.
     * copyFileSync('source.txt', 'destination.txt', constants.COPYFILE_EXCL);
     * ```
     * @since v8.5.0
     * @param src source filename to copy
     * @param dest destination filename of the copy operation
     * @param [mode=0] modifiers for copy operation.
     */
    export function copyFileSync(src: PathLike, dest: PathLike, mode?: number): void;
    /**
     * Write an array of `ArrayBufferView`s to the file specified by `fd` using `writev()`.
     *
     * `position` is the offset from the beginning of the file where this data
     * should be written. If `typeof position !== 'number'`, the data will be written
     * at the current position.
     *
     * The callback will be given three arguments: `err`, `bytesWritten`, and `buffers`. `bytesWritten` is how many bytes were written from `buffers`.
     *
     * If this method is `util.promisify()` ed, it returns a promise for an `Object` with `bytesWritten` and `buffers` properties.
     *
     * It is unsafe to use `fs.writev()` multiple times on the same file without
     * waiting for the callback. For this scenario, use {@link createWriteStream}.
     *
     * On Linux, positional writes don't work when the file is opened in append mode.
     * The kernel ignores the position argument and always appends the data to
     * the end of the file.
     * @since v12.9.0
     * @param [position='null']
     */
    export function writev(
        fd: number,
        buffers: readonly NodeJS.ArrayBufferView[],
        cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void,
    ): void;
    export function writev(
        fd: number,
        buffers: readonly NodeJS.ArrayBufferView[],
        position: number,
        cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void,
    ): void;
    export interface WriteVResult {
        bytesWritten: number;
        buffers: NodeJS.ArrayBufferView[];
    }
    export namespace writev {
        function __promisify__(
            fd: number,
            buffers: readonly NodeJS.ArrayBufferView[],
            position?: number,
        ): Promise<WriteVResult>;
    }
    /**
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link writev}.
     * @since v12.9.0
     * @param [position='null']
     * @return The number of bytes written.
     */
    export function writevSync(fd: number, buffers: readonly NodeJS.ArrayBufferView[], position?: number): number;
    /**
     * Read from a file specified by `fd` and write to an array of `ArrayBufferView`s
     * using `readv()`.
     *
     * `position` is the offset from the beginning of the file from where data
     * should be read. If `typeof position !== 'number'`, the data will be read
     * from the current position.
     *
     * The callback will be given three arguments: `err`, `bytesRead`, and `buffers`. `bytesRead` is how many bytes were read from the file.
     *
     * If this method is invoked as its `util.promisify()` ed version, it returns
     * a promise for an `Object` with `bytesRead` and `buffers` properties.
     * @since v13.13.0, v12.17.0
     * @param [position='null']
     */
    export function readv(
        fd: number,
        buffers: readonly NodeJS.ArrayBufferView[],
        cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void,
    ): void;
    export function readv(
        fd: number,
        buffers: readonly NodeJS.ArrayBufferView[],
        position: number,
        cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void,
    ): void;
    export interface ReadVResult {
        bytesRead: number;
        buffers: NodeJS.ArrayBufferView[];
    }
    export namespace readv {
        function __promisify__(
            fd: number,
            buffers: readonly NodeJS.ArrayBufferView[],
            position?: number,
        ): Promise<ReadVResult>;
    }
    /**
     * For detailed information, see the documentation of the asynchronous version of
     * this API: {@link readv}.
     * @since v13.13.0, v12.17.0
     * @param [position='null']
     * @return The number of bytes read.
     */
    export function readvSync(fd: number, buffers: readonly NodeJS.ArrayBufferView[], position?: number): number;

    export interface OpenAsBlobOptions {
        /**
         * An optional mime type for the blob.
         *
         * @default 'undefined'
         */
        type?: string | undefined;
    }

    /**
     * Returns a `Blob` whose data is backed by the given file.
     *
     * The file must not be modified after the `Blob` is created. Any modifications
     * will cause reading the `Blob` data to fail with a `DOMException` error.
     * Synchronous stat operations on the file when the `Blob` is created, and before
     * each read in order to detect whether the file data has been modified on disk.
     *
     * ```js
     * import { openAsBlob } from 'node:fs';
     *
     * const blob = await openAsBlob('the.file.txt');
     * const ab = await blob.arrayBuffer();
     * blob.stream();
     * ```
     * @since v19.8.0
     * @experimental
     */
    export function openAsBlob(path: PathLike, options?: OpenAsBlobOptions): Promise<Blob>;

    export interface OpenDirOptions {
        /**
         * @default 'utf8'
         */
        encoding?: BufferEncoding | undefined;
        /**
         * Number of directory entries that are buffered
         * internally when reading from the directory. Higher values lead to better
         * performance but higher memory usage.
         * @default 32
         */
        bufferSize?: number | undefined;
        /**
         * @default false
         */
        recursive?: boolean;
    }
    /**
     * Synchronously open a directory. See [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html).
     *
     * Creates an `fs.Dir`, which contains all further functions for reading from
     * and cleaning up the directory.
     *
     * The `encoding` option sets the encoding for the `path` while opening the
     * directory and subsequent read operations.
     * @since v12.12.0
     */
    export function opendirSync(path: PathLike, options?: OpenDirOptions): Dir;
    /**
     * Asynchronously open a directory. See the POSIX [`opendir(3)`](http://man7.org/linux/man-pages/man3/opendir.3.html) documentation for
     * more details.
     *
     * Creates an `fs.Dir`, which contains all further functions for reading from
     * and cleaning up the directory.
     *
     * The `encoding` option sets the encoding for the `path` while opening the
     * directory and subsequent read operations.
     * @since v12.12.0
     */
    export function opendir(path: PathLike, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
    export function opendir(
        path: PathLike,
        options: OpenDirOptions,
        cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void,
    ): void;
    export namespace opendir {
        function __promisify__(path: PathLike, options?: OpenDirOptions): Promise<Dir>;
    }
    export interface BigIntStats extends StatsBase<bigint> {
        atimeNs: bigint;
        mtimeNs: bigint;
        ctimeNs: bigint;
        birthtimeNs: bigint;
    }
    export interface BigIntOptions {
        bigint: true;
    }
    export interface StatOptions {
        bigint?: boolean | undefined;
    }
    export interface StatSyncOptions extends StatOptions {
        throwIfNoEntry?: boolean | undefined;
    }
    interface CopyOptionsBase {
        /**
         * Dereference symlinks
         * @default false
         */
        dereference?: boolean;
        /**
         * When `force` is `false`, and the destination
         * exists, throw an error.
         * @default false
         */
        errorOnExist?: boolean;
        /**
         * Overwrite existing file or directory. _The copy
         * operation will ignore errors if you set this to false and the destination
         * exists. Use the `errorOnExist` option to change this behavior.
         * @default true
         */
        force?: boolean;
        /**
         * Modifiers for copy operation. See `mode` flag of {@link copyFileSync()}
         */
        mode?: number;
        /**
         * When `true` timestamps from `src` will
         * be preserved.
         * @default false
         */
        preserveTimestamps?: boolean;
        /**
         * Copy directories recursively.
         * @default false
         */
        recursive?: boolean;
        /**
         * When true, path resolution for symlinks will be skipped
         * @default false
         */
        verbatimSymlinks?: boolean;
    }
    export interface CopyOptions extends CopyOptionsBase {
        /**
         * Function to filter copied files/directories. Return
         * `true` to copy the item, `false` to ignore it.
         */
        filter?(source: string, destination: string): boolean | Promise<boolean>;
    }
    export interface CopySyncOptions extends CopyOptionsBase {
        /**
         * Function to filter copied files/directories. Return
         * `true` to copy the item, `false` to ignore it.
         */
        filter?(source: string, destination: string): boolean;
    }
    /**
     * Asynchronously copies the entire directory structure from `src` to `dest`,
     * including subdirectories and files.
     *
     * When copying a directory to another directory, globs are not supported and
     * behavior is similar to `cp dir1/ dir2/`.
     * @since v16.7.0
     * @experimental
     * @param src source path to copy.
     * @param dest destination path to copy to.
     */
    export function cp(
        source: string | URL,
        destination: string | URL,
        callback: (err: NodeJS.ErrnoException | null) => void,
    ): void;
    export function cp(
        source: string | URL,
        destination: string | URL,
        opts: CopyOptions,
        callback: (err: NodeJS.ErrnoException | null) => void,
    ): void;
    /**
     * Synchronously copies the entire directory structure from `src` to `dest`,
     * including subdirectories and files.
     *
     * When copying a directory to another directory, globs are not supported and
     * behavior is similar to `cp dir1/ dir2/`.
     * @since v16.7.0
     * @experimental
     * @param src source path to copy.
     * @param dest destination path to copy to.
     */
    export function cpSync(source: string | URL, destination: string | URL, opts?: CopySyncOptions): void;

    interface GlobOptionsBase {
        /**
         * Current working directory.
         * @default process.cwd()
         */
        cwd?: string | undefined;
        /**
         * `true` if the glob should return paths as `Dirent`s, `false` otherwise.
         * @default false
         * @since v22.2.0
         */
        withFileTypes?: boolean | undefined;
        /**
         * Function to filter out files/directories. Return true to exclude the item, false to include it.
         */
        exclude?: ((fileName: any) => boolean) | undefined;
    }
    export interface GlobOptionsWithFileTypes extends GlobOptionsBase {
        exclude?: ((fileName: Dirent) => boolean) | undefined;
        withFileTypes: true;
    }
    export interface GlobOptionsWithoutFileTypes extends GlobOptionsBase {
        exclude?: ((fileName: string) => boolean) | undefined;
        withFileTypes?: false | undefined;
    }
    export interface GlobOptions extends GlobOptionsBase {
        exclude?: ((fileName: Dirent | string) => boolean) | undefined;
    }

    /**
     * Retrieves the files matching the specified pattern.
     */
    export function glob(
        pattern: string | string[],
        callback: (err: NodeJS.ErrnoException | null, matches: string[]) => void,
    ): void;
    export function glob(
        pattern: string | string[],
        options: GlobOptionsWithFileTypes,
        callback: (
            err: NodeJS.ErrnoException | null,
            matches: Dirent[],
        ) => void,
    ): void;
    export function glob(
        pattern: string | string[],
        options: GlobOptionsWithoutFileTypes,
        callback: (
            err: NodeJS.ErrnoException | null,
            matches: string[],
        ) => void,
    ): void;
    export function glob(
        pattern: string | string[],
        options: GlobOptions,
        callback: (
            err: NodeJS.ErrnoException | null,
            matches: Dirent[] | string[],
        ) => void,
    ): void;
    /**
     * Retrieves the files matching the specified pattern.
     */
    export function globSync(pattern: string | string[]): string[];
    export function globSync(
        pattern: string | string[],
        options: GlobOptionsWithFileTypes,
    ): Dirent[];
    export function globSync(
        pattern: string | string[],
        options: GlobOptionsWithoutFileTypes,
    ): string[];
    export function globSync(
        pattern: string | string[],
        options: GlobOptions,
    ): Dirent[] | string[];
}
declare module "node:fs" {
    export * from "fs";
}
