Bako Safe SDK
Reference
Enums

Enums

Enumeration types used throughout the Bako Safe SDK.

TypeUser

User authentication type for signing operations.

enum TypeUser {
  /** Native Fuel wallet */
  FUEL = 'FUEL',
  /** WebAuthn/Passkey authentication */
  WEB_AUTHN = 'WEB_AUTHN',
  /** EVM wallet (MetaMask, etc.) */
  EVM = 'EVM',
  /** Social login */
  SOCIAL = 'SOCIAL'
}

Usage

import { TypeUser } from 'bakosafe';
 
// Specify user type for authentication
const provider = await BakoProvider.setup({
  address: walletAddress,
  type: TypeUser.FUEL
});

TransactionStatus

Status of a vault transaction.

enum TransactionStatus {
  /** Waiting for required signatures */
  AWAIT_REQUIREMENTS = 'await_requirements',
 
  /** All signatures collected, waiting to be sent */
  PENDING_SENDER = 'pending_sender',
 
  /** Being processed on-chain */
  PROCESS_ON_CHAIN = 'process_on_chain',
 
  /** Successfully executed */
  SUCCESS = 'success',
 
  /** Declined by signers */
  DECLINED = 'declined',
 
  /** Execution failed */
  FAILED = 'failed',
 
  /** Cancelled before execution */
  CANCELED = 'canceled'
}

Usage

import { TransactionStatus } from 'bakosafe';
 
const details = await provider.service.getTransaction(hashTxId);
 
switch (details.status) {
  case TransactionStatus.AWAIT_REQUIREMENTS:
    console.log('Waiting for signatures');
    break;
  case TransactionStatus.PENDING_SENDER:
    console.log('Ready to send');
    break;
  case TransactionStatus.SUCCESS:
    console.log('Transaction succeeded');
    break;
  case TransactionStatus.FAILED:
    console.log('Transaction failed');
    break;
}

SignatureType

Type of signature encoding.

enum SignatureType {
  /** WebAuthn/Passkey signatures */
  WebAuthn = 0,
 
  /** Native Fuel wallet signatures */
  Fuel = 1,
 
  /** EVM wallet signatures */
  Evm = 2,
 
  /** Raw signatures without BAKO prefix */
  RawNoPrefix = 9
}

Hex Values

const SIGNATURE_TYPE_HEX = {
  WebAuthn: '00000000',
  Fuel: '00000001',
  Evm: '00000002',
  RawNoPrefix: '00000009'
};

Usage

import { SignatureType } from 'bakosafe';
 
const signatureInput = {
  type: SignatureType.Fuel,
  signature: rawSignature
};

WalletOrigin

Supported wallet origin types for predicates.

type WalletOrigin = 'fuel' | 'webauthn' | 'evm' | 'svm';

Usage

import { getCompatiblePredicateVersions } from 'bakosafe';
 
// Get versions supporting EVM wallets
const evmVersions = getCompatiblePredicateVersions('evm');
 
// Get versions supporting Fuel wallets
const fuelVersions = getCompatiblePredicateVersions('fuel');

SortOption

Sorting direction for list queries.

enum SortOption {
  /** Ascending order */
  ASC = 'ASC',
 
  /** Descending order */
  DESC = 'DESC'
}

Usage

import { SortOption } from 'bakosafe';
 
const transactions = await provider.service.listTransactions({
  status: [TransactionStatus.SUCCESS],
  sort: SortOption.DESC,
  perPage: 10
});

TransferInstanceError

Error types for transfer operations.

enum TransferInstanceError {
  /** Missing authentication credentials */
  REQUIRED_AUTH = 'Required credentials',
 
  /** Invalid parameters provided */
  INVALID_PARAMETER = 'Invalid instance parameters'
}

Usage

import { TransferInstanceError } from 'bakosafe';
 
try {
  const { tx } = await vault.transaction(params);
} catch (error) {
  if (error.message === TransferInstanceError.REQUIRED_AUTH) {
    console.error('Authentication required');
  }
}

Bech32Prefix

Address encoding prefixes.

type Bech32Prefix = 'fuel' | 'pkau' | 'social';
PrefixDescription
fuelStandard Fuel addresses
pkauPasskey/WebAuthn addresses
socialSocial login addresses

Usage

import { AddressUtils } from 'bakosafe';
 
const bech32 = AddressUtils.toBech32(hexAddress, 'fuel');
// fuel1qz...

Next Steps