Kiosk SDK
Kiosk Client
Querying

Querying

You can use the kioskClient to query kiosk data. It helps you get owned kiosks for an address, as well as fetching all the contents of a specified kiosk.

Querying owned kiosks

Querying owned kiosks returns a list of kioskOwnerCaps, as well as a list of the kioskIds.

KioskOwnerCap is important in this case, as it is used for managing an owned kiosk, as well as purchasing.

const kioskClient = new KioskClient({...});
const address = '0xAddress'
// You can perform actions, like querying the owned kiosks for an address.
const { kioskOwnerCaps, kioskIds } = await kioskClient.getOwnedKiosks({ address });
console.log(kioskOwnerCaps);
 
/**
 * An example response for an address that owns two kiosks (one of which is personal)
[
  {
    isPersonal: true,
    digest: '9mstxLa87E3VEewQ62EEQDKb7ZH2irrEXeMetQjQHzXz',
    version: '18',
    objectId: '0x5d4df1b8da5e1b6bafbb4b7dc5c73e532324d82c86e331f71bf1ea5dff18dccc',
    kioskId: '0x8453fc71611ce8ff73efcca42ed241dcaf7dc65411b56a7be42e6a0bc3d72c13'
  },
  {
    isPersonal: false,
    digest: '8fsKgCh5c2ycPKMVUqUz2H6D9WkPjRHmGP454z67afJh',
    version: '15',
    objectId: '0x84f5a9a1379d73eceae03d0578637936e208daa809e04ec07a8085c798a980fd',
    kioskId: '0xf8c826aae52bc576768032ce496b7fc349f9003603ed1541c8033fc5c2dd2d2c'
  }
]
 */

Querying kiosk content

You can follow the sample to query a kiosk's contents. We recommend saving the items structure (KioskItem), as it's useful when you're trying to purchase from one.

listing field only applies on items that are listed for sale.

const kioskClient = new KioskClient({...});
 
const id = `0xKioskId`;
 
// You can perform actions, like querying the owned kiosks for an address.
const res = await kioskClient.getKiosk({
    id,
    options: {
        withKioskFields: true, // this flag also returns the `kiosk` object in the response, which includes the base setup
        withListingPrices: true, // This flag enables / disables the fetching of the listing prices.
    }
});
console.log(res);
/**
 * An example response of an existing kiosk
 *
{
  items: [
    {
      objectId: '0xf65e88a33466763cabd11b7c2a57938cf4fa707c6cf767cb428894e14caf1537',
      type: '0xd12f8e0fdae3f5d88d2fc4af2e869ea503491e2d8da5f3136320b65bdcf70ab3::hero::Hero',
      isLocked: false,
      kioskId: '0x6d45df1942c11048a9182e3f732262e6e3c95ddd2e5f338c565f531717c2617f',
      listing: undefined,
      data: {
        objectId: '0xf65e88a33466763cabd11b7c2a57938cf4fa707c6cf767cb428894e14caf1537',
        version: '18',
        digest: 'As9fkLEP4QVChhYuGemB185xyyzWG4hspSa3UZ6TWR8b',
        display: { data: null, error: null },
        content: {
          dataType: 'moveObject',
          type: '0xd12f8e0fdae3f5d88d2fc4af2e869ea503491e2d8da5f3136320b65bdcf70ab3::hero::Hero',
          hasPublicTransfer: true,
          fields: {
            id: {
              id: '0xf65e88a33466763cabd11b7c2a57938cf4fa707c6cf767cb428894e14caf1537'
            },
            level: 3
          }
        }
      }
    },
    {
      objectId: '0x34def97cb8c357fcfdf22f72421d4f6f01706662acf7be1afb6e7391d5491372',
      type: '0xd12f8e0fdae3f5d88d2fc4af2e869ea503491e2d8da5f3136320b65bdcf70ab3::hero::Hero',
      isLocked: true,
      kioskId: '0x6d45df1942c11048a9182e3f732262e6e3c95ddd2e5f338c565f531717c2617f',
      listing: undefined,
      data: {
        objectId: '0x34def97cb8c357fcfdf22f72421d4f6f01706662acf7be1afb6e7391d5491372',
        version: '15',
        digest: 'J1MdmHUCXJEKd86rkmMwWASMV86wGkVS9P6SFPyRaKVV',
        display: { data: null, error: null },
        content: {
          dataType: 'moveObject',
          type: '0xd12f8e0fdae3f5d88d2fc4af2e869ea503491e2d8da5f3136320b65bdcf70ab3::hero::Hero',
          hasPublicTransfer: true,
          fields: {
            id: {
              id: '0x34def97cb8c357fcfdf22f72421d4f6f01706662acf7be1afb6e7391d5491372'
            },
            level: 1
          }
        }
      }
    }
  ],
  itemIds: [
    '0xf65e88a33466763cabd11b7c2a57938cf4fa707c6cf767cb428894e14caf1537',
    '0x34def97cb8c357fcfdf22f72421d4f6f01706662acf7be1afb6e7391d5491372'
  ],
  listingIds: [],
  extensions: [],
  kiosk: {
    id: '6d45df1942c11048a9182e3f732262e6e3c95ddd2e5f338c565f531717c2617f',
    profits: '100000',
    owner: '96300f8d9064f954f99db2d7fbe2ad0c5e4344f0e22392330285d399498cfaf3',
    itemCount: 2,
    allowExtensions: false
  }
}
 */

