export interface TokenPropertyPermission { mutable: boolean collectionAdmin: boolean tokenOwner: boolean } export interface TokenPropertyPermissionObject { key: string permission: TokenPropertyPermission } export interface CollectionParams { name: string description: string tokenPrefix: string mode?: { nft: null } access?: 'Normal' | 'AllowList' limits?: { accountTokenOwnershipLimit?: number | null ownerCanDestroy?: boolean | null ownerCanTransfer?: boolean | null sponsorApproveTimeout?: number | null sponsorTransferTimeout?: number | null sponsoredDataRateLimit?: number | null sponsoredDataSize?: number | null tokenLimit?: number | null transfersEnabled?: boolean | null } permissions?: { access?: 'Normal' | 'AllowList' mintMode?: boolean nesting?: { tokenOwner: boolean, collectionAdmin: boolean, restricted: Array } } tokenPropertyPermissions?: Array properties?: Array<{ key: string value: string }> } export interface Collection extends CollectionParams { id: number } export interface RawCollection extends Omit { name: number[] description: number[] properties: CollectionProperties } export type CollectionLimits = Required['limits'] export type CollectionPermissions = Required['permissions']> export type CollectionTokenPropertyPermissions = Required['tokenPropertyPermissions'] export type CollectionProperties = Required['properties'] export type CollectionSponsorship = 'Disabled' | { Confirmed: string } | { Unconfirmed: string } // export interface CollectionParamsWithVectorizedStrings extends Omit { // name: number[] // tokenPrefix: number[] // description: number[] // }