# Vault Management

With Vault Management SDK, developers can use a library to manipulate and control Jasper vaults. They can perform actions such as initializing a vault, transferring an asset, or checking the vault's balance.

### Function List

* To initialize a new Jasper vault:

<table data-full-width="false"><thead><tr><th>Method</th><th width="231.66666666666669">Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">initNewVault(type: number)
</code></pre></td><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript"><strong>number: number;
</strong></code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript">'Error creating vault'
</code></pre></td></tr></tbody></table>

* To transfer the asset between the wallet and the vault:
  * Input two addresses (either wallet or vault), asset choices and an amount of asset to transfer.
  * **If from == user's wallet address:**\
    Issue the asset from user's wallet to the vault
  * **If to == user's wallet address:**\
    Redeem the asset from the vault to the user's wallet

<table><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">transfer(from: Address, to: Address, asset: Address[], amount: BigNumber[])
</code></pre></td><td><pre class="language-javascript"><code class="lang-javascript"><strong>Address: string;
</strong>Address[]: string[];
BigNumber[]: bignumber[];
</code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript">'Error transfering vault'
</code></pre></td></tr></tbody></table>

* To get vault address under the specific wallet
  * Input a wallet address to get a vault address under the wallet as a return

<table><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">getWalletToVault(wallet: Address)
</code></pre></td><td><pre class="language-javascript"><code class="lang-javascript"><strong>Address: string;
</strong></code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript"><strong>'Error initializing extensions'
</strong></code></pre></td></tr></tbody></table>

* To get salt number under the specific vault

  * Input a vault address to get a salt number (ERC-4337 type)

  <table><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">getVaultToSalt(vault: Address)
  </code></pre></td><td><pre class="language-javascript"><code class="lang-javascript"><strong>Address: string;
  </strong></code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript"><strong>'Error getting vault to salt'
  </strong></code></pre></td></tr></tbody></table>
* To get address under the specific wallet and salt number

  * Input the wallet address and salt to get the address

  <table><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">getAddress(wallet: Address, salt: number)
  </code></pre></td><td><pre class="language-javascript"><code class="lang-javascript"><strong>Address: string;
  </strong><strong>number: number;
  </strong></code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript"><strong>'Error getting address'
  </strong></code></pre></td></tr></tbody></table>
* To create a new account for vault

  * Input a wallet address and salt to create a new account

  <table><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">createAccount(wallet: Address, salt: number)
  </code></pre></td><td><pre class="language-javascript"><code class="lang-javascript"><strong>Address: string;
  </strong><strong>number: number;
  </strong></code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript"><strong>'Error creating account'
  </strong></code></pre></td></tr></tbody></table>
* To manage option writer setting

  * Input a vault address and details to edit option writer settings

  <table><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">setOptionWriterSettings(vault_addr: Address, settings: IOptionFacet.ManagedOptionsSettingsStruct)
  </code></pre></td><td><pre class="language-javascript"><code class="lang-javascript"><strong>Address: string;
  </strong><strong>IOptionFacet.ManagedOptionsSettingsStruct:
  </strong>(
  bool isOpen;
  IOptionFacet.OrderType orderType;
  address writer;
  address lockAsset;
  address underlyingAsset;
  IOptionFacet.UnderlyingAssetType lockAssetType;
  uint256 underlyingNftID;
  IOptionFacet.LiquidateMode liquidateMode;
  address strikeAsset;
  uint256 maximum;
  PremiumOracleType  premiumOracleType;
  address[] premiumAssets;
  uint64[]   productTypes;    // 1h=3600 2h=7200
  uint256[]  premiumFloorUSDs;// 10u 15u
  uint256[]  premiumRates; // 1.1 ether 0.9 ether
  ) 
  </code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript"><strong>'Error setOptionWriterSettings'
  </strong></code></pre></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.jaspervault.io/development/jaspervault-sdk/vault-management.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
