> ## Documentation Index
> Fetch the complete documentation index at: https://docs.groundtech.co/llms.txt
> Use this file to discover all available pages before exploring further.

# gVault contract interfaces

> Select the verified onchain interface for a gVault or Ground fee wrapper.

Resolve the deployed `contractAddress` and `interface` from
`GET /v2/gvaults/yield-sources`. The snippets below describe the supported
integration surfaces; use the ABI supplied for the exact deployed contract.

## Common reads

```solidity theme={"theme":{"light":"github-light","dark":"github-dark"}}
interface IGVaultCommon {
  function asset() external view returns (address);
  function decimals() external view returns (uint8);
  function balanceOf(address owner) external view returns (uint256);
}
```

## USTB-style gVault

```solidity theme={"theme":{"light":"github-light","dark":"github-dark"}}
interface IGroundUstbVault is IGVaultCommon {
  function convertToShares(uint256 assets) external view returns (uint256 shares);
  function convertToAssets(uint256 shares) external view returns (uint256 assets);
  function maxDeposit(address receiver) external view returns (uint256 assets);
  function maxWithdraw(address owner) external view returns (uint256 assets);
  function maxRedeem(address owner) external view returns (uint256 shares);
  function deposit(uint256 assets, address receiver) external returns (uint256 shares);
  function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);
  function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);
  function requestRedeem(address owner, uint256 shares) external returns (uint256 requestId);
  function claimRedeem(address owner, uint256 requestId) external returns (uint256 assetsOut);
}
```

## Centrifuge-style gVault

```solidity theme={"theme":{"light":"github-light","dark":"github-dark"}}
interface IGroundCentrifugeVault is IGVaultCommon {
  function requestDeposit(address owner, uint256 assets, uint256 minSharesOut)
    external returns (uint256 requestId);
  function claimDeposit(address owner, uint256 requestId)
    external returns (uint256 sharesOut);
  function requestRedeem(address owner, uint256 shares, uint256 minBasinAssetsOut)
    external returns (uint256 requestId);
  function claimRedeem(address owner, uint256 requestId)
    external returns (uint256 assetsOut);
  function requestCancelDeposit(address owner, uint256 requestId) external;
  function claimCancelDeposit(address owner, uint256 requestId)
    external returns (uint256 assetsOut, uint256 sharesOut);
  function requestCancelRedeem(address owner, uint256 requestId) external;
  function claimCancelRedeem(address owner, uint256 requestId)
    external returns (uint256 sharesReleased, uint256 assetsOut);
}
```

Centrifuge deposit methods are router-restricted. Presence in an ABI does not
mean an arbitrary address is authorized to call it.

## USTB fee wrapper

USTB wrappers expose the synchronous methods above against wrapper shares, plus
the queued `requestRedeem(address,uint256)` and `claimRedeem(address,uint256)`
flow. The wrapper's `asset()` returns the user-facing funding asset.

## Centrifuge fee wrapper

Centrifuge wrappers expose the request, claim, and cancellation methods above.
Their deposit lifecycle is router-restricted. Redemption can be called by the
configured router or the share owner, subject to the deployed contract's access
and freeze checks.

## Share behavior

Fee-wrapper shares are non-transferable: `transfer`, `transferFrom`, and
`approve` revert. Integrate balances and redemption from the original owner
address instead of building secondary-transfer behavior.

<Warning>
  Never select a method from the product name alone. Match the current
  environment's catalogue entry to the exact deployed ABI, contract address,
  and authorization model before constructing a transaction.
</Warning>
