# Integration with Account Cap

If an external contract wants to interact with the NAVI protocol, an account cap is required for the interaction. The account cap must be stored within the contract as a wrapped object. When calling functions—such as the supply token function—the account cap object must be passed as a parameter to enable the transaction.

### Code Snippet: Account Cap Integration

```rust
public struct Vault has key, store {
    id: UID,
    account_cap: AccountCap,
    sui_index: u8,
    usdc_index: u8
}

lending_core::incentive_v2::deposit_with_account_cap(
    clock, 
    storage, 
    pool_a, 
    vault.sui_index, 
    deposit_coin, 
    inc_v1, 
    inc_v2, 
    &vault.account_cap
)
```

In this example, the `Vault` struct includes an `account_cap` field that is passed into the `deposit_with_account_cap` function to enable token deposits.