Query kiosk extension

Queries an extension's data. Returns null if there's no extension with that type installed.

// Assuming we have a kioskClient instance.
const kioskClient = new KioskClient({...});
 
// The type of the custom extension.
const type = '0xAddress::custom_extension::ACustomExtensionType';
 
const extension = await kioskClient.getKioskExtension({
  kioskId: '0xAKioskId',
  type
});
 
console.log(extension);
 
/**
 * An example output of the response
{
  objectId: 'extensionObjectId',
  type: '0xAddress::custom_extension::ACustomExtensionType',
  isEnabled: true,
  permissions: "3",
  storageId: '0xExampleStorageId',
  storageSize: "0",
}
*/

Querying transfer policy for type

const kioskClient = new KioskClient({...});
 
const itemType = '0xAddress::hero::Hero';
// You can perform actions, like querying the owned kiosks for an address.
const policies = await kioskClient.getTransferPolicies(itemType)
console.log(policies);
 
/* An example output of the response
[
  {
    id: '0x074847055fe4ea9a7f51eeaf095c05875509403059115af121cfea9b8de355de',
    type: '0x2::transfer_policy::TransferPolicy<0x85926b03d56e49bedfca558fc6a2540d43bdfb5c218190d63b571f33afe255f8::hero::Hero>',
    owner: { Shared: { initial_shared_version: 5 } },
    rules: [
      'a82212d931d3bc7c3401552d935abced7b7fd41d4f57a99f0f47b9196b2f57f5::kiosk_lock_rule::Rule',
      'a82212d931d3bc7c3401552d935abced7b7fd41d4f57a99f0f47b9196b2f57f5::floor_price_rule::Rule',
      'a82212d931d3bc7c3401552d935abced7b7fd41d4f57a99f0f47b9196b2f57f5::royalty_rule::Rule',
      'a82212d931d3bc7c3401552d935abced7b7fd41d4f57a99f0f47b9196b2f57f5::personal_kiosk_rule::Rule'
    ],
    balance: '20000'
  }
]
*/

Get owned transfer policies

Queries to find all the owned transfer policies. Useful to manage transfer policies, and can be combined with TransferPolicyTransaction to easily add or remove rules and withdraw profits.

// Assuming we have a kioskClient instance.
const kioskClient = new KioskClient({...});
 
// The address that owns the transfer policies.
const address = '0xAddress';
// You can perform actions, like querying the owned kiosks for an address.
const policies = await kioskClient.getOwnedTransferPolicies({ address });
console.log(policies);
 
/**
 * An example output of the response
[
  {
    policyId: '0x6b6eca8df6e70ea6447e639ef26b519039b5e9123642258eea1b3c781e94faca',
    policyCapId: '0x34a4794d4ad6578ac345d23ca0f7a4632ca88de297daaf24a1cdbc91e1547be4',
    type: '0xbe01d0594bedbce45c0e08c7374b03bf822e9b73cd7d555bf39c39bbf09d23a9::hero::Hero'
  },
  {
    policyId: '0x87ac2dd80011ed2de9c7916a19145ff520959acd3d8c3dbd100aa74b34155a0a',
    policyCapId: '0x858edda13c5c9086b2491eafed39e0ea58511268bb90d90464a2d7b5ed3f3880',
    type: '0xbe01d0594bedbce45c0e08c7374b03bf822e9b73cd7d555bf39c39bbf09d23a9::hero::Villain'
  }
]
*/

Get owned transfer policies by type

Queries to find all the owned transfer policies for a specific type. Useful to manage transfer policies, and can be combined with

// Assuming you have a kioskClient instance.
const kioskClient = new KioskClient({...});
 
// The address that owns the transfer policies.
const address = '0xAddress';
// The type of the transfer policy.
const type = '0xbe01d0594bedbce45c0e08c7374b03bf822e9b73cd7d555bf39c39bbf09d23a9::hero::Hero';
 
// We can query by type.
const policies = await kioskClient.getOwnedTransferPoliciesByType({ address, type });
 
// An example output of the response
// [
//   {
//     policyId: '0x6b6eca8df6e70ea6447e639ef26b519039b5e9123642258eea1b3c781e94faca',
//     policyCapId: '0x34a4794d4ad6578ac345d23ca0f7a4632ca88de297daaf24a1cdbc91e1547be4',
//     type: '0xbe01d0594bedbce45c0e08c7374b03bf822e9b73cd7d555bf39c39bbf09d23a9::hero::Hero'
//   }
// ]