fireblocks_sdk/client/
vault.rs

1use {
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}