def METHOD_NAME(self) -> BalancesType:
    balances: BalancesType = defaultdict(lambda: defaultdict(Balance))
    gauges_to_token: dict[ChecksumEvmAddress, EvmToken] = {}
    # query addresses and gauges where they interacted
    addresses_with_deposits = self.addresses_with_deposits(
        product=EvmProduct.GAUGE,
        deposit_events={(HistoryEventType.DEPOSIT, HistoryEventSubType.NONE)},
    )
    # get details to query balances on chain
    chunk_size, call_order = get_chunk_size_call_order(self.evm_inquirer)
    for address, events in addresses_with_deposits.items():
        balances[address] = defaultdict(Balance)
        # Create a mapping of gauge to its token
        for event in events:
            if event.address is None:
                continue
            if event.extra_data is None or (gauge_address := event.extra_data.get('gauge_address')) is None:  # noqa: E501
                continue
            gauges_to_token[gauge_address] = event.asset.resolve_to_evm_token()
        balances[address] = query_gauges_balances(
            user_address=address,
            gauges_to_token=gauges_to_token,
            call_order=call_order,
            chunk_size=chunk_size,
            balances_contract=self._get_staking_contract_balances,
        )
    # query CVX locked but not staked
    cvx_lock_contract = self.evm_inquirer.contracts.contract(string_to_evm_address('0xCF50b810E57Ac33B91dCF525C6ddd9881B139332'))  # noqa: E501
    self._query_staked_cvx(balances, cvx_lock_contract)
    # query CVX staked
    cvx_lock_contract = self.evm_inquirer.contracts.contract(string_to_evm_address('0x72a19342e8F1838460eBFCCEf09F6585e32db86E'))  # noqa: E501
    self._query_staked_cvx(balances, cvx_lock_contract)
    return balances