//! > Hover

//! > test_runner_name
test_hover

//! > cairo_project.toml
[crate_roots]
hello = "src"

[config.global]
edition = "2023_11"

//! > src/lib.cairo
use Balance::contr<caret>act_state_for_testing;

/// The balance contract interface.
#[starknet::interface]
trait IBalance<T> {
    /// Returns the current balance.
    fn get(self: @T) -> u128;
    /// Increases the balance by the given amount.
    fn increase(ref self: T, a: u128);
}

/// The balance contract.
#[starknet::contract]
mod Balance {
    use core::traits::Into;

    #[storage]
    struct Storage {
        /// Storage value.
        value: u128,
    }

    #[constructor]
    fn constructor(ref se<caret>lf: Cont<caret>ractState, value_: u128) {
        self.va<caret>lue.write(<caret>value_);
    }

    #[abi(embed_v0)]
    impl Balance of super::IBa<caret>lance<Con<caret>tractState> {
        fn get(self: @ContractState) -> u128 {
            self.value.r<caret>ead()
        }
        fn increase(ref self: ContractState, a: u128)  {
            self.value.wr<caret>ite( self.value.read() + <caret>a );
        }
    }
}

//! > hover 0:18
// = source context
use Balance::contr<caret>act_state_for_testing;
// = highlight
use Balance::<sel>contract_state_for_testing</sel>;
// = popover
```cairo
pub fn contract_state_for_testing() -> ContractState
```

//! > hover 23:25
// = source context
    fn constructor(ref se<caret>lf: ContractState, value_: u128) {
// = highlight
No highlight information.
// = popover

//! > hover 23:33
// = source context
    fn constructor(ref self: Cont<caret>ractState, value_: u128) {
// = highlight
    fn constructor(ref self: <sel>ContractState</sel>, value_: u128) {
// = popover
```cairo


    pub struct ContractState {
        pub value: __member_module_value::ContractMemberState,
    }

```

//! > hover 24:15
// = source context
        self.va<caret>lue.write(value_);
// = highlight
No highlight information.
// = popover
```cairo
hello::Balance::__member_module_value::ContractMemberState
```

//! > hover 24:25
// = source context
        self.value.write(<caret>value_);
// = highlight
        self.value.write(<sel>value_</sel>);
// = popover
```cairo
value_: core::integer::u128
```

//! > hover 28:30
// = source context
    impl Balance of super::IBa<caret>lance<ContractState> {
// = highlight
    impl Balance of super::<sel>IBalance</sel><ContractState> {
// = popover
```cairo
 trait IBalance<T>
```
---
The balance contract interface.

//! > hover 28:39
// = source context
    impl Balance of super::IBalance<Con<caret>tractState> {
// = highlight
    impl Balance of super::IBalance<<sel>ContractState</sel>> {
// = popover
```cairo


    pub struct ContractState {
        pub value: __member_module_value::ContractMemberState,
    }

```

//! > hover 30:24
// = source context
            self.value.r<caret>ead()
// = highlight
            self.value.<sel>read</sel>()
// = popover
```cairo
fn read(self: @TMemberState) -> Self::Value;
```

//! > hover 33:25
// = source context
            self.value.wr<caret>ite( self.value.read() + a );
// = highlight
            self.value.<sel>write</sel>( self.value.read() + a );
// = popover
```cairo
fn write(ref self: TMemberState, value: Self::Value);
```

//! > hover 33:50
// = source context
            self.value.write( self.value.read() + <caret>a );
// = highlight
            self.value.write( self.value.read() + <sel>a</sel> );
// = popover
```cairo
a: core::integer::u128
```
