# 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 %}
