def _focusing(X, phi, Na, Nr, ftshift=False, isfft=True):
    ...

class AutoFocusBarePhi(th.nn.Module):
    ...

    def __init__(self, Na, Nr, Nb=None, pa=None, pr=None, Ma=None, Mr=None, xa=None, xr=None, ftshift=False, trainable=True):
        ...

    def forward(self, X, isfft=True):
        ...

    def get_param(self):
        ...

    def param_init(self, pa=None, pr=None):
        ...

class AutoFocusPolyPhi(th.nn.Module):
    ...

    def __init__(self, Na, Nr, Nb=None, ca=None, cr=None, Ma=2, Mr=2, xa=None, xr=None, ftshift=False, trainable=True):
        ...

    def forward(self, X, isfft=True):
        ...

    def get_param(self):
        ...

    def param_init(self, ca=None, cr=None):
        ...

class AutoFocusDctPhi(th.nn.Module):
    ...

    def __init__(self, Na, Nr, Nb=None, ca=None, cr=None, Pa=4, Pr=4, ftshift=False, trainable=True):
        ...

    def forward(self, X, isfft=True):
        ...

    def get_param(self):
        ...

    def param_init(self, ca=None, cr=None):
        ...

class AutoFocusSinPhi(th.nn.Module):
    ...

    def __init__(self, Na, Nr, Nb=None, aa=None, fa=None, ar=None, fr=None, ftshift=False, trainable=True):
        ...

    def forward(self, X, isfft=True):
        ...

    def get_param(self):
        ...

    def param_init(self, aa=None, fa=None, ar=None, fr=None):

