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"];