In solidity, see below code ..... How is that the interface name is being used as variable type ?  

See the comments in below code

```
pragma solidity 0.8.11;

import "../interfaces/ISpool.sol";
// ... other imports

abstract contract VaultBase is IVaultBase, VaultImmutable, SpoolOwnable, SpoolPausable, BaseConstants {
    using Bitwise for uint256;
    using SafeERC20 for IERC20;

    /* ========== STATE VARIABLES ========== */

    /// @notice The central Spool contract
    ISpool internal immutable spool;   // ISpool is interface name and it is
                                       // being used as variable type. What this means ?

}

```

ISpool interface:

```
interface ISpool is ISpoolExternal, ISpoolReallocation, ISpoolDoHardWork, ISpoolStrategy, ISpoolBase {}

```

How is that the interface name is being used as variable type ?