"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""

from __future__ import annotations
import dataclasses
from ..shared import matrixvalue as shared_matrixvalue
from dataclasses_json import Undefined, dataclass_json
from orb import utils
from typing import Optional, Union



@dataclasses.dataclass
class MatrixConfigScalingFactor:
    pass


@dataclass_json(undefined=Undefined.EXCLUDE)

@dataclasses.dataclass
class MatrixConfig:
    default_unit_amount: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('default_unit_amount') }})
    r"""Default per unit rate for any usage not bucketed into a specified matrix_value"""
    dimensions: list[str] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('dimensions') }})
    r"""One or two event property values to evaluate matrix groups by"""
    matrix_values: list[shared_matrixvalue.MatrixValue] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('matrix_values') }})
    r"""Matrix values for specified matrix grouping keys"""
    scaling_factor: Optional[Union[float, str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('scaling_factor') }})
    r"""Default optional multiplier to scale rated quantities that fall into the default bucket by"""
    

