Bako Safe SDK
Provider
Methods

Provider Methods

Complete reference of BakoProvider methods.

Static Methods

create()

Create a provider with API token authentication.

static async create(
  url: string,
  options: BakoProviderOptions | BakoProviderAPITokenOptions
): Promise<BakoProvider>

Example:

const provider = await BakoProvider.create(
  'https://mainnet.fuel.network/v1/graphql',
  { apiToken: 'your-token' }
);

setup()

Initialize interactive authentication flow.

static async setup(
  params: BakoProviderSetup
): Promise<BakoProviderAuth>

Example:

const auth = await BakoProvider.setup({
  address: walletAddress,
  provider: networkUrl,
  encoder: TypeUser.FUEL
});
// Returns: { code, token, encoder }

authenticate()

Complete authentication with signed challenge.

static async authenticate(
  options: BakoProviderAuthOptions
): Promise<BakoProvider>

Example:

const provider = await BakoProvider.authenticate({
  challenge: auth.code,
  signature: signedChallenge,
  encoder: TypeUser.FUEL,
  address: walletAddress,
  serverUrl: 'https://api.bako.global'
});

Instance Methods

getWorkspaces()

Retrieve user's workspaces.

async getWorkspaces(): Promise<Workspace[]>

Example:

const workspaces = await provider.getWorkspaces();
workspaces.forEach(ws => {
  console.log(`${ws.name} (${ws.id})`);
});

getToken()

Get user's token balance.

async getToken(): Promise<number>

createPredicate()

Create a new predicate (vault).

async createPredicate(
  payload: CreatePredicatePayload
): Promise<PredicateResponse>

Example:

const predicate = await provider.createPredicate({
  name: 'My Vault',
  configurable: {
    SIGNATURES_COUNT: 2,
    SIGNERS: [address1, address2, address3]
  }
});

findByAddress()

Find a predicate by its address.

async findByAddress(
  predicateAddress: string
): Promise<PredicateResponse>

Example:

const predicate = await provider.findByAddress('fuel1...');

authInfo()

Get current user's authentication info.

async authInfo(): Promise<UserAuthResponse>

createTransaction()

Create a new transaction.

async createTransaction(
  params: ICreateTransactionPayload
): Promise<TransactionResponse>

findTransactionByHash()

Find transaction by hash.

async findTransactionByHash(
  hash: string
): Promise<TransactionResponse>

signTransaction()

Sign a pending transaction.

async signTransaction(
  params: SignTransactionParams
): Promise<SignResponse>

sendTransaction()

Send a fully signed transaction.

async sendTransaction(
  hash: string
): Promise<TransactionResult>

userWallet()

Get user's wallet information.

async userWallet(): Promise<WalletResponse>

setCredentials()

Update provider credentials.

setCredentials(
  auth: AuthService
): void

dApp Connection Methods

createDapp()

Register a dApp connection.

async createDapp(
  dapp: DappPayload
): Promise<DappResponse>

disconnectDapp()

Disconnect a dApp session.

async disconnectDapp(
  sessionId: string
): Promise<void>

changeAccount()

Switch active account in a session.

async changeAccount(
  sessionId: string,
  vault: string
): Promise<void>

Properties

cliAuth

CLI authentication data (when using API token).

cliAuth?: CLIAuth

Example:

if (provider.cliAuth) {
  console.log('Vault address:', provider.cliAuth.address);
  console.log('Version:', provider.cliAuth.version);
}

Type Definitions

interface Workspace {
  id: string;
  name: string;
  avatar: string;
}
 
interface UserAuthResponse {
  user_id: string;
  address: string;
  avatar: string;
  workspace: Workspace;
}
 
interface CLIAuth {
  code: string;
  address: string;
  configurable: any;
  version: string;
}

Next Steps