@neoswap/solana-collection-swap
TypeScript icon, indicating that this package has built-in type declarations

0.9.5 • Public • Published

Logo

NeoSwap Solana Collection Swap Package

About The Project

Neoswap Website

Install NPM package

npm install @neoswap/solana-collection-swap

Types

Represents the data type in the program

type SwapData = {
    maker: string, // maker public key
    nftMintMaker: string, // nft mint of the maker

    bids: Bid[], // array of bids to initiate with ( max 15 )

    taker?: string, // taker public key
    nftMintTaker?: string, // nft mint of the taker
    acceptedBid?: Bid, // accepted bid

    refererMaker?: string, // unused
    refererTaker?: string, // unused

    endTime: number, // date when the swap gets obsolete

    royaltiesPaidMaker: boolean, // royalties paid for maker NFT
    royaltiesPaidTaker: boolean, // royalties paid for taker NFT
    claimed: boolean, // is swap claimed

    status: "active" | "expired" | "accepted",
    paymentMint: string, // mint of the payment token
};

type Bid = {
    collection: string,
    amount: number,
    makerNeoswapFee: number,
    takerNeoswapFee: number,
    takerRoyalties: number,
    makerRoyalties: number,
};
type BundleTransaction = {
    tx: Transaction | VersionedTransaction, // transaction object
    stx: Transaction | VersionedTransaction, // signed transaction object
    details: MakeSArg | TakeSArg | ClaimSArg | UpdateSArgs | RmBidArgs | SetNewTime, // arguments passed to the package to construct the transactions
    blockheight?: number, // signature blockheight
    description: string, // description of the transaction
    priority: number, // order of the transactions 0 means should be sent first
    status: "pending" | "broadcast" | "success" | "failed" | "Timeout",
    hash?: string,
    failedReason?: string,
    retries?: number,
};

Every function in CREATE_INSTRUCTIONS also expects these parameters

type EnvOpts = {
    clusterOrUrl?: Cluster | string, // cluster or url to construct connection ( default is mainnet )
    program?: Program<CollectionSwap>, // if you want to pass your own program
    programId?: string, // if you want to use a different program id
    idl?: Idl | true, // if you want to use your own idl, true willl fetch the onchain IDL
    prioritizationFee?: number, // if a prioritization fee is to be added to the transaction
};

Example Usage

Imports

You can also find imports in a destructured way accessible in the package

import { UTILS, CREATE_INSTRUCTIONS as CI, TYPES } from "@neoswap/solana-collection-swap";

Create Swap BundleTransaction

let initData = await CI.createMakeSwapInstructions({
    maker: string;
    nftMintMaker: string;
    paymentMint: string;
    bids: Bid[];
    endDate: number;
});

Add bid to Swap

let addBT = await CI.createAddBidBt({
    bids: Bid[];
    swapDataAccount: string;
    maker: string;
});

Remove bid to Swap

let rmBT = await CI.createRmBidBt({
    rmBids: Bid[];
    swapDataAccount: string;
    maker: string;
});

Set new time for Swap

let setNewTimeBT = await CI.createSetNewTime({
    swapDataAccount: string;
    newTime: number;
    maker: string;
});

Take and claim Swap

let takeData = await CI.createTakeAndCloseSwapInstructions({
    swapDataAccount: string;
    taker: string;
    signer?: string; // if you want to finalize the swap on behalf of the taker
    nftMintTaker: string;
    bid: Bid;
    verifyTaker?: boolean; // if you want to make sure the taker is the one who is taking the swap
    unwrap?:boolean // if wrappedSol is to be unwrapped
});

Cancel swap and refund maker

let cancelBT = await CI.createCancelSwapInstructions({
    signer,
    swapDataAccount,
});

How to process the bundle transaction

let BT : BundleTransaction[];
// BT will be updated with most recent information
BT = await UTILS.sendBundledTransactionsV2({
          bundleTransactions: BT,
          signer?, // should be a keypair if not provided, function expects the transaction stx to be already signed
          clusterOrUrl?, // provide or RPC or connection
          connection?,
          commitment?,
          prioritizationFee?,
          retryDelay?,
          skipSimulation?,
          skipConfirmation?,
        })

(back to top)

Readme

Keywords

none

Package Sidebar

Install

npm i @neoswap/solana-collection-swap

Weekly Downloads

22

Version

0.9.5

License

MIT

Unpacked Size

3.01 MB

Total Files

202

Last publish

Collaborators

  • gustavo-neoswap
  • biboux.neoswap
  • kuba-neoswap
  • admin-neoswap