# Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. ALL RIGHTS RESERVED.
#
# SPDX-License-Identifier: Apache-2.0

import _cython_3_2_4
import enum
from typing import Any, Callable, ClassVar

__pyx_capi__: dict
__test__: dict
check_status: _cython_3_2_4.cython_function_or_method
dense_descriptor_init: _cython_3_2_4.cython_function_or_method
destroy: _cython_3_2_4.cython_function_or_method
get_error_name: _cython_3_2_4.cython_function_or_method
get_error_string: _cython_3_2_4.cython_function_or_method
get_mat_desc_attribute_dtype: _cython_3_2_4.cython_function_or_method
get_matmul_alg_attribute_dtype: _cython_3_2_4.cython_function_or_method
get_matmul_desc_attribute_dtype: _cython_3_2_4.cython_function_or_method
get_property: _cython_3_2_4.cython_function_or_method
get_version: _cython_3_2_4.cython_function_or_method
init: _cython_3_2_4.cython_function_or_method
mat_desc_get_attribute: _cython_3_2_4.cython_function_or_method
mat_desc_set_attribute: _cython_3_2_4.cython_function_or_method
mat_descriptor_destroy: _cython_3_2_4.cython_function_or_method
matmul: _cython_3_2_4.cython_function_or_method
matmul_alg_get_attribute: _cython_3_2_4.cython_function_or_method
matmul_alg_selection_destroy: _cython_3_2_4.cython_function_or_method
matmul_alg_selection_init: _cython_3_2_4.cython_function_or_method
matmul_alg_set_attribute: _cython_3_2_4.cython_function_or_method
matmul_desc_get_attribute: _cython_3_2_4.cython_function_or_method
matmul_desc_set_attribute: _cython_3_2_4.cython_function_or_method
matmul_descriptor_destroy: _cython_3_2_4.cython_function_or_method
matmul_descriptor_init: _cython_3_2_4.cython_function_or_method
matmul_get_workspace: _cython_3_2_4.cython_function_or_method
matmul_plan_destroy: _cython_3_2_4.cython_function_or_method
matmul_plan_init: _cython_3_2_4.cython_function_or_method
matmul_search: _cython_3_2_4.cython_function_or_method
sp_mma_compress: _cython_3_2_4.cython_function_or_method
sp_mma_compress2: _cython_3_2_4.cython_function_or_method
sp_mma_compressed_size: _cython_3_2_4.cython_function_or_method
sp_mma_compressed_size2: _cython_3_2_4.cython_function_or_method
sp_mma_prune: _cython_3_2_4.cython_function_or_method
sp_mma_prune2: _cython_3_2_4.cython_function_or_method
sp_mma_prune_check: _cython_3_2_4.cython_function_or_method
sp_mma_prune_check2: _cython_3_2_4.cython_function_or_method
structured_descriptor_init: _cython_3_2_4.cython_function_or_method

