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