from __future__ import annotations

from typing import Any, ClassVar, overload

class ConstructionMethod:
    __members__: ClassVar[dict[ConstructionMethod, int]] = ...  # read-only
    recursive: ClassVar[ConstructionMethod] = ...
    sequential: ClassVar[ConstructionMethod] = ...
    @overload
    def __init__(self, value: int) -> None: ...
    @overload
    def __init__(self, arg0: str) -> None: ...
    def __eq__(self, other: object) -> bool: ...
    def __getstate__(self) -> int: ...
    def __hash__(self) -> int: ...
    def __index__(self) -> int: ...
    def __int__(self) -> int: ...
    def __ne__(self, other: object) -> bool: ...
    def __setstate__(self, state: int) -> None: ...
    @property
    def name(self) -> str: ...
    @property
    def value(self) -> int: ...

def construct(
    circ: object, method: ConstructionMethod = ..., store_dd: bool = ..., store_matrix: bool = ...
) -> dict[str, Any]: ...
def construct_grover(
    nqubits: int = ...,
    seed: int = ...,
    method: ConstructionMethod = ...,
    store_dd: bool = ...,
    store_matrix: bool = ...,
) -> dict[str, Any]: ...
def construct_qft(
    nqubits: int = ..., method: ConstructionMethod = ..., store_dd: bool = ..., store_matrix: bool = ...
) -> dict[str, Any]: ...
def matrix_from_dd(serialized_dd: str) -> dict[str, Any]: ...
