Files
zeekayandHanzo Dev f60c28ece4 @luxfi/utila could not build — name its outDir
RollupError: [plugin typescript] @rollup/plugin-typescript: Path of
    Typescript compiler option 'outDir' must be located inside the same
    directory as the Rollup 'file' option.

No tsconfig in the chain sets outDir, so the plugin defaults it to the
tsconfig's own directory — pkg/utila — and then rejects it, because it requires
outDir to sit inside the directory each Rollup `file` writes to. Both outputs go
to dist/, so one value satisfies both.

This fails identically on a laptop, so it is not a container problem: the
package has simply been unbuildable since the toolchain moved under it, and
nobody noticed because dist/ was built once long ago and has been sitting there
older than its own sources. It only surfaced now because app/server's image
needs to build it from a clean checkout.

Verified: dist/index.cjs.js exports createGrpcClient and
serviceAccountAuthStrategy, which are what domain/utila.ts and
domain/cosigners.ts import.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-07 21:17:32 -07:00
..
2024-11-28 13:55:15 -06:00
2024-11-23 13:32:13 -06:00
2024-11-21 14:25:46 -06:00
2024-11-21 14:25:46 -06:00

Utila API SDK

This SDK provides developers with tools to easily integrate Utila's API services into JavaScript applications. It simplifies authentication and interaction with Utila's APIs.

Features

  • Easy authentication with service accounts
  • Promise-based API methods for asynchronous operations
  • Supports both JavaScript and TypeScript

Installation

Ensure Node.js (v18.x or later) is installed on your machine.

  1. Create a Service Account:

    • Visit the Utila Console
    • Ensure you are logged in as an administrator
    • Create a new service account
  2. Install the SDK:

    • Open your terminal
    • Execute the following command within your project directory:
npm install @utila/api

Configuration

Set up the SDK using the credentials from your service account:

  1. Store your service account's private key file securely within your project
  2. Reference the key file correctly in your environment settings or directly in the application code

Usage Example

import { createApiClient, serviceAccountAuthStrategy } from '@utila/api';
import { readFile } from 'fs/promises';

// Configure the API client
// This function initializes the client with a strategy to authenticate using a service account
const client = createApiClient({
  authStrategy: serviceAccountAuthStrategy({
    email: '[email protected]',
    privateKey: () =>
      readFile('path/to/your/private-key.pem', { encoding: 'utf-8' }),
  }),
});

// Define an asynchronous function to fetch balances
async function getBalances() {
  try {
    // Query balance information
    // This method fetches balance details from a specified 'parent' vault
    const { balances } = await client.balances.queryBalances({
      parent: 'vaults/vault_id',
    });
    // Output the fetched balances to the console
    console.log(balances);
  } catch (error) {
    // Handle errors gracefully
    console.error('Failed to fetch balances:', error);
  }
}

// Invoke the function to get balances
getBalances();

The SDK uses the credentials of a service account to authenticate API requests. This involves specifying the email associated with the service account and a function to read the private key file asynchronously.

For more detailed documentation on other capabilities such as managing transactions, wallets, etc., refer to the API documentation.

Available Methods

Transactions

  • listTransactions
  • getTransaction
  • batchGetTransactions
  • initiateTransaction
  • estimateTransactionFee

Assets

  • getAsset
  • batchGetAssets

Balances

  • queryBalances

Blockchains

  • getNetwork
  • listNetworks
  • getLatestBatchContract

Vaults

  • getVault
  • listVaults

Wallets

  • generateWallet
  • listWallets
  • createWalletAddress

Support

If you encounter any issues or have questions, please visit our support page or raise an issue on the GitHub repository.