UNPKG

@b3dotfun/anyspend-sdk

Version:

React Hooks and UI Components for AnySpend by B3

64 lines (60 loc) 1.96 kB
import { Nft, OrderType, Token, Tournament } from "@b3dotfun/anyspend-sdk/types"; import { normalizeAddress } from "@b3dotfun/anyspend-sdk/utils/address"; export type OrderParams = { orderType: OrderType; srcToken: Token; dstToken: Token; expectedDstAmount?: string; nft?: Nft & { price: string }; tournament?: Tournament & { contractAddress: string; entryPriceOrFundAmount: string }; payload?: any; }; export const buildPayload = (orderType: OrderType, params: OrderParams) => { const { nft, tournament, payload, expectedDstAmount } = params; switch (orderType) { case OrderType.Swap: return { expectedDstAmount, actualDstAmount: null }; case OrderType.MintNFT: return { contractAddress: nft ? normalizeAddress(nft.contractAddress) : "", nftPrice: nft?.price || "" }; case OrderType.JoinTournament: return { contractAddress: tournament?.contractAddress, entryPrice: tournament?.entryPriceOrFundAmount }; case OrderType.FundTournament: return { contractAddress: tournament?.contractAddress, fundAmount: tournament?.entryPriceOrFundAmount }; case OrderType.Custom: return { ...payload }; default: throw new Error(`Invalid order type: ${orderType}`); } }; export const buildMetadata = (orderType: OrderType, params: OrderParams) => { const { srcToken, dstToken, nft, tournament, payload } = params; const baseMetadata = { srcToken, dstToken }; switch (orderType) { case OrderType.Swap: return { ...baseMetadata }; case OrderType.MintNFT: return { ...baseMetadata, nft }; case OrderType.JoinTournament: case OrderType.FundTournament: return { ...baseMetadata, tournament }; case OrderType.Custom: return { ...baseMetadata, action: payload.action }; default: throw new Error(`Invalid order type: ${orderType}`); } };