stxcity-sdk
Version:
SDK for interacting with Stxcity
320 lines (244 loc) • 7.62 kB
Markdown
# StxCity SDK
StxCity SDK is a powerful and easy-to-use library for interacting with the StxCity Protocol. It provides a set of tools to seamlessly integrate StxCity functionality into your applications.
## Table of Contents
1. [Installation](#installation)
2. [Configuration](#configuration)
3. [Usage](#usage)
4. [Available Functions](#available-functions)
5. [Public Methods](#public-methods)
6. [Types](#types)
7. [Troubleshooting](#troubleshooting)
8. [License](#license)
## Installation
Install the StxCity SDK using npm:
```bash
npm install stxcity-sdk
```
## Usage
Here's a step-by-step guide to implement the StxCity SDK in your project:
### 1. Import the SDK:
```typescript
import { StxCitySDK } from 'stxcity-sdk';
```
### 2. Initialize the SDK:
#### Option 1: Use a config object
```typescript
const stxcityConfig = {
HIRO_API_KEY: "", // get it from https://platform.hiro.so/
STXCITY_API_HOST: 'https://stx.city',
STACKS_NETWORK_API_HOST: 'https://api.mainnet.hiro.so'
}
const stxcitySDK = new StxCitySDK(new StacksMainnet(), stxcityConfig)
```
#### Option 2: Use .env file
```
STXCITY_API_HOST="https://stx.city"
STACKS_NETWORK_API_HOST="https://api.mainnet.hiro.so"
HIRO_API_KEY="" // get it from https://platform.hiro.so/
```
and then initialize the SDK like this:
```typescript
const stxcitySDK = new StxCitySDK(new StacksMainnet())
```
## Available functions
### Buy Bonding Token
```typescript
try {
const params: BuyBondingTokenParams = {
stxAmount: 100, // Replace with actual amount
dexContractId: 'dexId', // Replace with actual dex contract ID
tokenContractId: 'tokenContractId', // Replace with actual token contract ID
tokenSymbol: "symboltoken", // Replace with actual token symbol
senderAddress: "ST3JH3Y...XYZ", // Replace with sender address
slippage: 50, // Replace with your slippage
onFinish: (data) => {
console.log("Buy token:", data);
},
onCancel: () => {
console.log("Buy token canceled");
},
};
await StxCitySDK.buyBondingToken(params);
} catch (error) {
console.error("Error buying bonding token:", error);
}
```
Note: Already check valid bonding curve contract inside this function
### Sell Bonding Token
```typescript
try {
const params: SellBondingTokenParams = {
tokenAmount: 2000000, // Replace with actual amount token
dexContractId: 'dexId', // Replace with actual dex contract ID
tokenContractId: 'tokenContractId', // Replace with actual token contract ID
tokenSymbol: 'symboltoken', // Replace with actual token symbol
senderAddress: "ST3JH3Y...XYZ", // Replace with sender address
slippage: 50, // Replace with your slippage
onFinish: (data) => {
console.log("Sell token success:", data);
},
onCancel: () => {
console.log("Sell token canceled");
},
};
await StxCitySDK.sellBondingToken(params);
} catch (error) {
console.error("Error selling bonding token:", error);
}
```
Note: Already check valid bonding curve contract inside this function
### Check Valid Bonding Token
Check if the bonding curve contract is valid to avoid scam/fake tokens.
```typescript
const isValid = await StxCitySDK.checkValidBondingToken('dexContractId', 'tokenContractId');
```
### Get Bonding Token
```typescript
let page = 1;
let limit = 40
const bondingTokenData = await StxCitySDK.getBondingToken(page, limit);
```
`limit` max is 100
### Search Token
```typescript
let params:SearchTokenParams = {
keyword : 'searchKeyowrd', // Replace with actual search keyword
tokenContract: 'xxxxx-stxcity' // Replace with actual token contract ID you want to search
}
const data = await StxCitySDK.searchToken(params)
```
## Disclaimer
- The StxCity SDK is provided "as is" without any warranty. Use it at your own risk.
- There are many malicious or fake bonding curve contracts on the Stacks blockchain. Please make sure you are using the correct bonding curve contract or user wallet can be drained.
- Call `checkValidBondingToken` function to check if the bonding curve contract is valid.
## Public Methods
The following public methods are available in the `StxCitySDK` class:
### `buyBondingToken(params: BuyBondingTokenParams): Promise<void>`
Buys a bonding token with the specified parameters.
### `sellBondingToken(params: SellBondingTokenParams): Promise<void>`
Sells a bonding token with the specified parameters.
### `getBondingToken(page: number, limit: number): Promise<BondingTokenData>`
Fetches bonding token data for the specified page and limit.
### `searchToken(params?: SearchTokenParams): Promise<SearchTokenType>`
Searches for tokens based on the provided parameters.
## Types
The following types and interfaces are exported from the `types.ts` file:
### `StxCityContext`
```typescript
export interface StxCityContext {
validAPIKey: boolean;
network: StacksNetwork;
}
```
### `BondingTokenItem`
```typescript
export interface BondingTokenItem {
id: number;
token_contract: string;
dex_contract: string;
progress: number;
name: string;
tx_id: string;
symbol: string;
decimals: number;
supply: number;
logo_url: string;
holders: number;
deployed_at: Date;
stx_paid: number;
description: string;
xlink: string;
homepage: string;
telegram: string;
discord: string;
status: string;
target_AMM: string;
chat_count: number;
txs_count: number;
trading_volume: number;
target_stx: number;
price?: number;
price_24h_changes?: number;
token_to_dex?: number;
token_to_deployer?: number;
stx_to_dex?: number;
stx_buy_first_fee?: number;
}
```
### `NormalTokenItem`
```typescript
export interface NormalTokenItem {
contract_id: string;
name: string;
logo_url: string;
symbol: string;
homepage: string;
supply: number;
decimals: number;
holders: number;
tx_id: string;
deployed_at: Date;
}
```
### `BondingTokenData`
```typescript
export interface BondingTokenData {
trending: BondingTokenItem[];
new: BondingTokenItem[];
completed: BondingTokenItem[];
all: BondingTokenItem[];
total: number;
page: number;
limit: number;
}
```
### `BuyBondingTokenParams`
```typescript
export interface BuyBondingTokenParams {
stxAmount: number;
dexContractId: string;
tokenContractId: string;
tokenSymbol: string;
senderAddress: string;
slippage: number;
stacksProvider?: StacksProvider;
onFinish?: (data: any) => void;
onCancel?: () => void;
}
```
### `SellBondingTokenParams`
```typescript
export interface SellBondingTokenParams {
tokenAmount: number;
dexContractId: string;
tokenContractId: string;
tokenSymbol: string;
senderAddress: string;
slippage: number;
stacksProvider?: StacksProvider;
onFinish?: (data: any) => void;
onCancel?: () => void;
}
```
### `SearchTokenType`
```typescript
export interface SearchTokenType {
ads_tokens: BondingTokenItem[];
bonding_curve: BondingTokenItem[];
normal: NormalTokenItem[];
}
```
### `SearchTokenParams`
```typescript
export type SearchTokenParams = {
keyword?: string;
tokenContract?: string;
};
```
## Troubleshooting
If you encounter any issues while using the StxCity SDK, please check the following:
1. Make sure you have the latest version of the SDK installed.
2. Check that you're using a valid Stacks address for the `senderAddress` parameter.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
```