Skip to main content

sdk-client


Anvil Client SDK

Website

This library provides tools to interact with the Anvil backend API and browser wallet extensions.

Installation

npm install @ada-anvil/sdk-core @ada-anvil/sdk-client

Basic usage

// Import the SDK
import { anvil } from "@ada-anvil/sdk-client";

// Authenticate using your Anvil API key
anvil.config.authenticate(import.meta.env.VITE_ANVIL_API_KEY);

// Prompt the user to connect their wallet
await anvil.wallet.connect("nami");
// Get a pending exchange from Anvil's backend API

// Use the exchange service
const exchange = await anvil.exchange.getPending({ exchangeId: 33 });

Services

Refer to the type definitions for a complete list of available services and methods.

core (flat)

The core services provided by the Anvil SDK Core.

  • debug

browser (flat)

The services that facilitate the interaction with Cardano wallet browser extensions. They cannot be used on a server.

  • wallet
  • extensions
  • exchange: A copy of the cforge exchange service except the wallet addresses are automatically taken from the currently connected wallet (see the browser wallet service).

cforge

The services that provide a type safe way to interact with the Anvil backend API via a tRPC proxy client.

  • exchange

Extending the SDK

You can add your own plugins to the client SDK by creating a extended instance.

import { anvil } from "@ada-anvil/sdk-client";

const myAnvil = anvil.create({ plugins: [myPlugin] });

myAnvil.myPlugin.sayHello();

Enhancing the SDK

You can use enhancers to add functionalities to some services.

import { reactEnhancer } from "@ada-anvil/sdk-enhancer-react";

const enhancedSdk = anvil.enhance(reactEnhancer);

function ReactComp() {
const wallet = enhancedSdk.enhancers.react.wallet.useName();

return <div>Connected wallet: {wallet}</div>;
}

Available enhancers

  • React enhancer: Creates useful hooks that can be used to subscribe to some service attributes

Using the Anvil backend API without the SDK

Refer to the Anvil SDK Core documentation.

Inferring Types

import { anvil } from "@ada-anvil/sdk-client";
import type { inferSdkInputs, inferSdkOutputs } from "@ada-anvil/sdk-core";

type AnvilSdk = typeof anvil;

type SdkInput = inferSdkInputs<AnvilSdk>;
type SdkOutput = inferSdkOutputs<AnvilSdk>;

type GetPendingExchangeInput = SdkInput["exchange"]["getPending"];
type GetPendingExchangeOutput = SdkOutput["exchange"]["getPending"];