# SDK

## Overview

The sub2 SDK is a Node library to interact with the sub2 protocol in a typescript/javascript environment. It is built with [viem](https://viem.sh) and contains functionality that makes it easy to integrate sub2 as a receiver of subscription payments among other features. The implementation can be found [here](https://github.com/victorbrevig/sub2-sdk).

Interactions requiring querying on-chain data require the user to supply a viem public client. Some functionality like canceling a subscription or generating a sponsor signature requires the user to additionally supply a viem wallet client.

## Installation and setup

The SDK can be installed through npm.

```
npm i --save sub2-sdk
```

After installation, the SDK contains a class called Sub2SDK which can be initialized as follows:

{% tabs %}
{% tab title="index.ts" %}

```typescript
import { Sub2SDK } from 'sub2-sdk';
import { publicClient, walletClient } from "./config";

const sub2SDK = new Sub2SDK(publicClient, walletClient);
```

{% endtab %}

{% tab title="config.ts" %}

```typescript
import { createPublicClient, createWalletClient, http, PublicClient, WalletClient } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { baseSepolia } from 'viem/chains';

export const publicClient: PublicClient = createPublicClient({
  chain: baseSepolia,
  transport: http()
}) as PublicClient;

export const walletClient: WalletClient = createWalletClient({
  account: privateKeyToAccount('0x...'),
  chain: baseSepolia,
  transport: http()
});
```

{% endtab %}
{% endtabs %}

Now you are ready to start interacting with the sub2 protocol!

{% hint style="danger" %}
**Careful:** Remember to never store your private key and RPC URL in plain text in your project. We recommend creating and using a .env file.
{% endhint %}

{% hint style="info" %}
**Note:** The sub2 protocol is currently only deployed on the Base Sepolia network.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sub2.gitbook.io/sub2/sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
