"""
This type stub file was generated by pyright.
"""

from .. import *
from ..asserts import *
from amaranth_types import HasElaborate
from . import stream, wiring

"""First-in first-out queues."""
__all__ = ["FIFOInterface", "SyncFIFO", "SyncFIFOBuffered", "AsyncFIFO", "AsyncFIFOBuffered"]
class FIFOInterface:
    width: int
    depth: int
    w_data: Signal
    w_rdy: Signal
    w_en: Signal
    w_level: Signal
    r_data: Signal
    r_rdy: Signal
    r_en: Signal
    r_level: Signal
    def __init__(self, *, width: int, depth: int) -> None:
        ...
    
    @property
    def w_stream(self) -> wiring.FlippedSignature[stream.Signature]:
        ...

    @property
    def r_stream(self) -> stream.Signature:
        ...


class SyncFIFO(Elaboratable, FIFOInterface):
    def __init__(self, *, width: int, depth: int) -> None:
        ...
    
    def elaborate(self, platform) -> HasElaborate:
        ...
    


class SyncFIFOBuffered(Elaboratable, FIFOInterface):
    def __init__(self, *, width: int, depth: int) -> None:
        ...
    
    def elaborate(self, platform) -> HasElaborate:
        ...
    


class AsyncFIFO(Elaboratable, FIFOInterface):
    def __init__(self, *, width: int, depth: int, r_domain: str = ..., w_domain: str = ..., exact_depth: bool = ...) -> None:
        ...
    
    def elaborate(self, platform) -> HasElaborate:
        ...
    


class AsyncFIFOBuffered(Elaboratable, FIFOInterface):
    def __init__(self, *, width: int, depth: int, r_domain: str = ..., w_domain: str = ..., exact_depth: bool = ...) -> None:
        ...
    
    def elaborate(self, platform) -> HasElaborate:
        ...
    


