This library provides tools to interact with the Anvil backend API and browser wallet extensions.
npm install @ada-anvil/sdk-core @ada-anvil/sdk-client
// 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 });
Refer to the type definitions for a complete list of available services and methods.
The core services provided by the Anvil SDK Core.
- debug
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).
The services that provide a type safe way to interact with the Anvil backend API via a tRPC proxy client.
- exchange
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();
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>;
}
- React enhancer: Creates useful hooks that can be used to subscribe to some service attributes
Refer to the Anvil SDK Core documentation.
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"];