πŸ”©Velar SDK

The Velar SDK is a powerful tool for developers to interact with the Velar protocol. It provides a set of functions and utilities to seamlessly integrate Velar's features into your applications.

Installation:

npm i @velarprotocol/velar-sdk

Velar SDK Types:

import { ContractPrincipalCV, PostCondition, PostConditionMode, UIntCV } from "@stacks/transactions";

export interface SwapConfig {
    account: string;
    inToken: string;
    outToken: string;
}

export interface ISwapService {
  swap(args: SwapPayload): Promise<SwapResponse>;
  getComputedAmount(args: ComputedAmountPayload): Promise<number>;
}

enum SwapType {
  ONE = 1,
  TWO = 2
}

export interface ComputedAmountPayload {
  amount: Number;
  slippage?: Number;
  type?: SwapType;
}

export interface SwapResponse {
  contractAddress: string,
  contractName: string,
  functionName: string,
  functionArgs: [
    UIntCV,                  // pool id
    ContractPrincipalCV,    // pool token0 address
    ContractPrincipalCV,    // pool token1 address
    ContractPrincipalCV,    // in token address
    ContractPrincipalCV,    // out token address
    ContractPrincipalCV,    // staking contract
    UIntCV,                 // amount in
    UIntCV                  // amount out
  ],
  postConditions: Array<PostCondition>,
  postConditionMode: PostConditionMode,
}

export declare class SwapService {
  constructor(args: SwapConfig);
  swap(args: SwapPayload): Promise<SwapResponse>;
  getComputedAmount(args: ComputedAmountPayload): Promise<number>;
}

VELAR SDK Interface:

export declare class VelarSDK {
  getPairs (symbol: string): Promise<Array<string>>;
  getSwapInstance(args: SwapConfig): SwapService;
}

Swap Exact Tokens For Tokens and Multihop:

import {
  SwapType,
  VelarSDK,
  getTokens,
  ISwapService,
  SwapResponse,
} from '@velarprotocol/velar-sdk';
import { openContractCall } from '@stacks/connect';

const sdk = new VelarSDK();

async () => {
  // getTokens will return you all of the tokens symbols which currently Velar supporting
  const { VELAR, STX } = await getTokens();
  const account = '';

  // setup swap instance
  const swapInstance: ISwapService = await sdk.getSwapInstance({
    account: account,
    inToken: VELAR,
    outToken: STX,
  });

  // to display amount out
  const amount: AmountOutResponse = await swapInstance.getComputedAmount({
    type: SwapType.ONE,
    amount: 10,
  });

  // get swap calculated arguments for contract call
  const swapOptions: SwapResponse = await swapInstance.swap({
    amount: 10,
    type: SwapType.ONE,
  });

  // build options for contract call
  const options = {
    ...swapOptions,
    network: AppService.getNetwork(),
    appDetails: AppService.getAppDetails(),
    anchorMode: AnchorMode.Any,
    onFinish: data => {},
    onCancel: ex => {},
  };

  // open contract call
  await openContractCall(options);
};

Swap Tokens For Exact Tokens:

import {
  SwapType,
  VelarSDK,
  getTokens,
  ISwapService,
  SwapResponse,
} from '@velarprotocol/velar-sdk';
import { openContractCall } from '@stacks/connect';

const sdk = new VelarSDK();

async () => {
  // getTokens will return you all of the tokens symbols which currently Velar supporting
  const { VELAR, STX } = await getTokens();
  const account = '';

  // setup swap instance
  const swapInstance: ISwapService = await sdk.getSwapInstance({
    account: account,
    inToken: VELAR,
    outToken: STX,
  });

  // to display amount in
  const amount: number = await swapInstance.getComputedAmount({
    type: SwapType.TWO,
    amount: 10,
  });

  // get swap calculated arguments for contract call
  const swapOptions: SwapResponse = await swapInstance.swap({
    amount: 10,
    type: SwapType.TWO,
  });

  // build options for contract call
  const options = {
    ...swapOptions,
    network: AppService.getNetwork(),
    appDetails: AppService.getAppDetails(),
    anchorMode: AnchorMode.Any,
    onFinish: data => {},
    onCancel: ex => {},
  };

  // open contract call
  await openContractCall(options);
};

getPairs:

const pairs = await sdk.getPairs('VELAR'); // ['STX', 'aeUSDC']

Available tokens:

const Tokens = {
  SOME: 'SOME',
  ROCK: 'ROCK',
  VELAR: 'VELAR',
  MICK: 'MICK',
  LONG: 'LONG',
  PEPE: 'PEPE',
  $ROO: '$ROO',
  WELSH: 'WELSH',
  LEO: 'LEO',
  stSTX: 'stSTX',
  aeUSDC: 'aeUSDC',
  aBTC: 'aBTC',
  STX: 'STX',
  ODIN: 'ODIN',
  sODIN: 'sODIN',
  sROO: 'sROO',
  sWELSH: 'sWELSH',
  Hat: 'Hat',
  HASHIKO: 'HASHIKO',
  POMBOO: 'POMBOO',
  $MOONCH: '$MOONCH',
  NOT: 'NOT',
  ALUX: 'ALUX',
  GOATSTX: 'GOATSTX',
  MWM: 'MWM',
};

Pairs:

const Pairs = [
  {
    "symbol": "SOME",
    "pairs": [
      "STX"
    ]
  },
  {
    "symbol": "ROCK",
    "pairs": [
      "STX"
    ]
  },
  {
    "symbol": "VELAR",
    "pairs": [
      "STX",
      "aeUSDC"
    ]
  },
  // ... (other pairs omitted for brevity)
];

For more detailed information and additional functions, please refer to the npm library here.

Last updated