class ComputeType(enum.IntEnum):
    """
    See `cusparseComputeType`.
    """
    __new__: ClassVar[Callable] = ...
    COMPUTE_16F: ClassVar[ComputeType] = ...
    COMPUTE_32F: ClassVar[ComputeType] = ...
    COMPUTE_32I: ClassVar[ComputeType] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class MatDescAttribute(enum.IntEnum):
    """
    See `cusparseLtMatDescAttribute_t`.
    """
    __new__: ClassVar[Callable] = ...
    BATCH_STRIDE: ClassVar[MatDescAttribute] = ...
    NUM_BATCHES: ClassVar[MatDescAttribute] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class MatmulAlg(enum.IntEnum):
    """
    See `cusparseLtMatmulAlg_t`.
    """
    __new__: ClassVar[Callable] = ...
    DEFAULT: ClassVar[MatmulAlg] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class MatmulAlgAttribute(enum.IntEnum):
    """
    See `cusparseLtMatmulAlgAttribute_t`.
    """
    __new__: ClassVar[Callable] = ...
    CONFIG_ID: ClassVar[MatmulAlgAttribute] = ...
    CONFIG_MAX_ID: ClassVar[MatmulAlgAttribute] = ...
    SEARCH_ITERATIONS: ClassVar[MatmulAlgAttribute] = ...
    SPLIT_K: ClassVar[MatmulAlgAttribute] = ...
    SPLIT_K_BUFFERS: ClassVar[MatmulAlgAttribute] = ...
    SPLIT_K_MODE: ClassVar[MatmulAlgAttribute] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class MatmulDescAttribute(enum.IntEnum):
    """
    See `cusparseLtMatmulDescAttribute_t`.
    """
    __new__: ClassVar[Callable] = ...
    ACTIVATION_GELU: ClassVar[MatmulDescAttribute] = ...
    ACTIVATION_GELU_SCALING: ClassVar[MatmulDescAttribute] = ...
    ACTIVATION_RELU: ClassVar[MatmulDescAttribute] = ...
    ACTIVATION_RELU_THRESHOLD: ClassVar[MatmulDescAttribute] = ...
    ACTIVATION_RELU_UPPERBOUND: ClassVar[MatmulDescAttribute] = ...
    ALPHA_VECTOR_SCALING: ClassVar[MatmulDescAttribute] = ...
    A_SCALE_MODE: ClassVar[MatmulDescAttribute] = ...
    A_SCALE_POINTER: ClassVar[MatmulDescAttribute] = ...
    BETA_VECTOR_SCALING: ClassVar[MatmulDescAttribute] = ...
    BIAS_POINTER: ClassVar[MatmulDescAttribute] = ...
    BIAS_STRIDE: ClassVar[MatmulDescAttribute] = ...
    B_SCALE_MODE: ClassVar[MatmulDescAttribute] = ...
    B_SCALE_POINTER: ClassVar[MatmulDescAttribute] = ...
    C_SCALE_MODE: ClassVar[MatmulDescAttribute] = ...
    C_SCALE_POINTER: ClassVar[MatmulDescAttribute] = ...
    D_OUT_SCALE_MODE: ClassVar[MatmulDescAttribute] = ...
    D_OUT_SCALE_POINTER: ClassVar[MatmulDescAttribute] = ...
    D_SCALE_MODE: ClassVar[MatmulDescAttribute] = ...
    D_SCALE_POINTER: ClassVar[MatmulDescAttribute] = ...
    SPARSE_MAT_POINTER: ClassVar[MatmulDescAttribute] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class MatmulMatrixScale(enum.IntEnum):
    """
    See `cusparseLtMatmulMatrixScale_t`.
    """
    __new__: ClassVar[Callable] = ...
    NONE: ClassVar[MatmulMatrixScale] = ...
    SCALAR_32F: ClassVar[MatmulMatrixScale] = ...
    VEC32_UE4M3: ClassVar[MatmulMatrixScale] = ...
    VEC64_UE8M0: ClassVar[MatmulMatrixScale] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class PruneAlg(enum.IntEnum):
    """
    See `cusparseLtPruneAlg_t`.
    """
    __new__: ClassVar[Callable] = ...
    SPMMA_STRIP: ClassVar[PruneAlg] = ...
    SPMMA_TILE: ClassVar[PruneAlg] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class Sparsity(enum.IntEnum):
    """
    See `cusparseLtSparsity_t`.
    """
    __new__: ClassVar[Callable] = ...
    SPARSITY_50_PERCENT: ClassVar[Sparsity] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class SplitKMode(enum.IntEnum):
    """
    See `cusparseLtSplitKMode_t`.
    """
    __new__: ClassVar[Callable] = ...
    DATAPARALLEL: ClassVar[SplitKMode] = ...
    HEURISTIC: ClassVar[SplitKMode] = ...
    INVALID_MODE: ClassVar[SplitKMode] = ...
    ONE_KERNEL: ClassVar[SplitKMode] = ...
    SPLITK: ClassVar[SplitKMode] = ...
    STREAMK: ClassVar[SplitKMode] = ...
    TWO_KERNELS: ClassVar[SplitKMode] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[int]] = ...
    _value2member_map_: ClassVar[dict] = ...

class cuSPARSELtError(Exception):
    """cuSPARSELtError(status)"""
    def __init__(self, status) -> Any:
        """Initialize self.  See help(type(self)) for accurate signature."""
    def __reduce__(self) -> Any:
        """cuSPARSELtError.__reduce__(self)"""
