@xoxno/sdk-js
Version:
The SDK to interact with the XOXNO Protocol!
1,031 lines (702 loc) • 32.8 kB
Markdown
# XOXNO SDK
## Installation
```bash
npm install @xoxno/sdk-js
```
## Basic usage
```typescript
import { cache } from 'react'
import { buildSdk, XOXNOClient } from '@xoxno/sdk-js'
// You can safely call `getSdk()` wherever you need it
export const getSdk = cache(() => {
return buildSdk(new XOXNOClient())
})
```
```typescript
import { getSdk } from './get-sdk'
async function main() {
/* Calling public endpoints ✅ */
const trendingCollections = await getSdk().collection.query({
filter: {
top: 10,
orderBy: ['statistics.tradeData.weekEgldVolume desc'],
filters: {
isVerified: true,
},
},
})
console.log(trendingCollections.resources) // CollectionProfileDoc[]
const collectionProfile = await getSdk()
.collection.collection('BOOGAS-afc98d')
.profile()
console.log(collectionProfile.description) // string
// ... and many more!
}
main()
```
## Calling restricted endpoints
Apart from the public endpoints that anyone can call, The XOXNO SDK also exposes `POST`, `PUT`, `PATCH` and `DELETE` endpoints that can be called by the respective logged in user. Here's how a flow looks like that obtains a **XOXNO Auth Token** when logging in with a MultiversX wallet, that can be used for 24h to make authenticated requests:
```typescript
import { getSdk } from './get-sdk'
export class NativeAuthClient {
async initialize(extraInfo: object) {
const token = await getSdk().user.nativeToken({
originalUrl: 'https://your-domain.com',
extraInfo: JSON.stringify({
...extraInfo,
timestamp: Date.now(),
// ... and any other properties you want to have encoded in the JWT for your later usage
}),
})
return { token }
}
getToken({
address,
token,
signature,
}: {
address: string
token: string
signature: string | undefined
}) {
const encodedAddress = this.encodeValue(address)
const encodedToken = this.encodeValue(token)
const loginToken = `${encodedAddress}.${encodedToken}.${signature}`
return { loginToken }
}
private encodeValue(str: string) {
return this.escape(Buffer.from(str, 'utf8').toString('base64'))
}
private escape(str: string) {
return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
}
}
```
```typescript
import { ExtensionProvider } from '@multiversx/sdk-extension-provider'
import { WalletClientType } from '@xoxno/types/enums'
import { setCookie } from 'cookies-next'
import { getSdk } from './get-sdk'
import { NativeAuthClient } from './native-auth'
async function main() {
const provider = ExtensionProvider.getInstance()
await provider.init()
const nativeAuthClient = new NativeAuthClient()
const loginMethod = WalletClientType.EXTENSION
const { token } = await nativeAuthClient.initialize({
loginMethod,
})
const { address, signature } = await provider.login({ token })
const { loginToken } = nativeAuthClient.getToken({
address,
token,
signature,
})
const { access_token, expires } = await getSdk().user.login.POST({
body: {
loginToken,
signature,
address,
},
})
// store the access_token for later usage
setCookie('xoxno-auth', access_token, {
expires: new Date(expires * 1000),
sameSite: 'strict',
secure: true,
})
// from now on you can call protected endpoints on behalf of `address`
const newUserProfile = await getSdk()
.user.address(address)
.profile.PATCH({
body: {
description: 'XOXNO SDK rocks!',
},
auth: access_token,
})
console.log(newUserProfile.description) // XOXNO SDK rocks!
}
main()
```
## List of endpoints to call
The list of available SDK endpoints gets extracted from https://api.xoxno.com/swagger.yaml and parsed into a Typescript definition that you can [view here](https://github.com/XOXNO/sdk-js/blob/alpha/src/sdk/swagger.ts)
`buildSdk` then converts them in the following way:
```typescript
// /collection/:collection/profile
sdk.collection.collection('BOOGAS-afc98d').profile()
// /drops/:creatorTag/:collectionTag/drop-info
sdk.drops.creatorTag('MiceCityClub').collectionTag('MiceCity').dropInfo()
```
For your reference, here is a list of all endpoints that are available:
```typescript
// GET /activity/query
sdk.activity.query(...); // NftActivityPaginated
// GET /activity/:identifier
sdk.activity.identifier("...")(...); // NftActivityDocHydrated
// GET /analytics/marketplace-unique-users
sdk.analytics.marketplaceUniqueUsers(...); // AnalyticsMarketplaceUniqueUsers[]
// GET /analytics/volume
sdk.analytics.volume(...); // VolumeGraph[]
// GET /analytics/overview
sdk.analytics.overview(...); // GlobalAnalyticsOverviewResponseDto
// GET /collection/:collection/attributes
sdk.collection.collection("...").attributes(...); // Record<string, ValueFp & Record<string, TraitInfo>>
// GET /collection/:collection/ranks
sdk.collection.collection("...").ranks(...); // CollectionRanksDTO[]
// GET /collection/:collection/listings
sdk.collection.collection("...").listings(...); // ListingsResponseDto
// POST /collection/:collection/sign-offer
sdk.collection.collection("...").signOffer.POST(...); // SignDataDto
// POST /collection/:collection/sign-mint
sdk.collection.collection("...").signMint.POST(...); // SignDataDto
// GET /collection/:collection/profile
sdk.collection.collection("...").profile(...); // CollectionProfileDoc
// PATCH /collection/:collection/profile
sdk.collection.collection("...").profile.PATCH(...); // CollectionProfileDoc
// GET /collection/:collection/floor-price
sdk.collection.collection("...").floorPrice(...); // FloorPriceDto
// GET /collection/floor-price
sdk.collection.floorPrice(...); // Record<string, number>
// GET /collection/pinned
sdk.collection.pinned(...); // PinnedCollectionDto[]
// GET /collection/pinned-drops
sdk.collection.pinnedDrops(...); // CollectionMintProfileDocHydrated[]
// GET /collection/:collection/pinned-drops
sdk.collection.collection("...").pinnedDrops(...); // CollectionPinnedStatusDto
// GET /collection/:collection/pinned
sdk.collection.collection("...").pinned(...); // CollectionPinnedStatusDto
// POST /collection/:collection/follow
sdk.collection.collection("...").follow.POST(...); // FollowCollectionDto
// GET /collection/query
sdk.collection.query(...); // CollectionProfilePaginated
// GET /collection/drops/query
sdk.collection.drops.query(...); // CollectionMintProfilePaginated
// GET /collection/:collection/drop-info
sdk.collection.collection("...").dropInfo(...); // CollectionMintProfileDocWithStages
// GET /collection/:creatorTag/:collectionTag/drop-info
sdk.collection.creatorTag("...").collectionTag("...").dropInfo(...); // CollectionMintProfileDocWithStages
// PUT /collection/:collection/upload-picture
sdk.collection.collection("...").uploadPicture.PUT(...); // CollectionProfileDoc
// PUT /collection/:collection/upload-banner
sdk.collection.collection("...").uploadBanner.PUT(...); // CollectionProfileDoc
// PUT /collection/:collection/reset-picture
sdk.collection.collection("...").resetPicture.PUT(...); // CollectionProfileDoc
// PUT /collection/:collection/reset-banner
sdk.collection.collection("...").resetBanner.PUT(...); // CollectionProfileDoc
// GET /collection/:collection/holders
sdk.collection.collection("...").holders(...); // CollectionHoldersDto
// GET /collection/:collection/holders/export
sdk.collection.collection("...").holders.export(...); // CollectionHoldersExportDto[]
// GET /collection/:collection/owner
sdk.collection.collection("...").owner(...); // CollectionOwnerDto
// GET /collection/:collection/stats
sdk.collection.collection("...").stats(...); // CollectionStatsDocHydrated
// GET /collection/stats/query
sdk.collection.stats.query(...); // CollectionStatsPaginated
// GET /collection/global-offer/query
sdk.collection.globalOffer.query(...); // GlobalOfferPaginated
// GET /collection/:collection/staking/summary
sdk.collection.collection("...").staking.summary(...); // StakingSummary[]
// GET /collection/:collection/staking/delegators
sdk.collection.collection("...").staking.delegators(...); // string[]
// GET /collection/staking/explore
sdk.collection.staking.explore(...); // StakingExploreDtoHydrated[]
// GET /collection/search
sdk.collection.search(...); // GlobalSearchResourcesPaginated
// GET /collection/drops/search
sdk.collection.drops.search(...); // CollectionMintProfilePaginated
// GET /collection/:collection/analytics/volume
sdk.collection.collection("...").analytics.volume(...); // AnalyticsVolumeDto[]
// GET /countries
sdk.countries(...); // string[]
// POST /event
sdk.event.POST(...); // EventProfile
// GET /event/:eventId
sdk.event.eventId("...")(...); // EventProfile
// PATCH /event/:eventId
sdk.event.eventId("...").PATCH(...); // EventProfile
// DELETE /event/:eventId
sdk.event.eventId("...").DELETE(...); // SuccessDto
// GET /event/profile/query
sdk.event.profile.query(...); // EventProfileQuery
// PUT /event/:eventId/profile
sdk.event.eventId("...").profile.PUT(...); // EventProfile
// PUT /event/:eventId/background
sdk.event.eventId("...").background.PUT(...); // EventProfile
// PUT /event/:eventId/description
sdk.event.eventId("...").description.PUT(...); // EventProfile
// PUT /event/:eventId/description/image
sdk.event.eventId("...").description.image.PUT(...); // string
// DELETE /event/:eventId/description/image/:imageId
sdk.event.eventId("...").description.image.imageId("...").DELETE(...); // SuccessDto
// POST /event/:eventId/register
sdk.event.eventId("...").register.POST(...); // EventRegistrationResponseDto
// GET /event/:eventId/ticket
sdk.event.eventId("...").ticket(...); // EventTicketProfileDoc[]
// POST /event/:eventId/ticket
sdk.event.eventId("...").ticket.POST(...); // EventTicketProfileDoc
// GET /event/:eventId/ticket/:ticketId
sdk.event.eventId("...").ticket.ticketId("...")(...); // EventTicketProfileDoc
// POST /event/:eventId/ticket/:ticketId
sdk.event.eventId("...").ticket.ticketId("...").POST(...); // SuccessDto
// PATCH /event/:eventId/ticket/:ticketId
sdk.event.eventId("...").ticket.ticketId("...").PATCH(...); // EventTicketProfileDoc
// PUT /event/:eventId/ticket/:ticketId
sdk.event.eventId("...").ticket.ticketId("...").PUT(...); // EventTicketProfileDoc
// GET /event/:eventId/stage
sdk.event.eventId("...").stage(...); // EventStageProfileDoc[]
// POST /event/:eventId/stage
sdk.event.eventId("...").stage.POST(...); // EventStageProfileDoc
// GET /event/:eventId/stage/:stageId
sdk.event.eventId("...").stage.stageId("...")(...); // EventStageProfileDoc
// PATCH /event/:eventId/stage/:stageId
sdk.event.eventId("...").stage.stageId("...").PATCH(...); // EventStageProfileDoc
// DELETE /event/:eventId/stage/:stageId
sdk.event.eventId("...").stage.stageId("...").DELETE(...); // SuccessDto
// POST /event/:eventId/calculate-prices
sdk.event.eventId("...").calculatePrices.POST(...); // TicketPricesResponse
// POST /event/:eventId/validate-discount
sdk.event.eventId("...").validateDiscount.POST(...); // DiscountCodeValidationResponse
// POST /event/:eventId/invite
sdk.event.eventId("...").invite.POST(...); // EventInvitationDoc[]
// GET /event/:eventId/invite/query
sdk.event.eventId("...").invite.query(...); // EventInvitationQuery
// GET /event/:eventId/invite/:inviteId
sdk.event.eventId("...").invite.inviteId("...")(...); // EventInvitation
// POST /event/:eventId/invite/:inviteId
sdk.event.eventId("...").invite.inviteId("...").POST(...); // EventAcceptInvitation
// DELETE /event/:eventId/invite/:inviteId
sdk.event.eventId("...").invite.inviteId("...").DELETE(...); // EventInvitationDoc
// GET /event/:eventId/voucher/query
sdk.event.eventId("...").voucher.query(...); // EventVoucherQuery
// GET /event/:eventId/questions
sdk.event.eventId("...").questions(...); // EventQuestionDoc[]
// POST /event/:eventId/question
sdk.event.eventId("...").question.POST(...); // EventQuestionDoc
// PATCH /event/:eventId/question/:questionId
sdk.event.eventId("...").question.questionId("...").PATCH(...); // EventQuestionDoc
// DELETE /event/:eventId/question/:questionId
sdk.event.eventId("...").question.questionId("...").DELETE(...); // SuccessDto
// GET /event/:eventId/guest/query
sdk.event.eventId("...").guest.query(...); // EventGuestProfileQuery
// GET /event/:eventId/guest/:address
sdk.event.eventId("...").guest.address("...")(...); // EventGuestProfile
// GET /event/:eventId/guest-export
sdk.event.eventId("...").guestExport(...); // EventGuestExport[]
// GET /event/:eventId/role
sdk.event.eventId("...").role(...); // EventUserRole[]
// POST /event/:eventId/role
sdk.event.eventId("...").role.POST(...); // EventUserRole
// PATCH /event/:eventId/role
sdk.event.eventId("...").role.PATCH(...); // EventUserRole
// GET /event/:eventId/role/:roleId
sdk.event.eventId("...").role.roleId("...")(...); // EventUserRoleDoc
// POST /event/:eventId/role/:roleId
sdk.event.eventId("...").role.roleId("...").POST(...); // EventUserRoleDoc
// DELETE /event/:eventId/role/:roleId
sdk.event.eventId("...").role.roleId("...").DELETE(...); // SuccessDto
// DELETE /event/:eventId/guest
sdk.event.eventId("...").guest.DELETE(...); // SuccessDto
// GET /event/:eventId/roleOf/:address
sdk.event.eventId("...").roleOf.address("...")(...); // EventUserRoleDoc
// POST /event/:eventId/scan
sdk.event.eventId("...").scan.POST(...); // TicketValidationResult
// POST /event/:eventId/voucher
sdk.event.eventId("...").voucher.POST(...); // EventVoucherDoc
// PATCH /event/:eventId/voucher/:voucherCode
sdk.event.eventId("...").voucher.voucherCode("...").PATCH(...); // EventVoucherDoc
// DELETE /event/:eventId/voucher/:voucherCode
sdk.event.eventId("...").voucher.voucherCode("...").DELETE(...); // EventVoucherDoc
// POST /event/:eventId/manual-check-in
sdk.event.eventId("...").manualCheckIn.POST(...); // TicketValidationResult
// GET /event/:eventId/answered-questions/:address
sdk.event.eventId("...").answeredQuestions.address("...")(...); // AnsweredQuestionWithDetails[]
// PATCH /event/:eventId/guest/approve
sdk.event.eventId("...").guest.approve.PATCH(...); // EventGuestProfile[]
// GET /event/:eventId/google-pass/:address
sdk.event.eventId("...").googlePass.address("...")(...); // string[]
// GET /event/profile/location
sdk.event.profile.location(...); // EventCountGroupedByCountry[]
// POST /event/:eventId/referral-config
sdk.event.eventId("...").referralConfig.POST(...); // EventReferralConfigDoc
// PATCH /event/:eventId/referral-config/:configId
sdk.event.eventId("...").referralConfig.configId("...").PATCH(...); // EventReferralConfigDoc
// DELETE /event/:eventId/referral-config/:configId
sdk.event.eventId("...").referralConfig.configId("...").DELETE(...); // EventReferralConfigDoc
// GET /event/:eventId/referral-configs
sdk.event.eventId("...").referralConfigs(...); // EventReferralConfigPaginated
// POST /event/:eventId/referral
sdk.event.eventId("...").referral.POST(...); // EventReferralDoc
// PATCH /event/:eventId/referral/:referralCode
sdk.event.eventId("...").referral.referralCode("...").PATCH(...); // EventReferralDoc
// DELETE /event/:eventId/referral/:referralCode
sdk.event.eventId("...").referral.referralCode("...").DELETE(...); // EventReferralDoc
// GET /event/:eventId/referrals
sdk.event.eventId("...").referrals(...); // EventReferralPaginated
// GET /event/:eventId/referrals/self-serviced
sdk.event.eventId("...").referrals.selfServiced(...); // EventReferralDoc[]
// POST /event/:eventId/notify-attendees
sdk.event.eventId("...").notifyAttendees.POST(...); // SuccessWithMessageDto
// POST /eventNotifications/event/:eventId/update
sdk.eventNotifications.event.eventId("...").update.POST(...); // NotificationSuccessResponseDto
// POST /eventNotifications/event/:eventId/reminder
sdk.eventNotifications.event.eventId("...").reminder.POST(...); // NotificationSuccessResponseDto
// POST /eventNotifications/creator/marketing
sdk.eventNotifications.creator.marketing.POST(...); // NotificationSuccessResponseDto
// POST /eventNotifications/user/:userId/direct
sdk.eventNotifications.user.userId("...").direct.POST(...); // NotificationSuccessResponseDto
// POST /faucet
sdk.faucet.POST(...); // SuccessDto
// GET /hatom/user/:address
sdk.hatom.user.address("...")(...); // UserInfo
// GET /launchpad/:scAddress/shareholders/royalties
sdk.launchpad.scAddress("...").shareholders.royalties(...); // ShareholderDto[]
// GET /launchpad/:scAddress/shareholders/collection/:collectionTag
sdk.launchpad.scAddress("...").shareholders.collection.collectionTag("...")(...); // ShareholderDto[]
// GET /lending/market/:token/profile
sdk.lending.market.token("...").profile(...); // LendingMarketProfile
// GET /lending/market/query
sdk.lending.market.query(...); // LendingMarketProfileQuery
// GET /lending/market/indexes
sdk.lending.market.indexes(...); // Record<string, LendingIndexesDto>
// GET /lending/pnl
sdk.lending.pnl(...); // LendingAccountPnl[]
// GET /lending/market/emode-categories
sdk.lending.market.emodeCategories(...); // LendingEModeCategoryProfile[]
// GET /lending/market/:token/emode-categories
sdk.lending.market.token("...").emodeCategories(...); // LendingEModeCategoryProfile[]
// GET /lending/market/:token/analytics
sdk.lending.market.token("...").analytics(...); // LendingMarketAnalyticsGraph[]
// GET /lending/market/:token/average
sdk.lending.market.token("...").average(...); // LendingMarketAverageGraph[]
// GET /lending/leaderboard
sdk.lending.leaderboard(...); // LendingPositionStatus[]
// GET /lending/leaderboard/liquidate
sdk.lending.leaderboard.liquidate(...); // LendingPositionStatus[]
// GET /lending/leaderboard/clean-bad-debt
sdk.lending.leaderboard.cleanBadDebt(...); // LendingPositionStatus[]
// GET /lending/stats
sdk.lending.stats(...); // LendingOverallStats
// GET /lending/market/prices
sdk.lending.market.prices(...); // Record<string, number>
// GET /lending/market-sc
sdk.lending.marketSc(...); // string[]
// GET /lending/active-accounts
sdk.lending.activeAccounts(...); // number[]
// GET /lending/account/:nonce/attributes
sdk.lending.account.nonce("...").attributes(...); // LendingNftAttributes
// GET /lending/account/:nonce/positions
sdk.lending.account.nonce("...").positions(...); // LendingNftAttributes[]
// GET /lending/liquidate
sdk.lending.liquidate(...); // Record<string, number>
// GET /lending/sync-account-positions
sdk.lending.syncAccountPositions(...); // LendingNftAttributes[]
// GET /lending/market/:token/price/egld
sdk.lending.market.token("...").price.egld(...); // LendingTokenPriceDto
// GET /liquid/xoxno/rate
sdk.liquid.xoxno.rate(...); // RateType
// GET /liquid/xoxno/liquid-supply
sdk.liquid.xoxno.liquidSupply(...); // string
// GET /liquid/xoxno/staked
sdk.liquid.xoxno.staked(...); // string
// GET /liquid/xoxno/stats
sdk.liquid.xoxno.stats(...); // XoxnoLiquidStatsDto
// GET /liquid/egld/stats
sdk.liquid.egld.stats(...); // XoxnoLiquidStatsDto
// GET /liquid/sui/stats
sdk.liquid.sui.stats(...); // XoxnoLiquidStatsDto
// GET /liquid/egld/rate
sdk.liquid.egld.rate(...); // RateType
// GET /liquid/egld/liquid-supply
sdk.liquid.egld.liquidSupply(...); // string
// GET /liquid/egld/staked
sdk.liquid.egld.staked(...); // string
// GET /liquid/egld/pending-fees
sdk.liquid.egld.pendingFees(...); // string
// GET /liquid/egld/pending-undelegate
sdk.liquid.egld.pendingUndelegate(...); // string
// GET /liquid/egld/pending-delegate
sdk.liquid.egld.pendingDelegate(...); // string
// GET /liquid/egld/execute-delegate
sdk.liquid.egld.executeDelegate(...); // string
// GET /liquid/egld/execute-undelegate
sdk.liquid.egld.executeUndelegate(...); // string
// GET /liquid/egld/protocol-apr
sdk.liquid.egld.protocolApr(...); // ProtocolAprType
// GET /liquid/egld/providers
sdk.liquid.egld.providers(...); // ProviderDto[]
// POST /mobile/device/register
sdk.mobile.device.register.POST(...); // MobileDeviceDoc
// GET /mobile/device/:deviceId
sdk.mobile.device.deviceId("...")(...); // MobileDeviceDoc
// DELETE /mobile/device/:deviceId
sdk.mobile.device.deviceId("...").DELETE(...); // SuccessDto
// GET /mobile/history
sdk.mobile.history(...); // PushNotificationResponse
// GET /mobile/history/unread-count
sdk.mobile.history.unreadCount(...); // PushNotificationCountResponse
// PUT /mobile/history/:notificationId/read
sdk.mobile.history.notificationId("...").read.PUT(...); // PushNotificationDoc
// PUT /mobile/history/read-all
sdk.mobile.history.readAll.PUT(...); // NotificationSuccessResponseDto
// DELETE /mobile/history/clear-all
sdk.mobile.history.clearAll.DELETE(...); // NotificationSuccessResponseDto
// DELETE /mobile/history/clear-id/:notificationId
sdk.mobile.history.clearId.notificationId("...").DELETE(...); // NotificationSuccessResponseDto
// GET /nft/query
sdk.nft.query(...); // NftPaginated
// POST /nft/:identifier/like
sdk.nft.identifier("...").like.POST(...); // LikeNftDto
// GET /nft/offer/query
sdk.nft.offer.query(...); // NftOfferPaginated
// GET /nft/offer/:identifier
sdk.nft.offer.identifier("...")(...); // NftOfferDocHydrated[]
// GET /nft/:identifier/offers
sdk.nft.identifier("...").offers(...); // NftOfferPaginated
// GET /nft/pinned
sdk.nft.pinned(...); // NftDocHydrated[]
// POST /nft/sign-withdraw
sdk.nft.signWithdraw.POST(...); // SignDataDto
// GET /nft/:identifier
sdk.nft.identifier("...")(...); // NftDocFull
// GET /nft/search/query
sdk.nft.search.query(...); // NftPaginated
// POST /notify/global-broadcast
sdk.notify.globalBroadcast.POST(...); // SuccessWithMessageDto
// POST /perp/exchange/acceptTerms
sdk.perp.exchange.acceptTerms.POST(...); // SuccessDto
// POST /perp/exchange/sendAsset
sdk.perp.exchange.sendAsset.POST(...); // SuccessDto
// POST /perp/exchange/sendExternalAsset
sdk.perp.exchange.sendExternalAsset.POST(...); // SuccessDto
// POST /perp/exchange/deposit
sdk.perp.exchange.deposit.POST(...); // SuccessDto
// POST /perp/exchange/withdraw
sdk.perp.exchange.withdraw.POST(...); // SuccessDto
// POST /perp/exchange/order
sdk.perp.exchange.order.POST(...); // PerpOrderResponse
// GET /perp/coin/:symbol
sdk.perp.coin.symbol("...")(...); // PerpCoinExtended[]
// GET /perp/coin/spot/:symbol
sdk.perp.coin.spot.symbol("...")(...); // PerpSpotCoinExtended[]
// GET /perp/coins
sdk.perp.coins(...); // PerpCoinExtendedSlim[]
// GET /perp/legal-check/:address
sdk.perp.legalCheck.address("...")(...); // PerpLegalCheck
// GET /perp/coins/spot
sdk.perp.coins.spot(...); // PerpSpotCoinExtendedSlim[]
// GET /perp/orderbook/:symbol
sdk.perp.orderbook.symbol("...")(...); // L2BookPerpResponseSingle[]
// GET /perp/trades/:symbol
sdk.perp.trades.symbol("...")(...); // TradesPerpResponseSingle[]
// GET /perp/stats/spot/:symbol
sdk.perp.stats.spot.symbol("...")(...); // ActiveSpotAssetCtx[]
// GET /perp/stats/:symbol
sdk.perp.stats.symbol("...")(...); // ActivePerpAssetCtx[]
// POST /perp/subscribe
sdk.perp.subscribe.POST(...); // SuccessDto
// POST /perp/unsubscribe
sdk.perp.unsubscribe.POST(...); // SuccessDto
// GET /pool/:poolId/profile
sdk.pool.poolId("...").profile(...); // StakingSummary
// PATCH /pool/:poolId/profile
sdk.pool.poolId("...").profile.PATCH(...); // StakingPoolDoc
// GET /pool/:poolId/whitelist
sdk.pool.poolId("...").whitelist(...); // NftDocHydrated[]
// PUT /pool/:poolId/upload-picture
sdk.pool.poolId("...").uploadPicture.PUT(...); // StakingPoolDoc
// GET /search
sdk.search(...); // GlobalSearchResourcesPaginated
// GET /tokens
sdk.tokens(...); // TokenDataDocHydrated[]
// GET /tokens/swap
sdk.tokens.swap(...); // TokenDataDocHydrated[]
// GET /tokens/restricted
sdk.tokens.restricted(...); // string[]
// GET /tokens/usd-price
sdk.tokens.usdPrice(...); // Record<string, number>
// GET /tokens/egld/fiat-price
sdk.tokens.egld.fiatPrice(...); // Record<string, number>
// GET /tokens/xoxno/info
sdk.tokens.xoxno.info(...); // XoxnoInfo
// GET /tradingview/bars/:symbol
sdk.tradingview.bars.symbol("...")(...); // BarDto[]
// GET /tradingview/coin/:symbol
sdk.tradingview.coin.symbol("...")(...); // SymbolInfoDto[]
// POST /transaction/cost
sdk.transaction.cost.POST(...); // TransactionCostData
// GET /transactions/:txHash
sdk.transactions.txHash("...")(...); // TransactionDetailed
// GET /transactions/:txHash/status
sdk.transactions.txHash("...").status(...); // TransactionProcessStatus
// POST /transactions
sdk.transactions.POST(...); // TransactionSendResult
// POST /transactions/batch
sdk.transactions.batch.POST(...); // TransactionSendResult[]
// POST /user/login
sdk.user.login.POST(...); // LoginAccessDto
// GET /user/:address/network-account
sdk.user.address("...").networkAccount(...); // UserNetworkInfoDto
// GET /user/:address/token-inventory
sdk.user.address("...").tokenInventory(...); // UserTokenInventoryResponseDto
// POST /user/network-account
sdk.user.networkAccount.POST(...); // UserNetworkInfoDto[]
// GET /user/me/profile
sdk.user.me.profile(...); // UserProfileDoc
// GET /user/:address/profile
sdk.user.address("...").profile(...); // UserProfileDoc
// PATCH /user/:address/profile
sdk.user.address("...").profile.PATCH(...); // UserProfileDoc
// GET /user/me
sdk.user.me(...); // UserProfileDto
// GET /user/me/settings
sdk.user.me.settings(...); // UserSettingsDoc
// PATCH /user/me/settings/notification-preferences
sdk.user.me.settings.notificationPreferences.PATCH(...); // UserSettingsDoc
// PATCH /user/me/settings/email
sdk.user.me.settings.email.PATCH(...); // UserSettingsDoc
// DELETE /user/me/settings/email
sdk.user.me.settings.email.DELETE(...); // UserSettingsDoc
// PATCH /user/me/settings/phone
sdk.user.me.settings.phone.PATCH(...); // UserSettingsDoc
// PATCH /user/me/settings/billing
sdk.user.me.settings.billing.PATCH(...); // UserSettingsDoc
// POST /user/me/settings/verify-email
sdk.user.me.settings.verifyEmail.POST(...); // UserSettingsDoc
// POST /user/buy/signature
sdk.user.buy.signature.POST(...); // TradesilvaniaSignature
// PUT /user/:address/upload-picture
sdk.user.address("...").uploadPicture.PUT(...); // UserProfileDoc
// PUT /user/:address/upload-banner
sdk.user.address("...").uploadBanner.PUT(...); // UserProfileDoc
// PUT /user/:address/reset-picture
sdk.user.address("...").resetPicture.PUT(...); // UserProfileDoc
// PUT /user/:address/reset-banner
sdk.user.address("...").resetBanner.PUT(...); // UserProfileDoc
// GET /user/:tag/creator/is-registered
sdk.user.tag("...").creator.isRegistered(...); // SuccessDto
// GET /user/:address/creator/profile
sdk.user.address("...").creator.profile(...); // CreatorProfileDto
// PATCH /user/:address/creator/profile
sdk.user.address("...").creator.profile.PATCH(...); // CreatorProfileDoc
// PUT /user/:address/creator/upload-picture
sdk.user.address("...").creator.uploadPicture.PUT(...); // CreatorProfileDoc
// PUT /user/:address/creator/upload-banner
sdk.user.address("...").creator.uploadBanner.PUT(...); // CreatorProfileDoc
// PUT /user/:address/creator/reset-picture
sdk.user.address("...").creator.resetPicture.PUT(...); // CreatorProfileDoc
// PUT /user/:address/creator/reset-banner
sdk.user.address("...").creator.resetBanner.PUT(...); // CreatorProfileDoc
// GET /user/:address/favorite/collections
sdk.user.address("...").favorite.collections(...); // CollectionStatsPaginated
// GET /user/favorite/:favoriteId
sdk.user.favorite.favoriteId("...")(...); // CheckLikeStatusResponseDto
// POST /user/:address/follow
sdk.user.address("...").follow.POST(...); // UserFavoriteResponseDto
// GET /user/:address/favorite/users
sdk.user.address("...").favorite.users(...); // string[]
// GET /user/:address/delegation
sdk.user.address("...").delegation(...); // DelegationDataOutput[]
// GET /user/lending/:address
sdk.user.lending.address("...")(...); // LendingAccountProfile[]
// GET /user/lending/position/:identifier
sdk.user.lending.position.identifier("...")(...); // LendingAccountProfile[]
// GET /user/lending/pnl/:address
sdk.user.lending.pnl.address("...")(...); // LendingAccountPnl[]
// GET /user/lending/summary/:identifier
sdk.user.lending.summary.identifier("...")(...); // LendingAccountSummary
// GET /user/lending/image/:nonce
sdk.user.lending.image.nonce("...")(...); // string
// GET /user/:address/inventory-summary
sdk.user.address("...").inventorySummary(...); // InventorySummaryDtoHydrated[]
// GET /user/:address/offers
sdk.user.address("...").offers(...); // NftOfferPaginated
// GET /user/:address/favorite/nfts
sdk.user.address("...").favorite.nfts(...); // NftPaginated
// GET /user/:address/creator/listing
sdk.user.address("...").creator.listing(...); // CreatorDetailsDto
// GET /user/:address/creator/details
sdk.user.address("...").creator.details(...); // CreatorDetailsDto
// GET /user/:address/staking/available-pools
sdk.user.address("...").staking.availablePools(...); // StakingSummary[]
// GET /user/:address/staking/owned-collections
sdk.user.address("...").staking.ownedCollections(...); // OwnedCollectionsDto
// GET /user/:address/staking/owned-pools
sdk.user.address("...").staking.ownedPools(...); // StakingSummary[]
// GET /user/:address/staking/summary
sdk.user.address("...").staking.summary(...); // UserStakingSummaryDto[]
// GET /user/:address/staking/creator
sdk.user.address("...").staking.creator(...); // StakingCreatorDoc
// GET /user/:address/staking/collection/:collection
sdk.user.address("...").staking.collection.collection("...")(...); // StakingSummary[]
// GET /user/:address/staking/pool/:poolId/nfts
sdk.user.address("...").staking.pool.poolId("...").nfts(...); // StakingUserPoolNfts
// GET /user/:creatorTag/owned-services
sdk.user.creatorTag("...").ownedServices(...); // OwnedServicesDto
// GET /user/search
sdk.user.search(...); // GlobalSearchResourcesPaginated
// GET /user/notifications
sdk.user.notifications(...); // NotificationPaginated
// GET /user/notifications/unread-count
sdk.user.notifications.unreadCount(...); // PushNotificationCountResponse
// DELETE /user/notifications/clear
sdk.user.notifications.clear.DELETE(...); // SuccessDto
// PATCH /user/notifications/read
sdk.user.notifications.read.PATCH(...); // NotificationDoc|SuccessDto
// GET /user/native-token
sdk.user.nativeToken(...); // string
// GET /user/web2
sdk.user.web2(...); // Web2UserDoc
// POST /user/web2/session-cookie
sdk.user.web2.sessionCookie.POST(...); // SuccessWithMessageDto
// POST /user/web2/wallet
sdk.user.web2.wallet.POST(...); // Web2UserDoc
// POST /user/web2/wallet-switch
sdk.user.web2.walletSwitch.POST(...); // Web2UserDoc
// POST /user/web2/wallet-link
sdk.user.web2.walletLink.POST(...); // Web2UserDoc
// DELETE /user/web2/:index/wallet-link
sdk.user.web2.index("...").walletLink.DELETE(...); // Web2UserDoc
// GET /user/web2/shards
sdk.user.web2.shards(...); // Web2UserShardsDto
// GET /user/:address/analytics/volume
sdk.user.address("...").analytics.volume(...); // UserAnalyticsDto
// GET /user/stats
sdk.user.stats(...); // UserStatsDto[]
// GET /user/xoxno-drop
sdk.user.xoxnoDrop(...); // AirdropDtoHydrated[]
// GET /user/me/xoxno-drop
sdk.user.me.xoxnoDrop(...); // AirdropDtoHydrated[]
// POST /user/chat/message
sdk.user.chat.message.POST(...); // ChatMessageDocHydrated
// GET /user/chat/conversation
sdk.user.chat.conversation(...); // UserConversationPaginated
// GET /user/chat/conversation/:conversationId
sdk.user.chat.conversation.conversationId("...")(...); // ChatMessagePaginated
// DELETE /user/chat/conversation/:conversationId
sdk.user.chat.conversation.conversationId("...").DELETE(...); // SuccessDto
// GET /user/chat/conversation-summary
sdk.user.chat.conversationSummary(...); // GlobalConversationSummaryDto
// DELETE /user/chat/conversation/:conversationId/message/:messageId
sdk.user.chat.conversation.conversationId("...").message.messageId("...").DELETE(...); // SuccessDto
// GET /user/chat/block
sdk.user.chat.block(...); // UserBlockPaginated
// POST /user/chat/block/:address
sdk.user.chat.block.address("...").POST(...); // SuccessDto
// POST /user/chat/token
sdk.user.chat.token.POST(...); // WebSocketTokenDto
// GET /user/:address/creator/events
sdk.user.address("...").creator.events(...); // CreatorDetailsDto
// GET /user/me/event
sdk.user.me.event(...); // EventProfile[]
// GET /user/me/events/past
sdk.user.me.events.past(...); // EventProfile[]
// GET /user/me/events/hosted
sdk.user.me.events.hosted(...); // EventProfile[]
// GET /user/me/events/upcoming
sdk.user.me.events.upcoming(...); // EventProfile[]
// GET /user/me/event/badge
sdk.user.me.event.badge(...); // string
// GET /user/me/event/badge/payload
sdk.user.me.event.badge.payload(...); // BageQRData
```