{"version":3,"file":"index.cjs","sources":["../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api-consts.js","../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api-errors.js","../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api-events.js","../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api-query.js","../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api-tx.js","../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api-rpc.js","../../../../node_modules/@unique-nft/unique-mainnet-types/augment-api.js","../../../../packages/sdk/tokens/utils/encode-token.ts","../../../../packages/sdk/tokens/utils/decode-token.ts","../../../../packages/sdk/tokens/utils/encode-collection-fields.ts","../../../../packages/sdk/tokens/utils/validator.ts","../../../../packages/sdk/tokens/methods/create-collection-ex/types.ts","../../../../packages/sdk/tokens/utils/encode-collection.ts","../../../../packages/sdk/tokens/utils/decode-collection-fields.ts","../../../../packages/sdk/tokens/methods/set-collection-limits/utils.ts","../../../../packages/sdk/tokens/utils/decode-collection.ts","../../../../packages/sdk/tokens/utils/nesting.ts","../../../../packages/sdk/tokens/methods/create-collection-ex/method.ts","../../../../packages/sdk/tokens/methods/collection-by-id/method.ts","../../../../packages/sdk/tokens/methods/effective-collection-limits/method.ts","../../../../packages/sdk/tokens/methods/set-collection-limits/method.ts","../../../../packages/sdk/tokens/sdk-collections.ts","../../../../packages/sdk/tokens/methods/nest-token/method.ts","../../../../packages/sdk/tokens/methods/unnest-token/method.ts","../../../../packages/sdk/tokens/methods/token-children/method.ts","../../../../packages/sdk/tokens/methods/token-parent/method.ts","../../../../packages/sdk/tokens/methods/topmost-token-owner/method.ts","../../../../packages/sdk/tokens/sdk-tokens.ts","../../../../packages/sdk/tokens/index.ts"],"sourcesContent":["\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=augment-api-consts.js.map","\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=augment-api-errors.js.map","\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=augment-api-events.js.map","\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=augment-api-query.js.map","\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=augment-api-tx.js.map","\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=augment-api-rpc.js.map","\"use strict\";\n//@ts-nocheck\n// Auto-generated via `yarn polkadot-types-from-chain`, do not edit\n/* eslint-disable */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"./augment-api-consts\");\nrequire(\"./augment-api-errors\");\nrequire(\"./augment-api-events\");\nrequire(\"./augment-api-query\");\nrequire(\"./augment-api-tx\");\nrequire(\"./augment-api-rpc\");\n//# sourceMappingURL=augment-api.js.map","import { INamespace } from 'protobufjs';\nimport { u8aToHex } from '@polkadot/util';\nimport { TokenPayload, TokenPropertiesKeys } from '@unique-nft/sdk/types';\nimport { serializeConstData } from '@unique-nft/sdk/utils';\n\n/* eslint-disable  @typescript-eslint/no-explicit-any */\n\nexport const encodeToken = (\n  constData?: Record<string, any>,\n  constOnChainSchema?: INamespace | null,\n): TokenPayload => {\n  if (!constData || !constOnChainSchema) return { NFT: null };\n\n  return {\n    NFT: {\n      properties: [\n        {\n          key: TokenPropertiesKeys.constData,\n          value: u8aToHex(serializeConstData(constData, constOnChainSchema)),\n        },\n      ],\n    },\n  };\n};\n","import { decodeConstData, getTokenUrl } from '@unique-nft/sdk/utils';\n\nimport type { UpDataStructsTokenData } from '@unique-nft/unique-mainnet-types';\nimport type { TokenInfo, TokenProperties } from '@unique-nft/sdk/types';\nimport { TokenPropertiesKeys } from '@unique-nft/sdk/types';\nimport { CollectionInfo } from '../methods/collection-by-id/types';\n\nexport const decodeToken = (\n  collection: CollectionInfo,\n  tokenId: number,\n  tokenData: UpDataStructsTokenData,\n): TokenInfo => {\n  let constData: Uint8Array | null = null;\n  tokenData.properties.forEach((prop) => {\n    switch (prop.key.toHuman()) {\n      case TokenPropertiesKeys.constData:\n        constData = prop.value.toU8a(true);\n        break;\n      default:\n        break;\n    }\n  });\n\n  const decodedConstData =\n    collection.properties.constOnChainSchema && constData\n      ? decodeConstData(constData, collection.properties.constOnChainSchema)\n      : undefined;\n  const tokenProperties: TokenProperties = {\n    constData: decodedConstData,\n  };\n\n  const tokenUrl = getTokenUrl({\n    schemaVersion: collection.properties.schemaVersion,\n    offchainSchema: collection.properties.offchainSchema,\n    decodedConstData,\n    tokenId,\n  });\n\n  const ownerJson = tokenData.owner.value.toHuman() as any;\n  return {\n    id: tokenId,\n    collectionId: collection.id,\n    url: tokenUrl,\n    owner: ownerJson ? ownerJson.Substrate || ownerJson.Ethereum : null,\n    properties: tokenProperties,\n  };\n};\n","import {\n  CollectionField,\n  CollectionFields,\n  CollectionFieldTypes,\n  CollectionSelectField,\n} from '@unique-nft/sdk/types';\nimport { IEnum, IField, INamespace } from 'protobufjs';\nimport { ValidationError } from '@unique-nft/sdk/errors';\nimport { Registry } from '@polkadot/types/types';\nimport { UpDataStructsSponsoringRateLimit } from '@unique-nft/unique-mainnet-types/default/types';\n\nconst encodeEnum = (selectField: CollectionSelectField): IEnum => {\n  const options: Record<string, string> = {};\n\n  const values: Record<string, number> = {};\n\n  selectField.items.forEach((item, index) => {\n    const name = `field${index + 1}`;\n\n    options[name] = item;\n\n    values[name] = index;\n  });\n\n  return {\n    options,\n    values,\n  };\n};\n\nexport const encodeField = (field: CollectionField): IField => {\n  const { id, type, name, required } = field;\n\n  const rule = required ? 'required' : 'optional';\n\n  let selectField: CollectionSelectField;\n\n  switch (type) {\n    case CollectionFieldTypes.TEXT:\n      return {\n        id,\n        rule,\n        type: 'string',\n      };\n    case CollectionFieldTypes.SELECT:\n      selectField = field as CollectionSelectField;\n\n      if (selectField.multi) {\n        if (required) {\n          throw new ValidationError(\n            `Multiselect field \"${name}\" cannot be required`,\n            { field },\n          );\n        }\n\n        return {\n          id,\n          rule: 'repeated',\n          type: name,\n        };\n      }\n\n      return {\n        id,\n        rule,\n        type: name,\n      };\n    default:\n      throw new ValidationError('Invalid collection field type', { field });\n  }\n};\n\nexport const encodeCollectionFields = (\n  collectionFields: CollectionFields,\n): INamespace => {\n  const protobufEnums: Record<string, IEnum> = {};\n\n  const protobufFields: Record<string, IField> = {};\n\n  const idsContainer: Record<number, true> = {};\n\n  const namesContainer: Record<string, true> = {};\n\n  collectionFields.forEach((field) => {\n    const { id, name, type } = field;\n\n    if (idsContainer[id]) {\n      throw new ValidationError(\n        `The \"id\" property in fields list must be unique`,\n        { field },\n      );\n    }\n    idsContainer[id] = true;\n\n    if (namesContainer[name]) {\n      throw new ValidationError(\n        `The \"name\" property in fields list must be unique`,\n        { field },\n      );\n    }\n    namesContainer[name] = true;\n\n    protobufFields[name] = encodeField(field);\n\n    if (type === CollectionFieldTypes.SELECT) {\n      protobufEnums[name] = encodeEnum(field as CollectionSelectField);\n    }\n  });\n\n  return {\n    nested: {\n      onChainMetaData: {\n        nested: {\n          NFTMeta: {\n            fields: protobufFields,\n          },\n          ...protobufEnums,\n        },\n      },\n    },\n  };\n};\n\nexport const encodeSponsoredDataRateLimit = (\n  registry: Registry,\n  input: number | null,\n): UpDataStructsSponsoringRateLimit => {\n  const asObject =\n    input && input > 0\n      ? { Blocks: input, isSponsoringDisabled: false }\n      : { isSponsoringDisabled: true };\n\n  const encoded = registry.createType<UpDataStructsSponsoringRateLimit>(\n    'UpDataStructsSponsoringRateLimit',\n    asObject,\n  );\n\n  return encoded;\n};\n","import { Root, Type, IField, INamespace } from 'protobufjs';\nimport { ValidationError } from '@unique-nft/sdk/errors';\nimport { encodeToken } from './encode-token';\n\nexport const validateOnChainSchema = (constOnChainSchema: INamespace) => {\n  let root: Root;\n  try {\n    root = Root.fromJSON(constOnChainSchema);\n  } catch (err) {\n    throw ValidationError.wrapError(err);\n  }\n\n  let nftMetaType: Type;\n  try {\n    nftMetaType = root.lookupType('NFTMeta');\n  } catch (err) {\n    throw ValidationError.wrapError(err);\n  }\n\n  const idsContainer: Record<string, boolean> = {};\n\n  const payload: Record<string, any> = {};\n  Object.keys(nftMetaType.fields).forEach((name) => {\n    const field: IField = nftMetaType.fields[name];\n\n    const { id } = field;\n\n    if (idsContainer[id]) {\n      throw new ValidationError(\n        `The \"id\" property in fields list must be unique`,\n        { field },\n      );\n    }\n    idsContainer[id] = true;\n\n    if (field.type === 'string') {\n      payload[name] = 'test';\n      if (\n        field.rule &&\n        field.rule !== 'required' &&\n        field.rule !== 'optional'\n      ) {\n        throw new ValidationError(`Invalid rule in string field`, { field });\n      }\n    } else {\n      payload[name] = 0;\n      try {\n        root.lookupEnum(name);\n      } catch (err) {\n        throw ValidationError.wrapError(err);\n      }\n    }\n  });\n\n  try {\n    encodeToken(payload, constOnChainSchema);\n  } catch (err) {\n    throw ValidationError.wrapError(err);\n  }\n};\n","import { INamespace } from 'protobufjs';\nimport {\n  Address,\n  CollectionFields,\n  CollectionSchemaVersion,\n  TokenPropertyPermissions,\n} from '@unique-nft/sdk/types';\n\nimport { CollectionLimits } from '../set-collection-limits/types';\n\nexport enum CollectionMode {\n  Nft = 'Nft',\n  Fungible = 'Fungible',\n  ReFungible = 'ReFungible',\n}\n\nexport enum MetaUpdatePermission {\n  ItemOwner = 'ItemOwner',\n  Admin = 'Admin',\n  None = 'None',\n}\n\nexport enum CollectionAccess {\n  Normal = 'Normal',\n  AllowList = 'AllowList',\n}\n\nexport interface CollectionNestingPermissions {\n  tokenOwner: boolean;\n  collectionAdmin: boolean;\n}\n\nexport interface CollectionPermissions {\n  access?: CollectionAccess | `${CollectionAccess}`;\n  mintMode?: boolean;\n  nesting?: CollectionNestingPermissions;\n}\n\nexport interface CollectionProperties {\n  offchainSchema?: string;\n  schemaVersion?: CollectionSchemaVersion | `${CollectionSchemaVersion}`;\n  variableOnChainSchema?: string | null;\n  constOnChainSchema?: INamespace | null;\n  fields?: CollectionFields;\n}\n\nexport enum CollectionPropertiesKeys {\n  offchainSchema = '_old_offchainSchema',\n  schemaVersion = '_old_schemaVersion',\n  variableOnChainSchema = '_old_variableOnChainSchema',\n  constOnChainSchema = '_old_constOnChainSchema',\n}\n\nexport interface CollectionSponsorship {\n  address: Address;\n  isConfirmed: boolean;\n}\n\nexport interface TokenPropertiesPermissions {\n  constData?: TokenPropertyPermissions;\n}\n\nexport interface CollectionInfoBase {\n  mode?: CollectionMode | `${CollectionMode}`;\n  name: string;\n  description: string;\n  tokenPrefix: string;\n  sponsorship?: CollectionSponsorship | null;\n  limits?: CollectionLimits;\n  metaUpdatePermission?: MetaUpdatePermission | `${MetaUpdatePermission}`;\n\n  properties: CollectionProperties;\n  permissions?: CollectionPermissions;\n  tokenPropertyPermissions?: TokenPropertiesPermissions;\n}\n\nexport interface CreateCollectionArguments extends CollectionInfoBase {\n  address: Address;\n}\n","import type { Registry } from '@polkadot/types/types';\nimport {\n  TokenPropertiesKeys,\n  TokenPropertyPermissions,\n} from '@unique-nft/sdk/types';\nimport type {\n  UpDataStructsCreateCollectionData,\n  UpDataStructsCollectionPermissions,\n  UpDataStructsAccessMode,\n  UpDataStructsNestingPermissions,\n} from '@unique-nft/unique-mainnet-types/default';\nimport { stringToUTF16 } from '@unique-nft/sdk/utils';\nimport {\n  encodeSponsoredDataRateLimit,\n  encodeCollectionFields,\n} from './encode-collection-fields';\nimport { validateOnChainSchema } from './validator';\nimport { CollectionInfo } from '../methods/collection-by-id/types';\nimport {\n  CollectionMode,\n  CollectionProperties,\n  TokenPropertiesPermissions,\n  CollectionPermissions,\n  CollectionPropertiesKeys,\n} from '../methods/create-collection-ex/types';\n\ntype CollectionProperty = {\n  key: CollectionPropertiesKeys;\n  value: string;\n};\nconst encodeCollectionProperties = (\n  properties: CollectionProperties,\n): CollectionProperty[] => {\n  const encodedProperties: CollectionProperty[] = [];\n  if (properties.schemaVersion) {\n    encodedProperties.push({\n      key: CollectionPropertiesKeys.schemaVersion,\n      value: properties.schemaVersion,\n    });\n  }\n  if (properties.fields) {\n    const constOnChainSchema = encodeCollectionFields(properties.fields);\n    validateOnChainSchema(constOnChainSchema);\n    encodedProperties.push({\n      key: CollectionPropertiesKeys.constOnChainSchema,\n      value: JSON.stringify(constOnChainSchema),\n    });\n  } else if (properties.constOnChainSchema) {\n    validateOnChainSchema(properties.constOnChainSchema);\n\n    encodedProperties.push({\n      key: CollectionPropertiesKeys.constOnChainSchema,\n      value: JSON.stringify(properties.constOnChainSchema),\n    });\n  }\n  if (properties.variableOnChainSchema) {\n    encodedProperties.push({\n      key: CollectionPropertiesKeys.variableOnChainSchema,\n      value: properties.variableOnChainSchema,\n    });\n  }\n  return encodedProperties;\n};\n\nconst encodeCollectionPermissions = (\n  registry: Registry,\n  permissions: CollectionPermissions,\n): UpDataStructsCollectionPermissions =>\n  registry.createType<UpDataStructsCollectionPermissions>(\n    'UpDataStructsCollectionPermissions',\n    {\n      mintMode: permissions.mintMode,\n      nesting: registry.createType<UpDataStructsNestingPermissions>(\n        'UpDataStructsNestingPermissions',\n        {\n          tokenOwner: permissions.nesting?.tokenOwner,\n          collectionAdmin: permissions.nesting?.collectionAdmin,\n        },\n      ),\n      access: registry.createType<UpDataStructsAccessMode>(\n        'UpDataStructsAccessMode',\n        'Normal',\n      ),\n    },\n  );\n\ntype TokenPropertyPermissionItem = {\n  key: string;\n  permission: TokenPropertyPermissions;\n};\nconst encodeTokenPropertyPermissions = (\n  tokenPropertyPermissions?: TokenPropertiesPermissions,\n): TokenPropertyPermissionItem[] => {\n  const encodedPermissions: TokenPropertyPermissionItem[] = [];\n  if (tokenPropertyPermissions?.constData) {\n    encodedPermissions.push({\n      key: TokenPropertiesKeys.constData,\n      permission: tokenPropertyPermissions.constData,\n    });\n  } else {\n    encodedPermissions.push({\n      key: TokenPropertiesKeys.constData,\n      permission: {\n        tokenOwner: true,\n        collectionAdmin: true,\n        mutable: false,\n      },\n    });\n  }\n  return encodedPermissions;\n};\n\nexport const encodeCollection = (\n  registry: Registry,\n  collectionInfo: Partial<CollectionInfo>,\n): UpDataStructsCreateCollectionData => {\n  const properties = collectionInfo.properties\n    ? encodeCollectionProperties(collectionInfo.properties)\n    : [];\n\n  const permissions = collectionInfo.permissions\n    ? encodeCollectionPermissions(registry, collectionInfo.permissions)\n    : {};\n\n  const tokenPropertyPermissions = encodeTokenPropertyPermissions(\n    collectionInfo.tokenPropertyPermissions,\n  );\n\n  const limits = {\n    ...collectionInfo.limits,\n    ...(collectionInfo.limits?.sponsoredDataRateLimit\n      ? {\n          sponsoredDataRateLimit: encodeSponsoredDataRateLimit(\n            registry,\n            collectionInfo.limits.sponsoredDataRateLimit,\n          ),\n        }\n      : {}),\n  };\n\n  const createData = {\n    mode: collectionInfo.mode || CollectionMode.Nft,\n    name: collectionInfo.name ? stringToUTF16(collectionInfo.name) : undefined,\n    description: collectionInfo.description\n      ? stringToUTF16(collectionInfo.description)\n      : undefined,\n    tokenPrefix: collectionInfo.tokenPrefix\n      ? stringToUTF16(collectionInfo.tokenPrefix)\n      : undefined,\n    limits,\n    properties,\n    permissions,\n    tokenPropertyPermissions,\n  };\n\n  return registry.createType<UpDataStructsCreateCollectionData>(\n    'UpDataStructsCreateCollectionData',\n    createData,\n  );\n};\n","import {\n  CollectionField,\n  CollectionFields,\n  CollectionFieldTypes,\n} from '@unique-nft/sdk/types';\nimport { Root, IField, Enum, INamespace } from 'protobufjs';\n\nconst decodeField = (\n  name: string,\n  field: IField,\n  root: Root,\n): CollectionField => {\n  if (field.type === 'string') {\n    return {\n      id: field.id,\n      type: CollectionFieldTypes.TEXT,\n      name,\n      required: field.rule === 'required',\n    };\n  }\n\n  const item: Enum = root.lookupEnum(field.type);\n\n  const items: string[] = [];\n  if (item && item.options) {\n    items.push(...Object.values(item.options));\n  }\n\n  if (field.rule === 'repeated') {\n    return {\n      id: field.id,\n      type: CollectionFieldTypes.SELECT,\n      name,\n      items,\n      multi: true,\n    };\n  }\n\n  return {\n    id: field.id,\n    type: CollectionFieldTypes.SELECT,\n    name,\n    items,\n    required: field.rule === 'required',\n  };\n};\n\nexport const decodeCollectionFields = (\n  constOnChainSchema: INamespace,\n): CollectionFields => {\n  try {\n    const root = Root.fromJSON(constOnChainSchema);\n\n    const nftMetaType = root.lookupType('NFTMeta');\n    if (!nftMetaType) return [];\n\n    const { fields } = nftMetaType;\n    if (!fields) return [];\n\n    return Object.keys(fields).map((key) => decodeField(key, fields[key], root));\n  } catch (e) {\n    console.warn(e); // todo logger?\n    return [];\n  }\n};\n","import { UpDataStructsCollectionLimits } from '@unique-nft/unique-mainnet-types/default/index';\nimport { bool, Option } from '@polkadot/types-codec';\nimport { UpDataStructsSponsoringRateLimit } from '@unique-nft/unique-mainnet-types/default/types';\nimport { INumber } from '@polkadot/types-codec/types';\nimport { Registry } from '@polkadot/types/types';\nimport { CollectionLimits } from './types';\n\nexport function toNumber(input: Option<INumber>): number | null {\n  let result = input.unwrapOr(undefined)?.toNumber();\n  if (result !== undefined) {\n    return result;\n  }\n  result = input?.toHuman() as number;\n  if (result !== undefined) {\n    return result;\n  }\n  return null;\n}\n\nexport function toBoolean(input: Option<bool>): boolean | null {\n  let result = input.unwrapOr(undefined)?.toHuman();\n  if (result !== undefined) {\n    return result;\n  }\n  result = input?.toHuman() as boolean;\n  if (result !== undefined) {\n    return result;\n  }\n  return null;\n}\n\nexport function sponsoredDataRateLimitToNumber(\n  input: Option<UpDataStructsSponsoringRateLimit>,\n): number | null {\n  let sponsoringRateLimit = input.unwrapOr(undefined);\n  if (sponsoringRateLimit === undefined) {\n    sponsoringRateLimit = input.toHuman() as unknown as UpDataStructsSponsoringRateLimit;\n  }\n\n  return sponsoringRateLimit && sponsoringRateLimit.isBlocks\n    ? sponsoringRateLimit.asBlocks.toNumber()\n    : null;\n}\n\nexport const decodeCollectionLimits = (\n  limits: UpDataStructsCollectionLimits,\n): CollectionLimits => ({\n  accountTokenOwnershipLimit: toNumber(limits.accountTokenOwnershipLimit),\n  sponsoredDataSize: toNumber(limits.sponsoredDataSize),\n  sponsoredDataRateLimit: sponsoredDataRateLimitToNumber(\n    limits.sponsoredDataRateLimit,\n  ),\n  tokenLimit: toNumber(limits.tokenLimit),\n  sponsorTransferTimeout: toNumber(limits.sponsorTransferTimeout),\n  sponsorApproveTimeout: toNumber(limits.sponsorApproveTimeout),\n  ownerCanTransfer: toBoolean(limits.ownerCanTransfer),\n  ownerCanDestroy: toBoolean(limits.ownerCanDestroy),\n  transfersEnabled: toBoolean(limits.transfersEnabled),\n});\n","import { INamespace } from 'protobufjs';\nimport {\n  bytesToJson,\n  bytesToString,\n  utf16ToString,\n} from '@unique-nft/sdk/utils';\n\nimport type {\n  UpDataStructsCollectionLimits,\n  UpDataStructsCollectionPermissions,\n  UpDataStructsProperty,\n  UpDataStructsRpcCollection,\n  UpDataStructsSponsorshipState,\n  UpDataStructsPropertyKeyPermission,\n} from '@unique-nft/unique-mainnet-types/default';\n\nimport {\n  CollectionSchemaVersion,\n  TokenPropertiesKeys,\n  TokenPropertyPermissions,\n} from '@unique-nft/sdk/types';\nimport { decodeCollectionFields } from './decode-collection-fields';\nimport {\n  CollectionInfoBase,\n  CollectionPermissions,\n  CollectionProperties,\n  CollectionSponsorship,\n  TokenPropertiesPermissions,\n  CollectionPropertiesKeys,\n} from '../methods/create-collection-ex/types';\nimport {\n  decodeCollectionLimits,\n  toBoolean,\n} from '../methods/set-collection-limits/utils';\n\nexport const decodeCollectionSponsorship = (\n  sponsorship: UpDataStructsSponsorshipState,\n): CollectionSponsorship | null =>\n  sponsorship.isDisabled\n    ? null\n    : {\n        address: sponsorship.value.toString(),\n        isConfirmed: sponsorship.isConfirmed,\n      };\n\nexport const decodeCollectionPermissions = (\n  permissions: UpDataStructsCollectionPermissions,\n): CollectionPermissions => {\n  const nesting = permissions.nesting.unwrapOrDefault();\n\n  return {\n    access: permissions.access.unwrapOrDefault()?.type,\n    mintMode: toBoolean(permissions.mintMode) || false,\n    nesting: {\n      tokenOwner: nesting?.tokenOwner?.isTrue,\n      collectionAdmin: nesting?.collectionAdmin?.isTrue,\n    },\n  };\n};\n\nexport const decodeCollectionProperties = (\n  properties?: UpDataStructsProperty[],\n): CollectionProperties => {\n  const collectionProperties: CollectionProperties = {};\n  let constOnChainSchema: INamespace | undefined;\n\n  properties?.forEach((property) => {\n    switch (property.key.toHuman()) {\n      case CollectionPropertiesKeys.offchainSchema:\n        collectionProperties.offchainSchema = bytesToString(property.value);\n        break;\n      case CollectionPropertiesKeys.schemaVersion:\n        collectionProperties.schemaVersion = bytesToString(\n          property.value,\n        ) as CollectionSchemaVersion;\n        break;\n      case CollectionPropertiesKeys.variableOnChainSchema:\n        collectionProperties.variableOnChainSchema = bytesToString(\n          property.value,\n        );\n        break;\n      case CollectionPropertiesKeys.constOnChainSchema:\n        constOnChainSchema = bytesToJson(property.value);\n        collectionProperties.constOnChainSchema = constOnChainSchema;\n\n        collectionProperties.fields =\n          constOnChainSchema && decodeCollectionFields(constOnChainSchema);\n        break;\n      default:\n        break;\n    }\n  });\n  return collectionProperties;\n};\n\nconst decodeTokenPropertyPermissions = (\n  property: UpDataStructsPropertyKeyPermission,\n): TokenPropertyPermissions => ({\n  mutable: property.permission.mutable.toHuman(),\n  collectionAdmin: property.permission.collectionAdmin.toHuman(),\n  tokenOwner: property.permission.tokenOwner.toHuman(),\n});\n\nconst decodeTokenPropertiesPermissions = (\n  tokenPropertiesPermissions: UpDataStructsPropertyKeyPermission[],\n): TokenPropertiesPermissions => {\n  const constProperty = tokenPropertiesPermissions?.find(\n    ({ key }) => bytesToString(key) === TokenPropertiesKeys.constData,\n  );\n\n  return constProperty\n    ? { constData: decodeTokenPropertyPermissions(constProperty) }\n    : {};\n};\n\nexport const decodeCollection = (\n  collection: UpDataStructsRpcCollection,\n): CollectionInfoBase => ({\n  mode: collection.mode.type,\n  name: utf16ToString(collection.name),\n  description: utf16ToString(collection.description),\n  tokenPrefix: bytesToString(collection.tokenPrefix),\n  sponsorship: decodeCollectionSponsorship(collection.sponsorship),\n  limits: decodeCollectionLimits(collection.limits),\n\n  permissions: decodeCollectionPermissions(collection.permissions),\n  properties: decodeCollectionProperties(collection.properties),\n  tokenPropertyPermissions: decodeTokenPropertiesPermissions(\n    collection.tokenPropertyPermissions,\n  ),\n});\n","import { keccakAsHex } from '@polkadot/util-crypto';\nimport { Address } from '@unique-nft/sdk/types';\n\nconst NESTING_ADDRESS_PREFIX = '0xf8238ccfff8ed887463fd5e0';\n\nexport function getNestingTokenAddress(collectionId: number, tokenId: number) {\n  let address = `${NESTING_ADDRESS_PREFIX}${collectionId\n    .toString(16)\n    .padStart(8, '0')}${tokenId.toString(16).padStart(8, '0')}`;\n\n  if (typeof address === 'undefined') return '';\n\n  if (!/^(0x)?[0-9a-f]{40}$/i.test(address))\n    throw new Error(\n      `Given address \"${address}\" is not a valid Ethereum address.`,\n    );\n\n  address = address.toLowerCase().replace(/^0x/i, '');\n  const addressHash = keccakAsHex(address).replace(/^0x/i, ''); // only here changed\n  const checksumAddress = ['0x'];\n\n  for (let i = 0; i < address.length; i += 1) {\n    // If ith character is 8 to f then make it uppercase\n    if (parseInt(addressHash[i], 16) > 7) {\n      checksumAddress.push(address[i].toUpperCase());\n    } else {\n      checksumAddress.push(address[i]);\n    }\n  }\n  return checksumAddress.join('');\n}\n\nexport function isNestingAddress(address: Address): boolean {\n  return address.indexOf(NESTING_ADDRESS_PREFIX) === 0 && address.length === 42;\n}\n\nexport function getCollectionIdFromNestingAddress(address: Address): number {\n  if (!isNestingAddress(address)) return 0;\n\n  const collectionString = address.slice(\n    NESTING_ADDRESS_PREFIX.length,\n    NESTING_ADDRESS_PREFIX.length + 8,\n  );\n\n  return parseInt(collectionString, 16);\n}\n\nexport function getTokenIdFromNestingAddress(address: Address): number {\n  if (!isNestingAddress(address)) return 0;\n\n  const tokenString = address.slice(\n    NESTING_ADDRESS_PREFIX.length + 8,\n    NESTING_ADDRESS_PREFIX.length + 25,\n  );\n\n  return parseInt(tokenString, 16);\n}\n","import { MutationMethodBase } from '@unique-nft/sdk/extrinsics';\nimport { TxBuildArguments } from '@unique-nft/sdk/types';\nimport { ISubmittableResult } from '@polkadot/types/types/extrinsic';\nimport { u32 } from '@polkadot/types-codec';\nimport { encodeCollection } from '../../utils';\nimport { CreateCollectionArguments } from './types';\nimport { CollectionIdArguments } from '../collection-by-id/types';\n\n/* eslint-disable class-methods-use-this */\n\nexport class CreateCollectionExMutation extends MutationMethodBase<\n  CreateCollectionArguments,\n  CollectionIdArguments\n> {\n  async transformArgs(\n    args: CreateCollectionArguments,\n  ): Promise<TxBuildArguments> {\n    const { address, ...rest } = args;\n\n    const encodedCollection = encodeCollection(\n      this.sdk.api.registry,\n      rest,\n    ).toHex();\n\n    return {\n      address,\n      section: 'unique',\n      method: 'createCollectionEx',\n      args: [encodedCollection],\n    };\n  }\n\n  async transformResult(\n    result: ISubmittableResult,\n  ): Promise<CollectionIdArguments | undefined> {\n    const createCollectionEvent = result.findRecord(\n      'common',\n      'CollectionCreated',\n    );\n\n    if (!createCollectionEvent) return undefined;\n\n    const [id] = createCollectionEvent.event.data as unknown as [u32];\n\n    return {\n      collectionId: id.toNumber(),\n    };\n  }\n}\n","import { Sdk } from '@unique-nft/sdk';\nimport { QueryMethod } from '@unique-nft/sdk/extrinsics';\n\nimport { CollectionIdArguments, CollectionInfo } from './types';\nimport { decodeCollection } from '../../utils';\n\nasync function collectionByIdFn(\n  this: Sdk,\n  args: CollectionIdArguments,\n): Promise<CollectionInfo | null> {\n  const collectionOption = await this.api.rpc.unique.collectionById(\n    args.collectionId,\n  );\n\n  const collection = collectionOption.unwrapOr(null);\n  if (!collection) return null;\n\n  const decoded = decodeCollection(collection);\n\n  return {\n    ...decoded,\n    id: args.collectionId,\n    owner: collection.owner.toString(),\n  };\n}\n\nexport const collectionById: QueryMethod<\n  CollectionIdArguments,\n  CollectionInfo\n> = collectionByIdFn;\n","import { Sdk } from '@unique-nft/sdk';\nimport { QueryMethod } from '@unique-nft/sdk/extrinsics';\n\nimport { CollectionIdArguments, GetCollectionLimitsResult } from './types';\nimport { decodeCollectionLimits } from '../set-collection-limits/utils';\n\nasync function effectiveCollectionLimitsFn(\n  this: Sdk,\n  args: CollectionIdArguments,\n): Promise<GetCollectionLimitsResult | null> {\n  const limitsOption = await this.api.rpc.unique.effectiveCollectionLimits(\n    args.collectionId,\n  );\n\n  const limits = limitsOption.unwrapOr(null);\n  if (!limits) return null;\n\n  const decoded = decodeCollectionLimits(limits);\n\n  return {\n    limits: decoded,\n    collectionId: args.collectionId,\n  };\n}\n\nexport const effectiveCollectionLimits: QueryMethod<\n  CollectionIdArguments,\n  GetCollectionLimitsResult\n> = effectiveCollectionLimitsFn;\n","import { MutationMethodBase } from '@unique-nft/sdk/extrinsics';\nimport { ISubmittableResult } from '@polkadot/types/types/extrinsic';\nimport { u32 } from '@polkadot/types-codec';\nimport { TxBuildArguments } from '@unique-nft/sdk/types';\nimport { NotFoundException } from '@nestjs/common';\nimport {\n  CollectionLimits,\n  SetCollectionLimitsArguments,\n  SetCollectionLimitsResult,\n} from './types';\nimport { decodeCollectionLimits } from './utils';\nimport { encodeSponsoredDataRateLimit } from '../../utils/encode-collection-fields';\n\n/* eslint-disable class-methods-use-this */\n\nexport class SetCollectionLimitsMutation extends MutationMethodBase<\n  SetCollectionLimitsArguments,\n  SetCollectionLimitsResult\n> {\n  async transformArgs(\n    args: SetCollectionLimitsArguments,\n  ): Promise<TxBuildArguments> {\n    const {\n      address,\n      collectionId,\n      limits: { ...rest },\n    } = args;\n\n    const encodeRest = {\n      ...rest,\n      ...(rest.sponsoredDataRateLimit\n        ? {\n            sponsoredDataRateLimit: encodeSponsoredDataRateLimit(\n              this.sdk.api.registry,\n              rest.sponsoredDataRateLimit,\n            ),\n          }\n        : {}),\n    };\n\n    return {\n      address,\n      section: 'unique',\n      method: 'setCollectionLimits',\n      args: [collectionId, encodeRest],\n    };\n  }\n\n  async transformResult(\n    result: ISubmittableResult,\n  ): Promise<SetCollectionLimitsResult | undefined> {\n    const updateCollectionEvent = result.findRecord(\n      'unique',\n      'CollectionLimitSet',\n    );\n\n    if (!updateCollectionEvent) return undefined;\n\n    const [id] = updateCollectionEvent.event.data as unknown as [u32];\n\n    // todo this.sdk.api.rpc.unique.effectiveCollectionLimits -> this.sdk.collection.getCollectionLimits\n    const limitsWrap = await this.sdk.api.rpc.unique.effectiveCollectionLimits(\n      id.toNumber(),\n    );\n\n    const limitsUnWrap = limitsWrap.unwrapOr(null);\n    if (!limitsUnWrap) throw new NotFoundException(`error unwrap limits`);\n    const limits: CollectionLimits = decodeCollectionLimits(limitsUnWrap);\n\n    return {\n      collectionId: id.toNumber(),\n      limits,\n    };\n  }\n}\n","import '@unique-nft/unique-mainnet-types/augment-api';\n\nimport { Sdk } from '@unique-nft/sdk';\nimport { MutationMethodWrap, QueryMethod } from '@unique-nft/sdk/extrinsics';\n\nimport {\n  UnsignedTxPayload,\n  BurnCollectionArguments,\n  TransferCollectionArguments,\n} from '@unique-nft/sdk/types';\nimport { CreateCollectionExMutation } from './methods/create-collection-ex/method';\nimport { CreateCollectionArguments } from './methods/create-collection-ex/types';\nimport { GetCollectionLimitsResult } from './methods/effective-collection-limits/types';\nimport { collectionById } from './methods/collection-by-id/method';\nimport { effectiveCollectionLimits } from './methods/effective-collection-limits/method';\nimport {\n  CollectionIdArguments,\n  CollectionInfo,\n} from './methods/collection-by-id/types';\nimport {\n  SetCollectionLimitsArguments,\n  SetCollectionLimitsResult,\n} from './types';\nimport { SetCollectionLimitsMutation } from './methods/set-collection-limits/method';\n\nexport class SdkCollections {\n  constructor(readonly sdk: Sdk) {\n    this.get = collectionById.bind(this.sdk);\n    this.getLimits = effectiveCollectionLimits.bind(this.sdk);\n    this.creation = new CreateCollectionExMutation(this.sdk);\n    this.setLimits = new SetCollectionLimitsMutation(this.sdk);\n  }\n\n  get: QueryMethod<CollectionIdArguments, CollectionInfo>;\n\n  creation: MutationMethodWrap<\n    CreateCollectionArguments,\n    CollectionIdArguments\n  >;\n\n  getLimits: QueryMethod<CollectionIdArguments, GetCollectionLimitsResult>;\n\n  setLimits: MutationMethodWrap<\n    SetCollectionLimitsArguments,\n    SetCollectionLimitsResult\n  >;\n\n  transfer(args: TransferCollectionArguments): Promise<UnsignedTxPayload> {\n    return this.sdk.extrinsics.build({\n      address: args.from,\n      section: 'unique',\n      method: 'changeCollectionOwner',\n      args: [args.collectionId, args.to],\n    });\n  }\n\n  burn(args: BurnCollectionArguments): Promise<UnsignedTxPayload> {\n    return this.sdk.extrinsics.build({\n      address: args.address,\n      section: 'unique',\n      method: 'destroyCollection',\n      args: [args.collectionId],\n    });\n  }\n}\n","import { MutationMethodBase } from '@unique-nft/sdk/extrinsics';\nimport { ISubmittableResult, TxBuildArguments } from '@unique-nft/sdk/types';\nimport { u32 } from '@polkadot/types-codec';\nimport { NestTokenArguments, NestTokenResult } from './types';\nimport { getNestingTokenAddress } from '../../utils';\n\n/* eslint-disable class-methods-use-this */\n\nexport class NestTokenMutation extends MutationMethodBase<\n  NestTokenArguments,\n  NestTokenResult\n> {\n  async transformArgs(args: NestTokenArguments): Promise<TxBuildArguments> {\n    const { address, parent, nested } = args;\n\n    const from = {\n      Substrate: address,\n    };\n\n    const to = {\n      Ethereum: getNestingTokenAddress(parent.collectionId, parent.tokenId),\n    };\n\n    return {\n      address,\n      section: 'unique',\n      method: 'transferFrom',\n      args: [from, to, nested.collectionId, nested.tokenId, 1],\n    };\n  }\n\n  async transformResult(\n    result: ISubmittableResult,\n  ): Promise<NestTokenResult | undefined> {\n    const record = result.findRecord('common', 'Transfer');\n\n    if (!record) return undefined;\n\n    const [collectionId, tokenId] = record.event.data as unknown as [u32, u32];\n\n    return {\n      collectionId: collectionId.toNumber(),\n      tokenId: tokenId.toNumber(),\n    };\n  }\n}\n","import { MutationMethodBase } from '@unique-nft/sdk/extrinsics';\nimport { TxBuildArguments, ISubmittableResult } from '@unique-nft/sdk/types';\nimport { u32 } from '@polkadot/types-codec';\nimport { UnnestTokenArguments, UnnestTokenResult } from './types';\nimport { getNestingTokenAddress } from '../../utils';\n\n/* eslint-disable class-methods-use-this */\n\nexport class UnnestTokenMutation extends MutationMethodBase<\n  UnnestTokenArguments,\n  UnnestTokenResult\n> {\n  async transformArgs(args: UnnestTokenArguments): Promise<TxBuildArguments> {\n    const { address, parent, nested } = args;\n\n    const from = {\n      Ethereum: getNestingTokenAddress(parent.collectionId, parent.tokenId),\n    };\n\n    const to = {\n      Substrate: address,\n    };\n\n    return {\n      address,\n      section: 'unique',\n      method: 'transferFrom',\n      args: [from, to, nested.collectionId, nested.tokenId, 1],\n    };\n  }\n\n  async transformResult(\n    result: ISubmittableResult,\n  ): Promise<UnnestTokenResult | undefined> {\n    const record = result.findRecord('common', 'Transfer');\n\n    if (!record) return undefined;\n\n    const [collectionId, tokenId] = record.event.data as unknown as [u32, u32];\n\n    return {\n      collectionId: collectionId.toNumber(),\n      tokenId: tokenId.toNumber(),\n    };\n  }\n}\n","import { Sdk } from '@unique-nft/sdk';\nimport { QueryMethod } from '@unique-nft/sdk/extrinsics';\nimport { TokenChildrenArguments, TokenChildrenResult } from './types';\n\nasync function tokenChildren(\n  this: Sdk,\n  args: TokenChildrenArguments,\n): Promise<TokenChildrenResult | null> {\n  const tokenChildrenOption = await this.api.rpc.unique.tokenChildren(\n    args.collectionId,\n    args.tokenId,\n  );\n\n  const children = tokenChildrenOption.toHuman() as Array<{\n    token: string;\n    collection: string;\n  }>;\n\n  return children.map((child) => ({\n    collectionId: Number(child.collection),\n    tokenId: Number(child.token),\n  }));\n}\n\nexport const tokenChildrenQuery: QueryMethod<\n  TokenChildrenArguments,\n  TokenChildrenResult\n> = tokenChildren;\n","import { Sdk } from '@unique-nft/sdk';\nimport { QueryMethod } from '@unique-nft/sdk/extrinsics';\nimport { TokenParentArguments, TokenParentResult } from './types';\nimport {\n  getTokenIdFromNestingAddress,\n  getCollectionIdFromNestingAddress,\n  isNestingAddress,\n} from '../../utils';\n\nasync function tokenParent(\n  this: Sdk,\n  args: TokenParentArguments,\n): Promise<TokenParentResult | null> {\n  const tokenOwnerOption = await this.api.rpc.unique.tokenOwner(\n    args.collectionId,\n    args.tokenId,\n  );\n\n  const unwrap = tokenOwnerOption.unwrapOr(null);\n\n  if (unwrap === null) return null;\n\n  if (!unwrap.isEthereum) return null;\n\n  const address = unwrap.asEthereum.toString();\n\n  if (!isNestingAddress(address)) return null;\n\n  const collectionId = getCollectionIdFromNestingAddress(address);\n  const tokenId = getTokenIdFromNestingAddress(address);\n\n  return {\n    address,\n    collectionId,\n    tokenId,\n  };\n}\n\nexport const tokenParentQuery: QueryMethod<\n  TokenParentArguments,\n  TokenParentResult\n> = tokenParent;\n","import { Sdk } from '@unique-nft/sdk';\nimport { QueryMethod } from '@unique-nft/sdk/extrinsics';\nimport { TopmostTokenOwnerArguments, TopmostTokenOwnerResult } from './types';\n\nasync function topmostTokenOwner(\n  this: Sdk,\n  args: TopmostTokenOwnerArguments,\n): Promise<TopmostTokenOwnerResult | null> {\n  const topmostTokenOwnerOption = args.blockHashAt\n    ? await this.api.rpc.unique.topmostTokenOwner(\n        args.collectionId,\n        args.tokenId,\n        args.blockHashAt,\n      )\n    : await this.api.rpc.unique.topmostTokenOwner(\n        args.collectionId,\n        args.tokenId,\n      );\n\n  const result = topmostTokenOwnerOption.unwrapOr(null);\n\n  if (result === null) return null;\n\n  if (!result.isSubstrate) return null;\n\n  return result.asSubstrate.toString();\n}\n\nexport const topmostTokenOwnerQuery: QueryMethod<\n  TopmostTokenOwnerArguments,\n  TopmostTokenOwnerResult\n> = topmostTokenOwner;\n","import '@unique-nft/unique-mainnet-types/augment-api';\n\nimport { MutationMethodWrap, QueryMethod } from '@unique-nft/sdk/extrinsics';\nimport type {\n  UnsignedTxPayload,\n  TokenInfo,\n  CreateTokenArguments,\n} from '@unique-nft/sdk/types';\nimport { UpDataStructsTokenData } from '@unique-nft/unique-mainnet-types';\nimport { Sdk } from '@unique-nft/sdk';\nimport { decodeToken } from './utils/decode-token';\nimport { encodeToken } from './utils/encode-token';\nimport { NestTokenMutation } from './methods/nest-token';\nimport { UnnestTokenMutation } from './methods/unnest-token';\nimport { tokenChildrenQuery } from './methods/token-children';\nimport { tokenParentQuery } from './methods/token-parent';\nimport { topmostTokenOwnerQuery } from './methods/topmost-token-owner';\nimport {\n  BurnTokenArguments,\n  NestTokenArguments,\n  NestTokenResult,\n  TokenChildrenArguments,\n  TokenChildrenResult,\n  TokenIdArguments,\n  TransferTokenArguments,\n  UnnestTokenArguments,\n  UnnestTokenResult,\n  TokenParentArguments,\n  TokenParentResult,\n  TopmostTokenOwnerArguments,\n  TopmostTokenOwnerResult,\n} from './types';\n\nexport class SdkTokens {\n  constructor(readonly sdk: Sdk) {\n    this.nest = new NestTokenMutation(this.sdk);\n    this.unnest = new UnnestTokenMutation(this.sdk);\n    this.children = tokenChildrenQuery.bind(this.sdk);\n    this.parent = tokenParentQuery.bind(this.sdk);\n    this.topmostOwner = topmostTokenOwnerQuery.bind(this.sdk);\n  }\n\n  nest: MutationMethodWrap<NestTokenArguments, NestTokenResult>;\n\n  unnest: MutationMethodWrap<UnnestTokenArguments, UnnestTokenResult>;\n\n  children: QueryMethod<TokenChildrenArguments, TokenChildrenResult>;\n\n  parent: QueryMethod<TokenParentArguments, TokenParentResult>;\n\n  topmostOwner: QueryMethod<\n    TopmostTokenOwnerArguments,\n    TopmostTokenOwnerResult\n  >;\n\n  async get({\n    collectionId,\n    tokenId,\n  }: TokenIdArguments): Promise<TokenInfo | null> {\n\n    const collection = await this.sdk.collections.get({ collectionId });\n\n    if (!collection) return null;\n\n    const exists = await this.sdk.api.rpc.unique.tokenExists(collectionId, tokenId);\n\n    if (!exists.toHuman()) {\n      return null;\n    }\n\n    const tokenData: UpDataStructsTokenData =\n      await this.sdk.api.rpc.unique.tokenData(collectionId, tokenId);\n\n    if (!tokenData) return null;\n\n    let owner = null;\n    if (!(tokenData.owner.value.toHuman() as any)) {\n      owner = await this.sdk.api.rpc.unique.tokenOwner(collectionId, tokenId);\n    }\n\n    const tokenDataWithOwner = owner ? { ...tokenData, ...owner } : tokenData;\n\n    return decodeToken(\n      collection,\n      tokenId,\n      tokenDataWithOwner as UpDataStructsTokenData,\n    );\n  }\n\n  async create(args: CreateTokenArguments): Promise<UnsignedTxPayload> {\n    const { address, owner, collectionId, constData } = args;\n\n    const collection = await this.sdk.collections.get({ collectionId });\n\n    if (!collection) throw new Error(`no collection ${collectionId}`);\n\n    const { constOnChainSchema } = collection.properties;\n\n    const tokenPayload = encodeToken(constData, constOnChainSchema);\n\n    return this.sdk.extrinsics.build({\n      address,\n      section: 'unique',\n      method: 'createItem',\n      args: [collectionId, { substrate: owner || address }, tokenPayload],\n    });\n  }\n\n  transfer({\n    from,\n    to,\n    collectionId,\n    tokenId,\n  }: TransferTokenArguments): Promise<UnsignedTxPayload> {\n    return this.sdk.extrinsics.build({\n      address: from,\n      section: 'unique',\n      method: 'transfer',\n      args: [{ substrate: to }, collectionId, tokenId, 1],\n    });\n  }\n\n  burn({\n    address,\n    collectionId,\n    tokenId,\n  }: BurnTokenArguments): Promise<UnsignedTxPayload> {\n    return this.sdk.extrinsics.build({\n      address,\n      section: 'unique',\n      method: 'burnItem',\n      args: [collectionId, tokenId, 1],\n    });\n  }\n}\n","import { addFeature } from '@unique-nft/sdk';\nimport '@unique-nft/sdk/extrinsics';\n\nimport { SdkCollections } from './sdk-collections';\nimport { SdkTokens } from './sdk-tokens';\nimport './augment-sdk';\n\nexport {\n  encodeToken,\n  decodeToken,\n  encodeCollection,\n  decodeCollection,\n  getNestingTokenAddress,\n  isNestingAddress,\n  getCollectionIdFromNestingAddress,\n  getTokenIdFromNestingAddress,\n} from './utils';\nexport { SdkCollections } from './sdk-collections';\nexport { SdkTokens } from './sdk-tokens';\nexport * from './types';\n\naddFeature('collections', SdkCollections);\naddFeature('tokens', SdkTokens);\n"],"names":["TokenPropertiesKeys","u8aToHex","serializeConstData","decodeConstData","getTokenUrl","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","CollectionFieldTypes","ValidationError","Root","stringToUTF16","bytesToString","bytesToJson","utf16ToString","keccakAsHex","__objRest","MutationMethodBase","NotFoundException","addFeature"],"mappings":"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"}