Bako Safe SDK
bako-ecosystem
Vault

Creating Vault using Payload

import { IPayloadVault, Vault, BakoSafe, Auth } from 'bakosafe'
import { Address } from 'fuels'
 
const auth = await Auth.create(params_auth)
 
// sign auth code using your PK
const sig = await Auth.signerByPk(YOUR_PRIVATE_KEY, auth.code)
await auth.sign(sig)
 
// find the configurables needed to create a vault
const { abi } = await Vault.BakoSafeGetCurrentVersion()
console.log(JSON.parse(abi).configurables)
 
const params_vault: IPayloadVault = {
  name: 'My First Vault',
  description: 'This is my first example of a Vault',
  // configurable properties are defined according to the ABI configurables of the predicate contract version
  configurable: {
    SIGNATURES_COUNT: 1,
    SIGNERS: [Address.fromRandom().toString(), Address.fromRandom().toString()],
    network: BakoSafe.getProviders('CHAIN_URL'),
  },
  BakoSafeAuth: auth.BakoSafeAuth,
}
 
const vault = await Vault.create(params_vault)

It is also possible to create a vault using payload with a specific predicate contract version.

import { IPayloadVault, Vault, BakoSafe, Auth } from 'bakosafe'
import { Address } from 'fuels'
 
const auth = await Auth.create(params_auth)
 
// sign auth code using your PK
const sig = await Auth.signerByPk(YOUR_PRIVATE_KEY, auth.code)
await auth.sign(sig)
 
const safe_code = 'real_code'
const vaultVersion = await Vault.BakoSafeGetVersionByCode(safe_code)
 
const params_vault: IPayloadVault = {
  name: 'My First Vault',
  description: 'This is my first example of a Vault',
  configurable: {
    SIGNATURES_COUNT: 1,
    SIGNERS: [Address.fromRandom().toString(), Address.fromRandom().toString()],
    network: BakoSafe.getProviders('CHAIN_URL'),
  },
  BakoSafeAuth: auth.BakoSafeAuth,
  version: vaultVersion.code,
}
 
const vault = await Vault.create(params_vault)

Creating Vault using ID or Address

import { Vault, BakoSafe, Auth, TypeUser, IAuthCreateRequest } from 'bakosafe'
import { Provider } from 'fuels'
 
const provider = await Provider.create(BakoSafe.getProviders('CHAIN_URL'))
 
const YOUR_PRIVATE_KEY = 'your-private-key'
const YOUR_ADDRESS = 'your-address'
 
const params_auth: IAuthCreateRequest = {
  address: YOUR_ADDRESS,
  provider: BakoSafe.getProviders('CHAIN_URL'),
  type: TypeUser.FUEL,
}
 
const auth = await Auth.create(params_auth)
const sig = await Auth.signerByPk(YOUR_PRIVATE_KEY, auth.code)
await auth.sign(sig)
 
// using Vault ID
const vaultById = await Vault.create({
  ...auth.BakoSafeAuth,
  id: 'your-vault-id',
})
 
// using Vault Address
const vaultByAddress = await Vault.create({
  ...auth.BakoSafeAuth,
  predicateAddress: 'your-vault-address',
})