@meteora-ag/position-nft-distribution-sdk
v1.0.3
Published
A Typescript SDK for interacting with the Position NFT Distribution Program on Meteora.
Readme
Position NFT Distribution
A simple program for distribution of DAMM v2 NFT positions.
Process
There are 2 main processes:
- Register:
In order to get a position NFT, MET's user would need to register firstly
- Admin would send an instruction
initialize_vault, that includescreation_feeandend_timefor registering - User send
registerinstruction to confirm they would join in position NFT distribution, they would need to paycreation_feeas prepaid for rent fee when creating position NFT and transaction fee - After
end_time, admin can withdraw total fee to an operator wallet to prepare for distributing position NFT
- Distribution position NFT
Operator would need to prepare a script that including following instructions for each transaction:
- Create position (damm v2)
- Add liquidity (damm v2)
- Transfer position NFT (damm v2)
record_txwith hash as user to get that NFT
Because record_tx is PDA of Operator and user, so it can't be double spending
Note: The whole process is trusted, we just add some simple steps to:
- Record user to register in position NFT distribution
- Collect prepaid fee for position NFT
- Avoid double spending to create position NFT for an user
Program
Program ID: opp8FuZQ47KoEAmQgdeyiyCFDahnfxLEX15zoo51Z8t
Build Program
anchor buildSDK
This SDK provides a set of tools and methods to interact with the Meteora Position NFT Distribution Program. It enables developers to distribute DAMM v2 position NFTs as an airdrop.
Installation
npm install @meteora-ag/position-nft-distribution-sdk
# or
pnpm install @meteora-ag/position-nft-distribution-sdk
# or
yarn add @meteora-ag/position-nft-distribution-sdkInitialization
import { Connection } from "@solana/web3.js";
import { PositionNftDistributionClient } from "@meteora-ag/position-nft-distribution-sdk";
const connection = new Connection("https://api.mainnet-beta.solana.com");
const client = new PositionNftDistributionClient(connection, "confirmed");Usage
Refer to the docs for how to use the functions.
Test
pnpm install
pnpm test