fireblocks_sdk/client/
vault.rs1use {
2 super::Client,
3 crate::{
4 FireblocksError,
5 apis::{
6 Api,
7 vaults_api::{
8 ActivateAssetForVaultAccountParams,
9 CreateVaultAccountParams,
10 GetVaultAccountParams,
11 },
12 },
13 models::{CreateVaultAccountRequest, VaultAccount},
14 },
15};
16
17impl Client {
18 pub async fn vault(&self, id: &str) -> crate::Result<VaultAccount> {
19 let vault_api = self.api_client.vaults_api();
20 vault_api
21 .get_vault_account(
22 GetVaultAccountParams::builder()
23 .vault_account_id(String::from(id))
24 .build(),
25 )
26 .await
27 .map_err(crate::FireblocksError::FetchVaultAccountError)
28 }
29
30 pub async fn create_vault(
31 &self,
32 params: CreateVaultAccountRequest,
33 ) -> crate::Result<VaultAccount> {
34 let vault_api = self.api_client.vaults_api();
35 let params = CreateVaultAccountParams::builder()
36 .create_vault_account_request(params)
37 .build();
38 vault_api
39 .create_vault_account(params)
40 .await
41 .map_err(|e| FireblocksError::FetchVaultCreateError(e.to_string()))
42 }
43
44 pub async fn create_asset(
45 &self,
46 vault_id: &str,
47 asset_id: impl Into<String>,
48 ) -> crate::Result<String> {
49 let api = self.api_client.vaults_api();
50 let params = ActivateAssetForVaultAccountParams::builder()
51 .asset_id(asset_id.into())
52 .vault_account_id(String::from(vault_id))
53 .build();
54 api.activate_asset_for_vault_account(params)
55 .await
56 .map_err(|e| FireblocksError::FetchVaultAssetActivateCreateError(e.to_string()))
57 .map(|r| r.address)
58 }
59}