@wishknish/knishio-client-ts 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +425 -0
  3. package/dist/index.cjs +9961 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.iife.js +32241 -0
  6. package/dist/index.iife.js.map +1 -0
  7. package/dist/index.js +9853 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +113 -0
  10. package/src/AuthToken.ts +214 -0
  11. package/src/KnishIOClient.ts +2020 -0
  12. package/src/constants.ts +398 -0
  13. package/src/core/Atom.ts +646 -0
  14. package/src/core/AtomMeta.ts +278 -0
  15. package/src/core/Meta.ts +428 -0
  16. package/src/core/Molecule.ts +825 -0
  17. package/src/core/PolicyMeta.ts +130 -0
  18. package/src/core/TokenUnit.ts +148 -0
  19. package/src/core/Wallet.ts +467 -0
  20. package/src/exception/AtomIndexException.ts +97 -0
  21. package/src/exception/AtomsMissingException.ts +109 -0
  22. package/src/exception/AuthorizationRejectedException.ts +63 -0
  23. package/src/exception/BalanceInsufficientException.ts +58 -0
  24. package/src/exception/BaseException.ts +275 -0
  25. package/src/exception/BatchIdException.ts +58 -0
  26. package/src/exception/CodeException.ts +119 -0
  27. package/src/exception/DecryptionKeyException.ts +65 -0
  28. package/src/exception/InvalidResponseException.ts +112 -0
  29. package/src/exception/MetaMissingException.ts +58 -0
  30. package/src/exception/MolecularHashMismatchException.ts +115 -0
  31. package/src/exception/MolecularHashMissingException.ts +58 -0
  32. package/src/exception/NegativeAmountException.ts +58 -0
  33. package/src/exception/PolicyInvalidException.ts +58 -0
  34. package/src/exception/SignatureMalformedException.ts +58 -0
  35. package/src/exception/SignatureMismatchException.ts +98 -0
  36. package/src/exception/StackableUnitAmountException.ts +65 -0
  37. package/src/exception/StackableUnitDecimalsException.ts +65 -0
  38. package/src/exception/TransferBalanceException.ts +98 -0
  39. package/src/exception/TransferMalformedException.ts +58 -0
  40. package/src/exception/TransferMismatchedException.ts +58 -0
  41. package/src/exception/TransferRemainderException.ts +58 -0
  42. package/src/exception/TransferToSelfException.ts +58 -0
  43. package/src/exception/TransferUnbalancedException.ts +58 -0
  44. package/src/exception/UnauthenticatedException.ts +147 -0
  45. package/src/exception/WalletCredentialException.ts +108 -0
  46. package/src/exception/WalletShadowException.ts +65 -0
  47. package/src/exception/WrongTokenTypeException.ts +58 -0
  48. package/src/exception/index.ts +272 -0
  49. package/src/index.ts +512 -0
  50. package/src/instance/rules/Callback.ts +257 -0
  51. package/src/instance/rules/Condition.ts +96 -0
  52. package/src/instance/rules/Meta.ts +163 -0
  53. package/src/instance/rules/Rule.ts +29 -0
  54. package/src/instance/rules/exception/RuleArgumentException.ts +65 -0
  55. package/src/libraries/CheckMolecule.ts +581 -0
  56. package/src/libraries/Decimal.ts +94 -0
  57. package/src/libraries/Dot.ts +202 -0
  58. package/src/libraries/GraphQLClient.ts +276 -0
  59. package/src/libraries/Hex.ts +155 -0
  60. package/src/libraries/UrqlClientWrapper.ts +336 -0
  61. package/src/libraries/array.ts +91 -0
  62. package/src/libraries/crypto.ts +816 -0
  63. package/src/libraries/strings.ts +458 -0
  64. package/src/mutation/Mutation.ts +103 -0
  65. package/src/mutation/MutationActiveSession.ts +108 -0
  66. package/src/mutation/MutationClaimShadowWallet.ts +91 -0
  67. package/src/mutation/MutationCreateIdentifier.ts +86 -0
  68. package/src/mutation/MutationCreateMeta.ts +92 -0
  69. package/src/mutation/MutationCreateRule.ts +90 -0
  70. package/src/mutation/MutationCreateToken.ts +92 -0
  71. package/src/mutation/MutationCreateWallet.ts +78 -0
  72. package/src/mutation/MutationDepositBufferToken.ts +72 -0
  73. package/src/mutation/MutationLinkIdentifier.ts +87 -0
  74. package/src/mutation/MutationProposeMolecule.ts +147 -0
  75. package/src/mutation/MutationRequestAuthorization.ts +77 -0
  76. package/src/mutation/MutationRequestAuthorizationGuest.ts +85 -0
  77. package/src/mutation/MutationRequestTokens.ts +98 -0
  78. package/src/mutation/MutationTransferTokens.ts +87 -0
  79. package/src/mutation/MutationWithdrawBufferToken.ts +73 -0
  80. package/src/query/Query.ts +187 -0
  81. package/src/query/QueryActiveSession.ts +89 -0
  82. package/src/query/QueryAtom.ts +275 -0
  83. package/src/query/QueryBalance.ts +102 -0
  84. package/src/query/QueryBatch.ts +145 -0
  85. package/src/query/QueryBatchHistory.ts +86 -0
  86. package/src/query/QueryContinuId.ts +91 -0
  87. package/src/query/QueryMetaType.ts +177 -0
  88. package/src/query/QueryMetaTypeViaAtom.ts +199 -0
  89. package/src/query/QueryPolicy.ts +91 -0
  90. package/src/query/QueryToken.ts +90 -0
  91. package/src/query/QueryUserActivity.ts +153 -0
  92. package/src/query/QueryWalletBundle.ts +92 -0
  93. package/src/query/QueryWalletList.ts +106 -0
  94. package/src/response/EnhancedResponse.ts +345 -0
  95. package/src/response/Response.ts +254 -0
  96. package/src/response/ResponseActiveSession.ts +72 -0
  97. package/src/response/ResponseAtom.ts +132 -0
  98. package/src/response/ResponseAuthorizationGuest.ts +119 -0
  99. package/src/response/ResponseBalance.ts +153 -0
  100. package/src/response/ResponseClaimShadowWallet.ts +56 -0
  101. package/src/response/ResponseContinuId.ts +101 -0
  102. package/src/response/ResponseCreateIdentifier.ts +56 -0
  103. package/src/response/ResponseCreateMeta.ts +58 -0
  104. package/src/response/ResponseCreateRule.ts +56 -0
  105. package/src/response/ResponseCreateToken.ts +58 -0
  106. package/src/response/ResponseCreateWallet.ts +58 -0
  107. package/src/response/ResponseLinkIdentifier.ts +87 -0
  108. package/src/response/ResponseMetaBatch.ts +72 -0
  109. package/src/response/ResponseMetaType.ts +108 -0
  110. package/src/response/ResponseMetaTypeViaAtom.ts +108 -0
  111. package/src/response/ResponsePolicy.ts +90 -0
  112. package/src/response/ResponseProposeMolecule.ts +155 -0
  113. package/src/response/ResponseQueryActiveSession.ts +105 -0
  114. package/src/response/ResponseQueryUserActivity.ts +89 -0
  115. package/src/response/ResponseRequestAuthorization.ts +100 -0
  116. package/src/response/ResponseRequestAuthorizationGuest.ts +133 -0
  117. package/src/response/ResponseRequestTokens.ts +58 -0
  118. package/src/response/ResponseTransferTokens.ts +72 -0
  119. package/src/response/ResponseWalletBundle.ts +95 -0
  120. package/src/response/ResponseWalletList.ts +165 -0
  121. package/src/schemas/index.ts +457 -0
  122. package/src/subscribe/ActiveSessionSubscribe.ts +72 -0
  123. package/src/subscribe/ActiveWalletSubscribe.ts +99 -0
  124. package/src/subscribe/CreateMoleculeSubscribe.ts +106 -0
  125. package/src/subscribe/Subscribe.ts +182 -0
  126. package/src/subscribe/WalletStatusSubscribe.ts +70 -0
  127. package/src/subscribe/index.ts +59 -0
  128. package/src/types/assertions.ts +722 -0
  129. package/src/types/client.ts +567 -0
  130. package/src/types/crypto.ts +541 -0
  131. package/src/types/graphql.ts +630 -0
  132. package/src/types/guards.ts +659 -0
  133. package/src/types/index.ts +614 -0
  134. package/src/types/response.ts +133 -0
  135. package/src/types/template-literals.ts +382 -0
  136. package/src/validation/UNIVERSAL_CONFIGURATION_INTERFACES.ts +580 -0
  137. package/src/validation/ValidationService.ts +607 -0
  138. package/src/validation/schemas.ts +447 -0
  139. package/src/versions/HashAtom.ts +170 -0
  140. package/src/versions/Version4.ts +120 -0
  141. package/src/versions/index.ts +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/exception/BaseException.ts","../src/exception/WalletCredentialException.ts","../src/exception/AtomIndexException.ts","../src/exception/AtomsMissingException.ts","../src/exception/MolecularHashMismatchException.ts","../src/exception/SignatureMismatchException.ts","../src/exception/TransferBalanceException.ts","../src/exception/InvalidResponseException.ts","../src/exception/BalanceInsufficientException.ts","../src/exception/BatchIdException.ts","../src/exception/MetaMissingException.ts","../src/exception/MolecularHashMissingException.ts","../src/exception/NegativeAmountException.ts","../src/exception/PolicyInvalidException.ts","../src/exception/SignatureMalformedException.ts","../src/exception/TransferMalformedException.ts","../src/exception/TransferMismatchedException.ts","../src/exception/TransferRemainderException.ts","../src/exception/TransferToSelfException.ts","../src/exception/TransferUnbalancedException.ts","../src/exception/WrongTokenTypeException.ts","../src/exception/CodeException.ts","../src/exception/UnauthenticatedException.ts","../src/exception/AuthorizationRejectedException.ts","../src/exception/DecryptionKeyException.ts","../src/exception/StackableUnitAmountException.ts","../src/exception/StackableUnitDecimalsException.ts","../src/exception/WalletShadowException.ts","../src/exception/index.ts","../src/libraries/Dot.ts","../src/types/response.ts","../src/response/EnhancedResponse.ts","../src/response/Response.ts","../src/libraries/strings.ts","../src/libraries/crypto.ts","../src/constants.ts","../src/types/guards.ts","../src/core/Atom.ts","../src/core/Wallet.ts","../src/types/index.ts","../src/libraries/CheckMolecule.ts","../src/core/Meta.ts","../src/instance/rules/Rule.ts","../src/core/Molecule.ts","../src/core/AtomMeta.ts","../src/index.ts","../src/libraries/array.ts","../src/libraries/Decimal.ts","../src/libraries/GraphQLClient.ts","../src/query/Query.ts","../src/mutation/Mutation.ts","../src/validation/schemas.ts","../src/validation/ValidationService.ts","../src/validation/UNIVERSAL_CONFIGURATION_INTERFACES.ts","../src/response/ResponseBalance.ts","../src/query/QueryBalance.ts","../src/response/ResponseWalletList.ts","../src/core/TokenUnit.ts","../src/query/QueryWalletList.ts","../src/response/ResponseWalletBundle.ts","../src/query/QueryWalletBundle.ts","../src/response/ResponseContinuId.ts","../src/query/QueryContinuId.ts","../src/response/ResponseMetaType.ts","../src/query/QueryMetaType.ts","../src/query/QueryBatch.ts","../src/query/QueryBatchHistory.ts","../src/response/ResponseAtom.ts","../src/query/QueryAtom.ts","../src/response/ResponsePolicy.ts","../src/query/QueryPolicy.ts","../src/response/ResponseQueryActiveSession.ts","../src/query/QueryActiveSession.ts","../src/response/ResponseQueryUserActivity.ts","../src/query/QueryUserActivity.ts","../src/query/QueryToken.ts","../src/response/ResponseMetaTypeViaAtom.ts","../src/query/QueryMetaTypeViaAtom.ts","../src/response/ResponseProposeMolecule.ts","../src/mutation/MutationProposeMolecule.ts","../src/response/ResponseCreateToken.ts","../src/mutation/MutationCreateToken.ts","../src/response/ResponseRequestTokens.ts","../src/mutation/MutationRequestTokens.ts","../src/response/ResponseTransferTokens.ts","../src/mutation/MutationTransferTokens.ts","../src/response/ResponseCreateWallet.ts","../src/mutation/MutationCreateWallet.ts","../src/response/ResponseClaimShadowWallet.ts","../src/mutation/MutationClaimShadowWallet.ts","../src/response/ResponseCreateMeta.ts","../src/mutation/MutationCreateMeta.ts","../src/response/ResponseCreateRule.ts","../src/mutation/MutationCreateRule.ts","../src/response/ResponseCreateIdentifier.ts","../src/mutation/MutationCreateIdentifier.ts","../src/response/ResponseActiveSession.ts","../src/mutation/MutationActiveSession.ts","../src/mutation/MutationDepositBufferToken.ts","../src/mutation/MutationWithdrawBufferToken.ts","../src/response/ResponseRequestAuthorization.ts","../src/mutation/MutationRequestAuthorization.ts","../src/response/ResponseRequestAuthorizationGuest.ts","../src/mutation/MutationRequestAuthorizationGuest.ts","../src/response/ResponseLinkIdentifier.ts","../src/mutation/MutationLinkIdentifier.ts","../src/subscribe/Subscribe.ts","../src/subscribe/CreateMoleculeSubscribe.ts","../src/subscribe/WalletStatusSubscribe.ts","../src/subscribe/ActiveWalletSubscribe.ts","../src/subscribe/ActiveSessionSubscribe.ts","../src/KnishIOClient.ts","../src/AuthToken.ts","../src/core/PolicyMeta.ts"],"names":["BaseException","WalletCredentialException","AtomIndexException","AtomsMissingException","MolecularHashMismatchException","SignatureMismatchException","TransferBalanceException","InvalidResponseException","ExceptionFactory","EXCEPTION_TYPES","EXCEPTION_CODES","Dot","z","Response","JsSHA","charsetBaseConvert","isWalletAddress","isPosition","ml_kem768","total","cacheExchange","fetchExchange","createWSClient","subscriptionExchange","createClient","pipe","subscribe","ISOTOPES","gql"],"mappings":"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","file":"index.cjs","sourcesContent":["/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Base exception class for all KnishIO SDK errors\n * Provides enhanced error handling with context and type safety\n */\n\nimport type { KnishIOErrorType, ErrorContext } from '@/types'\n\nexport interface BaseExceptionOptions {\n message?: string\n cause?: Error | unknown\n context?: ErrorContext\n code?: string\n details?: Record<string, unknown>\n}\n\n/**\n * Base exception class that all KnishIO SDK exceptions extend\n * Maintains compatibility with JavaScript SDK while adding TypeScript enhancements\n */\nexport default class BaseException extends Error {\n public readonly type: KnishIOErrorType\n public readonly context: ErrorContext | null\n public readonly code: string | null\n public readonly details: Record<string, unknown> | null\n public readonly timestamp: number\n\n constructor(\n type: KnishIOErrorType,\n message: string,\n options: BaseExceptionOptions = {}\n ) {\n super(message)\n \n // Maintain compatibility with Error interface\n this.name = this.constructor.name\n \n // KnishIO specific properties\n this.type = type\n this.context = options.context || null\n this.code = options.code || null\n this.details = options.details || null\n this.timestamp = Date.now()\n \n // Preserve stack trace\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n \n // Chain the cause if provided\n if (options.cause) {\n this.cause = options.cause\n }\n }\n\n /**\n * Get human-readable error message with context\n */\n public getFullMessage(): string {\n let fullMessage = this.message\n \n if (this.context?.operation) {\n fullMessage += ` (Operation: ${this.context.operation})`\n }\n \n if (this.code) {\n fullMessage += ` [Code: ${this.code}]`\n }\n \n return fullMessage\n }\n\n /**\n * Get structured error data for logging/debugging\n */\n public toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n type: this.type,\n message: this.message,\n code: this.code,\n context: this.context,\n details: this.details,\n timestamp: this.timestamp,\n stack: this.stack\n }\n }\n\n /**\n * Check if this exception is of a specific type\n */\n public isType(type: KnishIOErrorType): boolean {\n return this.type === type\n }\n\n /**\n * Get error context for the specific parameter\n */\n public getContextValue(key: keyof ErrorContext): unknown {\n return this.context?.[key] || null\n }\n\n /**\n * Add additional context to the exception\n */\n public withContext(additionalContext: Partial<ErrorContext>): this {\n if (this.context) {\n Object.assign(this.context, additionalContext)\n }\n return this\n }\n\n /**\n * Static factory method for creating exceptions with full context\n */\n static create<T extends BaseException>(\n this: new (type: KnishIOErrorType, message: string, options?: BaseExceptionOptions) => T,\n type: KnishIOErrorType,\n message: string,\n options: BaseExceptionOptions = {}\n ): T {\n return new this(type, message, {\n ...options,\n context: {\n timestamp: Date.now(),\n ...(new Error().stack ? { stack: new Error().stack } : {}),\n ...options.context\n }\n })\n }\n\n /**\n * Check if an error is a KnishIO SDK exception\n */\n static isKnishIOException(error: unknown): error is BaseException {\n return error instanceof BaseException\n }\n\n /**\n * Extract error type from any error\n */\n static getErrorType(error: unknown): KnishIOErrorType | null {\n if (BaseException.isKnishIOException(error)) {\n return error.type\n }\n return null\n }\n\n /**\n * Convert any error to a KnishIO exception\n */\n static fromError(\n error: Error | unknown,\n type: KnishIOErrorType = 'CODE_ERROR',\n additionalContext?: Partial<ErrorContext>\n ): BaseException {\n if (BaseException.isKnishIOException(error)) {\n return error\n }\n\n const message = error instanceof Error ? error.message : String(error)\n const stack = error instanceof Error ? error.stack : undefined\n\n return new BaseException(type, message, {\n cause: error,\n context: {\n timestamp: Date.now(),\n ...(stack ? { stack } : {}),\n ...additionalContext\n }\n })\n }\n}\n\n// =============================================================================\n// TYPE GUARDS AND UTILITY FUNCTIONS\n// =============================================================================\n\n/**\n * Type guard to check if an error is a specific KnishIO exception type\n */\nexport function isKnishIOError<T extends BaseException>(\n error: unknown,\n ExceptionClass: new (...args: any[]) => T\n): error is T {\n return error instanceof ExceptionClass\n}\n\n/**\n * Type guard to check if an error has a specific error type\n */\nexport function hasErrorType(error: unknown, type: KnishIOErrorType): error is BaseException {\n return BaseException.isKnishIOException(error) && error.type === type\n}\n\n/**\n * Extract error message from any error-like object\n */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message\n }\n if (typeof error === 'string') {\n return error\n }\n if (error && typeof error === 'object' && 'message' in error) {\n return String((error as { message: unknown }).message)\n }\n return 'Unknown error'\n}\n\n/**\n * Create error context for operations\n */\nexport function createErrorContext(\n operation: string,\n parameters: Record<string, unknown> = {},\n additionalContext: Partial<ErrorContext> = {}\n): ErrorContext {\n const stack = new Error().stack\n return {\n operation,\n parameters,\n timestamp: Date.now(),\n ...(stack ? { stack } : {}),\n ...additionalContext\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when wallet credentials are invalid or compromised\n * Used for wallet authentication and authorization failures\n */\nexport default class WalletCredentialException extends BaseException {\n constructor(message = 'Invalid wallet credentials', options: BaseExceptionOptions = {}) {\n super('WALLET_CREDENTIAL_ERROR', message, options)\n }\n\n /**\n * Factory method for invalid secret\n */\n static invalidSecret(): WalletCredentialException {\n return new WalletCredentialException(\n 'Wallet secret is invalid or corrupted',\n {\n code: 'INVALID_SECRET'\n }\n )\n }\n\n /**\n * Factory method for missing credentials\n */\n static missingCredentials(): WalletCredentialException {\n return new WalletCredentialException(\n 'Wallet credentials are required but not provided',\n {\n code: 'MISSING_CREDENTIALS'\n }\n )\n }\n\n /**\n * Factory method for expired credentials\n */\n static credentialsExpired(): WalletCredentialException {\n return new WalletCredentialException(\n 'Wallet credentials have expired',\n {\n code: 'CREDENTIALS_EXPIRED'\n }\n )\n }\n\n /**\n * Factory method for bundle mismatch\n */\n static bundleMismatch(expected: string, actual: string): WalletCredentialException {\n return new WalletCredentialException(\n `Wallet bundle mismatch: expected ${expected.substring(0, 16)}..., got ${actual.substring(0, 16)}...`,\n {\n details: { expected: expected.substring(0, 16) + '...', actual: actual.substring(0, 16) + '...' },\n code: 'BUNDLE_MISMATCH'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when atom indexing is invalid or conflicts\n * Used in molecular composition when atom indices are incorrect\n */\nexport default class AtomIndexException extends BaseException {\n constructor(message = 'Invalid atom index', options: BaseExceptionOptions = {}) {\n super('ATOM_INDEX_ERROR', message, options)\n }\n\n /**\n * Factory method for index conflicts\n */\n static indexConflict(index: number, existingIndex: number): AtomIndexException {\n return new AtomIndexException(\n `Atom index ${index} conflicts with existing index ${existingIndex}`,\n {\n details: { index, existingIndex },\n code: 'INDEX_CONFLICT'\n }\n )\n }\n\n /**\n * Factory method for out-of-range indices\n */\n static indexOutOfRange(index: number, maxIndex: number): AtomIndexException {\n return new AtomIndexException(\n `Atom index ${index} is out of range (max: ${maxIndex})`,\n {\n details: { index, maxIndex },\n code: 'INDEX_OUT_OF_RANGE'\n }\n )\n }\n\n /**\n * Factory method for missing required index\n */\n static missingIndex(): AtomIndexException {\n return new AtomIndexException(\n 'Atom index is required but not provided',\n {\n code: 'INDEX_MISSING'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when required atoms are missing from a molecule\n * Used in molecular validation and composition\n */\nexport default class AtomsMissingException extends BaseException {\n constructor(message = 'Required atoms are missing', options: BaseExceptionOptions = {}) {\n super('ATOMS_MISSING_ERROR', message, options)\n }\n\n /**\n * Factory method for empty molecule\n */\n static emptyMolecule(): AtomsMissingException {\n return new AtomsMissingException(\n 'Molecule cannot be empty - at least one atom is required',\n {\n code: 'EMPTY_MOLECULE'\n }\n )\n }\n\n /**\n * Factory method for missing isotope-specific atoms\n */\n static missingIsotope(isotope: string): AtomsMissingException {\n return new AtomsMissingException(\n `Missing required ${isotope} isotope atoms`,\n {\n details: { isotope },\n code: 'MISSING_ISOTOPE'\n }\n )\n }\n\n /**\n * Factory method for missing remainder atoms\n */\n static missingRemainder(expectedCount: number, actualCount: number): AtomsMissingException {\n return new AtomsMissingException(\n `Missing remainder atoms: expected ${expectedCount}, found ${actualCount}`,\n {\n details: { expectedCount, actualCount },\n code: 'MISSING_REMAINDER'\n }\n )\n }\n\n /**\n * Factory method for missing value atoms in transfers\n */\n static missingValueAtoms(): AtomsMissingException {\n return new AtomsMissingException(\n 'Transfer molecules must contain value (V) atoms',\n {\n code: 'MISSING_VALUE_ATOMS'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when molecular hash validation fails\n * Critical for cross-SDK compatibility and transaction integrity\n */\nexport default class MolecularHashMismatchException extends BaseException {\n constructor(message = 'Molecular hash mismatch', options: BaseExceptionOptions = {}) {\n super('MOLECULAR_HASH_MISMATCH_ERROR', message, options)\n }\n\n /**\n * Factory method for hash mismatch with specific values\n */\n static hashMismatch(expected: string, actual: string): MolecularHashMismatchException {\n return new MolecularHashMismatchException(\n `Molecular hash mismatch: expected '${expected}', got '${actual}'`,\n {\n details: { expected, actual },\n code: 'HASH_MISMATCH'\n }\n )\n }\n\n /**\n * Factory method for invalid hash format\n */\n static invalidFormat(hash: string): MolecularHashMismatchException {\n return new MolecularHashMismatchException(\n `Invalid molecular hash format: '${hash}'`,\n {\n details: { hash },\n code: 'INVALID_FORMAT'\n }\n )\n }\n\n /**\n * Factory method for cross-platform compatibility issues\n */\n static crossPlatformMismatch(\n sdk: string,\n expectedHash: string,\n actualHash: string\n ): MolecularHashMismatchException {\n return new MolecularHashMismatchException(\n `Cross-platform hash mismatch with ${sdk} SDK: expected '${expectedHash}', got '${actualHash}'`,\n {\n details: { sdk, expectedHash, actualHash },\n code: 'CROSS_PLATFORM_MISMATCH'\n }\n )\n }\n\n /**\n * Factory method for atom integrity issues\n */\n static atomIntegrityFailure(atomIndex: number): MolecularHashMismatchException {\n return new MolecularHashMismatchException(\n `Molecular hash integrity failure at atom ${atomIndex}`,\n {\n details: { atomIndex },\n code: 'ATOM_INTEGRITY_FAILURE'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when signature verification fails\n * Critical for quantum-resistant cryptographic operations\n */\nexport default class SignatureMismatchException extends BaseException {\n constructor(message = 'Signature verification failed', options: BaseExceptionOptions = {}) {\n super('SIGNATURE_MISMATCH_ERROR', message, options)\n }\n\n /**\n * Factory method for signature verification failure\n */\n static verificationFailed(publicKey: string, signature: string): SignatureMismatchException {\n return new SignatureMismatchException(\n `Signature verification failed for public key: ${publicKey.substring(0, 16)}...`,\n {\n details: { publicKey, signature: signature.substring(0, 32) + '...' },\n code: 'VERIFICATION_FAILED'\n }\n )\n }\n\n /**\n * Factory method for OTS signature verification failure\n */\n static otsVerificationFailed(fragmentIndex: number): SignatureMismatchException {\n return new SignatureMismatchException(\n `OTS signature verification failed at fragment ${fragmentIndex}`,\n {\n details: { fragmentIndex },\n code: 'OTS_VERIFICATION_FAILED'\n }\n )\n }\n\n /**\n * Factory method for cross-platform signature compatibility issues\n */\n static crossPlatformMismatch(sdk: string): SignatureMismatchException {\n return new SignatureMismatchException(\n `Signature verification failed due to cross-platform incompatibility with ${sdk}`,\n {\n details: { sdk },\n code: 'CROSS_PLATFORM_MISMATCH'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when token transfer balance validation fails\n * Used to ensure transfers maintain proper balance accounting\n */\nexport default class TransferBalanceException extends BaseException {\n constructor(message = 'Transfer balance validation failed', options: BaseExceptionOptions = {}) {\n super('TRANSFER_BALANCE_ERROR', message, options)\n }\n\n /**\n * Factory method for insufficient balance\n */\n static insufficientBalance(required: string, available: string): TransferBalanceException {\n return new TransferBalanceException(\n `Insufficient balance: required ${required}, available ${available}`,\n {\n details: { required, available },\n code: 'INSUFFICIENT_BALANCE'\n }\n )\n }\n\n /**\n * Factory method for negative balance result\n */\n static negativeBalance(balance: string): TransferBalanceException {\n return new TransferBalanceException(\n `Transfer would result in negative balance: ${balance}`,\n {\n details: { balance },\n code: 'NEGATIVE_BALANCE'\n }\n )\n }\n\n /**\n * Factory method for balance calculation errors\n */\n static calculationError(operation: string, details?: Record<string, unknown>): TransferBalanceException {\n return new TransferBalanceException(\n `Balance calculation error during ${operation}`,\n {\n details: { operation, ...details },\n code: 'CALCULATION_ERROR'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * Exception thrown when GraphQL responses are invalid or malformed\n * Used for API communication error handling\n */\nexport default class InvalidResponseException extends BaseException {\n constructor(message = 'Invalid response received', options: BaseExceptionOptions = {}) {\n super('INVALID_RESPONSE_ERROR', message, options)\n }\n\n /**\n * Factory method for malformed JSON responses\n */\n static malformedJson(error: string): InvalidResponseException {\n return new InvalidResponseException(\n `Malformed JSON response: ${error}`,\n {\n details: { parseError: error },\n code: 'MALFORMED_JSON'\n }\n )\n }\n\n /**\n * Factory method for GraphQL errors\n */\n static graphqlError(errors: Array<{ message: string }>): InvalidResponseException {\n const errorMessages = errors.map(err => err.message).join(', ')\n return new InvalidResponseException(\n `GraphQL errors: ${errorMessages}`,\n {\n details: { errors },\n code: 'GRAPHQL_ERROR'\n }\n )\n }\n\n /**\n * Factory method for missing response data\n */\n static missingData(operation: string): InvalidResponseException {\n return new InvalidResponseException(\n `Response missing data for operation: ${operation}`,\n {\n details: { operation },\n code: 'MISSING_DATA'\n }\n )\n }\n\n /**\n * Factory method for network/HTTP errors\n */\n static networkError(statusCode: number, statusText: string): InvalidResponseException {\n return new InvalidResponseException(\n `Network error: ${statusCode} ${statusText}`,\n {\n details: { statusCode, statusText },\n code: 'NETWORK_ERROR'\n }\n )\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when balance is insufficient for operation\n */\nexport default class BalanceInsufficientException extends BaseException {\n constructor(message = 'Insufficient balance for this operation') {\n super('BALANCE_INSUFFICIENT_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when batch ID validation fails\n */\nexport default class BatchIdException extends BaseException {\n constructor(message = 'Batch ID validation failed') {\n super('BATCH_ID_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when required metadata is missing from atoms or molecules\n */\nexport default class MetaMissingException extends BaseException {\n constructor(message = 'Required metadata is missing') {\n super('META_MISSING_ERROR', message)\n }\n}\n","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when molecular hash is missing\n */\nexport default class MolecularHashMissingException extends BaseException {\n constructor(message = 'Molecular hash is missing') {\n super('MOLECULAR_HASH_MISSING_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when amount must be positive but is negative\n */\nexport default class NegativeAmountException extends BaseException {\n constructor(message = 'Amount must be positive') {\n super('NEGATIVE_AMOUNT_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when policy validation fails\n */\nexport default class PolicyInvalidException extends BaseException {\n constructor(message = 'Policy validation failed') {\n super('POLICY_INVALID_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when signature format is invalid\n */\nexport default class SignatureMalformedException extends BaseException {\n constructor(message = 'Signature is malformed') {\n super('SIGNATURE_MALFORMED_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when transfer structure is malformed\n */\nexport default class TransferMalformedException extends BaseException {\n constructor(message = 'Transfer is malformed') {\n super('TRANSFER_MALFORMED_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when transfer tokens don't match\n */\nexport default class TransferMismatchedException extends BaseException {\n constructor(message = 'Transfer tokens do not match') {\n super('TRANSFER_MISMATCHED_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when transfer remainder is invalid\n */\nexport default class TransferRemainderException extends BaseException {\n constructor(message = 'Transfer remainder validation failed') {\n super('TRANSFER_REMAINDER_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when attempting to transfer to self\n */\nexport default class TransferToSelfException extends BaseException {\n constructor(message = 'Cannot transfer to the same wallet') {\n super('TRANSFER_TO_SELF_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when transfer atoms don't sum to zero\n */\nexport default class TransferUnbalancedException extends BaseException {\n constructor(message = 'Transfer atoms must sum to zero') {\n super('TRANSFER_UNBALANCED_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Exception thrown when token type is invalid for operation\n */\nexport default class WrongTokenTypeException extends BaseException {\n constructor(message = 'Wrong token type for this operation') {\n super('WRONG_TOKEN_TYPE_ERROR', message)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * CodeException - Thrown when there are code-related issues\n * Used for general application logic errors\n */\nexport default class CodeException extends BaseException {\n public readonly errorType: string = 'CODE_ERROR'\n\n constructor(message: string, options: BaseExceptionOptions = {}) {\n super('CODE_ERROR', message, {\n code: 'CODE_ERROR',\n ...options\n })\n }\n\n /**\n * Create exception for general code errors\n */\n static codeError(message: string, context?: Record<string, unknown>): CodeException {\n return new CodeException(message, {\n code: 'CODE_ERROR',\n ...(context ? { context } : {})\n })\n }\n\n /**\n * Create exception for validation errors\n */\n static validationError(field: string, value: unknown, context?: Record<string, unknown>): CodeException {\n return new CodeException(`Validation failed for field '${field}' with value: ${value}`, {\n code: 'VALIDATION_ERROR',\n context: {\n operation: 'validation',\n parameters: {\n field,\n value,\n ...context\n }\n }\n })\n }\n\n /**\n * Create exception for configuration errors\n */\n static configurationError(message: string, context?: Record<string, unknown>): CodeException {\n return new CodeException(`Configuration error: ${message}`, {\n code: 'CONFIGURATION_ERROR',\n ...(context ? { context } : {})\n })\n }\n\n /**\n * Create exception for operation failures\n */\n static operationFailed(operation: string, reason?: string, context?: Record<string, unknown>): CodeException {\n const message = reason \n ? `Operation '${operation}' failed: ${reason}`\n : `Operation '${operation}' failed`\n \n return new CodeException(message, {\n code: 'OPERATION_FAILED',\n context: {\n operation,\n ...(reason ? { reason } : {}),\n ...context\n }\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException, { type BaseExceptionOptions } from './BaseException'\n\n/**\n * UnauthenticatedException - Thrown when authentication is required but missing or invalid\n * Used for GraphQL operations that require valid authentication tokens\n */\nexport default class UnauthenticatedException extends BaseException {\n public readonly errorType: string = 'UNAUTHENTICATED_ERROR'\n\n constructor(message: string, options: BaseExceptionOptions = {}) {\n super('UNAUTHENTICATED_ERROR', message, options)\n }\n\n /**\n * Create exception for missing authentication\n */\n static missingAuth(operation?: string, context?: Record<string, unknown>): UnauthenticatedException {\n const message = operation \n ? `Authentication required for operation: ${operation}`\n : 'Authentication required'\n \n return new UnauthenticatedException(message, {\n code: 'MISSING_AUTH',\n context: {\n ...(operation ? { operation } : {}),\n ...context\n }\n })\n }\n\n /**\n * Create exception for expired tokens\n */\n static tokenExpired(expiresAt?: number, context?: Record<string, unknown>): UnauthenticatedException {\n const message = expiresAt \n ? `Authentication token expired at ${new Date(expiresAt * 1000).toISOString()}`\n : 'Authentication token expired'\n \n return new UnauthenticatedException(message, {\n code: 'TOKEN_EXPIRED',\n context: {\n ...(expiresAt ? { expiresAt } : {}),\n ...(expiresAt ? { expiredAt: new Date(expiresAt * 1000).toISOString() } : {}),\n ...context\n }\n })\n }\n\n /**\n * Create exception for invalid tokens\n */\n static invalidToken(reason?: string, context?: Record<string, unknown>): UnauthenticatedException {\n const message = reason \n ? `Invalid authentication token: ${reason}`\n : 'Invalid authentication token'\n \n return new UnauthenticatedException(message, {\n code: 'INVALID_TOKEN',\n context: {\n ...(reason ? { reason } : {}),\n ...context\n }\n })\n }\n\n /**\n * Create exception for rejected authentication\n */\n static authenticationRejected(reason?: string, context?: Record<string, unknown>): UnauthenticatedException {\n const message = reason \n ? `Authentication rejected: ${reason}`\n : 'Authentication rejected by server'\n \n return new UnauthenticatedException(message, {\n code: 'AUTHENTICATION_REJECTED',\n context: {\n ...(reason ? { reason } : {}),\n ...context\n }\n })\n }\n\n /**\n * Create exception for missing credentials\n */\n static missingCredentials(credentialType?: string, context?: Record<string, unknown>): UnauthenticatedException {\n const message = credentialType \n ? `Missing required credential: ${credentialType}`\n : 'Missing required authentication credentials'\n \n return new UnauthenticatedException(message, {\n code: 'MISSING_CREDENTIALS',\n context: {\n ...(credentialType ? { credentialType } : {}),\n ...context\n }\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Thrown when attempt to authorize is rejected by the node\n */\nexport class AuthorizationRejectedException extends BaseException {\n /**\n * Constructor\n */\n constructor(message: string = 'Authorization attempt rejected by ledger.') {\n super('AUTHORIZATION_REJECTED_ERROR', message)\n }\n}\n\nexport default AuthorizationRejectedException","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Decryption key exception - thrown when decryption fails\n */\nexport class DecryptionKeyException extends BaseException {\n /**\n * Constructor using proper error type\n */\n constructor(\n message: string = 'The decryption key was not valid for the given message.'\n ) {\n super('DECRYPTION_KEY_ERROR', message)\n }\n}\n\nexport default DecryptionKeyException","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Thrown when a stackable token is being transferred with both unit IDs AND an amount specified (ambiguous)\n */\nexport class StackableUnitAmountException extends BaseException {\n /**\n * Constructor using proper error type\n */\n constructor(\n message: string = 'Stackable tokens with unit IDs cannot have an amount!'\n ) {\n super('STACKABLE_UNIT_AMOUNT_ERROR', message)\n }\n}\n\nexport default StackableUnitAmountException","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Thrown when a stackable token is being created with units and non-zero decimals\n */\nexport class StackableUnitDecimalsException extends BaseException {\n /**\n * Constructor using proper error type\n */\n constructor(\n message: string = 'Stackable tokens with unit IDs cannot have decimal places!'\n ) {\n super('STACKABLE_UNIT_DECIMALS_ERROR', message)\n }\n}\n\nexport default StackableUnitDecimalsException","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport BaseException from './BaseException'\n\n/**\n * Thrown when failing to retrieve shadow wallets\n */\nexport class WalletShadowException extends BaseException {\n /**\n * Constructor using proper error type\n */\n constructor(\n message: string = 'The shadow wallet does not exist'\n ) {\n super('WALLET_SHADOW_ERROR', message)\n }\n}\n\nexport default WalletShadowException","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Complete KnishIO Exception System\n * Exports all 22 exception classes maintaining compatibility with JS SDK\n */\n\n// Base Exception\nexport { default as BaseException } from './BaseException'\nexport type { BaseExceptionOptions } from './BaseException'\n\n// Core exceptions (implemented)\nexport { default as AtomIndexException } from './AtomIndexException'\nexport { default as AtomsMissingException } from './AtomsMissingException'\nexport { default as MolecularHashMismatchException } from './MolecularHashMismatchException'\nexport { default as SignatureMismatchException } from './SignatureMismatchException'\nexport { default as TransferBalanceException } from './TransferBalanceException'\nexport { default as WalletCredentialException } from './WalletCredentialException'\nexport { default as InvalidResponseException } from './InvalidResponseException'\n\n// Additional exceptions (now implemented)\nexport { default as BalanceInsufficientException } from './BalanceInsufficientException' \nexport { default as BatchIdException } from './BatchIdException'\nexport { default as MetaMissingException } from './MetaMissingException'\nexport { default as MolecularHashMissingException } from './MolecularHashMissingException'\nexport { default as NegativeAmountException } from './NegativeAmountException'\nexport { default as PolicyInvalidException } from './PolicyInvalidException'\nexport { default as SignatureMalformedException } from './SignatureMalformedException'\nexport { default as TransferMalformedException } from './TransferMalformedException'\nexport { default as TransferMismatchedException } from './TransferMismatchedException'\nexport { default as TransferRemainderException } from './TransferRemainderException'\nexport { default as TransferToSelfException } from './TransferToSelfException'\nexport { default as TransferUnbalancedException } from './TransferUnbalancedException'\nexport { default as WrongTokenTypeException } from './WrongTokenTypeException'\n\n// Additional essential exceptions (now implemented)\nexport { default as CodeException } from './CodeException'\nexport { default as UnauthenticatedException } from './UnauthenticatedException'\n\n// Missing exceptions now implemented (Phase 1 complete)\nexport { default as AuthorizationRejectedException } from './AuthorizationRejectedException'\nexport { default as DecryptionKeyException } from './DecryptionKeyException'\nexport { default as StackableUnitAmountException } from './StackableUnitAmountException'\nexport { default as StackableUnitDecimalsException } from './StackableUnitDecimalsException'\nexport { default as WalletShadowException } from './WalletShadowException'\n\n// Utility functions and type guards\nexport { \n isKnishIOError, \n hasErrorType, \n getErrorMessage, \n createErrorContext \n} from './BaseException'\n\n// =============================================================================\n// EXCEPTION FACTORY FUNCTIONS\n// =============================================================================\n\nimport BaseException from './BaseException'\nimport AtomIndexException from './AtomIndexException'\nimport AtomsMissingException from './AtomsMissingException'\nimport MolecularHashMismatchException from './MolecularHashMismatchException'\nimport SignatureMismatchException from './SignatureMismatchException'\nimport TransferBalanceException from './TransferBalanceException'\nimport WalletCredentialException from './WalletCredentialException'\nimport InvalidResponseException from './InvalidResponseException'\n\n/**\n * Exception factory for creating typed exceptions\n */\nexport class ExceptionFactory {\n /**\n * Create AtomIndexException\n */\n static atomIndex = {\n indexConflict: AtomIndexException.indexConflict.bind(AtomIndexException),\n indexOutOfRange: AtomIndexException.indexOutOfRange.bind(AtomIndexException),\n missingIndex: AtomIndexException.missingIndex.bind(AtomIndexException)\n }\n\n /**\n * Create AtomsMissingException\n */\n static atomsMissing = {\n emptyMolecule: AtomsMissingException.emptyMolecule.bind(AtomsMissingException),\n missingIsotope: AtomsMissingException.missingIsotope.bind(AtomsMissingException),\n missingRemainder: AtomsMissingException.missingRemainder.bind(AtomsMissingException),\n missingValueAtoms: AtomsMissingException.missingValueAtoms.bind(AtomsMissingException)\n }\n\n /**\n * Create MolecularHashMismatchException\n */\n static molecularHashMismatch = {\n hashMismatch: MolecularHashMismatchException.hashMismatch.bind(MolecularHashMismatchException),\n invalidFormat: MolecularHashMismatchException.invalidFormat.bind(MolecularHashMismatchException),\n crossPlatformMismatch: MolecularHashMismatchException.crossPlatformMismatch.bind(MolecularHashMismatchException),\n atomIntegrityFailure: MolecularHashMismatchException.atomIntegrityFailure.bind(MolecularHashMismatchException)\n }\n\n /**\n * Create SignatureMismatchException\n */\n static signatureMismatch = {\n verificationFailed: SignatureMismatchException.verificationFailed.bind(SignatureMismatchException),\n otsVerificationFailed: SignatureMismatchException.otsVerificationFailed.bind(SignatureMismatchException),\n crossPlatformMismatch: SignatureMismatchException.crossPlatformMismatch.bind(SignatureMismatchException)\n }\n\n /**\n * Create TransferBalanceException\n */\n static transferBalance = {\n insufficientBalance: TransferBalanceException.insufficientBalance.bind(TransferBalanceException),\n negativeBalance: TransferBalanceException.negativeBalance.bind(TransferBalanceException),\n calculationError: TransferBalanceException.calculationError.bind(TransferBalanceException)\n }\n\n /**\n * Create WalletCredentialException\n */\n static walletCredential = {\n invalidSecret: WalletCredentialException.invalidSecret.bind(WalletCredentialException),\n missingCredentials: WalletCredentialException.missingCredentials.bind(WalletCredentialException),\n credentialsExpired: WalletCredentialException.credentialsExpired.bind(WalletCredentialException),\n bundleMismatch: WalletCredentialException.bundleMismatch.bind(WalletCredentialException)\n }\n\n /**\n * Create InvalidResponseException\n */\n static invalidResponse = {\n malformedJson: InvalidResponseException.malformedJson.bind(InvalidResponseException),\n graphqlError: InvalidResponseException.graphqlError.bind(InvalidResponseException),\n missingData: InvalidResponseException.missingData.bind(InvalidResponseException),\n networkError: InvalidResponseException.networkError.bind(InvalidResponseException)\n }\n\n /**\n * Convert any error to KnishIO exception\n */\n static fromError = BaseException.fromError.bind(BaseException)\n}\n\n// =============================================================================\n// EXCEPTION CONSTANTS\n// =============================================================================\n\n/**\n * Exception type constants for easy reference\n */\nexport const EXCEPTION_TYPES = {\n ATOM_INDEX_ERROR: 'ATOM_INDEX_ERROR',\n ATOMS_MISSING_ERROR: 'ATOMS_MISSING_ERROR',\n AUTHORIZATION_REJECTED_ERROR: 'AUTHORIZATION_REJECTED_ERROR',\n BALANCE_INSUFFICIENT_ERROR: 'BALANCE_INSUFFICIENT_ERROR',\n BATCH_ID_ERROR: 'BATCH_ID_ERROR',\n CODE_ERROR: 'CODE_ERROR',\n DECRYPTION_KEY_ERROR: 'DECRYPTION_KEY_ERROR',\n INVALID_RESPONSE_ERROR: 'INVALID_RESPONSE_ERROR',\n META_MISSING_ERROR: 'META_MISSING_ERROR',\n MOLECULAR_HASH_MISMATCH_ERROR: 'MOLECULAR_HASH_MISMATCH_ERROR',\n MOLECULAR_HASH_MISSING_ERROR: 'MOLECULAR_HASH_MISSING_ERROR',\n NEGATIVE_AMOUNT_ERROR: 'NEGATIVE_AMOUNT_ERROR',\n POLICY_INVALID_ERROR: 'POLICY_INVALID_ERROR',\n SIGNATURE_MALFORMED_ERROR: 'SIGNATURE_MALFORMED_ERROR',\n SIGNATURE_MISMATCH_ERROR: 'SIGNATURE_MISMATCH_ERROR',\n STACKABLE_UNIT_AMOUNT_ERROR: 'STACKABLE_UNIT_AMOUNT_ERROR',\n STACKABLE_UNIT_DECIMALS_ERROR: 'STACKABLE_UNIT_DECIMALS_ERROR',\n TRANSFER_BALANCE_ERROR: 'TRANSFER_BALANCE_ERROR',\n TRANSFER_MALFORMED_ERROR: 'TRANSFER_MALFORMED_ERROR',\n TRANSFER_MISMATCHED_ERROR: 'TRANSFER_MISMATCHED_ERROR',\n TRANSFER_REMAINDER_ERROR: 'TRANSFER_REMAINDER_ERROR',\n TRANSFER_TO_SELF_ERROR: 'TRANSFER_TO_SELF_ERROR',\n TRANSFER_UNBALANCED_ERROR: 'TRANSFER_UNBALANCED_ERROR',\n UNAUTHENTICATED_ERROR: 'UNAUTHENTICATED_ERROR',\n WALLET_CREDENTIAL_ERROR: 'WALLET_CREDENTIAL_ERROR',\n WALLET_SHADOW_ERROR: 'WALLET_SHADOW_ERROR',\n WRONG_TOKEN_TYPE_ERROR: 'WRONG_TOKEN_TYPE_ERROR'\n} as const\n\n/**\n * Exception code constants for common error scenarios\n */\nexport const EXCEPTION_CODES = {\n // Generic codes\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n VALIDATION_FAILED: 'VALIDATION_FAILED',\n OPERATION_FAILED: 'OPERATION_FAILED',\n \n // Atom-specific codes\n INDEX_CONFLICT: 'INDEX_CONFLICT',\n INDEX_OUT_OF_RANGE: 'INDEX_OUT_OF_RANGE',\n INDEX_MISSING: 'INDEX_MISSING',\n EMPTY_MOLECULE: 'EMPTY_MOLECULE',\n MISSING_ISOTOPE: 'MISSING_ISOTOPE',\n MISSING_REMAINDER: 'MISSING_REMAINDER',\n MISSING_VALUE_ATOMS: 'MISSING_VALUE_ATOMS',\n \n // Hash-specific codes\n HASH_MISMATCH: 'HASH_MISMATCH',\n INVALID_FORMAT: 'INVALID_FORMAT',\n CROSS_PLATFORM_MISMATCH: 'CROSS_PLATFORM_MISMATCH',\n ATOM_INTEGRITY_FAILURE: 'ATOM_INTEGRITY_FAILURE',\n \n // Signature-specific codes\n VERIFICATION_FAILED: 'VERIFICATION_FAILED',\n OTS_VERIFICATION_FAILED: 'OTS_VERIFICATION_FAILED',\n \n // Transfer-specific codes\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n NEGATIVE_BALANCE: 'NEGATIVE_BALANCE',\n CALCULATION_ERROR: 'CALCULATION_ERROR',\n \n // Wallet-specific codes\n INVALID_SECRET: 'INVALID_SECRET',\n MISSING_CREDENTIALS: 'MISSING_CREDENTIALS',\n CREDENTIALS_EXPIRED: 'CREDENTIALS_EXPIRED',\n BUNDLE_MISMATCH: 'BUNDLE_MISMATCH',\n \n // Response-specific codes\n MALFORMED_JSON: 'MALFORMED_JSON',\n GRAPHQL_ERROR: 'GRAPHQL_ERROR',\n MISSING_DATA: 'MISSING_DATA',\n NETWORK_ERROR: 'NETWORK_ERROR'\n} as const","/**\n * Utility class for accessing nested object properties using dot notation\n * Matches JavaScript SDK Dot class functionality exactly\n */\nexport default class Dot {\n private static arr: string[]\n private static key: string | number\n private static __nextKey: number\n private static __next: boolean\n\n /**\n * Initialize the Dot utility with the given object and key path\n * @param obj - The object or array to traverse\n * @param keys - The dot-notated string of keys\n * @private\n */\n private static __init(obj: any, keys: string): void {\n this.arr = String(keys).split('.')\n this.key = this.arr.shift() as string\n\n // Convert to number if the key is a valid integer\n const numberKey = Number(this.key)\n if (Number.isInteger(numberKey)) {\n this.key = numberKey\n }\n\n this.__nextKey = this.arr.length\n this.__next = this.__tic(obj)\n }\n\n /**\n * Check if the current key exists in the object\n * @param obj - The object or array to check\n * @return Whether the key exists\n * @private\n */\n private static __tic(obj: any): boolean {\n if (!Array.isArray(obj) && !(obj instanceof Object)) {\n return false\n }\n\n return typeof obj[this.key] !== 'undefined'\n }\n\n /**\n * Check if a nested property exists in an object using dot notation\n * @param obj - The object or array to search\n * @param keys - The path to the property, using dot notation\n * @return True if the property exists, false otherwise\n */\n static has(obj: any, keys: string): boolean {\n this.__init(obj, keys)\n\n if (!this.__next) {\n return false\n }\n\n if (this.__nextKey) {\n return this.has(obj[this.key], this.arr.join('.'))\n }\n\n return true\n }\n\n /**\n * Get a nested property from an object using dot notation\n * @param obj - The object or array to search\n * @param keys - The path to the property, using dot notation\n * @param defaultValue - The default value to return if the property doesn't exist\n * @return The value at the specified path, or defaultValue if not found\n */\n static get(obj: any, keys: string, defaultValue: any = null): any {\n this.__init(obj, keys)\n\n if (!this.__next) {\n return defaultValue\n }\n\n if (this.__nextKey) {\n return this.get(obj[this.key], this.arr.join('.'), defaultValue)\n }\n\n return obj[this.key]\n }\n\n /**\n * Set a nested property in an object using dot notation\n * @param obj - The object or array to modify\n * @param keys - The path to the property, using dot notation\n * @param value - The value to set\n * @return The modified object\n */\n static set(obj: any, keys: string, value: any): any {\n if (typeof obj !== 'object' || obj === null) {\n obj = {}\n }\n\n const keysArray = String(keys).split('.')\n let current = obj\n\n for (let i = 0; i < keysArray.length - 1; i++) {\n const key = keysArray[i]\n if (!key) continue // Skip undefined keys\n \n // Convert to number if valid integer\n const numberKey = Number(key)\n const actualKey: string | number = Number.isInteger(numberKey) ? numberKey : key\n\n if (!(actualKey in current) || typeof current[actualKey] !== 'object') {\n // Determine if next key is numeric to decide between array or object\n const nextKey = keysArray[i + 1]\n const nextNumberKey = Number(nextKey)\n current[actualKey] = Number.isInteger(nextNumberKey) ? [] : {}\n }\n\n current = current[actualKey]\n }\n\n const lastKey = keysArray[keysArray.length - 1]\n if (lastKey !== undefined) {\n const numberKey = Number(lastKey)\n const actualLastKey: string | number = Number.isInteger(numberKey) ? numberKey : lastKey\n current[actualLastKey] = value\n }\n\n return obj\n }\n\n /**\n * Delete a nested property from an object using dot notation\n * @param obj - The object or array to modify\n * @param keys - The path to the property, using dot notation\n * @return True if the property was deleted, false otherwise\n */\n static delete(obj: any, keys: string): boolean {\n if (!this.has(obj, keys)) {\n return false\n }\n\n const keysArray = String(keys).split('.')\n const lastKey = keysArray.pop() as string\n \n if (keysArray.length === 0) {\n const numberKey = Number(lastKey)\n const actualKey = Number.isInteger(numberKey) ? numberKey : lastKey\n delete obj[actualKey]\n return true\n }\n\n const parent = this.get(obj, keysArray.join('.'))\n if (parent && typeof parent === 'object') {\n const numberKey = Number(lastKey)\n const actualKey = Number.isInteger(numberKey) ? numberKey : lastKey\n delete parent[actualKey]\n return true\n }\n\n return false\n }\n\n /**\n * Flatten an object with nested properties into dot notation\n * @param obj - The object to flatten\n * @param prefix - The prefix for keys (used recursively)\n * @return A flattened object with dot-notation keys\n */\n static flatten(obj: any, prefix = ''): Record<string, any> {\n const result: Record<string, any> = {}\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key]\n const newKey = prefix ? `${prefix}.${key}` : key\n\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n Object.assign(result, this.flatten(value, newKey))\n } else {\n result[newKey] = value\n }\n }\n }\n\n return result\n }\n\n /**\n * Expand a flattened object with dot-notation keys back to nested structure\n * @param obj - The flattened object with dot-notation keys\n * @return The expanded nested object\n */\n static expand(obj: Record<string, any>): any {\n const result: any = {}\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n this.set(result, key, obj[key])\n }\n }\n\n return result\n }\n}","/*\n Enhanced Response Types for TypeScript SDK Gold Standard\n \n Implements comprehensive response interface with ValidationResult patterns,\n enhanced error handling, and functional programming support.\n*/\n\nimport { z } from 'zod'\n\n// Universal response interface matching JavaScript SDK pattern\nexport interface UniversalResponse<T> {\n success(): boolean // Operation success status\n payload(): T | null // Result data (typed)\n reason(): string | null // Error message/reason\n data(): any // Raw response data access\n}\n\n// Enhanced validation result pattern for TypeScript gold standard\nexport interface ValidationResult<T> {\n success: boolean\n data?: T\n error?: {\n message: string\n details?: string[]\n code?: string\n context?: Record<string, any>\n }\n warnings?: string[]\n}\n\n// Enhanced error information with detailed context\nexport interface ResponseError {\n message: string\n code?: string\n details?: any\n context?: string\n timestamp?: string\n operation?: string\n}\n\n// Response validation schemas for runtime type checking\nexport const ResponseErrorSchema = z.object({\n message: z.string(),\n code: z.string().optional(),\n details: z.any().optional(),\n context: z.string().optional(),\n timestamp: z.string().optional(),\n operation: z.string().optional()\n})\n\nexport const ValidationResultSchema = z.object({\n success: z.boolean(),\n data: z.any().optional(),\n error: ResponseErrorSchema.optional(),\n warnings: z.array(z.string()).optional()\n})\n\n// Enhanced response interface with functional programming support\nexport interface EnhancedResponse<T> extends UniversalResponse<T> {\n // Validation result conversion\n toValidationResult(): ValidationResult<T>\n \n // Functional programming combinators\n map<U>(mapper: (value: T) => U): EnhancedResponse<U>\n flatMap<U>(mapper: (value: T) => EnhancedResponse<U>): EnhancedResponse<U>\n filter(predicate: (value: T) => boolean): EnhancedResponse<T>\n \n // Error handling enhancements\n onSuccess(callback: (payload: T) => void): EnhancedResponse<T>\n onFailure(callback: (error: string) => void): EnhancedResponse<T>\n \n // Promise integration\n toPromise(): Promise<T>\n \n // Enhanced debugging\n debug(label?: string): EnhancedResponse<T>\n}\n\n// Configuration validation result for enhanced type safety\nexport interface ConfigValidationResult<T> extends ValidationResult<T> {\n originalConfig?: Record<string, any>\n validatedConfig?: T\n validationErrors?: Array<{\n field: string\n message: string\n received: any\n expected: string\n }>\n}\n\n// Response metadata for enhanced debugging and monitoring\nexport interface ResponseMetadata {\n timestamp: string\n operation: string\n duration?: number\n requestId?: string\n serverVersion?: string\n clientVersion: string\n}\n\n// Enhanced response type with comprehensive metadata\nexport interface StandardResponseWithMetadata<T> extends EnhancedResponse<T> {\n metadata(): ResponseMetadata\n correlationId(): string | null\n duration(): number | null\n}\n\n// Factory functions for consistent response creation\nexport interface ResponseFactory {\n success<T>(payload: T, metadata?: ResponseMetadata): EnhancedResponse<T>\n failure<T>(error: string | ResponseError, metadata?: ResponseMetadata): EnhancedResponse<T>\n fromValidationResult<T>(result: ValidationResult<T>, metadata?: ResponseMetadata): EnhancedResponse<T>\n}\n\n// Type guards for response type checking\nexport function isSuccessResponse<T>(response: EnhancedResponse<T>): response is EnhancedResponse<T> & { payload(): T } {\n return response.success() && response.payload() !== null\n}\n\nexport function isErrorResponse<T>(response: EnhancedResponse<T>): response is EnhancedResponse<T> & { reason(): string } {\n return !response.success() && response.reason() !== null\n}\n\n// Enhanced response union type for comprehensive type checking\nexport type ResponseResult<T> = EnhancedResponse<T> | ValidationResult<T>\n\n// Export specific response types\nexport type MetaResponse = EnhancedResponse<any>\nexport type TokenResponse = EnhancedResponse<any>\nexport type TransferResponse = EnhancedResponse<any>\nexport type BalanceResponse = EnhancedResponse<any>\nexport type WalletResponse = EnhancedResponse<any>\nexport type AuthResponse = EnhancedResponse<any>","/*\n Enhanced Response Implementation for TypeScript SDK Gold Standard\n \n Provides comprehensive response interface with ValidationResult patterns,\n functional programming support, and enhanced error handling.\n*/\n\nimport { z } from 'zod'\nimport { \n UniversalResponse, \n EnhancedResponse, \n ValidationResult, \n ResponseError, \n ResponseMetadata,\n ResponseErrorSchema,\n ValidationResultSchema,\n isSuccessResponse,\n isErrorResponse\n} from '@/types/response'\n\n/**\n * Enhanced response implementation providing comprehensive interface\n * and functional programming patterns\n */\nexport class StandardResponse<T> implements EnhancedResponse<T> {\n private readonly _successful: boolean\n private readonly _payload: T | null\n private readonly _errorMessage: string | null\n private readonly _rawData: any\n private readonly _metadata: ResponseMetadata\n\n constructor(\n successful: boolean,\n payload: T | null = null,\n errorMessage: string | null = null,\n rawData: any = null,\n metadata?: Partial<ResponseMetadata>\n ) {\n this._successful = successful\n this._payload = payload\n this._errorMessage = errorMessage\n this._rawData = rawData\n this._metadata = {\n timestamp: new Date().toISOString(),\n operation: 'unknown',\n clientVersion: '1.0.0',\n ...metadata\n }\n }\n\n // Core response interface methods\n success(): boolean {\n return this._successful\n }\n\n payload(): T | null {\n return this._payload\n }\n\n reason(): string | null {\n return this._errorMessage\n }\n\n data(): any {\n return this._rawData\n }\n\n // Enhanced ValidationResult integration\n toValidationResult(): ValidationResult<T> {\n if (this._successful && this._payload !== null) {\n return {\n success: true,\n data: this._payload,\n warnings: []\n }\n } else {\n return {\n success: false,\n error: {\n message: this._errorMessage || 'Unknown error',\n context: this._rawData,\n timestamp: this._metadata.timestamp,\n operation: this._metadata.operation\n }\n }\n }\n }\n\n // Functional programming combinators\n map<U>(mapper: (value: T) => U): EnhancedResponse<U> {\n if (this._successful && this._payload !== null) {\n try {\n const mappedValue = mapper(this._payload)\n return new StandardResponse(true, mappedValue, null, this._rawData, this._metadata)\n } catch (error) {\n return new StandardResponse(false, null, `Mapping failed: ${error instanceof Error ? error.message : String(error)}`, this._rawData, this._metadata)\n }\n } else {\n return new StandardResponse(false, null, this._errorMessage, this._rawData, this._metadata)\n }\n }\n\n flatMap<U>(mapper: (value: T) => EnhancedResponse<U>): EnhancedResponse<U> {\n if (this._successful && this._payload !== null) {\n try {\n return mapper(this._payload)\n } catch (error) {\n return new StandardResponse(false, null, `FlatMap failed: ${error instanceof Error ? error.message : String(error)}`, this._rawData, this._metadata)\n }\n } else {\n return new StandardResponse(false, null, this._errorMessage, this._rawData, this._metadata)\n }\n }\n\n filter(predicate: (value: T) => boolean): EnhancedResponse<T> {\n if (this._successful && this._payload !== null) {\n try {\n if (predicate(this._payload)) {\n return this\n } else {\n return new StandardResponse(false, null, 'Filter predicate failed', this._rawData, this._metadata)\n }\n } catch (error) {\n return new StandardResponse(false, null, `Filter failed: ${error instanceof Error ? error.message : String(error)}`, this._rawData, this._metadata)\n }\n } else {\n return this\n }\n }\n\n // Enhanced error handling with callbacks\n onSuccess(callback: (payload: T) => void): EnhancedResponse<T> {\n if (this._successful && this._payload !== null) {\n try {\n callback(this._payload)\n } catch (error) {\n console.warn('Response.onSuccess callback failed:', error)\n }\n }\n return this\n }\n\n onFailure(callback: (error: string) => void): EnhancedResponse<T> {\n if (!this._successful) {\n try {\n callback(this._errorMessage || 'Unknown error')\n } catch (error) {\n console.warn('Response.onFailure callback failed:', error)\n }\n }\n return this\n }\n\n // Promise integration for async patterns\n toPromise(): Promise<T> {\n if (this._successful && this._payload !== null) {\n return Promise.resolve(this._payload)\n } else {\n return Promise.reject(new Error(this._errorMessage || 'Unknown error'))\n }\n }\n\n // Enhanced debugging with optional labels\n debug(label?: string): EnhancedResponse<T> {\n const debugPrefix = label ? `[${label}]` : '[Response]'\n \n if (this._successful) {\n console.debug(`${debugPrefix} Success:`, {\n payload: this._payload,\n metadata: this._metadata\n })\n } else {\n console.debug(`${debugPrefix} Failure:`, {\n error: this._errorMessage,\n rawData: this._rawData,\n metadata: this._metadata\n })\n }\n \n return this\n }\n\n // Factory methods for enhanced response creation\n static success<T>(payload: T, rawData?: any, metadata?: Partial<ResponseMetadata>): StandardResponse<T> {\n return new StandardResponse(true, payload, null, rawData, metadata)\n }\n\n static failure<T>(errorMessage: string | ResponseError, rawData?: any, metadata?: Partial<ResponseMetadata>): StandardResponse<T> {\n const message = typeof errorMessage === 'string' ? errorMessage : errorMessage.message\n return new StandardResponse(false, null, message, rawData, metadata)\n }\n\n static fromValidationResult<T>(result: ValidationResult<T>, rawData?: any, metadata?: Partial<ResponseMetadata>): StandardResponse<T> {\n if (result.success && result.data !== undefined) {\n return new StandardResponse(true, result.data, null, rawData, {\n ...metadata,\n warnings: result.warnings\n })\n } else {\n return new StandardResponse(false, null, result.error?.message || 'Validation failed', rawData, {\n ...metadata,\n error: result.error\n })\n }\n }\n\n // Enhanced error information extraction\n getErrorDetails(): ResponseError | null {\n if (!this._successful) {\n return {\n message: this._errorMessage || 'Unknown error',\n context: this._metadata.operation,\n timestamp: this._metadata.timestamp,\n operation: this._metadata.operation\n }\n }\n return null\n }\n\n // Response metadata access\n getMetadata(): ResponseMetadata {\n return { ...this._metadata }\n }\n\n // Enhanced response validation\n validate(): ValidationResult<T> {\n try {\n const validationResult = ValidationResultSchema.parse(this.toValidationResult())\n return {\n success: true,\n data: this._payload as T,\n warnings: ['Response validation successful']\n }\n } catch (error) {\n return {\n success: false,\n error: {\n message: 'Response validation failed',\n details: [error instanceof Error ? error.message : String(error)]\n }\n }\n }\n }\n}\n\n// Factory class for creating standardized responses\nexport class ResponseFactory {\n \n static createSuccessResponse<T>(\n payload: T, \n operation: string,\n rawData?: any,\n duration?: number\n ): StandardResponse<T> {\n return StandardResponse.success(payload, rawData, {\n operation,\n duration,\n timestamp: new Date().toISOString()\n })\n }\n\n static createErrorResponse<T>(\n errorMessage: string,\n operation: string, \n rawData?: any,\n duration?: number\n ): StandardResponse<T> {\n return StandardResponse.failure(errorMessage, rawData, {\n operation,\n duration,\n timestamp: new Date().toISOString()\n })\n }\n\n static fromLegacyResponse<T>(\n legacyResponse: any,\n operation: string\n ): StandardResponse<T> {\n try {\n const isSuccessful = legacyResponse?.success?.() ?? false\n const payload = legacyResponse?.payload?.() ?? null\n const errorMessage = legacyResponse?.error?.() ?? legacyResponse?.reason?.() ?? null\n const rawData = legacyResponse?.data?.() ?? legacyResponse\n\n return isSuccessful \n ? StandardResponse.success(payload, rawData, { operation })\n : StandardResponse.failure(errorMessage || 'Unknown error', rawData, { operation })\n } catch (error) {\n return StandardResponse.failure(\n `Legacy response conversion failed: ${error instanceof Error ? error.message : String(error)}`,\n legacyResponse,\n { operation }\n )\n }\n }\n}\n\n// Enhanced response utilities\nexport class ResponseUtils {\n \n static combineResponses<T>(responses: EnhancedResponse<T>[]): EnhancedResponse<T[]> {\n const successful = responses.every(r => r.success())\n \n if (successful) {\n const payloads = responses.map(r => r.payload()).filter((p): p is T => p !== null)\n return StandardResponse.success(payloads, responses, { operation: 'combineResponses' })\n } else {\n const errors = responses.filter(r => !r.success()).map(r => r.reason()).join('; ')\n return StandardResponse.failure(`Combined operation failed: ${errors}`, responses, { operation: 'combineResponses' })\n }\n }\n\n static async sequenceResponses<T>(\n operations: (() => Promise<EnhancedResponse<T>>)[]\n ): Promise<EnhancedResponse<T[]>> {\n const results: EnhancedResponse<T>[] = []\n \n for (const operation of operations) {\n try {\n const result = await operation()\n results.push(result)\n \n if (!result.success()) {\n // Fail fast on first error\n return StandardResponse.failure(\n `Sequence failed at operation ${results.length}: ${result.reason()}`,\n results,\n { operation: 'sequenceResponses' }\n )\n }\n } catch (error) {\n return StandardResponse.failure(\n `Sequence failed with exception: ${error instanceof Error ? error.message : String(error)}`,\n results,\n { operation: 'sequenceResponses' }\n )\n }\n }\n \n const payloads = results.map(r => r.payload()).filter((p): p is T => p !== null)\n return StandardResponse.success(payloads, results, { operation: 'sequenceResponses' })\n }\n}\n\nexport default StandardResponse","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport { InvalidResponseException, UnauthenticatedException } from '@/exception'\nimport Dot from '@/libraries/Dot'\nimport type Query from '@/query/Query'\nimport { StandardResponse, ResponseFactory } from './EnhancedResponse'\nimport { UniversalResponse, ValidationResult } from '@/types/response'\n\n/**\n * Base Response class for processing node responses\n * Enhanced with standardized interface and ValidationResult support\n */\nexport default class Response implements UniversalResponse<any> {\n protected dataKey: string | null\n protected errorKey: string = 'exception'\n protected $__payload: any = null\n protected $__query: Query\n protected $__originResponse: any\n protected $__response: any\n\n /**\n * Class constructor\n */\n constructor({\n query,\n json,\n dataKey = null\n }: {\n query: Query\n json: any\n dataKey?: string | null\n }) {\n this.dataKey = dataKey\n this.$__query = query\n this.$__originResponse = json\n this.$__response = json\n\n if (typeof this.$__response === 'undefined' || this.$__response === null) {\n throw new InvalidResponseException()\n }\n\n if (Dot.has(this.$__response, this.errorKey)) {\n const error = Dot.get(this.$__response, this.errorKey)\n\n if (String(error).includes('Unauthenticated')) {\n throw new UnauthenticatedException()\n }\n\n throw new InvalidResponseException()\n }\n\n this.init()\n }\n\n /**\n * Initialize response - can be overridden by subclasses\n */\n protected init(): void {\n // Override in subclasses\n }\n\n /**\n * Get response data\n */\n data(): any {\n if (!this.dataKey) {\n return this.response()\n }\n\n // Check key & return custom data from the response\n if (!Dot.has(this.response(), this.dataKey)) {\n throw new InvalidResponseException()\n }\n\n return Dot.get(this.response(), this.dataKey)\n }\n\n /**\n * Get raw response\n */\n response(): any {\n return this.$__response\n }\n\n /**\n * Get response payload\n */\n payload(): any {\n return this.$__payload\n }\n\n /**\n * Check if response was successful\n */\n success(): boolean {\n // Default implementation - can be overridden\n return !this.$__response?.errors?.length\n }\n\n /**\n * Get error message if any\n */\n error(): string | null {\n if (this.$__response?.errors?.length) {\n return this.$__response.errors[0].message || 'Unknown error'\n }\n return null\n }\n\n /**\n * Enhanced interface methods for standardized response handling\n */\n \n /**\n * Get error reason (alias for error() to match standardized interface)\n */\n reason(): string | null {\n return this.error()\n }\n\n /**\n * Convert to enhanced response with ValidationResult support\n */\n toEnhanced<T>(): StandardResponse<T> {\n return ResponseFactory.fromLegacyResponse<T>(this, this.constructor.name)\n }\n\n /**\n * Convert to ValidationResult for enhanced error handling\n */\n toValidationResult<T>(): ValidationResult<T> {\n if (this.success() && this.payload() !== null) {\n return {\n success: true,\n data: this.payload() as T,\n warnings: []\n }\n } else {\n return {\n success: false,\n error: {\n message: this.reason() || 'Unknown error',\n context: this.constructor.name,\n details: this.$__response?.errors || []\n }\n }\n }\n }\n\n /**\n * Enhanced error handling with callbacks (matches enhanced interface)\n */\n onSuccess(callback: (payload: any) => void): Response {\n if (this.success() && this.payload() !== null) {\n try {\n callback(this.payload())\n } catch (error) {\n console.warn('Response.onSuccess callback failed:', error)\n }\n }\n return this\n }\n\n onFailure(callback: (error: string) => void): Response {\n if (!this.success()) {\n try {\n callback(this.reason() || 'Unknown error')\n } catch (error) {\n console.warn('Response.onFailure callback failed:', error)\n }\n }\n return this\n }\n\n /**\n * Debug logging with enhanced context\n */\n debug(label?: string): Response {\n const debugPrefix = label ? `[${label}]` : `[${this.constructor.name}]`\n \n if (this.success()) {\n console.debug(`${debugPrefix} Success:`, {\n payload: this.payload(),\n query: this.$__query?.constructor?.name,\n dataKey: this.dataKey\n })\n } else {\n console.debug(`${debugPrefix} Failure:`, {\n error: this.reason(),\n errors: this.$__response?.errors,\n rawData: this.$__response\n })\n }\n \n return this\n }\n\n /**\n * Promise conversion for enhanced async patterns\n */\n toPromise<T>(): Promise<T> {\n if (this.success() && this.payload() !== null) {\n return Promise.resolve(this.payload() as T)\n } else {\n return Promise.reject(new Error(this.reason() || 'Unknown error'))\n }\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * String utility functions for KnishIO TypeScript SDK\n * Maintains compatibility with JavaScript SDK string operations\n */\n\n// =============================================================================\n// STRING CHUNKING AND MANIPULATION\n// =============================================================================\n\n/**\n * Split string into chunks of specified size\n * MUST match JavaScript SDK behavior exactly\n */\nexport function chunkSubstr(str: string, size: number): string[] {\n if (!str || size <= 0) {\n return []\n }\n \n const chunks: string[] = []\n for (let i = 0; i < str.length; i += size) {\n chunks.push(str.substring(i, i + size))\n }\n \n return chunks\n}\n\n/**\n * Generate cryptographically secure random string\n * Uses crypto.getRandomValues when available, falls back to Math.random\n */\nexport function randomString(\n length = 32,\n alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n): string {\n if (length <= 0) return ''\n \n let result = ''\n \n // Use crypto.getRandomValues if available (browser/Node.js crypto)\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const randomValues = new Uint8Array(length)\n crypto.getRandomValues(randomValues)\n \n for (let i = 0; i < length; i++) {\n result += alphabet.charAt(randomValues[i] % alphabet.length)\n }\n } else {\n // Fallback to Math.random (less secure but compatible)\n for (let i = 0; i < length; i++) {\n result += alphabet.charAt(Math.floor(Math.random() * alphabet.length))\n }\n }\n \n return result\n}\n\n// =============================================================================\n// BASE CONVERSION UTILITIES\n// =============================================================================\n\n/**\n * Convert between different character sets/bases\n * Ported from JavaScript SDK for cross-platform compatibility\n */\nexport function charsetBaseConvert(\n src: string,\n fromBase: number,\n toBase: number,\n srcSymbolTable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n destSymbolTable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n): string | number | boolean {\n if (!src || fromBase < 2 || toBase < 2 || fromBase > srcSymbolTable.length || toBase > destSymbolTable.length) {\n return false\n }\n \n try {\n // Convert from source base to decimal\n let decimalValue = 0\n const srcLength = src.length\n \n for (let i = 0; i < srcLength; i++) {\n const char = src.charAt(srcLength - 1 - i)\n const charIndex = srcSymbolTable.indexOf(char)\n \n if (charIndex === -1) {\n return false // Invalid character for source base\n }\n \n decimalValue += charIndex * Math.pow(fromBase, i)\n }\n \n // Convert from decimal to destination base\n if (decimalValue === 0) {\n return destSymbolTable.charAt(0)\n }\n \n let result = ''\n while (decimalValue > 0) {\n const remainder = decimalValue % toBase\n result = destSymbolTable.charAt(remainder) + result\n decimalValue = Math.floor(decimalValue / toBase)\n }\n \n return result\n \n } catch (error) {\n return false\n }\n}\n\n// =============================================================================\n// HEX AND BINARY UTILITIES\n// =============================================================================\n\n/**\n * Convert buffer/byte array to hex string\n * Maintains compatibility with JavaScript SDK\n */\nexport function bufferToHexString(byteArray: Uint8Array | ArrayBuffer | number[]): string {\n let bytes: Uint8Array\n \n if (byteArray instanceof ArrayBuffer) {\n bytes = new Uint8Array(byteArray)\n } else if (Array.isArray(byteArray)) {\n bytes = new Uint8Array(byteArray)\n } else {\n bytes = byteArray\n }\n \n return Array.from(bytes)\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('')\n}\n\n/**\n * Convert hex string to buffer/byte array\n * Maintains compatibility with JavaScript SDK\n */\nexport function hexStringToBuffer(hexString: string): Uint8Array {\n if (!hexString || hexString.length % 2 !== 0) {\n throw new Error('Invalid hex string')\n }\n \n const cleanHex = hexString.replace(/^0x/i, '').toLowerCase()\n const bytes = new Uint8Array(cleanHex.length / 2)\n \n for (let i = 0; i < cleanHex.length; i += 2) {\n const byteValue = parseInt(cleanHex.substring(i, i + 2), 16)\n if (isNaN(byteValue)) {\n throw new Error(`Invalid hex characters at position ${i}: ${cleanHex.substring(i, i + 2)}`)\n }\n bytes[i / 2] = byteValue\n }\n \n return bytes\n}\n\n// =============================================================================\n// BASE64 CONVERSION UTILITIES\n// =============================================================================\n\n/**\n * Convert hex string to base64\n * Uses native btoa when available, falls back to manual conversion\n */\nexport function hexToBase64(hexString: string): string {\n if (!hexString) return ''\n \n try {\n const cleanHex = hexString.replace(/^0x/i, '')\n \n // Convert hex to bytes\n const bytes = hexStringToBuffer(cleanHex)\n \n // Convert to base64\n if (typeof btoa !== 'undefined') {\n // Browser environment\n return btoa(String.fromCharCode(...bytes))\n } else {\n // Node.js environment or manual conversion\n return Buffer.from(bytes).toString('base64')\n }\n } catch (error) {\n throw new Error(`Failed to convert hex to base64: ${error instanceof Error ? error.message : String(error)}`)\n }\n}\n\n/**\n * Convert base64 string to hex\n * Uses native atob when available, falls back to manual conversion\n */\nexport function base64ToHex(base64String: string): string {\n if (!base64String) return ''\n \n try {\n let bytes: Uint8Array\n \n if (typeof atob !== 'undefined') {\n // Browser environment\n const binaryString = atob(base64String)\n bytes = new Uint8Array(binaryString.length)\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n } else {\n // Node.js environment\n bytes = new Uint8Array(Buffer.from(base64String, 'base64'))\n }\n \n return bufferToHexString(bytes)\n \n } catch (error) {\n throw new Error(`Failed to convert base64 to hex: ${error instanceof Error ? error.message : String(error)}`)\n }\n}\n\n// =============================================================================\n// VALIDATION UTILITIES\n// =============================================================================\n\n/**\n * Check if string is valid hexadecimal\n */\nexport function isHex(str: string): boolean {\n if (!str || typeof str !== 'string') return false\n \n const cleanStr = str.replace(/^0x/i, '')\n return /^[0-9a-fA-F]+$/.test(cleanStr)\n}\n\n/**\n * Check if string is numeric\n */\nexport function isNumeric(str: string): boolean {\n if (!str || typeof str !== 'string') return false\n \n return /^-?\\d+\\.?\\d*$/.test(str)\n}\n\n/**\n * Check if string is valid base64\n */\nexport function isBase64(str: string): boolean {\n if (!str || typeof str !== 'string') return false\n \n try {\n return btoa ? str === btoa(atob(str)) : Buffer.from(str, 'base64').toString('base64') === str\n } catch {\n return false\n }\n}\n\n// =============================================================================\n// STRING FORMATTING UTILITIES\n// =============================================================================\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n if (!str) return ''\n \n return str\n .toLowerCase()\n .replace(/[^a-zA-Z0-9]+(.)/g, (match, chr) => chr.toUpperCase())\n}\n\n/**\n * Convert string to snake_case\n */\nexport function toSnakeCase(str: string): string {\n if (!str) return ''\n \n return str\n .replace(/([A-Z])/g, '_$1')\n .replace(/^_/, '')\n .toLowerCase()\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n if (!str) return ''\n \n return str\n .replace(/([A-Z])/g, '-$1')\n .replace(/^-/, '')\n .toLowerCase()\n}\n\n/**\n * Capitalize first letter of string\n */\nexport function capitalize(str: string): string {\n if (!str) return ''\n \n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n}\n\n/**\n * Convert string to title case\n */\nexport function toTitleCase(str: string): string {\n if (!str) return ''\n \n return str\n .split(/\\s+/)\n .map(word => capitalize(word))\n .join(' ')\n}\n\n// =============================================================================\n// STRING PADDING AND ALIGNMENT\n// =============================================================================\n\n/**\n * Pad string to left with specified character\n */\nexport function padLeft(str: string, length: number, padChar = ' '): string {\n if (!str) str = ''\n \n while (str.length < length) {\n str = padChar + str\n }\n \n return str\n}\n\n/**\n * Pad string to right with specified character\n */\nexport function padRight(str: string, length: number, padChar = ' '): string {\n if (!str) str = ''\n \n while (str.length < length) {\n str = str + padChar\n }\n \n return str\n}\n\n/**\n * Truncate string to specified length with ellipsis\n */\nexport function truncate(str: string, length: number, ellipsis = '...'): string {\n if (!str || str.length <= length) return str\n \n return str.substring(0, length - ellipsis.length) + ellipsis\n}\n\n// =============================================================================\n// UNICODE AND ENCODING UTILITIES\n// =============================================================================\n\n/**\n * Escape string for safe usage in various contexts\n */\nexport function escapeString(str: string): string {\n if (!str) return ''\n \n return str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\t/g, '\\\\t')\n}\n\n/**\n * Unescape string\n */\nexport function unescapeString(str: string): string {\n if (!str) return ''\n \n return str\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\'/g, \"'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\\\\\/g, '\\\\')\n}\n\n// =============================================================================\n// STRING PROTOTYPE EXTENSIONS (FOR COMPATIBILITY)\n// =============================================================================\n\ndeclare global {\n interface String {\n toCamelCase(): string\n toSnakeCase(): string\n }\n}\n\n// Add methods to String prototype for compatibility with JS SDK\nif (typeof String.prototype.toCamelCase === 'undefined') {\n String.prototype.toCamelCase = function(): string {\n return toCamelCase(this.toString())\n }\n}\n\nif (typeof String.prototype.toSnakeCase === 'undefined') {\n String.prototype.toSnakeCase = function(): string {\n return toSnakeCase(this.toString())\n }\n}\n\n// All functions are already exported individually above","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Cryptographic library for KnishIO TypeScript SDK\n * Ensures 100% compatibility with JavaScript SDK and cross-platform consistency\n */\n\nimport JsSHA from 'jssha'\nimport { randomString } from './strings'\nimport type { \n BundleHash,\n Position,\n SHAKE256Options,\n SecretGenerationOptions,\n BundleHashOptions,\n PositionGenerationOptions \n} from '@/types'\n\n// =============================================================================\n// CONSTANTS - MUST MATCH JavaScript SDK EXACTLY\n// =============================================================================\n\nexport const CRYPTO_CONSTANTS = {\n SECRET_LENGTH: 2048,\n BUNDLE_HASH_LENGTH: 64,\n POSITION_LENGTH: 64,\n ADDRESS_LENGTH: 64,\n MOLECULAR_HASH_OUTPUT_LENGTH: 256,\n SHAKE256_OUTPUT_LENGTH: 256,\n KEY_FRAGMENT_SIZE: 128,\n HASH_ITERATIONS: 16\n} as const\n\n// =============================================================================\n// SHAKE256 IMPLEMENTATION - CRITICAL FOR CROSS-SDK COMPATIBILITY\n// =============================================================================\n\n/**\n * SHAKE256 hash function - MUST produce identical outputs to JavaScript SDK\n * Test vectors from validation/common-config.json:\n * - shake256(\"test\", 256) === \"b54ff7255705a71ee2925e4a3e30e41aed489a579d5595e0df13e32e1e4dd202\"\n * - shake256(\"KnishIO\", 256) === \"35e3c3f33aefb940baaf430855ccb441c24b7b0542f682b8543f4c9d3a077c6e\"\n * \n * @param input - Input string to hash\n * @param outputLength - Output length in BITS (256 bits = 64 hex chars)\n */\nexport function shake256(input: string, outputLength: number): string {\n const sponge = new JsSHA('SHAKE256', 'TEXT')\n sponge.update(input)\n \n // CRITICAL FIX: outputLength parameter is in BITS (as per Implementation Guide)\n // JsSHA outputLen expects bits, so pass outputLength directly\n // 256 bits = 64 hex characters, 512 bits = 128 hex characters, etc.\n const result = sponge.getHash('HEX', { outputLen: outputLength })\n \n return result.toLowerCase()\n}\n\n/**\n * Enhanced SHAKE256 with options\n * @param options.input - Input string or Uint8Array to hash\n * @param options.outputLength - Output length in BITS\n * @param options.encoding - Output encoding format\n */\nexport function shake256Enhanced(options: SHAKE256Options): string {\n const { input, outputLength, encoding = 'hex' } = options\n \n const sponge = new JsSHA('SHAKE256', typeof input === 'string' ? 'TEXT' : 'UINT8ARRAY')\n sponge.update(input)\n \n // outputLength is in BITS consistently across all encodings\n switch (encoding) {\n case 'hex':\n return sponge.getHash('HEX', { outputLen: outputLength }).toLowerCase()\n case 'base64':\n return sponge.getHash('B64', { outputLen: outputLength })\n case 'bytes':\n return sponge.getHash('UINT8ARRAY', { outputLen: outputLength }).toString()\n default:\n throw new Error(`Unsupported encoding: ${encoding}`)\n }\n}\n\n// =============================================================================\n// SECRET GENERATION - MUST MATCH JavaScript SDK BEHAVIOR\n// =============================================================================\n\n/**\n * Generate secret from seed or random - MUST match JS SDK exactly\n * If seed provided: uses SHAKE256 to generate deterministic secret\n * If no seed: uses cryptographically secure random string\n */\nexport function generateSecret(seed: string | null = null, length = CRYPTO_CONSTANTS.SECRET_LENGTH): string {\n if (seed) {\n // Deterministic generation using SHAKE256 - MUST match JS SDK\n const sponge = new JsSHA('SHAKE256', 'TEXT')\n sponge.update(seed)\n // Fix: outputLen is in BITS, so for 1024 hex chars output, we need length*2 bits (matching JS SDK)\n return sponge.getHash('HEX', { outputLen: length * 2 }).toLowerCase()\n } else {\n // Cryptographically secure random generation\n return randomString(length)\n }\n}\n\n/**\n * Enhanced secret generation with options\n */\nexport function generateSecretEnhanced(options: SecretGenerationOptions): string {\n const { \n seed = null, \n length = CRYPTO_CONSTANTS.SECRET_LENGTH,\n algorithm = 'SHAKE256' \n } = options\n\n if (algorithm !== 'SHAKE256') {\n throw new Error('Only SHAKE256 algorithm is supported for cross-platform compatibility')\n }\n\n return generateSecret(seed, length)\n}\n\n// =============================================================================\n// BUNDLE HASH GENERATION - MUST MATCH JavaScript SDK BEHAVIOR\n// =============================================================================\n\n/**\n * Generate bundle hash from secret - MUST produce identical results to JS SDK\n * Uses SHAKE256 with 256-bit output (64 hex characters)\n */\nexport function generateBundleHash(secret: string, source: string | null = null): BundleHash {\n if (!secret || secret.length === 0) {\n throw new Error('Secret is required for bundle hash generation')\n }\n\n let input = secret\n if (source) {\n input = secret + source\n }\n\n // Fix: BUNDLE_HASH_LENGTH is 64 (hex chars), but shake256 expects bits\n // So we multiply by 4: 64 hex chars * 4 = 256 bits (matching JS SDK)\n const hash = shake256(input, CRYPTO_CONSTANTS.BUNDLE_HASH_LENGTH * 4)\n return hash as BundleHash\n}\n\n/**\n * Enhanced bundle hash generation with options\n */\nexport function generateBundleHashEnhanced(options: BundleHashOptions): BundleHash {\n const { secret, source = null, algorithm = 'SHAKE256' } = options\n\n if (algorithm !== 'SHAKE256') {\n throw new Error('Only SHAKE256 algorithm is supported for cross-platform compatibility')\n }\n\n return generateBundleHash(secret, source)\n}\n\n// =============================================================================\n// POSITION GENERATION - CRYPTOGRAPHICALLY SECURE RANDOM POSITIONS\n// =============================================================================\n\n/**\n * Generate cryptographically secure position\n * Must be 64 hex characters (256 bits)\n */\nexport function generatePosition(): Position {\n // Generate 32 random bytes (256 bits) and convert to hex\n const position = randomString(CRYPTO_CONSTANTS.POSITION_LENGTH, '0123456789abcdef')\n return position as Position\n}\n\n/**\n * Enhanced position generation with options\n */\nexport function generatePositionEnhanced(options: PositionGenerationOptions = {}): Position {\n const { \n entropy = null,\n algorithm = 'SHAKE256',\n length = CRYPTO_CONSTANTS.POSITION_LENGTH \n } = options\n\n if (entropy) {\n // Use provided entropy with SHAKE256\n const entropyString = Array.from(entropy).map(b => b.toString(16).padStart(2, '0')).join('')\n const hash = shake256(entropyString, length)\n return hash as Position\n }\n\n if (length !== CRYPTO_CONSTANTS.POSITION_LENGTH) {\n throw new Error(`Position length must be exactly ${CRYPTO_CONSTANTS.POSITION_LENGTH} characters`)\n }\n\n return generatePosition()\n}\n\n// =============================================================================\n// BATCH ID GENERATION - DETERMINISTIC BATCH IDENTIFICATION\n// =============================================================================\n\n/**\n * Generate batch ID from molecular hash and index\n * Uses SHAKE256 to create deterministic batch identifiers\n */\nexport function generateBatchId({ \n molecularHash = null, \n index = null \n}: { \n molecularHash?: string | null\n index?: number | null \n} = {}): string {\n let input = ''\n \n if (molecularHash) {\n input += molecularHash\n }\n \n if (index !== null) {\n input += index.toString()\n }\n \n // If no input provided, generate random batch ID\n if (input === '') {\n input = randomString(32)\n }\n \n // Use SHAKE256 to generate 64-character batch ID\n return shake256(input, 64)\n}\n\n// =============================================================================\n// WALLET KEY GENERATION - MUST MATCH JavaScript SDK EXACTLY\n// =============================================================================\n\n/**\n * Generate wallet key from secret, token, and position\n * MUST match JS SDK algorithm exactly for cross-platform compatibility\n * \n * Algorithm from JS SDK Wallet.generateKey():\n * 1. Convert secret to BigInt\n * 2. Add position as BigInt\n * 3. Convert result to hex string\n * 4. Hash with SHAKE256 (8192 bits)\n * 5. If token provided, append token and hash again\n * 6. Final hash with SHAKE256 (8192 bits)\n */\nexport function generateWalletKey({\n secret,\n token,\n position\n}: {\n secret: string\n token: string | null\n position: string\n}): string {\n if (!secret || !position) {\n throw new Error('Secret and position are required for key generation')\n }\n\n try {\n // Step 1: Convert secret to BigInt (must match JS SDK)\n const bigIntSecret = BigInt(`0x${secret}`)\n \n // Step 2: Add position as BigInt\n const indexedKey = bigIntSecret + BigInt(`0x${position}`)\n \n // Step 3: Create intermediate key sponge\n const intermediateKeySponge = new JsSHA('SHAKE256', 'TEXT')\n \n // Step 4: Update with hex string of indexed key\n intermediateKeySponge.update(indexedKey.toString(16))\n \n // Step 5: If token provided, update the SAME sponge with token\n if (token) {\n intermediateKeySponge.update(token)\n }\n \n // Step 6: Get intermediate hash (8192 bits = 2048 hex chars)\n // Step 7: Create new sponge for private key\n const privateKeySponge = new JsSHA('SHAKE256', 'TEXT')\n privateKeySponge.update(intermediateKeySponge.getHash('HEX', { outputLen: 8192 }))\n \n // Return final key (8192 bits = 2048 hex chars) - JS SDK doesn't call toLowerCase()\n return privateKeySponge.getHash('HEX', { outputLen: 8192 })\n \n } catch (error) {\n throw new Error(`Key generation failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n}\n\n// =============================================================================\n// WALLET ADDRESS GENERATION - MUST MATCH JavaScript SDK EXACTLY\n// =============================================================================\n\n/**\n * Generate wallet address from key\n * MUST match JS SDK algorithm exactly for cross-platform compatibility\n * \n * Algorithm from JS SDK Wallet.generateAddress():\n * 1. Split key into 16 fragments of 128 characters each\n * 2. For each fragment, hash 16 times with SHAKE256\n * 3. Combine all fragments and hash with SHAKE256\n * 4. Final hash with SHAKE256 (256 bits = 64 hex chars)\n */\nexport function generateWalletAddress(key: string): string {\n if (!key || key.length < 2048) {\n throw new Error('Key must be at least 2048 characters for address generation')\n }\n\n try {\n // Step 1: Split into 16 fragments of 128 characters each\n const keyFragments = []\n for (let i = 0; i < key.length; i += CRYPTO_CONSTANTS.KEY_FRAGMENT_SIZE) {\n keyFragments.push(key.substring(i, i + CRYPTO_CONSTANTS.KEY_FRAGMENT_SIZE))\n }\n \n // Step 2: Hash each fragment 16 times\n const digestSponge = new JsSHA('SHAKE256', 'TEXT')\n \n for (const fragment of keyFragments) {\n let workingFragment = fragment\n \n // Hash the fragment 16 times\n for (let fragmentCount = 1; fragmentCount <= CRYPTO_CONSTANTS.HASH_ITERATIONS; fragmentCount++) {\n const workingSponge = new JsSHA('SHAKE256', 'TEXT')\n workingSponge.update(workingFragment)\n workingFragment = workingSponge.getHash('HEX', { outputLen: 512 })\n }\n \n // Add processed fragment to digest\n digestSponge.update(workingFragment)\n }\n \n // Step 3: Get intermediate digest\n const intermediateDigest = digestSponge.getHash('HEX', { outputLen: 8192 })\n \n // Step 4: Final hash to create address\n const outputSponge = new JsSHA('SHAKE256', 'TEXT')\n outputSponge.update(intermediateDigest)\n \n return outputSponge.getHash('HEX', { outputLen: CRYPTO_CONSTANTS.ADDRESS_LENGTH * 4 })\n \n } catch (error) {\n throw new Error(`Address generation failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n}\n\n// =============================================================================\n// VALIDATION FUNCTIONS - ENSURE DATA INTEGRITY\n// =============================================================================\n\n/**\n * Validate SHAKE256 hash format and length\n */\nexport function validateSHAKE256Hash(hash: string, expectedLength: number): boolean {\n if (!hash || typeof hash !== 'string') return false\n if (hash.length !== expectedLength) return false\n return /^[0-9a-f]+$/i.test(hash)\n}\n\n/**\n * Validate secret format and length\n */\nexport function validateSecret(secret: string): boolean {\n if (!secret || typeof secret !== 'string') return false\n if (secret.length !== CRYPTO_CONSTANTS.SECRET_LENGTH) return false\n return /^[0-9a-f]+$/i.test(secret)\n}\n\n/**\n * Validate bundle hash format\n */\nexport function validateBundleHash(bundleHash: string): boolean {\n return validateSHAKE256Hash(bundleHash, CRYPTO_CONSTANTS.BUNDLE_HASH_LENGTH)\n}\n\n/**\n * Validate position format\n */\nexport function validatePosition(position: string): boolean {\n return validateSHAKE256Hash(position, CRYPTO_CONSTANTS.POSITION_LENGTH)\n}\n\n/**\n * Validate wallet address format\n */\nexport function validateWalletAddress(address: string): boolean {\n return validateSHAKE256Hash(address, CRYPTO_CONSTANTS.ADDRESS_LENGTH)\n}\n\n// =============================================================================\n// COMPATIBILITY TESTING - VERIFY CROSS-PLATFORM COMPATIBILITY\n// =============================================================================\n\n/**\n * Test vector for SHAKE256 compatibility\n * These values MUST match across all SDK implementations\n */\nexport const COMPATIBILITY_TEST_VECTORS = {\n shake256: [\n {\n input: 'test',\n outputLength: 256,\n expected: 'b54ff7255705a71ee2925e4a3e30e41aed489a579d5595e0df13e32e1e4dd202'\n },\n {\n input: 'KnishIO',\n outputLength: 256,\n expected: '35e3c3f33aefb940baaf430855ccb441c24b7b0542f682b8543f4c9d3a077c6e'\n }\n ]\n} as const\n\n/**\n * Run compatibility tests to verify cross-platform consistency\n */\nexport function runCompatibilityTests(): { passed: boolean; results: Array<{ test: string; passed: boolean; expected: string; actual: string }> } {\n const results = []\n let allPassed = true\n\n for (const testVector of COMPATIBILITY_TEST_VECTORS.shake256) {\n const actual = shake256(testVector.input, testVector.outputLength)\n const passed = actual === testVector.expected\n \n results.push({\n test: `shake256(\"${testVector.input}\", ${testVector.outputLength})`,\n passed,\n expected: testVector.expected,\n actual\n })\n \n if (!passed) {\n allPassed = false\n }\n }\n\n return { passed: allPassed, results }\n}\n\n// =============================================================================\n// BASE17 CONVERSION SYSTEM - CRITICAL FOR MOLECULAR HASH PROCESSING\n// =============================================================================\n\n/**\n * Base conversion utility for molecular hash processing\n * MUST match JavaScript SDK implementation exactly\n */\nexport function charsetBaseConvert(\n input: string,\n fromBase: number,\n toBase: number,\n fromCharset: string,\n toCharset: string\n): string {\n if (input === '') return toCharset[0]\n \n // Convert input from source base to decimal using BigInt for precision\n let decimal = 0n\n for (let i = 0; i < input.length; i++) {\n const char = input[i]\n const value = BigInt(fromCharset.indexOf(char))\n if (value === -1n) {\n throw new Error(`Invalid character '${char}' for source base ${fromBase}`)\n }\n decimal = decimal * BigInt(fromBase) + value\n }\n \n // Convert decimal to target base\n if (decimal === 0n) return toCharset[0]\n \n let result = ''\n while (decimal > 0n) {\n const remainder = decimal % BigInt(toBase)\n result = toCharset[Number(remainder)] + result\n decimal = decimal / BigInt(toBase)\n }\n \n return result\n}\n\n/**\n * Convert molecular hash from base16 to base17\n * Critical for WOTS+ signature generation\n */\nexport function convertToBase17(hexHash: string): string {\n const base16Charset = '0123456789abcdef'\n const base17Charset = '0123456789abcdefg'\n \n const base17Hash = charsetBaseConvert(hexHash, 16, 17, base16Charset, base17Charset)\n \n // Pad to 64 characters as required by Implementation Guide\n return base17Hash.padStart(64, '0')\n}\n\n// =============================================================================\n// MOLECULAR HASH ENUMERATION AND NORMALIZATION - FOR WOTS+ SIGNATURES\n// =============================================================================\n\n/**\n * Enumerate molecular hash for signature generation\n * MUST match JavaScript SDK Molecule.enumerate() exactly\n */\nexport function enumerateMolecularHash(hash: string): number[] {\n const mapped: Record<string, number> = {\n '0': -8, '1': -7, '2': -6, '3': -5, '4': -4, '5': -3, '6': -2, '7': -1,\n '8': 0, '9': 1, 'a': 2, 'b': 3, 'c': 4, 'd': 5, 'e': 6, 'f': 7, 'g': 8\n }\n \n const target: number[] = []\n const hashList = hash.toLowerCase().split('')\n \n for (let index = 0; index < hashList.length; index++) {\n const symbol = hashList[index]\n if (typeof mapped[symbol] !== 'undefined') {\n target[index] = mapped[symbol]\n } else {\n throw new Error(`Invalid character '${symbol}' in molecular hash`)\n }\n }\n \n return target\n}\n\n/**\n * Normalize enumerated molecular hash for signature generation\n * MUST match JavaScript SDK Molecule.normalize() exactly\n */\nexport function normalizeMolecularHash(mappedHashArray: number[]): number[] {\n // Create a copy to avoid mutating the original\n const normalized = [...mappedHashArray]\n \n let total = normalized.reduce((sum, num) => sum + num, 0)\n const totalCondition = total < 0\n \n while (total !== 0) {\n for (let index = 0; index < normalized.length; index++) {\n const condition = totalCondition \n ? normalized[index] < 8 \n : normalized[index] > -8\n \n if (condition) {\n if (totalCondition) {\n normalized[index]++\n total++\n } else {\n normalized[index]--\n total--\n }\n \n if (total === 0) break\n }\n }\n }\n \n return normalized\n}\n\n// =============================================================================\n// WOTS+ ONE-TIME SIGNATURE IMPLEMENTATION - CRITICAL FOR TRANSACTION SIGNING\n// =============================================================================\n\n/**\n * Generate WOTS+ one-time signature for molecular hash\n * MUST match JavaScript SDK implementation exactly for cross-platform compatibility\n */\nexport function generateOTSSignature(privateKey: string, molecularHash: string): string {\n if (!privateKey || privateKey.length < 2048) {\n throw new Error('Private key must be at least 2048 characters for OTS signature')\n }\n \n if (!molecularHash || molecularHash.length !== 64) {\n throw new Error('Molecular hash must be exactly 64 characters')\n }\n \n try {\n // Step 1: Molecular hash is already base17 from Atom.hashAtoms(), enumerate and normalize it\n // Fix: Don't convert to base17 again - it's already base17 (matching JS SDK behavior)\n const enumerated = enumerateMolecularHash(molecularHash)\n const normalized = normalizeMolecularHash(enumerated)\n \n // Step 2: Subdivide private key into 16 chunks of 128 characters each\n const keyChunks: string[] = []\n for (let i = 0; i < privateKey.length; i += CRYPTO_CONSTANTS.KEY_FRAGMENT_SIZE) {\n keyChunks.push(privateKey.substring(i, i + CRYPTO_CONSTANTS.KEY_FRAGMENT_SIZE))\n }\n \n // Step 3: Generate signature fragments\n let signatureFragments = ''\n for (let index = 0; index < keyChunks.length; index++) {\n let workingChunk = keyChunks[index]\n \n // Hash (8 - normalized[index]) times for signature generation\n const iterations = 8 - (normalized[index] || 0)\n for (let j = 0; j < iterations; j++) {\n const sponge = new JsSHA('SHAKE256', 'TEXT')\n sponge.update(workingChunk)\n workingChunk = sponge.getHash('HEX', { outputLen: 512 }) // 512 bits\n }\n signatureFragments += workingChunk\n }\n \n return signatureFragments\n } catch (error) {\n throw new Error(`OTS signature generation failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n}\n\n/**\n * Verify WOTS+ one-time signature against molecular hash and address\n * MUST match JavaScript SDK implementation exactly\n */\nexport function verifyOTSSignature(\n otsFragments: string,\n molecularHash: string,\n signingAddress: string\n): boolean {\n if (!otsFragments || !molecularHash || !signingAddress) {\n return false\n }\n \n try {\n // Step 1: Convert molecular hash to base17 and normalize\n const base17Hash = convertToBase17(molecularHash)\n const enumerated = enumerateMolecularHash(base17Hash)\n const normalized = normalizeMolecularHash(enumerated)\n \n // Step 2: Process OTS fragments (handle compression if needed)\n let ots = otsFragments\n if (ots.length !== 2048) {\n // If not 2048 chars, it might be base64 compressed - for now, assume uncompressed\n if (ots.length !== 2048) {\n return false // Invalid signature length\n }\n }\n \n // Step 3: Subdivide OTS into 16 segments of 128 characters each\n const otsChunks: string[] = []\n for (let i = 0; i < ots.length; i += CRYPTO_CONSTANTS.KEY_FRAGMENT_SIZE) {\n otsChunks.push(ots.substring(i, i + CRYPTO_CONSTANTS.KEY_FRAGMENT_SIZE))\n }\n \n // Step 4: Process each chunk for verification\n let keyFragments = ''\n for (let index = 0; index < otsChunks.length; index++) {\n let workingChunk = otsChunks[index]\n \n // Hash (8 + normalized[index]) times for verification\n const iterations = 8 + (normalized[index] || 0)\n for (let j = 0; j < iterations; j++) {\n const sponge = new JsSHA('SHAKE256', 'TEXT')\n sponge.update(workingChunk)\n workingChunk = sponge.getHash('HEX', { outputLen: 512 }) // 512 bits\n }\n keyFragments += workingChunk\n }\n \n // Step 5: Generate digest from reconstructed key fragments\n const digestSponge = new JsSHA('SHAKE256', 'TEXT')\n digestSponge.update(keyFragments)\n const digest = digestSponge.getHash('HEX', { outputLen: 8192 }) // 8192 bits\n \n // Step 6: Generate address from digest\n const addressSponge = new JsSHA('SHAKE256', 'TEXT')\n addressSponge.update(digest)\n const reconstructedAddress = addressSponge.getHash('HEX', { outputLen: 256 }) // 256 bits\n \n // Step 7: Compare with expected signing address\n return reconstructedAddress.toLowerCase() === signingAddress.toLowerCase()\n } catch (error) {\n return false\n }\n}\n\n// =============================================================================\n// ENHANCED VALIDATION FUNCTIONS - SUPPORT FOR NEW SIGNATURE SYSTEM\n// =============================================================================\n\n/**\n * Validate OTS signature format\n */\nexport function validateOTSSignature(signature: string): boolean {\n if (!signature || typeof signature !== 'string') return false\n \n // OTS signature should be 2048 characters (16 chunks * 128 chars each)\n // or compressed format\n return signature.length === 2048 || (signature.length > 0 && signature.length < 2048)\n}\n\n/**\n * Validate molecular hash for base17 conversion\n */\nexport function validateMolecularHashForSignature(hash: string): boolean {\n if (!hash || typeof hash !== 'string') return false\n if (hash.length !== 64) return false\n return /^[0-9a-f]+$/i.test(hash)\n}\n\n// =============================================================================\n// UPDATED COMPATIBILITY TEST VECTORS - INCLUDING SIGNATURE TESTS\n// =============================================================================\n\n/**\n * Extended test vectors including signature generation\n */\nexport const EXTENDED_COMPATIBILITY_TEST_VECTORS = {\n ...COMPATIBILITY_TEST_VECTORS,\n base17Conversion: [\n {\n input: '0000000000000000000000000000000000000000000000000000000000000000',\n expected: '0000000000000000000000000000000000000000000000000000000000000000'\n }\n ],\n molecularEnumeration: [\n {\n input: '0000000000000000000000000000000000000000000000000000000000000000',\n expected: [-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8]\n }\n ]\n} as const\n\n/**\n * Run extended compatibility tests including signature system\n */\nexport function runExtendedCompatibilityTests(): { \n passed: boolean\n results: Array<{ test: string; passed: boolean; expected: any; actual: any }>\n} {\n const results = []\n let allPassed = true\n\n // Run original SHAKE256 tests\n const originalResults = runCompatibilityTests()\n results.push(...originalResults.results)\n if (!originalResults.passed) allPassed = false\n\n // Test base17 conversion\n for (const testVector of EXTENDED_COMPATIBILITY_TEST_VECTORS.base17Conversion) {\n const actual = convertToBase17(testVector.input)\n const passed = actual === testVector.expected\n \n results.push({\n test: `convertToBase17(\"${testVector.input}\")`,\n passed,\n expected: testVector.expected,\n actual\n })\n \n if (!passed) allPassed = false\n }\n\n // Test molecular enumeration\n for (const testVector of EXTENDED_COMPATIBILITY_TEST_VECTORS.molecularEnumeration) {\n const actual = enumerateMolecularHash(testVector.input)\n const passed = JSON.stringify(actual) === JSON.stringify(testVector.expected)\n \n results.push({\n test: `enumerateMolecularHash(\"${testVector.input}\")`,\n passed,\n expected: testVector.expected,\n actual\n })\n \n if (!passed) allPassed = false\n }\n\n return { passed: allPassed, results }\n}\n\n// All functions are already exported individually above","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Constants with Const Assertions for KnishIO SDK\n * \n * Implements 2025 TypeScript patterns:\n * - Const assertions for immutable data structures\n * - Template literal types for enhanced validation\n * - Type-safe constants for protocol definitions\n */\n\n// =============================================================================\n// ATOM ISOTOPE CONSTANTS (CONST ASSERTION)\n// =============================================================================\n\n/**\n * Immutable array of atom isotopes with const assertion\n * Provides compile-time type safety and runtime immutability\n */\nexport const ISOTOPES = ['C', 'V', 'U', 'T', 'M', 'I', 'R', 'B', 'F'] as const\nexport type AtomIsotope = typeof ISOTOPES[number]\n\n/**\n * Isotope descriptions with const assertion for type safety\n */\nexport const ISOTOPE_DESCRIPTIONS = {\n C: 'Continue - Position continuation',\n V: 'Value - Token value transfer', \n U: 'User - User token operations',\n T: 'Token - Token creation/management',\n M: 'Meta - Metadata operations',\n I: 'Identity - Identity operations',\n R: 'Rule - Policy operations',\n B: 'Buffer - Buffer token operations',\n F: 'Fuse - Token fusion operations'\n} as const satisfies Record<AtomIsotope, string>\n\n// =============================================================================\n// ERROR TYPE CONSTANTS (CONST ASSERTION)\n// =============================================================================\n\n/**\n * Immutable error type definitions with const assertion\n */\nexport const ERROR_TYPES = [\n 'ATOM_INDEX_ERROR',\n 'ATOMS_MISSING_ERROR', \n 'AUTHORIZATION_REJECTED_ERROR',\n 'BALANCE_INSUFFICIENT_ERROR',\n 'BATCH_ID_ERROR',\n 'CODE_ERROR',\n 'DECRYPTION_KEY_ERROR',\n 'INVALID_RESPONSE_ERROR',\n 'META_MISSING_ERROR',\n 'MOLECULAR_HASH_MISMATCH_ERROR',\n 'MOLECULAR_HASH_MISSING_ERROR',\n 'NEGATIVE_AMOUNT_ERROR',\n 'POLICY_INVALID_ERROR',\n 'RULE_ARGUMENT_ERROR',\n 'SIGNATURE_MALFORMED_ERROR',\n 'SIGNATURE_MISMATCH_ERROR',\n 'STACKABLE_UNIT_AMOUNT_ERROR',\n 'STACKABLE_UNIT_DECIMALS_ERROR',\n 'TRANSFER_BALANCE_ERROR',\n 'TRANSFER_MALFORMED_ERROR',\n 'TRANSFER_MISMATCHED_ERROR',\n 'TRANSFER_REMAINDER_ERROR',\n 'TRANSFER_TO_SELF_ERROR',\n 'TRANSFER_UNBALANCED_ERROR',\n 'UNAUTHENTICATED_ERROR',\n 'WALLET_CREDENTIAL_ERROR',\n 'WALLET_SHADOW_ERROR',\n 'WRONG_TOKEN_TYPE_ERROR'\n] as const\n\nexport type KnishIOErrorType = typeof ERROR_TYPES[number]\n\n// =============================================================================\n// CRYPTO CONSTANTS (CONST ASSERTION)\n// =============================================================================\n\n/**\n * Hexadecimal characters with const assertion\n */\nexport const HEX_CHARS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'] as const\nexport type HexChar = typeof HEX_CHARS[number]\n\n/**\n * Base17 characters for molecular hashing (includes g for base17)\n */\nexport const BASE17_CHARS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g'] as const\nexport type Base17Char = typeof BASE17_CHARS[number]\n\n/**\n * Hash length constants\n */\nexport const HASH_LENGTHS = {\n WALLET_ADDRESS: 64,\n BUNDLE_HASH: 64,\n POSITION: 64,\n MOLECULAR_HASH_MIN: 32,\n MOLECULAR_HASH_MAX: 128\n} as const\n\n// =============================================================================\n// PROTOCOL CONSTANTS (CONST ASSERTION)\n// =============================================================================\n\n/**\n * SDK version and protocol constants\n */\nexport const PROTOCOL_CONFIG = {\n DEFAULT_SDK_VERSION: 4,\n SUPPORTED_SDK_VERSIONS: [3, 4, 5],\n DEFAULT_TOKEN: 'USER',\n MAX_BATCH_SIZE: 1000,\n DEFAULT_TIMEOUT: 30000,\n MAX_RETRY_ATTEMPTS: 3\n} as const\n\n/**\n * Network and endpoint constants\n */\nexport const NETWORK_CONFIG = {\n DEFAULT_CELL_SLUG: 'default',\n DEFAULT_LOGGING: false,\n GRAPHQL_ENDPOINTS: {\n QUERY: 'query',\n MUTATION: 'mutation', \n SUBSCRIPTION: 'subscription'\n }\n} as const\n\n// =============================================================================\n// TEMPLATE LITERAL TYPE PATTERNS\n// =============================================================================\n\n/**\n * Template literal types for validation patterns\n */\nexport type HexPattern = `${HexChar}${string}`\nexport type Base17Pattern = `${Base17Char}${string}`\n\n/**\n * Specific hex patterns for different hash types\n */\nexport type WalletAddressPattern = `${HexChar}${HexChar}${string}` & { length: 64 }\nexport type BundleHashPattern = `${HexChar}${HexChar}${string}` & { length: 64 }\nexport type PositionPattern = `${HexChar}${HexChar}${string}` & { length: 64 }\n\n/**\n * Token slug patterns (uppercase alphanumeric with underscores)\n */\nexport type TokenSlugPattern = `${Uppercase<string>}`\n\n/**\n * Meta type patterns\n */\nexport type MetaTypePattern = `${string}`\n\n/**\n * Error message templates\n */\nexport type ErrorMessageTemplate<T extends string> = `${T}: ${string}`\nexport type ValidationErrorTemplate<T extends string> = `Validation failed for ${T}`\nexport type OperationErrorTemplate<T extends string> = `Operation '${T}' failed`\n\n// =============================================================================\n// QUERY TYPE CONSTANTS (CONST ASSERTION)\n// =============================================================================\n\n/**\n * Query operation types\n */\nexport const QUERY_TYPES = [\n 'Balance',\n 'WalletBundle',\n 'WalletList', \n 'Atom',\n 'MetaType',\n 'MetaTypeViaAtom',\n 'ContinuId',\n 'Batch',\n 'ActiveSession',\n 'Policy',\n 'Token',\n 'UserActivity'\n] as const\n\nexport type QueryType = typeof QUERY_TYPES[number]\n\n/**\n * Mutation operation types\n */\nexport const MUTATION_TYPES = [\n 'TransferTokens',\n 'CreateWallet',\n 'RequestAuthorization',\n 'CreateMeta',\n 'CreateToken', \n 'RequestTokens',\n 'ActiveSession',\n 'ClaimShadowWallet',\n 'CreateIdentifier',\n 'CreateRule',\n 'RequestAuthorizationGuest',\n 'DepositBufferToken',\n 'LinkIdentifier',\n 'WithdrawBufferToken',\n 'ProposeMolecule'\n] as const\n\nexport type MutationType = typeof MUTATION_TYPES[number]\n\n/**\n * Subscription operation types \n */\nexport const SUBSCRIPTION_TYPES = [\n 'CreateMolecule',\n 'ActiveSession',\n 'ActiveWallet',\n 'WalletStatus'\n] as const\n\nexport type SubscriptionType = typeof SUBSCRIPTION_TYPES[number]\n\n// =============================================================================\n// VALIDATION CONSTANTS (CONST ASSERTION)\n// =============================================================================\n\n/**\n * Validation rule constants\n */\nexport const VALIDATION_RULES = {\n MIN_TOKEN_SLUG_LENGTH: 1,\n MAX_TOKEN_SLUG_LENGTH: 32,\n MIN_AMOUNT: 0,\n MAX_AMOUNT: Number.MAX_SAFE_INTEGER,\n MIN_META_KEY_LENGTH: 1,\n MAX_META_KEY_LENGTH: 255,\n TOKEN_SLUG_PATTERN: /^[A-Z0-9_]+$/,\n HEX_PATTERN: /^[0-9a-fA-F]+$/,\n BASE17_PATTERN: /^[0-9a-g]+$/i\n} as const\n\n/**\n * Environment variable keys with const assertion\n */\nexport const ENV_KEYS = [\n 'NODE_ENV',\n 'KNISHIO_NODE_URI',\n 'KNISHIO_CELL_SLUG', \n 'KNISHIO_LOGGING',\n 'KNISHIO_SERVER_SDK_VERSION'\n] as const\n\nexport type EnvKey = typeof ENV_KEYS[number]\n\n// =============================================================================\n// TYPE HELPER CONSTANTS \n// =============================================================================\n\n/**\n * Balance query types\n */\nexport const BALANCE_QUERY_TYPES = ['token', 'user'] as const\nexport type BalanceQueryType = typeof BALANCE_QUERY_TYPES[number]\n\n/**\n * Node environment types\n */\nexport const NODE_ENVIRONMENTS = ['development', 'production', 'test'] as const \nexport type NodeEnvironment = typeof NODE_ENVIRONMENTS[number]\n\n/**\n * GraphQL operation names\n */\nexport const GRAPHQL_OPERATIONS = ['query', 'mutation', 'subscription'] as const\nexport type GraphQLOperation = typeof GRAPHQL_OPERATIONS[number]\n\n// =============================================================================\n// UTILITY TYPE HELPERS WITH CONST ASSERTIONS\n// =============================================================================\n\n/**\n * Create immutable lookup objects with const assertions\n */\nexport function createLookup<T extends readonly string[]>(\n values: T\n): Record<T[number], T[number]> {\n return values.reduce((acc, value) => {\n (acc as any)[value] = value\n return acc\n }, {} as Record<T[number], T[number]>)\n}\n\n/**\n * Isotope lookup for O(1) access\n */\nexport const ISOTOPE_LOOKUP = createLookup(ISOTOPES)\n\n/**\n * Error type lookup for O(1) access\n */\nexport const ERROR_TYPE_LOOKUP = createLookup(ERROR_TYPES)\n\n/**\n * Query type lookup for O(1) access\n */\nexport const QUERY_TYPE_LOOKUP = createLookup(QUERY_TYPES)\n\n// =============================================================================\n// SATISFIES OPERATOR EXAMPLES (2025 PATTERN)\n// =============================================================================\n\n/**\n * Configuration with satisfies operator for type checking\n */\nexport const DEFAULT_CLIENT_CONFIG = {\n uri: undefined,\n cellSlug: NETWORK_CONFIG.DEFAULT_CELL_SLUG,\n serverSdkVersion: PROTOCOL_CONFIG.DEFAULT_SDK_VERSION,\n logging: NETWORK_CONFIG.DEFAULT_LOGGING\n} as const satisfies Partial<{\n uri: string | string[] | undefined\n cellSlug: string | undefined\n serverSdkVersion: number\n logging: boolean\n}>\n\n/**\n * Error templates with satisfies operator\n */\nexport const ERROR_TEMPLATES = {\n VALIDATION_FAILED: 'Validation failed for field',\n OPERATION_FAILED: 'Operation failed',\n NETWORK_ERROR: 'Network error occurred',\n TIMEOUT_ERROR: 'Operation timed out'\n} as const satisfies Record<string, string>\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\n\n// Re-export specific constants for convenience\nexport {\n ISOTOPES as AtomIsotopes,\n ERROR_TYPES as ErrorTypes,\n HEX_CHARS as HexChars,\n PROTOCOL_CONFIG as Protocol,\n VALIDATION_RULES as ValidationRules\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Exhaustive Type Guards for KnishIO SDK\n * \n * Implements 2025 TypeScript patterns:\n * - Exhaustive type checking with assertNever\n * - Advanced type guards with user-defined type predicates\n * - Discriminated union type narrowing\n * - Compile-time completeness guarantees\n */\n\nimport type {\n AtomIsotope,\n KnishIOErrorType,\n QueryType,\n MutationType,\n SubscriptionType,\n BalanceQueryType,\n NodeEnvironment\n} from '../constants'\n\nimport type {\n WalletAddress,\n BundleHash,\n TokenSlug,\n Position,\n MolecularHash,\n CellSlug,\n BatchId,\n AtomParams,\n WalletParams,\n MoleculeParams,\n ValueAtom,\n MetaAtom,\n ContinueAtom,\n AnyAtom\n} from './index'\n\n// =============================================================================\n// EXHAUSTIVE CHECKING UTILITIES (2025 TYPESCRIPT)\n// =============================================================================\n\n/**\n * Exhaustive checking function to ensure all union cases are handled\n * Provides compile-time guarantees for completeness\n */\nexport function assertNever(value: never): never {\n throw new Error(`Exhaustive check failed. Received unexpected value: ${JSON.stringify(value)}`)\n}\n\n/**\n * Assert that all cases in a union are handled\n * Usage: assertExhaustive(isotope, handleIsotope) \n */\nexport function assertExhaustive<T>(\n value: T,\n handler: (value: T) => unknown\n): asserts value is never {\n handler(value)\n throw new Error(`Exhaustive check failed for value: ${String(value)}`)\n}\n\n// =============================================================================\n// ISOTOPE TYPE GUARDS (EXHAUSTIVE)\n// =============================================================================\n\n/**\n * Exhaustive isotope type guard with compile-time checking\n */\nexport function isAtomIsotope(value: unknown): value is AtomIsotope {\n return typeof value === 'string' && \n (['C', 'V', 'U', 'T', 'M', 'I', 'R', 'B', 'F'] as const).includes(value as AtomIsotope)\n}\n\n/**\n * Specific isotope type guards for precise type narrowing\n */\nexport function isContinueIsotope(value: unknown): value is 'C' {\n return value === 'C'\n}\n\nexport function isValueIsotope(value: unknown): value is 'V' {\n return value === 'V'\n}\n\nexport function isMetaIsotope(value: unknown): value is 'M' {\n return value === 'M'\n}\n\nexport function isUserIsotope(value: unknown): value is 'U' {\n return value === 'U'\n}\n\nexport function isTokenIsotope(value: unknown): value is 'T' {\n return value === 'T'\n}\n\nexport function isIdentityIsotope(value: unknown): value is 'I' {\n return value === 'I'\n}\n\nexport function isRuleIsotope(value: unknown): value is 'R' {\n return value === 'R'\n}\n\nexport function isBufferIsotope(value: unknown): value is 'B' {\n return value === 'B'\n}\n\nexport function isFuseIsotope(value: unknown): value is 'F' {\n return value === 'F'\n}\n\n/**\n * Exhaustive isotope handler with compile-time completeness\n */\nexport function handleIsotope<T>(\n isotope: AtomIsotope,\n handlers: {\n readonly C: () => T\n readonly V: () => T\n readonly U: () => T\n readonly T: () => T\n readonly M: () => T\n readonly I: () => T\n readonly R: () => T\n readonly B: () => T\n readonly F: () => T\n }\n): T {\n switch (isotope) {\n case 'C': return handlers.C()\n case 'V': return handlers.V()\n case 'U': return handlers.U()\n case 'T': return handlers.T()\n case 'M': return handlers.M()\n case 'I': return handlers.I()\n case 'R': return handlers.R()\n case 'B': return handlers.B()\n case 'F': return handlers.F()\n default: return assertNever(isotope)\n }\n}\n\n// =============================================================================\n// ERROR TYPE GUARDS (EXHAUSTIVE)\n// =============================================================================\n\n/**\n * Exhaustive error type guard\n */\nexport function isKnishIOErrorType(value: unknown): value is KnishIOErrorType {\n const errorTypes = [\n 'ATOM_INDEX_ERROR',\n 'ATOMS_MISSING_ERROR',\n 'AUTHORIZATION_REJECTED_ERROR',\n 'BALANCE_INSUFFICIENT_ERROR',\n 'BATCH_ID_ERROR',\n 'CODE_ERROR',\n 'DECRYPTION_KEY_ERROR',\n 'INVALID_RESPONSE_ERROR',\n 'META_MISSING_ERROR',\n 'MOLECULAR_HASH_MISMATCH_ERROR',\n 'MOLECULAR_HASH_MISSING_ERROR',\n 'NEGATIVE_AMOUNT_ERROR',\n 'POLICY_INVALID_ERROR',\n 'SIGNATURE_MALFORMED_ERROR',\n 'SIGNATURE_MISMATCH_ERROR',\n 'STACKABLE_UNIT_AMOUNT_ERROR',\n 'STACKABLE_UNIT_DECIMALS_ERROR',\n 'TRANSFER_BALANCE_ERROR',\n 'TRANSFER_MALFORMED_ERROR',\n 'TRANSFER_MISMATCHED_ERROR',\n 'TRANSFER_REMAINDER_ERROR',\n 'TRANSFER_TO_SELF_ERROR',\n 'TRANSFER_UNBALANCED_ERROR',\n 'UNAUTHENTICATED_ERROR',\n 'WALLET_CREDENTIAL_ERROR',\n 'WALLET_SHADOW_ERROR',\n 'WRONG_TOKEN_TYPE_ERROR'\n ] as const\n\n return typeof value === 'string' && errorTypes.includes(value as KnishIOErrorType)\n}\n\n/**\n * Error severity type guard\n */\nexport function isErrorSeverity(value: unknown): value is 'low' | 'medium' | 'high' {\n return typeof value === 'string' && ['low', 'medium', 'high'].includes(value)\n}\n\n/**\n * Exhaustive error handler with compile-time completeness\n */\nexport function handleError<T>(\n errorType: KnishIOErrorType,\n handlers: Record<KnishIOErrorType, () => T>\n): T {\n const handler = handlers[errorType]\n if (!handler) {\n return assertNever(errorType as never)\n }\n return handler()\n}\n\n// =============================================================================\n// OPERATION TYPE GUARDS (EXHAUSTIVE)\n// =============================================================================\n\n/**\n * Query type guards\n */\nexport function isQueryType(value: unknown): value is QueryType {\n const queryTypes = [\n 'Balance',\n 'WalletBundle',\n 'WalletList',\n 'Atom',\n 'MetaType',\n 'MetaTypeViaAtom',\n 'ContinuId',\n 'Batch',\n 'ActiveSession',\n 'Policy',\n 'Token',\n 'UserActivity'\n ] as const\n\n return typeof value === 'string' && queryTypes.includes(value as QueryType)\n}\n\n/**\n * Mutation type guards\n */\nexport function isMutationType(value: unknown): value is MutationType {\n const mutationTypes = [\n 'TransferTokens',\n 'CreateWallet',\n 'RequestAuthorization',\n 'CreateMeta',\n 'CreateToken',\n 'RequestTokens',\n 'ActiveSession',\n 'ClaimShadowWallet',\n 'CreateIdentifier',\n 'CreateRule',\n 'RequestAuthorizationGuest',\n 'DepositBufferToken',\n 'LinkIdentifier',\n 'WithdrawBufferToken',\n 'ProposeMolecule'\n ] as const\n\n return typeof value === 'string' && mutationTypes.includes(value as MutationType)\n}\n\n/**\n * Subscription type guards\n */\nexport function isSubscriptionType(value: unknown): value is SubscriptionType {\n const subscriptionTypes = [\n 'CreateMolecule',\n 'ActiveSession',\n 'ActiveWallet',\n 'WalletStatus'\n ] as const\n\n return typeof value === 'string' && subscriptionTypes.includes(value as SubscriptionType)\n}\n\n// =============================================================================\n// BRANDED TYPE GUARDS (PATTERN VALIDATION)\n// =============================================================================\n\n/**\n * Enhanced wallet address validation with pattern checking\n */\nexport function isWalletAddress(value: unknown): value is WalletAddress {\n return typeof value === 'string' && \n value.length === 64 && \n /^[0-9a-fA-F]{64}$/.test(value)\n}\n\n/**\n * Enhanced bundle hash validation\n */\nexport function isBundleHash(value: unknown): value is BundleHash {\n return typeof value === 'string' && \n value.length === 64 && \n /^[0-9a-fA-F]{64}$/.test(value)\n}\n\n/**\n * Enhanced position validation\n */\nexport function isPosition(value: unknown): value is Position {\n return typeof value === 'string' && \n value.length === 64 && \n /^[0-9a-fA-F]{64}$/.test(value)\n}\n\n/**\n * Token slug validation with pattern checking\n */\nexport function isTokenSlug(value: unknown): value is TokenSlug {\n return typeof value === 'string' && \n value.length >= 1 && \n value.length <= 32 && \n /^[A-Z0-9_]+$/.test(value)\n}\n\n/**\n * Molecular hash validation (base17 format)\n */\nexport function isMolecularHash(value: unknown): value is MolecularHash {\n return typeof value === 'string' && \n value.length >= 32 && \n value.length <= 128 && \n /^[0-9a-g]+$/i.test(value)\n}\n\n/**\n * Cell slug validation\n */\nexport function isCellSlug(value: unknown): value is CellSlug {\n return typeof value === 'string' && \n value.length >= 1 && \n value.length <= 64 && \n /^[a-zA-Z0-9\\-_.]+$/.test(value)\n}\n\n/**\n * Batch ID validation (UUID format)\n */\nexport function isBatchId(value: unknown): value is BatchId {\n return typeof value === 'string' && \n /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)\n}\n\n// =============================================================================\n// OBJECT TYPE GUARDS (DISCRIMINATED UNIONS)\n// =============================================================================\n\n/**\n * Atom parameter validation\n */\nexport function isAtomParams(value: unknown): value is AtomParams {\n if (!value || typeof value !== 'object') return false\n \n const obj = value as Record<string, unknown>\n return (\n (!obj.isotope || isAtomIsotope(obj.isotope)) &&\n (!obj.walletAddress || typeof obj.walletAddress === 'string') &&\n (!obj.token || typeof obj.token === 'string') &&\n (!obj.position || typeof obj.position === 'string')\n )\n}\n\n/**\n * Wallet parameter validation\n */\nexport function isWalletParams(value: unknown): value is WalletParams {\n if (!value || typeof value !== 'object') return false\n \n const obj = value as Record<string, unknown>\n return (\n (!obj.secret || typeof obj.secret === 'string') &&\n (!obj.bundle || typeof obj.bundle === 'string') &&\n (!obj.token || typeof obj.token === 'string') &&\n (!obj.address || typeof obj.address === 'string')\n )\n}\n\n/**\n * Molecule parameter validation\n */\nexport function isMoleculeParams(value: unknown): value is MoleculeParams {\n if (!value || typeof value !== 'object') return false\n \n const obj = value as Record<string, unknown>\n return (\n (!obj.secret || typeof obj.secret === 'string') &&\n (!obj.bundle || typeof obj.bundle === 'string') &&\n (!obj.cellSlug || typeof obj.cellSlug === 'string') &&\n (!obj.version || typeof obj.version === 'number')\n )\n}\n\n// =============================================================================\n// ATOM TYPE DISCRIMINATION (ADVANCED)\n// =============================================================================\n\n/**\n * Advanced atom type discrimination based on isotope\n */\nexport function isValueAtom(atom: AnyAtom): atom is ValueAtom {\n return atom.isotope === 'V' && 'value' in atom && atom.value !== null\n}\n\nexport function isMetaAtom(atom: AnyAtom): atom is MetaAtom {\n return atom.isotope === 'M' && 'metaType' in atom && 'metaId' in atom && 'meta' in atom\n}\n\nexport function isContinueAtom(atom: AnyAtom): atom is ContinueAtom {\n return atom.isotope === 'C'\n}\n\n/**\n * Exhaustive atom type handler\n */\nexport function handleAtomType<T>(\n atom: AnyAtom,\n handlers: {\n readonly value: (atom: ValueAtom) => T\n readonly meta: (atom: MetaAtom) => T\n readonly continue: (atom: ContinueAtom) => T\n readonly default: (atom: AnyAtom) => T\n }\n): T {\n if (isValueAtom(atom)) {\n return handlers.value(atom)\n }\n if (isMetaAtom(atom)) {\n return handlers.meta(atom)\n }\n if (isContinueAtom(atom)) {\n return handlers.continue(atom)\n }\n return handlers.default(atom)\n}\n\n// =============================================================================\n// ENVIRONMENT AND CONFIGURATION GUARDS\n// =============================================================================\n\n/**\n * Node environment validation\n */\nexport function isNodeEnvironment(value: unknown): value is NodeEnvironment {\n return typeof value === 'string' && \n (['development', 'production', 'test'] as const).includes(value as NodeEnvironment)\n}\n\n/**\n * Balance query type validation\n */\nexport function isBalanceQueryType(value: unknown): value is BalanceQueryType {\n return typeof value === 'string' && \n (['token', 'user'] as const).includes(value as BalanceQueryType)\n}\n\n// =============================================================================\n// UTILITY TYPE GUARD COMBINATORS\n// =============================================================================\n\n/**\n * Create a union type guard from multiple guards\n */\nexport function createUnionGuard<T extends readonly unknown[]>(\n ...guards: { [K in keyof T]: (value: unknown) => value is T[K] }\n): (value: unknown) => value is T[number] {\n return (value: unknown): value is T[number] => {\n return guards.some(guard => guard(value))\n }\n}\n\n/**\n * Create an array type guard from an element guard\n */\nexport function createArrayGuard<T>(\n elementGuard: (value: unknown) => value is T\n): (value: unknown) => value is T[] {\n return (value: unknown): value is T[] => {\n return Array.isArray(value) && value.every(elementGuard)\n }\n}\n\n/**\n * Create an optional type guard\n */\nexport function createOptionalGuard<T>(\n guard: (value: unknown) => value is T\n): (value: unknown) => value is T | undefined {\n return (value: unknown): value is T | undefined => {\n return value === undefined || guard(value)\n }\n}\n\n// =============================================================================\n// COMPLEX VALIDATION PATTERNS\n// =============================================================================\n\n/**\n * Validate object with required and optional properties\n */\nexport function validateObjectShape<\n Required extends Record<string, (value: unknown) => boolean>,\n Optional extends Record<string, (value: unknown) => boolean>\n>(\n value: unknown,\n requiredProps: Required,\n optionalProps: Optional = {} as Optional\n): value is {\n [K in keyof Required]: Required[K] extends (value: unknown) => value is infer T ? T : never\n} & {\n [K in keyof Optional]?: Optional[K] extends (value: unknown) => value is infer T ? T : never\n} {\n if (!value || typeof value !== 'object') return false\n \n const obj = value as Record<string, unknown>\n \n // Check required properties\n for (const [key, guard] of Object.entries(requiredProps)) {\n if (!(key in obj) || !guard(obj[key])) {\n return false\n }\n }\n \n // Check optional properties\n for (const [key, guard] of Object.entries(optionalProps)) {\n if (key in obj && !guard(obj[key])) {\n return false\n }\n }\n \n return true\n}\n\n// =============================================================================\n// EXPORT GROUPED GUARDS\n// =============================================================================\n\n/**\n * Grouped type guards for convenient access\n */\nexport const Guards = {\n // Isotope guards\n isotope: {\n is: isAtomIsotope,\n continue: isContinueIsotope,\n value: isValueIsotope,\n meta: isMetaIsotope,\n user: isUserIsotope,\n token: isTokenIsotope,\n identity: isIdentityIsotope,\n rule: isRuleIsotope,\n buffer: isBufferIsotope,\n fuse: isFuseIsotope,\n handle: handleIsotope\n },\n \n // Error guards \n error: {\n type: isKnishIOErrorType,\n severity: isErrorSeverity,\n handle: handleError\n },\n \n // Operation guards\n operation: {\n query: isQueryType,\n mutation: isMutationType,\n subscription: isSubscriptionType\n },\n \n // Branded type guards\n branded: {\n walletAddress: isWalletAddress,\n bundleHash: isBundleHash,\n position: isPosition,\n tokenSlug: isTokenSlug,\n molecularHash: isMolecularHash,\n cellSlug: isCellSlug,\n batchId: isBatchId\n },\n \n // Object guards\n object: {\n atomParams: isAtomParams,\n walletParams: isWalletParams,\n moleculeParams: isMoleculeParams\n },\n \n // Atom discrimination\n atom: {\n value: isValueAtom,\n meta: isMetaAtom,\n continue: isContinueAtom,\n handle: handleAtomType\n },\n \n // Environment guards\n env: {\n nodeEnv: isNodeEnvironment,\n balanceQueryType: isBalanceQueryType\n },\n \n // Utility guards\n util: {\n union: createUnionGuard,\n array: createArrayGuard,\n optional: createOptionalGuard,\n shape: validateObjectShape\n },\n \n // Exhaustive checking\n exhaustive: {\n never: assertNever,\n check: assertExhaustive\n }\n} as const","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Atom class - The fundamental unit of KnishIO DLT transactions\n * \n * Atoms represent single, monodirectional actions in the distributed ledger.\n * They are the building blocks of Molecules and maintain strict type safety\n * while ensuring perfect compatibility with other SDK implementations.\n */\n\nimport { shake256, convertToBase17 } from '@/libraries/crypto'\nimport JsSHA from 'jssha'\nimport { PROTOCOL_CONFIG } from '@/constants'\nimport { handleIsotope, isWalletAddress, isPosition } from '@/types/guards'\nimport type {\n AtomIsotope,\n AtomParams,\n WalletAddress,\n TokenSlug,\n MetaType,\n MetaId,\n BatchId\n} from '@/types'\n\n// =============================================================================\n// ATOM CONSTANTS WITH CONST ASSERTIONS (2025 TYPESCRIPT)\n// =============================================================================\n\n/**\n * Atom default values with const assertions for immutability\n */\nexport const ATOM_DEFAULTS = {\n POSITION: '',\n WALLET_ADDRESS: '',\n ISOTOPE: 'C',\n TOKEN: 'USER',\n VALUE: null,\n BATCH_ID: null,\n META_TYPE: null,\n META_ID: null,\n META: [],\n OTS_FRAGMENT: null,\n INDEX: null,\n VERSION: PROTOCOL_CONFIG.DEFAULT_SDK_VERSION\n} as const satisfies {\n readonly POSITION: string\n readonly WALLET_ADDRESS: string\n readonly ISOTOPE: AtomIsotope\n readonly TOKEN: string\n readonly VALUE: null\n readonly BATCH_ID: null\n readonly META_TYPE: null\n readonly META_ID: null\n readonly META: readonly []\n readonly OTS_FRAGMENT: null\n readonly INDEX: null\n readonly VERSION: number\n}\n\n/**\n * Atom validation constants with const assertions\n */\nexport const ATOM_VALIDATION = {\n MIN_INDEX: 0,\n MAX_INDEX: Number.MAX_SAFE_INTEGER,\n REQUIRED_FIELDS: ['position', 'walletAddress', 'isotope'] as const,\n OPTIONAL_FIELDS: ['token', 'value', 'batchId', 'metaType', 'metaId', 'meta'] as const\n} as const\n\n// =============================================================================\n// ATOM INTERFACE AND TYPES\n// =============================================================================\n\nexport interface AtomMetaData {\n readonly key: string\n readonly value: string | number | boolean | null\n readonly [additionalProps: string]: unknown\n}\n\nexport interface AtomCreationParams extends AtomParams {\n version?: number\n}\n\nexport interface AtomHashableData {\n position: string\n walletAddress: string\n isotope: AtomIsotope\n token: string\n value: string | null\n batchId: string | null\n metaType: string | null\n metaId: string | null\n meta: AtomMetaData[] | null\n createdAt: string\n index: number\n}\n\n// =============================================================================\n// ATOM CLASS IMPLEMENTATION\n// =============================================================================\n\n/**\n * Atom - Represents a single, atomic operation in the distributed ledger\n * Maintains full compatibility with JavaScript SDK implementation\n */\nexport default class Atom {\n // Core properties matching JS SDK exactly\n public position: string\n public walletAddress: WalletAddress | string\n public isotope: AtomIsotope\n public token: TokenSlug | string\n public value: string | number | null\n public batchId: BatchId | string | null\n public metaType: MetaType | string | null\n public metaId: MetaId | string | null\n public meta: AtomMetaData[]\n public otsFragment: string | null\n public index: number | null\n public createdAt: string\n public version: number\n\n /**\n * Create a new Atom instance\n * Constructor signature matches JavaScript SDK exactly\n */\n constructor({\n position = ATOM_DEFAULTS.POSITION,\n walletAddress = ATOM_DEFAULTS.WALLET_ADDRESS as any,\n isotope = ATOM_DEFAULTS.ISOTOPE as AtomIsotope,\n token = ATOM_DEFAULTS.TOKEN,\n value = ATOM_DEFAULTS.VALUE,\n batchId = ATOM_DEFAULTS.BATCH_ID,\n metaType = ATOM_DEFAULTS.META_TYPE,\n metaId = ATOM_DEFAULTS.META_ID,\n meta = null,\n otsFragment = ATOM_DEFAULTS.OTS_FRAGMENT,\n index = ATOM_DEFAULTS.INDEX,\n createdAt = null,\n version = ATOM_DEFAULTS.VERSION\n }: AtomCreationParams = {}) {\n \n // Use const assertion values with nullish coalescing (2025 pattern)\n this.position = position ?? ATOM_DEFAULTS.POSITION\n this.walletAddress = walletAddress ?? ATOM_DEFAULTS.WALLET_ADDRESS\n this.isotope = isotope ?? ATOM_DEFAULTS.ISOTOPE\n this.token = token ?? ATOM_DEFAULTS.TOKEN\n this.value = value\n this.batchId = batchId\n this.metaType = metaType\n this.metaId = metaId\n this.meta = meta ? [...meta] : [...ATOM_DEFAULTS.META]\n this.otsFragment = otsFragment\n this.index = index\n this.version = version ?? ATOM_DEFAULTS.VERSION\n // CRITICAL: Use provided createdAt or generate timestamp in milliseconds as string (Implementation Guide requirement)\n this.createdAt = createdAt || String(+new Date())\n }\n\n // =============================================================================\n // INSTANCE METHODS - MATCH JAVASCRIPT SDK\n // =============================================================================\n\n /**\n * Get aggregated metadata for this atom\n * Matches JavaScript SDK Meta.aggregateMeta functionality\n */\n public aggregatedMeta(): Record<string, unknown> {\n const aggregated: Record<string, unknown> = {}\n \n for (const metaItem of this.meta) {\n if (metaItem && typeof metaItem === 'object' && 'key' in metaItem) {\n aggregated[metaItem.key] = metaItem.value\n }\n }\n \n return aggregated\n }\n\n /**\n * Get values that will be used for hashing\n * Must match JavaScript SDK getHashableValues exactly - returns array of strings!\n */\n public getHashableValues(): string[] {\n const hashableValues: string[] = []\n for (const property of Atom.getHashableProps()) {\n const value = (this as any)[property]\n\n // All nullable values are not hashed (only custom keys)\n if (value === null && !['position', 'walletAddress'].includes(property)) {\n continue\n }\n\n // Hashing individual meta keys and values\n if (property === 'meta') {\n for (const meta of value) {\n if (typeof meta.value !== 'undefined' && meta.value !== null) {\n hashableValues.push(String(meta.key))\n hashableValues.push(String(meta.value))\n }\n }\n } else {\n // Default value\n hashableValues.push(value === null ? '' : String(value))\n }\n }\n return hashableValues\n }\n\n /**\n * Get structured data for JSON serialization\n * Separate from hashable values to maintain proper typing\n */\n public getStructuredData(): AtomHashableData {\n return {\n position: this.position || '',\n walletAddress: this.walletAddress?.toString() || '',\n isotope: this.isotope,\n token: this.token?.toString() || '',\n value: this.value !== null ? this.value.toString() : null,\n batchId: this.batchId?.toString() || null,\n metaType: this.metaType?.toString() || null,\n metaId: this.metaId?.toString() || null,\n meta: this.meta.length > 0 ? [...this.meta] : null,\n createdAt: this.createdAt,\n index: this.index !== null ? this.index : 0\n }\n }\n\n /**\n * Returns JSON-ready object for cross-SDK compatibility (2025 TS best practices)\n * \n * Provides clean serialization of atomic operations with optional OTS fragments.\n * Follows 2025 TypeScript best practices with proper type safety and validation.\n *\n * @param options - Serialization options\n * @param options.includeOtsFragments - Include OTS signature fragments (default: true)\n * @param options.validateFields - Validate required fields (default: false)\n * @return JSON-serializable object\n * @throws Error if atom is in invalid state for serialization\n */\n public toJSON(options: {\n includeOtsFragments?: boolean\n validateFields?: boolean\n } = {}): AtomHashableData & { otsFragment?: string | null } {\n const {\n includeOtsFragments = true,\n validateFields = false\n } = options\n\n try {\n // Validate required fields if requested\n if (validateFields) {\n const requiredFields = ['position', 'walletAddress', 'isotope', 'token'] as const\n for (const field of requiredFields) {\n if (!this[field]) {\n throw new Error(`Required field '${field}' is missing or empty`)\n }\n }\n }\n\n // Core atom properties (always included) - use structured data for JSON\n const structuredData = this.getStructuredData()\n const serialized: AtomHashableData & { otsFragment?: string | null } = {\n ...structuredData\n }\n\n // Optional OTS fragments (can be large, so optional)\n if (includeOtsFragments && this.otsFragment) {\n serialized.otsFragment = this.otsFragment\n }\n\n return serialized\n\n } catch (error) {\n throw new Error(`Atom serialization failed: ${(error as Error).message}`)\n }\n }\n\n /**\n * Create a deep copy of this atom\n */\n public clone(): Atom {\n return new Atom({\n position: this.position,\n walletAddress: this.walletAddress as any,\n isotope: this.isotope,\n token: this.token,\n value: this.value,\n batchId: this.batchId,\n metaType: this.metaType,\n metaId: this.metaId,\n meta: this.meta.map(m => ({ ...m })) as any,\n otsFragment: this.otsFragment,\n index: this.index,\n version: this.version\n })\n }\n\n /**\n * Check if atom is valid for inclusion in molecules\n * TypeScript 2025: Uses exhaustive type guards for compile-time completeness\n */\n public isValid(): boolean {\n // TypeScript 2025: Enhanced validation with type guards\n if (!isPosition(this.position) || !isWalletAddress(this.walletAddress)) {\n return false\n }\n\n // Exhaustive isotope validation with compile-time completeness\n return handleIsotope(this.isotope, {\n V: () => this.value !== null && !isNaN(Number(this.value)), // Value atoms must have numeric value\n M: () => Boolean(this.metaType && this.metaId), // Meta atoms must have metaType and metaId\n C: () => true, // Continue atoms are always valid if position/address present\n U: () => true, // User atoms\n T: () => true, // Token atoms\n I: () => true, // Identity atoms\n R: () => true, // Rule atoms\n B: () => true, // Buffer atoms\n F: () => true // Fuse atoms\n })\n }\n\n // =============================================================================\n // STATIC METHODS - MATCH JAVASCRIPT SDK EXACTLY\n // =============================================================================\n\n /**\n * Get properties that should be included in hash calculation\n * MUST match JavaScript SDK implementation exactly\n */\n static getHashableProps(): string[] {\n return [\n 'position',\n 'walletAddress', \n 'isotope',\n 'token',\n 'value',\n 'batchId',\n 'metaType',\n 'metaId',\n 'meta',\n 'createdAt'\n ]\n // NOTE: 'index' excluded - matches JavaScript canonical exactly\n // Index is for atom ordering, not hash calculation\n }\n\n /**\n * Get properties for unclaimed shadow wallets\n * Matches JavaScript SDK getUnclaimedProps\n */\n static getUnclaimedProps(): string[] {\n return [\n 'position',\n 'walletAddress',\n 'isotope', \n 'token',\n 'value',\n 'batchId',\n 'metaType',\n 'metaId',\n 'meta',\n 'createdAt'\n ]\n }\n\n /**\n * Create atom from parameters - factory method\n * Matches JavaScript SDK Atom.create static method\n */\n static create(params: AtomCreationParams): Atom {\n return new Atom(params)\n }\n\n /**\n * Creates an Atom instance from JSON data (2025 TS best practices)\n * \n * Handles cross-SDK atom deserialization with robust error handling.\n * Essential for reconstructing atoms from other SDK implementations.\n *\n * @param json - JSON string or object to deserialize\n * @param options - Deserialization options\n * @param options.validateStructure - Validate required fields (default: true)\n * @param options.strictMode - Strict validation mode (default: false)\n * @return Reconstructed atom instance\n * @throws Error if JSON is invalid or required fields are missing\n */\n static fromJSON(json: string | Record<string, unknown>, options: {\n validateStructure?: boolean\n strictMode?: boolean\n } = {}): Atom {\n const {\n validateStructure = true,\n strictMode = false\n } = options\n\n try {\n // Parse JSON safely\n const data = typeof json === 'string' ? JSON.parse(json) : json\n\n // Validate required fields in strict mode\n if (strictMode || validateStructure) {\n const requiredFields = ['position', 'walletAddress', 'isotope', 'token'] as const\n for (const field of requiredFields) {\n if (!data[field]) {\n throw new Error(`Required field '${field}' is missing or empty`)\n }\n }\n }\n\n // Create atom instance with required fields\n const atom = new Atom({\n position: data.position as string,\n walletAddress: data.walletAddress as any,\n isotope: data.isotope as AtomIsotope,\n token: data.token as string,\n value: data.value as string | number | null,\n batchId: data.batchId as string | null,\n metaType: data.metaType as string | null,\n metaId: data.metaId as string | null,\n meta: data.meta as any,\n index: data.index as number | null,\n version: data.version as number\n })\n\n // Set additional properties that may not be in constructor\n if (data.otsFragment) {\n atom.otsFragment = data.otsFragment as string\n }\n if (data.createdAt) {\n atom.createdAt = data.createdAt as string\n }\n\n return atom\n\n } catch (error) {\n throw new Error(`Atom deserialization failed: ${(error as Error).message}`)\n }\n }\n\n /**\n * Convert JSON object back to Atom instance\n * Matches JavaScript SDK jsonToObject method - kept for compatibility\n */\n static jsonToObject(jsonData: Record<string, unknown>): Atom {\n return Atom.fromJSON(jsonData)\n }\n\n /**\n * Hash multiple atoms to create molecular hash\n * MUST match JavaScript SDK algorithm exactly for cross-platform compatibility\n * \n * CRITICAL: This implementation must exactly mirror the JavaScript SDK approach:\n * 1. Sort atoms by index property \n * 2. For each sorted atom: ADD number of atoms to hashableValues array\n * 3. CONCATENATE all atom's hashable values to the array\n * 4. Iterate through hashableValues array and update SHAKE256 sponge\n */\n static hashAtoms({ atoms }: { atoms: Atom[] }): string {\n if (!atoms || atoms.length === 0) {\n return ''\n }\n \n // Step 1: Sort atoms by index to ensure deterministic hashing (matches JS SDK)\n const atomList = Atom.sortAtoms(atoms)\n const numberOfAtoms = String(atoms.length)\n let hashableValues: string[] = []\n\n // Step 2: Build hashableValues array exactly like JavaScript SDK\n for (const atom of atomList) {\n // Add number of atoms (matching JS SDK comment: \"Add number of atoms (???)\")\n hashableValues.push(numberOfAtoms)\n \n // Add atom's properties - concatenate the array returned by getHashableValues\n hashableValues = hashableValues.concat(atom.getHashableValues())\n }\n\n // Step 3: Create molecular hash using SHAKE256 exactly like JS SDK (iterative updates)\n const molecularSponge = new JsSHA('SHAKE256', 'TEXT')\n \n // CRITICAL FIX: Use iterative updates like JavaScript, not string concatenation\n for (const hashableValue of hashableValues) {\n molecularSponge.update(hashableValue) // Match JavaScript SDK exactly\n }\n \n // Step 4: Get hex hash (256 bits = 64 hex chars) and convert to base17\n const hexHash = molecularSponge.getHash('HEX', { outputLen: 256 })\n \n // Step 5: Convert hex hash to base17 format (Implementation Guide requirement)\n return convertToBase17(hexHash.toLowerCase())\n }\n\n /**\n * Sort atoms by index\n * Matches JavaScript SDK sortAtoms method\n */\n static sortAtoms(atoms: Atom[]): Atom[] {\n return [...atoms].sort((a, b) => {\n const indexA = a.index !== null ? a.index : 0\n const indexB = b.index !== null ? b.index : 0\n return indexA - indexB\n })\n }\n\n /**\n * Generate next atom index for a collection\n * Matches JavaScript SDK generateNextAtomIndex method\n */\n static generateNextAtomIndex(atoms: Atom[]): number {\n if (!atoms || atoms.length === 0) {\n return 0\n }\n\n const indices = atoms\n .map(atom => atom.index !== null ? atom.index : 0)\n .filter(index => typeof index === 'number')\n\n return indices.length > 0 ? Math.max(...indices) + 1 : 0\n }\n\n /**\n * Filter atoms by isotope(s)\n * Matches JavaScript SDK isotopeFilter method \n */\n static isotopeFilter(isotopes: AtomIsotope | AtomIsotope[], atoms: Atom[]): Atom[] {\n const targetIsotopes = Array.isArray(isotopes) ? isotopes : [isotopes]\n return atoms.filter(atom => targetIsotopes.includes(atom.isotope))\n }\n\n // =============================================================================\n // VALIDATION AND UTILITY METHODS\n // =============================================================================\n\n /**\n * Validate atom data structure\n */\n static validateAtom(atom: unknown): atom is Atom {\n if (!atom || typeof atom !== 'object') {\n return false\n }\n\n const atomObj = atom as Record<string, unknown>\n \n return typeof atomObj.position === 'string' &&\n typeof atomObj.walletAddress === 'string' &&\n typeof atomObj.isotope === 'string' &&\n typeof atomObj.token === 'string' &&\n (atomObj.value === null || typeof atomObj.value === 'string' || typeof atomObj.value === 'number') &&\n Array.isArray(atomObj.meta)\n }\n\n /**\n * Check if atom is a specific isotope type\n */\n static isIsotope(atom: Atom, isotope: AtomIsotope): boolean {\n return atom.isotope === isotope\n }\n\n /**\n * Get all unique isotopes from atom collection\n */\n static getUniqueIsotopes(atoms: Atom[]): AtomIsotope[] {\n const isotopes = new Set<AtomIsotope>()\n for (const atom of atoms) {\n isotopes.add(atom.isotope)\n }\n return Array.from(isotopes)\n }\n\n /**\n * Calculate total value for value atoms\n */\n static calculateTotalValue(atoms: Atom[]): number {\n return atoms\n .filter(atom => atom.isotope === 'V' && atom.value !== null)\n .reduce((total, atom) => total + Number(atom.value), 0)\n }\n\n /**\n * Group atoms by isotope\n */\n static groupByIsotope(atoms: Atom[]): Record<AtomIsotope, Atom[]> {\n const groups: Partial<Record<AtomIsotope, Atom[]>> = {}\n \n for (const atom of atoms) {\n if (!groups[atom.isotope]) {\n groups[atom.isotope] = []\n }\n groups[atom.isotope]!.push(atom)\n }\n \n return groups as Record<AtomIsotope, Atom[]>\n }\n}\n\n// =============================================================================\n// TYPE EXPORTS\n// =============================================================================\n\n// Types are already exported from the types package","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport JsSHA from 'jssha'\nimport { randomString, chunkSubstr } from '@/libraries/strings'\nimport { generateBundleHash, generateSecret, shake256 } from '@/libraries/crypto'\nimport WalletCredentialException from '@/exception/WalletCredentialException'\nimport { isWalletAddress, isBundleHash, isPosition } from '@/types'\n// Post-quantum cryptography for ML-KEM768 key encapsulation\nimport { ml_kem768 } from '@noble/post-quantum/ml-kem.js'\n\n/**\n * Wallet class - Identity and key management for KnishIO DLT\n * Essential implementation for transaction operations\n */\nexport default class Wallet {\n public token: string\n public balance: number\n public address: string | null\n public position: string | null\n public bundle: string | null\n public batchId: string | null\n public characters: string | null\n public key: string | null\n public privkey: any\n public pubkey: any\n public tokenUnits: any[]\n public tradeRates: Record<string, any>\n public molecules: Record<string, any>\n\n constructor({\n secret = null,\n bundle = null,\n token = 'USER',\n address = null,\n position = null,\n batchId = null,\n characters = null\n }: {\n secret?: string | null\n bundle?: string | null\n token?: string\n address?: string | null\n position?: string | null\n batchId?: string | null\n characters?: string | null\n } = {}) {\n // TypeScript 2025: Exhaustive validation with type guards\n if (address !== null && !isWalletAddress(address)) {\n throw new WalletCredentialException('Invalid wallet address format')\n }\n if (bundle !== null && !isBundleHash(bundle)) {\n throw new WalletCredentialException('Invalid bundle hash format')\n }\n if (position !== null && !isPosition(position)) {\n throw new WalletCredentialException('Invalid position format')\n }\n this.token = token\n this.balance = 0\n this.molecules = {}\n \n // Empty values\n this.key = null\n this.privkey = null\n this.pubkey = null\n this.tokenUnits = []\n this.tradeRates = {}\n \n this.address = address\n this.position = position\n this.bundle = bundle\n this.batchId = batchId\n this.characters = characters\n\n if (secret) {\n // Set bundle from the secret\n this.bundle = this.bundle || generateBundleHash(secret, 'Wallet::constructor')\n \n // Generate a position for non-shadow wallet if not initialized\n this.position = this.position || Wallet.generatePosition()\n \n // Key & address initialization\n this.key = Wallet.generateKey({\n secret,\n token: this.token,\n position: this.position\n })\n this.address = this.address || Wallet.generateAddress(this.key)\n \n // Set characters\n this.characters = this.characters || 'BASE64'\n \n // Initialize ML-KEM768 keys (matches JavaScript SDK)\n this.initializeMLKEM()\n }\n }\n\n /**\n * Creates a new Wallet instance\n * Matches JavaScript SDK Wallet.create exactly\n */\n static create({\n secret = null,\n bundle = null,\n token = 'USER',\n batchId = null,\n characters = null\n }: {\n secret?: string | null\n bundle?: string | null\n token?: string\n batchId?: string | null\n characters?: string | null\n }): Wallet {\n let position = null\n \n // No credentials parameters provided?\n if (!secret && !bundle) {\n throw new WalletCredentialException()\n }\n \n // Secret, but no bundle?\n if (secret && !bundle) {\n position = Wallet.generatePosition()\n bundle = generateBundleHash(secret, 'Wallet::create')\n }\n \n // Wallet initialization\n return new Wallet({\n secret,\n bundle,\n token,\n position,\n batchId,\n characters\n })\n }\n\n\n /**\n * Generates a private key for the given parameters\n * MUST match JavaScript SDK Wallet.generateKey exactly using sponge pattern\n */\n static generateKey({\n secret,\n token,\n position\n }: {\n secret: string\n token: string\n position: string\n }): string {\n // Converting secret to bigInt\n const bigIntSecret = BigInt(`0x${secret}`)\n \n // Adding new position to the user secret to produce the indexed key\n const indexedKey = bigIntSecret + BigInt(`0x${position}`)\n \n // Hashing the indexed key to produce the intermediate key\n // CRITICAL FIX: Use sponge pattern exactly like JavaScript SDK\n const intermediateKeySponge = new JsSHA('SHAKE256', 'TEXT')\n intermediateKeySponge.update(indexedKey.toString(16))\n \n if (token) {\n // CRITICAL FIX: Update the SAME sponge with token (no concatenation)\n intermediateKeySponge.update(token)\n }\n \n // Hashing the intermediate key to produce the private key\n // CRITICAL FIX: Create NEW sponge for private key (matching JS SDK)\n const privateKeySponge = new JsSHA('SHAKE256', 'TEXT')\n privateKeySponge.update(intermediateKeySponge.getHash('HEX', { outputLen: 8192 }))\n \n return privateKeySponge.getHash('HEX', { outputLen: 8192 })\n }\n\n /**\n * Generates a wallet address\n * Matches JavaScript SDK Wallet.generateAddress exactly\n */\n static generateAddress(key: string): string {\n // Subdivide private key into 16 fragments of 128 characters each\n const keyFragments = chunkSubstr(key, 128)\n \n // Generating wallet digest\n let digestInput = ''\n \n for (let index = 0; index < keyFragments.length; index++) {\n let workingFragment = keyFragments[index]\n if (!workingFragment) continue\n \n // Hash each fragment 16 times\n for (let fragmentCount = 1; fragmentCount <= 16; fragmentCount++) {\n // Fix: Use 512 bits to get 128 hex chars output (matching JS SDK)\n workingFragment = shake256(workingFragment, 512)\n }\n \n digestInput += workingFragment\n }\n \n // Producing wallet address\n // Fix: Use 8192 bits to get 2048 hex chars for digest (matching JS SDK)\n const digest = shake256(digestInput, 8192)\n // Fix: Use 256 bits to get 64 hex chars for address (matching JS SDK)\n return shake256(digest, 256)\n }\n\n /**\n * Generate a random position for wallet\n * Matches JavaScript SDK Wallet.generatePosition exactly\n */\n static generatePosition(saltLength = 64): string {\n return randomString(saltLength, 'abcdef0123456789')\n }\n\n /**\n * Determines if the provided string is a bundle hash\n * Uses exhaustive type guard from types system\n * @param maybeBundleHash - String to check\n * @return True if valid bundle hash format\n */\n static isBundleHash(maybeBundleHash: unknown): maybeBundleHash is string {\n return typeof maybeBundleHash === 'string' && isBundleHash(maybeBundleHash)\n }\n\n /**\n * Get formatted token units from raw data\n * Stub implementation for now\n */\n static getTokenUnits(unitsData: any[]): any[] {\n // TODO: Implement TokenUnit class if needed\n return unitsData\n }\n\n /**\n * Create a remainder wallet for transactions\n * Used by Molecule for creating remainder atoms\n */\n createRemainder(secret: string): Wallet {\n return Wallet.create({\n secret,\n bundle: this.bundle,\n token: this.token,\n batchId: this.batchId,\n characters: this.characters\n })\n }\n\n /**\n * Get token units data\n * Stub for compatibility\n */\n getTokenUnitsData(): any[] {\n return this.tokenUnits\n }\n\n /**\n * Check if this is a shadow wallet\n * Shadow wallets don't have position or address set\n * @return True if this is a shadow wallet\n */\n isShadow(): boolean {\n return (\n (typeof this.position === 'undefined' || this.position === null) &&\n (typeof this.address === 'undefined' || this.address === null)\n )\n }\n\n // =============================================================================\n // POST-QUANTUM CRYPTOGRAPHY - ML-KEM768 INTEGRATION\n // =============================================================================\n\n /**\n * Initializes the ML-KEM key pair (matches JavaScript SDK exactly)\n */\n initializeMLKEM(): void {\n // Generate a 64-byte (512-bit) seed from the Knish.IO private key \n // Use deterministic approach: generateSecret(key, 128) → 128 hex chars = 64 bytes\n const seedHex = generateSecret(this.key!, 128) // 128 hex chars = 64 bytes\n \n // Convert the hex string to a Uint8Array \n const seed = new Uint8Array(64)\n for (let i = 0; i < 64; i++) {\n seed[i] = parseInt(seedHex.substr(i * 2, 2), 16)\n }\n \n const { publicKey, secretKey } = ml_kem768.keygen(seed)\n this.pubkey = this.serializeKey(publicKey)\n this.privkey = secretKey // Note: We're keeping privkey as UInt8Array for security\n }\n\n\n // =============================================================================\n // HIGH-LEVEL MESSAGE ENCRYPTION (JavaScript SDK Compatibility)\n // =============================================================================\n\n async encryptMessage(message: any, recipientPubkey: string): Promise<{ cipherText: string; encryptedMessage: string }> {\n const messageString = JSON.stringify(message)\n const messageUint8 = new TextEncoder().encode(messageString)\n const deserializedPubkey = this.deserializeKey(recipientPubkey)\n const { cipherText, sharedSecret } = ml_kem768.encapsulate(deserializedPubkey)\n const encryptedMessage = await this.encryptWithSharedSecret(messageUint8, sharedSecret)\n return {\n cipherText: this.serializeKey(cipherText),\n encryptedMessage: this.serializeKey(encryptedMessage)\n }\n }\n\n async decryptMessage(encryptedData: { cipherText: string; encryptedMessage: string }): Promise<any> {\n const { cipherText, encryptedMessage } = encryptedData\n let sharedSecret\n try {\n sharedSecret = ml_kem768.decapsulate(this.deserializeKey(cipherText), this.privkey)\n } catch (e) {\n console.error('Wallet::decryptMessage() - Decapsulation failed', e)\n console.info('Wallet::decryptMessage() - my public key', this.pubkey)\n return null\n }\n let deserializedEncryptedMessage\n try {\n deserializedEncryptedMessage = this.deserializeKey(encryptedMessage)\n } catch (e) {\n console.warn('Wallet::decryptMessage() - Deserialization failed', e)\n console.info('Wallet::decryptMessage() - my public key', this.pubkey)\n console.info('Wallet::decryptMessage() - our shared secret', sharedSecret)\n return null\n }\n let decryptedUint8\n try {\n decryptedUint8 = await this.decryptWithSharedSecret(deserializedEncryptedMessage, sharedSecret)\n } catch (e) {\n console.warn('Wallet::decryptMessage() - Decryption failed', e)\n console.info('Wallet::decryptMessage() - my public key', this.pubkey)\n console.info('Wallet::decryptMessage() - our shared secret', sharedSecret)\n console.info('Wallet::decryptMessage() - deserialized encrypted message', deserializedEncryptedMessage)\n return null\n }\n let decryptedString\n try {\n decryptedString = new TextDecoder().decode(decryptedUint8)\n } catch (e) {\n console.warn('Wallet::decryptMessage() - Decoding failed', e)\n console.info('Wallet::decryptMessage() - my public key', this.pubkey)\n console.info('Wallet::decryptMessage() - our shared secret', sharedSecret)\n console.info('Wallet::decryptMessage() - deserialized encrypted message', deserializedEncryptedMessage)\n console.info('Wallet::decryptMessage() - decrypted Uint8Array', decryptedUint8)\n return null\n }\n return JSON.parse(decryptedString)\n }\n\n // =============================================================================\n // SYMMETRIC ENCRYPTION HELPERS (AES-GCM with shared secret)\n // =============================================================================\n\n /**\n * Encrypt data using AES-GCM with the given shared secret\n */\n private async encryptWithSharedSecret(message: Uint8Array, sharedSecret: Uint8Array): Promise<Uint8Array> {\n // Generate random IV for AES-GCM\n const iv = crypto.getRandomValues(new Uint8Array(12))\n \n // Import shared secret as CryptoKey\n const key = await crypto.subtle.importKey(\n 'raw',\n sharedSecret,\n { name: 'AES-GCM' },\n false,\n ['encrypt']\n )\n \n // Encrypt the message\n const encryptedContent = await crypto.subtle.encrypt(\n { name: 'AES-GCM', iv },\n key,\n message\n )\n \n // Combine IV and encrypted content\n const result = new Uint8Array(iv.length + encryptedContent.byteLength)\n result.set(iv)\n result.set(new Uint8Array(encryptedContent), iv.length)\n \n return result\n }\n\n /**\n * Decrypt data using AES-GCM with the given shared secret\n */\n private async decryptWithSharedSecret(encryptedMessage: Uint8Array, sharedSecret: Uint8Array): Promise<Uint8Array> {\n // Extract IV from the encrypted message\n const iv = encryptedMessage.slice(0, 12)\n const ciphertext = encryptedMessage.slice(12)\n \n // Import shared secret as CryptoKey\n const key = await crypto.subtle.importKey(\n 'raw',\n sharedSecret,\n { name: 'AES-GCM' },\n false,\n ['decrypt']\n )\n \n // Decrypt the message\n const decryptedContent = await crypto.subtle.decrypt(\n { name: 'AES-GCM', iv },\n key,\n ciphertext\n )\n \n return new Uint8Array(decryptedContent)\n }\n\n serializeKey(key: Uint8Array): string {\n return btoa(String.fromCharCode(...key))\n }\n\n deserializeKey(serializedKey: string): Uint8Array {\n const binaryString = atob(serializedKey)\n return new Uint8Array([...binaryString].map(char => char.charCodeAt(0)))\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Core TypeScript type definitions for the KnishIO SDK\n * Provides type safety for post-blockchain DLT operations\n */\n\n// =============================================================================\n// IMPORTS FOR CONST ASSERTIONS\n// =============================================================================\n\nimport type { \n AtomIsotope, \n KnishIOErrorType, \n HexChar, \n Base17Char,\n HexPattern,\n Base17Pattern,\n WalletAddressPattern,\n BundleHashPattern,\n PositionPattern,\n TokenSlugPattern,\n ErrorMessageTemplate,\n ValidationErrorTemplate,\n OperationErrorTemplate,\n QueryType,\n MutationType,\n SubscriptionType,\n BalanceQueryType,\n NodeEnvironment\n} from '../constants'\n\nimport { ISOTOPE_LOOKUP } from '../constants'\n\n// =============================================================================\n// BRANDED TYPES WITH TEMPLATE LITERAL PATTERNS (2025 TYPESCRIPT)\n// =============================================================================\n\n/**\n * Enhanced branded types with template literal validation\n * Provides both runtime and compile-time type safety\n */\nexport type WalletAddress = WalletAddressPattern & { readonly __brand: 'WalletAddress' }\nexport type BundleHash = BundleHashPattern & { readonly __brand: 'BundleHash' }\nexport type Position = PositionPattern & { readonly __brand: 'Position' }\nexport type MolecularHash = Base17Pattern & { readonly __brand: 'MolecularHash' }\nexport type TokenSlug = TokenSlugPattern & { readonly __brand: 'TokenSlug' }\nexport type MetaType = string & { readonly __brand: 'MetaType' }\nexport type MetaId = string & { readonly __brand: 'MetaId' }\nexport type BatchId = string & { readonly __brand: 'BatchId' }\nexport type CellSlug = string & { readonly __brand: 'CellSlug' }\n\n// =============================================================================\n// ENHANCED TEMPLATE LITERAL TYPES (2025 TYPESCRIPT)\n// =============================================================================\n\n/**\n * Advanced template literal types for validation\n * Leverages const assertions and pattern matching\n */\nexport type HexString = HexPattern & { readonly __hex: true }\nexport type Base17Hash = Base17Pattern & { readonly __base17: true }\n\n// Re-export from constants for convenience\nexport type { HexChar, Base17Char } from '../constants'\n\n/**\n * Specific length-validated hex types using template literals\n */\nexport type Hex64 = `${HexChar}${string}` & { length: 64 }\nexport type Hex32 = `${HexChar}${string}` & { length: 32 }\nexport type Hex16 = `${HexChar}${string}` & { length: 16 }\n\n/**\n * URL and URI template patterns\n */\nexport type HttpUrl = `http://${string}`\nexport type HttpsUrl = `https://${string}`\nexport type WebSocketUrl = `ws://${string}` | `wss://${string}`\nexport type GraphQLEndpoint = `${HttpUrl | HttpsUrl}/graphql`\n\n/**\n * Version template patterns\n */\nexport type SemanticVersion = `${number}.${number}.${number}`\nexport type SdkVersion = `v${SemanticVersion}`\n\n// =============================================================================\n// ATOM ISOTOPE TYPES WITH CONST ASSERTIONS (2025 TYPESCRIPT)\n// =============================================================================\n\n/**\n * Re-export isotope types from constants with const assertions\n * Provides immutable type definitions at compile-time\n */\nexport type { AtomIsotope } from '../constants'\n\n/**\n * Enhanced isotope descriptions with const assertion\n * Uses satisfies operator for type checking\n */\nexport type IsotopeDescriptions = {\n readonly [K in AtomIsotope]: `${string} - ${string}`\n}\n\n/**\n * Template literal types for isotope-specific validation\n */\nexport type IsotopeCode<T extends AtomIsotope> = T\nexport type IsotopeDescription<T extends AtomIsotope> = T extends keyof IsotopeDescriptions \n ? IsotopeDescriptions[T] \n : never\n\n// =============================================================================\n// META DATA TYPES\n// =============================================================================\n\nexport interface MetaData {\n [key: string]: string | number | boolean | null | MetaData | MetaData[]\n}\n\nexport interface AtomMetaData extends MetaData {\n readonly key: string\n readonly value: string | number | boolean | null\n}\n\n// =============================================================================\n// CORE INTERFACE TYPES\n// =============================================================================\n\nexport interface AtomParams {\n position?: string | null\n walletAddress?: WalletAddress | null\n isotope?: AtomIsotope\n token?: TokenSlug | string\n value?: string | number | null\n batchId?: BatchId | string | null\n metaType?: MetaType | string | null\n metaId?: MetaId | string | null\n meta?: AtomMetaData[] | null\n otsFragment?: string | null\n index?: number | null\n createdAt?: string | null\n version?: number | null\n}\n\nexport interface WalletParams {\n secret?: string | null\n bundle?: BundleHash | string | null\n token?: TokenSlug | string\n address?: WalletAddress | string | null\n position?: Position | string | null\n batchId?: BatchId | string | null\n characters?: string | null\n}\n\nexport interface MoleculeParams {\n secret?: string | null\n bundle?: BundleHash | string | null\n sourceWallet?: WalletParams | null\n remainderWallet?: WalletParams | null\n cellSlug?: CellSlug | string | null\n version?: number\n}\n\n// =============================================================================\n// CLIENT CONFIGURATION TYPES\n// =============================================================================\n\n/**\n * Enhanced client configuration with const assertions and template literals\n */\nexport interface KnishIOClientConfig {\n readonly uri?: HttpUrl | HttpsUrl | readonly (HttpUrl | HttpsUrl)[]\n readonly cellSlug?: CellSlug | string | null\n readonly client?: unknown | null\n readonly socket?: unknown | null\n readonly serverSdkVersion?: 3 | 4 | 5 // Specific supported versions\n readonly logging?: boolean\n readonly timeout?: number\n readonly retryAttempts?: number\n}\n\n/**\n * Configuration with satisfies operator for type safety\n */\nexport type ValidatedClientConfig = KnishIOClientConfig & {\n readonly uri: NonNullable<KnishIOClientConfig['uri']>\n readonly serverSdkVersion: NonNullable<KnishIOClientConfig['serverSdkVersion']>\n}\n\n// =============================================================================\n// AUTHENTICATION TYPES\n// =============================================================================\n\nexport interface AuthTokenParams {\n token: string\n expiresAt: number\n encrypt: boolean\n pubkey: string\n}\n\nexport interface AuthParams {\n cellSlug?: CellSlug | string | null\n encrypt?: boolean\n callback?: (response: unknown) => void\n}\n\nexport interface GuestAuthParams {\n cellSlug?: CellSlug | string | null\n}\n\n// =============================================================================\n// TOKEN OPERATION TYPES\n// =============================================================================\n\nexport interface TransferParams {\n recipient: WalletAddress | string\n amount: number | string\n token?: TokenSlug | string\n callbackUrl?: string | null\n metaType?: MetaType | string | null\n metaId?: MetaId | string | null\n meta?: MetaData | null\n}\n\nexport interface CreateTokenParams {\n token: TokenSlug | string\n amount: number | string\n metaType?: MetaType | string | null\n metaId?: MetaId | string | null\n meta?: MetaData | null\n fungible?: boolean\n splittable?: number\n supplyToken?: TokenSlug | string | null\n}\n\nexport interface RequestTokensParams {\n amount: number | string\n token?: TokenSlug | string\n metaType?: MetaType | string | null\n metaId?: MetaId | string | null\n meta?: MetaData | null\n}\n\n// =============================================================================\n// QUERY PARAMETER TYPES\n// =============================================================================\n\nexport interface BalanceQueryParams {\n address?: WalletAddress | string | null\n bundleHash?: BundleHash | string | null\n token?: TokenSlug | string | null\n type?: 'token' | 'user' | null\n}\n\nexport interface MetaQueryParams {\n metaType: MetaType | string\n metaId?: MetaId | string | null\n key?: string | null\n value?: string | null\n latest?: boolean | null\n filter?: string | null\n queryArgs?: Record<string, unknown> | null\n count?: number | null\n countBy?: string | null\n cellSlug?: CellSlug | string | null\n}\n\nexport interface WalletQueryParams {\n bundleHash?: BundleHash | string | null\n tokenSlug?: TokenSlug | string | null\n unspent?: boolean | null\n}\n\n// =============================================================================\n// RESPONSE BASE TYPES\n// =============================================================================\n\nexport interface BaseResponse<T = unknown> {\n success(): boolean\n reason(): string | null\n data(): T | null\n payload(): Record<string, unknown> | null\n}\n\nexport interface ValidationResult {\n valid: boolean\n error?: string | null\n expected?: string\n actual?: unknown\n}\n\n// =============================================================================\n// CRYPTOGRAPHIC TYPES\n// =============================================================================\n\nexport interface CryptoOptions {\n seed?: string | null\n length?: number\n outputLength?: number\n}\n\nexport interface KeyPairResult {\n privateKey: string\n publicKey: string\n}\n\nexport interface SignatureResult {\n signature: string\n otsFragments?: string[]\n}\n\n// =============================================================================\n// GRAPHQL OPERATION TYPES\n// =============================================================================\n\nexport interface GraphQLRequest {\n query: string\n variables?: Record<string, unknown>\n operationName?: string | null\n}\n\nexport interface GraphQLResponse<T = unknown> {\n data?: T | null\n errors?: Array<{\n message: string\n locations?: Array<{ line: number; column: number }>\n path?: Array<string | number>\n extensions?: Record<string, unknown>\n }> | null\n extensions?: Record<string, unknown>\n}\n\n// =============================================================================\n// SUBSCRIPTION TYPES\n// =============================================================================\n\nexport interface SubscriptionOptions {\n operationName?: string\n query?: string\n variables?: Record<string, unknown>\n callback?: (data: unknown) => void\n}\n\n// =============================================================================\n// ADVANCED UTILITY TYPES (2025 TYPESCRIPT)\n// =============================================================================\n\n/**\n * Enhanced utility types with const assertions\n */\nexport type DeepPartial<T> = {\n readonly [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]\n}\n\nexport type RequiredBy<T, K extends keyof T> = T & Required<Pick<T, K>>\nexport type OptionalBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n\n/**\n * Const assertion utility type\n */\nexport type AsConst<T> = T extends readonly unknown[] \n ? readonly [...T] \n : T extends Record<string, unknown> \n ? { readonly [K in keyof T]: AsConst<T[K]> } \n : T\n\n/**\n * Template literal utility for creating branded types\n */\nexport type Branded<T, B extends string> = T & { readonly __brand: B }\n\n/**\n * Conditional types for isotope-specific atoms with const assertions\n */\nexport type AtomWithIsotope<I extends AtomIsotope> = AtomParams & { \n readonly isotope: I \n}\n\n/**\n * Enhanced atom types with template literal validation\n */\nexport type ValueAtom = AtomWithIsotope<'V'> & { \n readonly value: number | string\n} & { readonly __atomType: 'ValueAtom' }\n\nexport type MetaAtom = AtomWithIsotope<'M'> & { \n readonly metaType: MetaType | string\n readonly metaId: MetaId | string\n readonly meta: readonly AtomMetaData[]\n} & { readonly __atomType: 'MetaAtom' }\n\nexport type ContinueAtom = AtomWithIsotope<'C'> & { \n readonly __atomType: 'ContinueAtom' \n}\n\n/**\n * Union type for all atom variants\n */\nexport type AnyAtom = ValueAtom | MetaAtom | ContinueAtom\n\n/**\n * Template literal type for operation names\n */\nexport type OperationName<T extends string> = `${Lowercase<T>}Operation`\n\n/**\n * Exhaustive check utility with template literals\n */\nexport type Exhaustive<T> = T extends never ? never : `Unhandled case: ${T & string}`\n\n/**\n * Template literal type for creating API method names\n */\nexport type ApiMethodName<T extends string> = `${Lowercase<T>}${Capitalize<string>}`\n\n// =============================================================================\n// ERROR TYPES\n// =============================================================================\n\n/**\n * Enhanced ErrorContext with conditional properties (2025 TypeScript)\n * Supports flexible error context while maintaining type safety\n */\nexport interface ErrorContext {\n readonly operation?: string\n readonly parameters?: Record<string, unknown>\n readonly timestamp?: number\n readonly stack?: string\n // Exception-specific context properties\n readonly reason?: string\n readonly expiresAt?: number\n readonly credentialType?: string\n readonly field?: string\n readonly value?: unknown\n readonly expected?: string\n readonly actual?: unknown\n readonly code?: string\n readonly severity?: 'low' | 'medium' | 'high'\n readonly recoverable?: boolean\n readonly retryable?: boolean\n // Allow additional properties with proper typing\n readonly [key: string]: unknown\n}\n\n/**\n * Re-export error types from constants with const assertions\n * Provides immutable error type definitions\n */\nexport type { KnishIOErrorType } from '../constants'\n\n/**\n * Template literal types for error messages\n */\nexport type ErrorMessage<T extends KnishIOErrorType> = ErrorMessageTemplate<T>\nexport type ValidationError<T extends string> = ValidationErrorTemplate<T>\nexport type OperationError<T extends string> = OperationErrorTemplate<T>\n\n/**\n * Enhanced error context with template literals\n */\nexport type ErrorContextKey = `error_${string}` | `validation_${string}` | `operation_${string}`\n\n// =============================================================================\n// MODULE DECLARATION AUGMENTATIONS\n// =============================================================================\n\ndeclare global {\n interface String {\n toCamelCase(): string\n toSnakeCase(): string\n }\n}\n\n// =============================================================================\n// TYPE GUARDS\n// =============================================================================\n\nexport function isHexString(value: string): value is HexString {\n return /^[0-9a-fA-F]+$/.test(value)\n}\n\nexport function isWalletAddress(value: string): value is WalletAddress {\n return isHexString(value) && value.length === 64\n}\n\nexport function isBundleHash(value: string): value is BundleHash {\n return isHexString(value) && value.length === 64\n}\n\nexport function isPosition(value: string): value is Position {\n return isHexString(value) && value.length === 64\n}\n\nexport function isMolecularHash(value: string): value is MolecularHash {\n return /^[0-9a-g]+$/.test(value.toLowerCase()) // Base17 format\n}\n\n/**\n * Enhanced type guards using const assertions from constants\n */\nexport function isAtomIsotope(value: string): value is AtomIsotope {\n return value in ISOTOPE_LOOKUP\n}\n\n/**\n * Type guard for GraphQL operations using template literals\n */\nexport function isGraphQLOperation(value: string): value is 'query' | 'mutation' | 'subscription' {\n return ['query', 'mutation', 'subscription'].includes(value)\n}\n\n/**\n * Type guard for environment using const assertions\n */\nexport function isNodeEnvironment(value: string): value is NodeEnvironment {\n return (['development', 'production', 'test'] as const).includes(value as NodeEnvironment)\n}\n\n// =============================================================================\n// FACTORY FUNCTIONS FOR BRANDED TYPES\n// =============================================================================\n\nexport function createWalletAddress(value: string): WalletAddress {\n if (!isWalletAddress(value)) {\n throw new Error(`Invalid wallet address: ${value}`)\n }\n return value as WalletAddress\n}\n\nexport function createBundleHash(value: string): BundleHash {\n if (!isBundleHash(value)) {\n throw new Error(`Invalid bundle hash: ${value}`)\n }\n return value as BundleHash\n}\n\nexport function createPosition(value: string): Position {\n if (!isPosition(value)) {\n throw new Error(`Invalid position: ${value}`)\n }\n return value as Position\n}\n\nexport function createTokenSlug(value: string): TokenSlug {\n if (!value || value.length === 0) {\n throw new Error('Token slug cannot be empty')\n }\n return value.toUpperCase() as TokenSlug\n}\n\nexport function createMolecularHash(value: string): MolecularHash {\n if (!isMolecularHash(value)) {\n throw new Error(`Invalid molecular hash: ${value}`)\n }\n return value as MolecularHash\n}\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\n\nexport * from './client'\nexport * from './crypto'\nexport * from './graphql'\n\n// All types are already exported via the export * statements above","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport {\n AtomIndexException,\n AtomsMissingException,\n MolecularHashMismatchException,\n MolecularHashMissingException,\n PolicyInvalidException,\n SignatureMalformedException,\n SignatureMismatchException,\n TransferBalanceException,\n TransferMalformedException,\n TransferMismatchedException,\n TransferRemainderException,\n TransferToSelfException,\n TransferUnbalancedException,\n MetaMissingException,\n WrongTokenTypeException,\n BatchIdException\n} from '@/exception'\nimport Atom from '@/core/Atom'\nimport Meta from '@/core/Meta'\nimport Wallet from '@/core/Wallet'\nimport Rule from '@/instance/rules/Rule'\nimport { base64ToHex, chunkSubstr } from '@/libraries/strings'\nimport { shake256 } from '@/libraries/crypto'\nimport Dot from '@/libraries/Dot'\n\n// Type definitions for Molecule structure\ninterface MoleculeStructure {\n molecularHash: string | null\n atoms: Atom[]\n status?: string | null\n createdAt?: string\n cellSlug?: string | null\n cellSlugOrigin?: string | null\n bundle?: string | null\n \n // Methods that Molecule should have\n getIsotopes(isotope: string): Atom[]\n normalizedHash(): number[]\n}\n\n/**\n * CheckMolecule class - Validates molecular integrity and signatures\n * Matches JavaScript SDK CheckMolecule functionality exactly\n */\nexport default class CheckMolecule {\n private molecule: MoleculeStructure\n\n /**\n * Initialize CheckMolecule with a molecule to validate\n * @param molecule - The molecule to validate\n * @throws MolecularHashMissingException if molecular hash is null\n * @throws AtomsMissingException if no atoms present\n * @throws AtomIndexException if any atom has null index\n */\n constructor(molecule: MoleculeStructure) {\n // No molecular hash?\n if (molecule.molecularHash === null) {\n throw new MolecularHashMissingException()\n }\n\n // No atoms?\n if (!molecule.atoms.length) {\n throw new AtomsMissingException()\n }\n\n // Check atom indexes\n for (const atom of molecule.atoms) {\n if (atom.index === null) {\n throw new AtomIndexException()\n }\n }\n\n this.molecule = molecule\n }\n\n /**\n * Perform complete molecular validation\n * @param senderWallet - Optional wallet for balance validation\n * @return True if all validations pass\n */\n verify(senderWallet?: Wallet | null): boolean {\n return this.molecularHash() &&\n this.ots() &&\n this.batchId() &&\n this.continuId() &&\n this.isotopeM() &&\n this.isotopeT() &&\n this.isotopeC() &&\n this.isotopeU() &&\n this.isotopeI() &&\n this.isotopeR() &&\n this.isotopeV(senderWallet || null)\n }\n\n /**\n * Validate ContinuID requirement\n * @return True if valid\n * @throws AtomsMissingException if missing required ContinuID atom\n */\n continuId(): boolean {\n const firstAtom = this.molecule.atoms[0]\n\n if (firstAtom?.token === 'USER' && this.molecule.getIsotopes('I').length < 1) {\n throw new AtomsMissingException('Check::continuId() - Molecule is missing required ContinuID Atom!')\n }\n\n return true\n }\n\n /**\n * Validate batch ID consistency\n * @return True if valid\n * @throws BatchIdException if batch ID validation fails\n */\n batchId(): boolean {\n if (this.molecule.atoms.length > 0) {\n const signingAtom = this.molecule.atoms[0]\n\n if (signingAtom?.isotope === 'V' && signingAtom.batchId !== null) {\n const atoms = this.molecule.getIsotopes('V')\n const remainderAtom = atoms[atoms.length - 1]\n\n if (!remainderAtom || signingAtom.batchId !== remainderAtom.batchId) {\n throw new BatchIdException()\n }\n\n for (const atom of atoms) {\n if (atom.batchId === null) {\n throw new BatchIdException()\n }\n }\n }\n\n return true\n }\n\n throw new BatchIdException()\n }\n\n /**\n * Validate isotope I atoms\n * @return True if valid\n * @throws WrongTokenTypeException if token is not USER\n * @throws AtomIndexException if index is 0\n */\n isotopeI(): boolean {\n for (const atom of this.molecule.getIsotopes('I')) {\n if (atom.token !== 'USER') {\n throw new WrongTokenTypeException(`Check::isotopeI() - \"${atom.token}\" is not a valid Token slug for \"${atom.isotope}\" isotope Atoms!`)\n }\n\n if (atom.index === 0) {\n throw new AtomIndexException(`Check::isotopeI() - Isotope \"${atom.isotope}\" Atoms must have a non-zero index!`)\n }\n }\n\n return true\n }\n\n /**\n * Validate isotope U atoms\n * @return True if valid\n * @throws WrongTokenTypeException if token is not AUTH\n * @throws AtomIndexException if index is not 0\n */\n isotopeU(): boolean {\n for (const atom of this.molecule.getIsotopes('U')) {\n if (atom.token !== 'AUTH') {\n throw new WrongTokenTypeException(`Check::isotopeU() - \"${atom.token}\" is not a valid Token slug for \"${atom.isotope}\" isotope Atoms!`)\n }\n\n if (atom.index !== 0) {\n throw new AtomIndexException(`Check::isotopeU() - Isotope \"${atom.isotope}\" Atoms must have an index equal to 0!`)\n }\n }\n\n return true\n }\n\n /**\n * Validate isotope M atoms and their policies\n * @return True if valid\n * @throws MetaMissingException if meta is missing\n * @throws WrongTokenTypeException if token is not USER\n * @throws PolicyInvalidException if policy validation fails\n */\n isotopeM(): boolean {\n const policyArray = ['readPolicy', 'writePolicy']\n\n for (const atom of this.molecule.getIsotopes('M')) {\n if (atom.meta.length < 1) {\n throw new MetaMissingException()\n }\n\n if (atom.token !== 'USER') {\n throw new WrongTokenTypeException(`Check::isotopeM() - \"${atom.token}\" is not a valid Token slug for \"${atom.isotope}\" isotope Atoms!`)\n }\n\n const metas = Meta.aggregateMeta(atom.meta)\n\n for (const key of policyArray) {\n let policy = metas[key]\n\n if (policy) {\n policy = JSON.parse(policy as string) as Record<string, any>\n\n for (const [policyName, policyValue] of Object.entries(policy)) {\n if (!policyArray.includes(policyName)) {\n if (!Object.keys(metas).includes(policyName)) {\n throw new PolicyInvalidException(`${policyName} is missing from the meta.`)\n }\n\n for (const value of policyValue as any[]) {\n if (!Wallet.isBundleHash(value) && !['all', 'self'].includes(value)) {\n throw new PolicyInvalidException(`${value} does not correspond to the format of the policy.`)\n }\n }\n }\n }\n }\n }\n }\n\n return true\n }\n\n /**\n * Validate isotope C atoms\n * @return True if valid\n * @throws WrongTokenTypeException if token is not USER\n * @throws AtomIndexException if index is not 0\n */\n isotopeC(): boolean {\n for (const atom of this.molecule.getIsotopes('C')) {\n if (atom.token !== 'USER') {\n throw new WrongTokenTypeException(`Check::isotopeC() - \"${atom.token}\" is not a valid Token slug for \"${atom.isotope}\" isotope Atoms!`)\n }\n\n if (atom.index !== 0) {\n throw new AtomIndexException(`Check::isotopeC() - Isotope \"${atom.isotope}\" Atoms must have an index equal to 0!`)\n }\n }\n\n return true\n }\n\n /**\n * Validate isotope T atoms\n * @return True if valid\n * @throws MetaMissingException if required meta fields are missing\n * @throws WrongTokenTypeException if token is not USER\n * @throws AtomIndexException if index is not 0\n */\n isotopeT(): boolean {\n for (const atom of this.molecule.getIsotopes('T')) {\n const meta = atom.aggregatedMeta()\n const metaType = String(atom.metaType).toLowerCase()\n\n if (metaType === 'wallet') {\n for (const key of ['position', 'bundle']) {\n if (!Object.prototype.hasOwnProperty.call(meta, key) || !meta[key]) {\n throw new MetaMissingException(`Check::isotopeT() - Required meta field \"${key}\" is missing!`)\n }\n }\n }\n\n for (const key of ['token']) {\n if (!Object.prototype.hasOwnProperty.call(meta, key) || !meta[key]) {\n throw new MetaMissingException(`Check::isotopeT() - Required meta field \"${key}\" is missing!`)\n }\n }\n\n if (atom.token !== 'USER') {\n throw new WrongTokenTypeException(`Check::isotopeT() - \"${atom.token}\" is not a valid Token slug for \"${atom.isotope}\" isotope Atoms!`)\n }\n\n if (atom.index !== 0) {\n throw new AtomIndexException(`Check::isotopeT() - Isotope \"${atom.isotope}\" Atoms must have an index equal to 0!`)\n }\n }\n\n return true\n }\n\n /**\n * Validate isotope R atoms (rules)\n * @return True if valid\n * @throws MetaMissingException if rule validation fails\n */\n isotopeR(): boolean {\n for (const atom of this.molecule.getIsotopes('R')) {\n const metas = atom.aggregatedMeta()\n\n if (metas.policy) {\n const policy = JSON.parse(metas.policy as string)\n\n if (!Object.keys(policy).every(i => ['read', 'write'].includes(i))) {\n throw new MetaMissingException('Check::isotopeR() - Mixing rules with politics!')\n }\n }\n\n if (metas.rule) {\n const rules = JSON.parse(metas.rule as string)\n\n if (!Array.isArray(rules)) {\n throw new MetaMissingException('Check::isotopeR() - Incorrect rule format!')\n }\n\n for (const item of rules) {\n Rule.toObject(item)\n }\n\n if (rules.length < 1) {\n throw new MetaMissingException('Check::isotopeR() - No rules!')\n }\n }\n }\n\n return true\n }\n\n /**\n * Validate isotope V atoms (value transfers)\n * @param senderWallet - Optional wallet for balance validation\n * @return True if valid\n * @throws Various transfer exceptions for validation failures\n */\n isotopeV(senderWallet: Wallet | null = null): boolean {\n const isotopeV = this.molecule.getIsotopes('V')\n\n if (isotopeV.length === 0) {\n return true\n }\n\n const firstAtom = this.molecule.atoms[0]\n\n if (!firstAtom) {\n throw new AtomsMissingException('Check::isotopeV() - Missing first atom')\n }\n\n if (firstAtom.isotope === 'V' && isotopeV.length === 2) {\n const endAtom = isotopeV[isotopeV.length - 1]\n\n if (!endAtom) {\n throw new AtomsMissingException('Check::isotopeV() - Missing end atom')\n }\n\n if (firstAtom.token !== endAtom.token) {\n throw new TransferMismatchedException()\n }\n\n const endValue = endAtom.value !== null ? Number(endAtom.value) : 0\n if (endValue < 0) {\n throw new TransferMalformedException()\n }\n\n return true\n }\n\n let sum = 0\n let value = 0\n\n for (const index in this.molecule.atoms) {\n if (Object.prototype.hasOwnProperty.call(this.molecule.atoms, index)) {\n const vAtom = this.molecule.atoms[index]\n\n // Not V? Next...\n if (!vAtom || vAtom.isotope !== 'V') {\n continue\n }\n\n // Making sure we're in integer land\n value = vAtom.value !== null ? Number(vAtom.value) : 0\n\n if (Number.isNaN(value)) {\n throw new TypeError('Invalid isotope \"V\" values')\n }\n\n // Making sure all V atoms of the same token\n if (vAtom.token !== firstAtom.token) {\n throw new TransferMismatchedException()\n }\n\n // Checking non-primary atoms\n if (Number(index) > 0) {\n // Negative V atom in a non-primary position?\n if (value < 0) {\n throw new TransferMalformedException()\n }\n\n // Cannot be sending and receiving from the same address\n if (vAtom.walletAddress === firstAtom.walletAddress) {\n throw new TransferToSelfException()\n }\n }\n\n // Adding this Atom's value to the total sum\n sum += value\n }\n }\n\n // All atoms must sum to zero for a balanced transaction\n if (sum !== 0) {\n throw new TransferUnbalancedException()\n }\n\n // If we're provided with a senderWallet argument, we can perform additional checks\n if (senderWallet) {\n const firstValue = firstAtom.value !== null ? Number(firstAtom.value) : 0\n\n if (Number.isNaN(firstValue)) {\n throw new TypeError('Invalid isotope \"V\" values')\n }\n\n const remainder = senderWallet.balance + firstValue\n\n // Is there enough balance to send?\n if (remainder < 0) {\n throw new TransferBalanceException()\n }\n\n // Does the remainder match what should be there in the source wallet, if provided?\n if (remainder !== sum) {\n throw new TransferRemainderException()\n }\n } else if (sum !== 0) {\n // No senderWallet, but have a remainder?\n throw new TransferRemainderException()\n }\n\n // Looks like we passed all the tests!\n return true\n }\n\n /**\n * Verify molecular hash matches atom content\n * @return True if valid\n * @throws MolecularHashMismatchException if hash doesn't match\n */\n molecularHash(): boolean {\n if (this.molecule.molecularHash !== Atom.hashAtoms({\n atoms: this.molecule.atoms\n })) {\n throw new MolecularHashMismatchException()\n }\n\n // Looks like we passed all the tests!\n return true\n }\n\n /**\n * Verify one-time signature (OTS)\n * @return True if valid\n * @throws SignatureMalformedException if signature format is invalid\n * @throws SignatureMismatchException if signature doesn't match\n */\n ots(): boolean {\n // Convert Hm to numeric notation via EnumerateMolecule(Hm)\n const normalizedHash = this.molecule.normalizedHash()\n\n // Rebuilding OTS out of all the atoms\n let ots = this.molecule.atoms.map(\n atom => atom.otsFragment || ''\n ).reduce(\n (accumulator, otsFragment) => accumulator + otsFragment\n )\n\n // Wrong size? Maybe it's compressed\n if (ots.length !== 2048) {\n // Attempting decompression\n ots = base64ToHex(ots)\n\n // Still wrong? That's a failure\n if (ots.length !== 2048) {\n throw new SignatureMalformedException()\n }\n }\n\n // Subdivide Kk into 16 segments of 256 bytes (128 characters) each\n const otsChunks = chunkSubstr(ots, 128)\n\n let keyFragments = ''\n\n for (const index in otsChunks) {\n let workingChunk = otsChunks[index]\n if (!workingChunk) continue\n \n const hashValue = normalizedHash[Number(index)] || 0\n\n for (let iterationCount = 0, condition = 8 + hashValue; iterationCount < condition; iterationCount++) {\n workingChunk = shake256(workingChunk, 512)\n }\n\n keyFragments += workingChunk\n }\n\n // Absorb the hashed Kk into the sponge to receive the digest Dk\n const digest = shake256(keyFragments, 8192)\n\n // Squeeze the sponge to retrieve a 128 byte (64 character) string that should match the sender's wallet address\n const address = shake256(digest, 256)\n\n // Signing atom\n const signingAtom = this.molecule.atoms[0]\n \n if (!signingAtom) {\n throw new SignatureMismatchException()\n }\n\n // Get a signing address\n let signingAddress = signingAtom.walletAddress\n\n // Get signing wallet from first atom's metas\n const signingWallet = Dot.get(signingAtom.aggregatedMeta(), 'signingWallet')\n\n // Try to get custom signing address from the metas (local molecule with server secret)\n if (signingWallet) {\n const parsedWallet = JSON.parse(signingWallet as string)\n const walletAddress = Dot.get(parsedWallet, 'address')\n if (walletAddress) {\n signingAddress = walletAddress as string\n }\n }\n\n if (address !== signingAddress) {\n throw new SignatureMismatchException()\n }\n\n // Looks like we passed all the tests!\n return true\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Meta class - Handles metadata normalization and aggregation\n * \n * Provides static methods for processing metadata across atoms and molecules\n * Ensures consistent metadata handling across the SDK\n */\n\nimport type { MetaData } from '@/types'\n\n// =============================================================================\n// META TYPES AND INTERFACES\n// =============================================================================\n\nexport interface NormalizedMeta {\n key: string\n value: string | number | boolean | null\n [additionalProps: string]: unknown\n}\n\nexport interface MetaItem {\n key: string\n value: unknown\n [props: string]: unknown\n}\n\nexport interface AggregatedMetaResult {\n [key: string]: unknown\n}\n\n// =============================================================================\n// META CLASS IMPLEMENTATION\n// =============================================================================\n\n/**\n * Meta class - Static methods for metadata processing\n * Matches JavaScript SDK Meta class functionality exactly\n */\nexport default class Meta {\n // No instance properties - this class only provides static methods\n \n /**\n * Normalize metadata to consistent format\n * Matches JavaScript SDK Meta.normalizeMeta exactly\n */\n static normalizeMeta(meta: MetaData | MetaItem[] | null): NormalizedMeta[] {\n if (!meta) {\n return []\n }\n\n // Handle array of meta items\n if (Array.isArray(meta)) {\n return meta.map(item => {\n if (typeof item === 'object' && item !== null && 'key' in item) {\n return {\n ...item,\n key: String(item.key),\n value: item.value as string | number | boolean | null\n }\n }\n \n // Fallback for invalid items\n return {\n key: 'unknown',\n value: String(item) as string | number | boolean | null\n }\n })\n }\n\n // Handle object metadata - convert to array format\n if (typeof meta === 'object' && meta !== null) {\n return Object.entries(meta).map(([key, value]) => ({\n key,\n value: value as string | number | boolean | null\n }))\n }\n\n // Handle primitive values\n return [{\n key: 'value',\n value: meta as string | number | boolean | null\n }]\n }\n\n /**\n * Aggregate metadata into single object\n * Matches JavaScript SDK Meta.aggregateMeta exactly \n */\n static aggregateMeta(metaItems: NormalizedMeta[] | MetaItem[] | null): AggregatedMetaResult {\n if (!metaItems || !Array.isArray(metaItems)) {\n return {}\n }\n\n const aggregated: AggregatedMetaResult = {}\n \n for (const item of metaItems) {\n if (item && typeof item === 'object' && 'key' in item) {\n const key = String(item.key)\n \n // Handle different value types appropriately\n if ('value' in item) {\n aggregated[key] = item.value\n } else {\n // If no explicit value property, use the entire item minus the key\n const { key: itemKey, ...restOfItem } = item as any\n aggregated[key] = Object.keys(restOfItem).length === 1 && 'value' in restOfItem \n ? restOfItem.value \n : restOfItem\n }\n }\n }\n\n return aggregated\n }\n\n /**\n * Merge multiple metadata arrays\n * Combines arrays while preserving order and handling duplicates\n */\n static mergeMeta(...metaArrays: (NormalizedMeta[] | MetaItem[] | null)[]): NormalizedMeta[] {\n const merged: NormalizedMeta[] = []\n const keysSeen = new Set<string>()\n\n for (const metaArray of metaArrays) {\n if (!metaArray || !Array.isArray(metaArray)) {\n continue\n }\n\n const normalized = this.normalizeMeta(metaArray)\n \n for (const item of normalized) {\n // Handle duplicate keys by appending index\n let finalKey = item.key\n let counter = 1\n \n while (keysSeen.has(finalKey)) {\n finalKey = `${item.key}_${counter}`\n counter++\n }\n \n keysSeen.add(finalKey)\n merged.push({\n ...item,\n key: finalKey\n })\n }\n }\n\n return merged\n }\n\n /**\n * Filter metadata by key pattern or predicate\n */\n static filterMeta(\n metaItems: NormalizedMeta[] | MetaItem[] | null,\n filter: string | RegExp | ((item: NormalizedMeta) => boolean)\n ): NormalizedMeta[] {\n if (!metaItems || !Array.isArray(metaItems)) {\n return []\n }\n\n const normalized = this.normalizeMeta(metaItems)\n \n if (typeof filter === 'string') {\n return normalized.filter(item => item.key.includes(filter))\n }\n \n if (filter instanceof RegExp) {\n return normalized.filter(item => filter.test(item.key))\n }\n \n if (typeof filter === 'function') {\n return normalized.filter(filter)\n }\n \n return normalized\n }\n\n /**\n * Find metadata item by key\n */\n static findMeta(\n metaItems: NormalizedMeta[] | MetaItem[] | null,\n key: string\n ): NormalizedMeta | null {\n if (!metaItems || !Array.isArray(metaItems)) {\n return null\n }\n\n const normalized = this.normalizeMeta(metaItems)\n return normalized.find(item => item.key === key) || null\n }\n\n /**\n * Get metadata value by key\n */\n static getMetaValue(\n metaItems: NormalizedMeta[] | MetaItem[] | null,\n key: string,\n defaultValue: unknown = null\n ): unknown {\n const item = this.findMeta(metaItems, key)\n return item ? item.value : defaultValue\n }\n\n /**\n * Set or update metadata item by key\n */\n static setMeta(\n metaItems: NormalizedMeta[] | MetaItem[] | null,\n key: string,\n value: unknown\n ): NormalizedMeta[] {\n const normalized = this.normalizeMeta(metaItems)\n const existingIndex = normalized.findIndex(item => item.key === key)\n \n const newItem: NormalizedMeta = {\n key,\n value: value as string | number | boolean | null\n }\n \n if (existingIndex >= 0) {\n // Update existing item\n normalized[existingIndex] = newItem\n } else {\n // Add new item\n normalized.push(newItem)\n }\n \n return normalized\n }\n\n /**\n * Remove metadata item by key\n */\n static removeMeta(\n metaItems: NormalizedMeta[] | MetaItem[] | null,\n key: string\n ): NormalizedMeta[] {\n if (!metaItems || !Array.isArray(metaItems)) {\n return []\n }\n\n const normalized = this.normalizeMeta(metaItems)\n return normalized.filter(item => item.key !== key)\n }\n\n /**\n * Convert metadata to JSON-serializable format\n */\n static toJSON(metaItems: NormalizedMeta[] | MetaItem[] | null): Record<string, unknown> {\n return this.aggregateMeta(this.normalizeMeta(metaItems))\n }\n\n /**\n * Create metadata from JSON object\n */\n static fromJSON(jsonData: Record<string, unknown>): NormalizedMeta[] {\n if (!jsonData || typeof jsonData !== 'object') {\n return []\n }\n\n return Object.entries(jsonData).map(([key, value]) => ({\n key,\n value: value as string | number | boolean | null\n }))\n }\n\n /**\n * Validate metadata structure\n */\n static validateMeta(metaItems: unknown): metaItems is NormalizedMeta[] {\n if (!Array.isArray(metaItems)) {\n return false\n }\n\n return metaItems.every(item => \n item && \n typeof item === 'object' && \n 'key' in item && \n typeof item.key === 'string'\n )\n }\n\n /**\n * Get all unique keys from metadata\n */\n static getKeys(metaItems: NormalizedMeta[] | MetaItem[] | null): string[] {\n if (!metaItems || !Array.isArray(metaItems)) {\n return []\n }\n\n const normalized = this.normalizeMeta(metaItems)\n const keys = new Set<string>()\n \n for (const item of normalized) {\n keys.add(item.key)\n }\n \n return Array.from(keys)\n }\n\n /**\n * Check if metadata contains specific key\n */\n static hasKey(metaItems: NormalizedMeta[] | MetaItem[] | null, key: string): boolean {\n return this.getKeys(metaItems).includes(key)\n }\n\n /**\n * Get metadata statistics\n */\n static getStats(metaItems: NormalizedMeta[] | MetaItem[] | null): {\n totalItems: number\n uniqueKeys: number\n keys: string[]\n valueTypes: Record<string, number>\n } {\n if (!metaItems || !Array.isArray(metaItems)) {\n return {\n totalItems: 0,\n uniqueKeys: 0,\n keys: [],\n valueTypes: {}\n }\n }\n\n const normalized = this.normalizeMeta(metaItems)\n const keys = this.getKeys(normalized)\n const valueTypes: Record<string, number> = {}\n \n for (const item of normalized) {\n const type = item.value === null ? 'null' : typeof item.value\n valueTypes[type] = (valueTypes[type] || 0) + 1\n }\n \n return {\n totalItems: normalized.length,\n uniqueKeys: keys.length,\n keys,\n valueTypes\n }\n }\n\n /**\n * Deep clone metadata array\n */\n static clone(metaItems: NormalizedMeta[] | MetaItem[] | null): NormalizedMeta[] {\n if (!metaItems || !Array.isArray(metaItems)) {\n return []\n }\n\n const normalized = this.normalizeMeta(metaItems)\n return normalized.map(item => ({ ...item }))\n }\n\n /**\n * Sort metadata by key\n */\n static sort(\n metaItems: NormalizedMeta[] | MetaItem[] | null,\n descending = false\n ): NormalizedMeta[] {\n if (!metaItems || !Array.isArray(metaItems)) {\n return []\n }\n\n const normalized = this.normalizeMeta(metaItems)\n return normalized.sort((a, b) => {\n const comparison = a.key.localeCompare(b.key)\n return descending ? -comparison : comparison\n })\n }\n}\n\n// =============================================================================\n// TYPE EXPORTS\n// =============================================================================\n\n// Types are already exported at the interface declarations","/**\n * Rule class - Policy and rule management for KnishIO DLT\n * STUB IMPLEMENTATION - Full implementation pending\n */\nexport default class Rule {\n public name: string\n public conditions: any[]\n public actions: any[]\n\n constructor(data: any = {}) {\n this.name = data.name || ''\n this.conditions = data.conditions || []\n this.actions = data.actions || []\n }\n\n /**\n * Convert rule data to Rule object\n * @param data - Rule data to convert\n * @return Rule instance\n */\n static toObject(data: any): Rule {\n if (data instanceof Rule) {\n return data\n }\n return new Rule(data)\n }\n\n // TODO: Implement remaining Rule methods\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Atom from './Atom'\nimport AtomMeta from './AtomMeta'\nimport Wallet from './Wallet'\nimport CheckMolecule from '@/libraries/CheckMolecule'\nimport { chunkSubstr, hexToBase64 } from '@/libraries/strings'\nimport { generateBundleHash, generateOTSSignature } from '@/libraries/crypto'\nimport { deepCloning } from '@/libraries/array'\nimport {\n AtomsMissingException,\n BalanceInsufficientException,\n NegativeAmountException,\n SignatureMalformedException\n} from '@/exception'\nimport type { AtomIsotope } from '@/types'\n\n/**\n * Molecule class - Transaction container for KnishIO DLT\n * Essential implementation for basic transactions\n */\nexport default class Molecule {\n public status: string | null\n public molecularHash: string | null\n public createdAt: string\n public cellSlugOrigin: string | null\n public cellSlug: string | null\n public secret: string | null\n public bundle: string | null\n public sourceWallet: Wallet | null\n public remainderWallet: Wallet | null\n public atoms: Atom[]\n public version: string | null\n public local?: number\n\n /**\n * Create new Molecule instance\n * Matches JavaScript SDK constructor signature\n */\n constructor({\n secret = null,\n bundle = null,\n sourceWallet = null,\n remainderWallet = null,\n cellSlug = null,\n version = null\n }: {\n secret?: string | null\n bundle?: string | null\n sourceWallet?: Wallet | null\n remainderWallet?: Wallet | null\n cellSlug?: string | null\n version?: string | number | null\n } = {}) {\n this.status = null\n this.molecularHash = null\n this.createdAt = String(+new Date())\n this.cellSlugOrigin = this.cellSlug = cellSlug\n this.secret = secret\n this.bundle = bundle\n this.sourceWallet = sourceWallet\n this.atoms = []\n \n if (version !== null) {\n this.version = String(version)\n } else {\n this.version = null\n }\n\n // Set the remainder wallet for this transaction\n if (remainderWallet || sourceWallet) {\n this.remainderWallet = remainderWallet || Wallet.create({\n secret: secret!,\n bundle,\n token: sourceWallet!.token,\n batchId: sourceWallet!.batchId,\n characters: sourceWallet!.characters\n })\n } else {\n this.remainderWallet = null\n }\n }\n\n /**\n * Returns the cell slug delimiter\n */\n get cellSlugDelimiter(): string {\n return '.'\n }\n\n /**\n * Filters atoms by isotope(s)\n * Matches JavaScript SDK getIsotopes method\n */\n getIsotopes(isotopes: AtomIsotope | AtomIsotope[]): Atom[] {\n return Molecule.isotopeFilter(isotopes, this.atoms)\n }\n\n /**\n * Filters the atoms array by the supplied isotope list\n * Static version matching JavaScript SDK\n */\n static isotopeFilter(isotopes: AtomIsotope | AtomIsotope[], atoms: Atom[]): Atom[] {\n if (!Array.isArray(isotopes)) {\n isotopes = [isotopes]\n }\n return atoms.filter(atom => isotopes.includes(atom.isotope))\n }\n\n /**\n * Generates the next atomic index\n */\n static generateNextAtomIndex(atoms: Atom[]): number {\n return atoms.length\n }\n\n /**\n * Generates the next atomic index for this molecule\n */\n generateIndex(): number {\n return Molecule.generateNextAtomIndex(this.atoms)\n }\n\n /**\n * Add an atom to this molecule\n * Matches JavaScript SDK addAtom method\n */\n addAtom(atom: Atom): Molecule {\n // Reset the molecular hash\n this.molecularHash = null\n\n // Set atom's index\n atom.index = this.generateIndex()\n atom.version = this.version ? Number(this.version) : 4\n\n // Add atom\n this.atoms.push(atom)\n\n // Sort atoms\n this.atoms = Atom.sortAtoms(this.atoms)\n\n return this\n }\n\n /**\n * Add user remainder atom for ContinuID\n */\n addContinuIdAtom(): Molecule {\n if (!this.remainderWallet) {\n throw new Error('Remainder wallet required for ContinuID atom')\n }\n\n this.addAtom(new Atom({\n isotope: 'I',\n position: this.remainderWallet.position!,\n walletAddress: this.remainderWallet.address! as any,\n token: 'USER',\n metaType: 'walletBundle',\n metaId: this.remainderWallet.bundle!\n }))\n return this\n }\n\n /**\n * Initialize a V-type molecule to transfer value\n * Essential method for basic transfers\n */\n initValue({\n recipientWallet,\n amount\n }: {\n recipientWallet: Wallet\n amount: number\n }): Molecule {\n if (!this.sourceWallet) {\n throw new Error('Source wallet required for value transfer')\n }\n\n if (this.sourceWallet.balance - amount < 0) {\n throw new BalanceInsufficientException()\n }\n\n // Initializing a new Atom to remove entire balance from source (UTXO model)\n this.addAtom(new Atom({\n isotope: 'V',\n position: this.sourceWallet.position!,\n walletAddress: this.sourceWallet.address! as any,\n token: this.sourceWallet.token,\n value: -this.sourceWallet.balance\n }))\n\n // Initializing a new Atom to add tokens to recipient\n this.addAtom(new Atom({\n isotope: 'V',\n position: recipientWallet.position!,\n walletAddress: recipientWallet.address! as any,\n token: recipientWallet.token,\n value: amount,\n metaType: 'walletBundle',\n metaId: recipientWallet.bundle!\n }))\n\n // Initializing a remainder atom (matching JavaScript SDK - uses existing remainderWallet)\n if (!this.remainderWallet) {\n throw new Error('Remainder wallet required for value transfer')\n }\n \n this.addAtom(new Atom({\n isotope: 'V',\n position: this.remainderWallet.position!,\n walletAddress: this.remainderWallet.address! as any,\n token: this.remainderWallet.token,\n value: this.sourceWallet.balance - amount,\n metaType: 'walletBundle',\n metaId: this.remainderWallet.bundle!\n }))\n\n return this\n }\n\n /**\n * Sign the molecule with one-time signature\n * Matches JavaScript SDK sign method\n */\n sign({\n bundle = null,\n anonymous = false,\n compressed = true\n }: {\n bundle?: string | null\n anonymous?: boolean\n compressed?: boolean\n } = {}): string | null {\n // Do we have atoms?\n if (this.atoms.length === 0 || this.atoms.filter(atom => !(atom instanceof Atom)).length !== 0) {\n throw new AtomsMissingException()\n }\n\n // Derive the user's bundle\n if (!anonymous && !this.bundle) {\n this.bundle = bundle || generateBundleHash(this.secret!, 'Molecule::sign')\n }\n\n // Hash atoms to get molecular hash\n this.molecularHash = Atom.hashAtoms({\n atoms: this.atoms\n })\n\n // Signing atom\n const signingAtom = this.atoms[0]\n if (!signingAtom) {\n throw new SignatureMalformedException('No atoms available for signing!')\n }\n\n // Set signing position from the first atom\n let signingPosition = signingAtom.position\n\n // Signing position is required\n if (!signingPosition) {\n throw new SignatureMalformedException('Signing wallet must have a position!')\n }\n\n // Generate the private signing key for this molecule\n const key = Wallet.generateKey({\n secret: this.secret!,\n token: signingAtom.token as string,\n position: signingPosition\n })\n\n // Use standardized WOTS+ signature generation from crypto library\n // This ensures 100% compatibility with Implementation Guide requirements\n let signatureFragments = generateOTSSignature(key, this.molecularHash)\n\n // Compressing the OTS\n if (compressed) {\n signatureFragments = hexToBase64(signatureFragments)\n }\n\n // Chunking the signature across multiple atoms\n const chunkedSignature = chunkSubstr(signatureFragments, Math.ceil(signatureFragments.length / this.atoms.length))\n\n let lastPosition: string | null = null\n\n for (let chunkCount = 0, condition = chunkedSignature.length; chunkCount < condition; chunkCount++) {\n const atom = this.atoms[chunkCount]\n const signatureChunk = chunkedSignature[chunkCount]\n if (atom && signatureChunk) {\n atom.otsFragment = signatureChunk\n lastPosition = atom.position\n }\n }\n\n return lastPosition\n }\n\n /**\n * Validate the molecular structure\n * Uses CheckMolecule for validation\n * Matches JavaScript SDK check method exactly\n */\n check(senderWallet: Wallet | null = null): boolean {\n return (new CheckMolecule(this as any)).verify(senderWallet)\n }\n\n /**\n * Convert Hm to numeric notation via EnumerateMolecule(Hm)\n * Required by CheckMolecule for OTS validation\n */\n normalizedHash(): number[] {\n if (!this.molecularHash) {\n throw new Error('Molecular hash not set')\n }\n return Molecule.normalize(Molecule.enumerate(this.molecularHash))\n }\n\n /**\n * Enumerate a hash string to numeric values\n * Matches JavaScript SDK Molecule.enumerate exactly\n */\n static enumerate(hash: string): number[] {\n const mapped: Record<string, number> = {\n '0': -8,\n '1': -7,\n '2': -6,\n '3': -5,\n '4': -4,\n '5': -3,\n '6': -2,\n '7': -1,\n '8': 0,\n '9': 1,\n 'a': 2,\n 'b': 3,\n 'c': 4,\n 'd': 5,\n 'e': 6,\n 'f': 7,\n 'g': 8\n }\n const target: number[] = []\n const hashList = hash.toLowerCase().split('')\n\n for (let index = 0, len = hashList.length; index < len; ++index) {\n const symbol = hashList[index]\n\n if (symbol && typeof mapped[symbol] !== 'undefined') {\n target[index] = mapped[symbol]!\n }\n }\n\n return target\n }\n\n /**\n * Normalize enumerated string to ensure sum equals zero\n * Matches JavaScript SDK Molecule.normalize exactly\n */\n static normalize(mappedHashArray: number[]): number[] {\n let total = mappedHashArray.reduce((total, num) => total + num)\n\n const totalCondition = total < 0\n\n while (total < 0 || total > 0) {\n for (const index of Object.keys(mappedHashArray)) {\n const idx = Number(index)\n const condition = totalCondition ? (mappedHashArray[idx] ?? 0) < 8 : (mappedHashArray[idx] ?? 0) > -8\n\n if (condition) {\n if (totalCondition) {\n mappedHashArray[idx] = (mappedHashArray[idx] ?? 0) + 1\n total++\n } else {\n mappedHashArray[idx] = (mappedHashArray[idx] ?? 0) - 1\n total--\n }\n\n if (total === 0) {\n break\n }\n }\n }\n }\n\n return mappedHashArray\n }\n\n /**\n * Returns JSON-ready object for cross-SDK compatibility (2025 TS best practices)\n * \n * Includes all necessary fields for cross-SDK validation while excluding sensitive data.\n * Follows 2025 TypeScript best practices with proper error handling and type safety.\n *\n * @param options - Serialization options\n * @param options.includeValidationContext - Include sourceWallet/remainderWallet for validation (default: true)\n * @param options.includeOtsFragments - Include OTS signature fragments (default: true)\n * @param options.secureMode - Extra security checks (default: false)\n * @return JSON-serializable object\n * @throws Error if molecule is in invalid state for serialization\n */\n toJSON(options: {\n includeValidationContext?: boolean\n includeOtsFragments?: boolean\n secureMode?: boolean\n } = {}): any {\n const {\n includeValidationContext = true,\n includeOtsFragments = true,\n secureMode = false\n } = options\n\n try {\n // Security check in secure mode\n if (secureMode && this.secret) {\n throw new Error('Cannot serialize molecule with secret in secure mode')\n }\n\n // Core molecule properties (always included)\n const serialized: any = {\n status: this.status,\n molecularHash: this.molecularHash,\n createdAt: this.createdAt,\n cellSlug: this.cellSlug,\n cellSlugOrigin: this.cellSlugOrigin,\n version: this.version,\n bundle: this.bundle,\n \n // Serialized atoms array with optional OTS fragments\n atoms: this.atoms.map(atom => atom.toJSON({ \n includeOtsFragments \n }))\n }\n\n // Validation context (essential for cross-SDK validation)\n if (includeValidationContext) {\n if (this.sourceWallet) {\n serialized.sourceWallet = {\n address: this.sourceWallet.address,\n position: this.sourceWallet.position,\n token: this.sourceWallet.token,\n balance: this.sourceWallet.balance || 0,\n bundle: this.sourceWallet.bundle,\n batchId: this.sourceWallet.batchId || null,\n characters: this.sourceWallet.characters || 'BASE64',\n // Exclude sensitive fields like secret, key, privkey\n pubkey: this.sourceWallet.pubkey || null,\n tokenUnits: this.sourceWallet.tokenUnits || [],\n tradeRates: this.sourceWallet.tradeRates || {},\n molecules: this.sourceWallet.molecules || {}\n }\n }\n\n if (this.remainderWallet) {\n serialized.remainderWallet = {\n address: this.remainderWallet.address,\n position: this.remainderWallet.position,\n token: this.remainderWallet.token,\n balance: this.remainderWallet.balance || 0,\n bundle: this.remainderWallet.bundle,\n batchId: this.remainderWallet.batchId || null,\n characters: this.remainderWallet.characters || 'BASE64',\n // Exclude sensitive fields\n pubkey: this.remainderWallet.pubkey || null,\n tokenUnits: this.remainderWallet.tokenUnits || [],\n tradeRates: this.remainderWallet.tradeRates || {},\n molecules: this.remainderWallet.molecules || {}\n }\n }\n }\n\n return serialized\n\n } catch (error) {\n throw new Error(`Molecule serialization failed: ${(error as Error).message}`)\n }\n }\n\n /**\n * Returns the base cell slug portion\n */\n cellSlugBase(): string {\n return (this.cellSlug || '').split(this.cellSlugDelimiter)[0] || ''\n }\n\n // =============================================================================\n // STUB METHODS - Implement as needed (YAGNI)\n // =============================================================================\n\n /**\n * Initialize token creation\n */\n initTokenCreation({\n recipientWallet,\n amount,\n meta\n }: {\n recipientWallet: Wallet\n amount: number\n meta: any\n }): Molecule {\n // Create a new token by adding atoms\n this.addAtom(new Atom({\n isotope: 'T',\n position: recipientWallet.position!,\n walletAddress: recipientWallet.address! as any,\n token: recipientWallet.token,\n value: amount,\n metaType: 'token',\n metaId: recipientWallet.token,\n meta: meta ? [{ key: 'tokenMeta', value: JSON.stringify(meta) }] : []\n }))\n \n // Add wallet bundle metadata\n this.addAtom(new Atom({\n isotope: 'M',\n position: recipientWallet.position!,\n walletAddress: recipientWallet.address! as any,\n token: recipientWallet.token,\n metaType: 'walletBundle',\n metaId: recipientWallet.bundle!,\n meta: meta ? [{ key: 'tokenMeta', value: JSON.stringify(meta) }] : []\n }))\n \n // Add ContinuID atom (matching JavaScript SDK)\n this.addContinuIdAtom()\n \n return this\n }\n\n /**\n * Burn tokens\n */\n burnToken({\n amount,\n walletBundle = null\n }: {\n amount: number\n walletBundle?: string | null\n }): Molecule {\n if (!this.sourceWallet) {\n throw new Error('Source wallet required for token burning')\n }\n \n if (amount <= 0) {\n throw new NegativeAmountException()\n }\n \n if (this.sourceWallet.balance - amount < 0) {\n throw new BalanceInsufficientException()\n }\n \n // Burn tokens by removing from source\n this.addAtom(new Atom({\n isotope: 'V',\n position: this.sourceWallet.position!,\n walletAddress: this.sourceWallet.address! as any,\n token: this.sourceWallet.token,\n value: -amount,\n metaType: walletBundle ? 'walletBundle' : null,\n metaId: walletBundle || null\n }))\n \n return this\n }\n\n /**\n * Initialize meta\n */\n initMeta({\n meta,\n metaType,\n metaId,\n policy\n }: {\n meta: any\n metaType: string\n metaId: string\n policy?: any\n }): Molecule {\n if (!this.sourceWallet) {\n throw new Error('Source wallet required for meta creation')\n }\n \n const metaArray: Array<{ key: string; value: any }> = []\n \n // Convert meta to array format\n if (meta) {\n if (Array.isArray(meta)) {\n metaArray.push(...meta)\n } else if (typeof meta === 'object') {\n for (const [key, value] of Object.entries(meta)) {\n metaArray.push({ key, value })\n }\n } else {\n metaArray.push({ key: 'value', value: meta })\n }\n }\n \n // Add policy if provided\n if (policy) {\n metaArray.push({ key: 'policy', value: JSON.stringify(policy) })\n }\n \n // Create meta atom\n this.addAtom(new Atom({\n isotope: 'M',\n position: this.sourceWallet.position!,\n walletAddress: this.sourceWallet.address! as any,\n token: this.sourceWallet.token,\n metaType,\n metaId,\n meta: metaArray\n }))\n \n // Add ContinuID atom (matching JavaScript SDK)\n this.addContinuIdAtom()\n \n return this\n }\n\n /**\n * Initialize wallet creation\n */\n initWalletCreation(wallet: Wallet, atomMeta: AtomMeta | null = null): Molecule {\n // Create wallet creation atom\n const atom = new Atom({\n isotope: 'C',\n position: wallet.position!,\n walletAddress: wallet.address! as any,\n token: wallet.token,\n metaType: 'wallet',\n metaId: wallet.address!,\n meta: atomMeta ? atomMeta.get() as any : []\n })\n \n // Add wallet metadata\n if (!atomMeta) {\n atom.meta.push(\n { key: 'position', value: wallet.position! },\n { key: 'bundle', value: wallet.bundle! },\n { key: 'token', value: wallet.token },\n { key: 'batchId', value: wallet.batchId || '' },\n { key: 'characters', value: wallet.characters || '' }\n )\n \n if (wallet.pubkey) {\n atom.meta.push({ key: 'pubkey', value: wallet.pubkey })\n }\n }\n \n this.addAtom(atom)\n \n // Add ContinuID atom (matching JavaScript SDK)\n this.addContinuIdAtom()\n \n return this\n }\n\n /**\n * Creates a Molecule instance from JSON data (2025 TS best practices)\n * \n * Handles cross-SDK deserialization with robust error handling and validation.\n * Essential for cross-platform molecule validation and compatibility testing.\n *\n * @param json - JSON string or object to deserialize\n * @param options - Deserialization options\n * @param options.includeValidationContext - Reconstruct sourceWallet/remainderWallet (default: true)\n * @param options.validateStructure - Validate required fields (default: true)\n * @param options.strictMode - Strict validation mode (default: false)\n * @return Reconstructed molecule instance\n * @throws Error if JSON is invalid or required fields are missing\n */\n static fromJSON(json: string | any, options: {\n includeValidationContext?: boolean\n validateStructure?: boolean\n strictMode?: boolean\n } = {}): Molecule {\n const {\n includeValidationContext = true,\n validateStructure = true,\n strictMode = false\n } = options\n\n try {\n // Parse JSON safely\n const data = typeof json === 'string' ? JSON.parse(json) : json\n\n // Validate required fields in strict mode\n if (strictMode || validateStructure) {\n if (!data.molecularHash || !Array.isArray(data.atoms)) {\n throw new Error('Invalid molecule data: missing molecularHash or atoms array')\n }\n }\n\n // Create minimal molecule instance (never include secret from JSON)\n const molecule = new Molecule({\n secret: null,\n bundle: data.bundle || null,\n cellSlug: data.cellSlug || null,\n version: data.version || null\n })\n\n // Populate core properties\n molecule.status = data.status\n molecule.molecularHash = data.molecularHash\n molecule.createdAt = data.createdAt || String(+new Date())\n molecule.cellSlugOrigin = data.cellSlugOrigin\n\n // Reconstruct atoms array with proper Atom instances\n if (Array.isArray(data.atoms)) {\n molecule.atoms = data.atoms.map((atomData: any, index: number) => {\n try {\n return Atom.fromJSON(atomData)\n } catch (error) {\n throw new Error(`Failed to reconstruct atom ${index}: ${(error as Error).message}`)\n }\n })\n }\n\n // Reconstruct validation context if available and requested\n if (includeValidationContext) {\n if (data.sourceWallet) {\n // Create source wallet for validation (without secret for security)\n molecule.sourceWallet = new Wallet({\n secret: null,\n token: data.sourceWallet.token,\n position: data.sourceWallet.position,\n bundle: data.sourceWallet.bundle,\n batchId: data.sourceWallet.batchId,\n characters: data.sourceWallet.characters\n })\n \n // Set additional properties for validation context\n molecule.sourceWallet.balance = data.sourceWallet.balance || 0\n molecule.sourceWallet.address = data.sourceWallet.address as any\n if (data.sourceWallet.pubkey) {\n molecule.sourceWallet.pubkey = data.sourceWallet.pubkey\n }\n molecule.sourceWallet.tokenUnits = data.sourceWallet.tokenUnits || []\n molecule.sourceWallet.tradeRates = data.sourceWallet.tradeRates || {}\n molecule.sourceWallet.molecules = data.sourceWallet.molecules || {}\n }\n\n if (data.remainderWallet) {\n // Create remainder wallet for validation (without secret for security)\n molecule.remainderWallet = new Wallet({\n secret: null,\n token: data.remainderWallet.token,\n position: data.remainderWallet.position,\n bundle: data.remainderWallet.bundle,\n batchId: data.remainderWallet.batchId,\n characters: data.remainderWallet.characters\n })\n \n // Set additional properties for validation context\n molecule.remainderWallet.balance = data.remainderWallet.balance || 0\n molecule.remainderWallet.address = data.remainderWallet.address as any\n if (data.remainderWallet.pubkey) {\n molecule.remainderWallet.pubkey = data.remainderWallet.pubkey\n }\n molecule.remainderWallet.tokenUnits = data.remainderWallet.tokenUnits || []\n molecule.remainderWallet.tradeRates = data.remainderWallet.tradeRates || {}\n molecule.remainderWallet.molecules = data.remainderWallet.molecules || {}\n }\n }\n\n return molecule\n\n } catch (error) {\n throw new Error(`Molecule deserialization failed: ${(error as Error).message}`)\n }\n }\n\n /**\n * Convert JSON to Molecule instance - legacy method for compatibility\n */\n static jsonToObject(json: string): Molecule {\n return Molecule.fromJSON(json)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Meta, { type NormalizedMeta } from './Meta'\n\n// Configuration constants matching JS SDK\nconst USE_META_CONTEXT = false\nconst DEFAULT_META_CONTEXT = 'https://www.schema.org'\n\n/**\n * AtomMeta class - Manages metadata for atoms\n * Provides methods for metadata manipulation and wallet metadata\n */\nexport default class AtomMeta {\n private meta: NormalizedMeta[]\n\n /**\n * Create new AtomMeta instance\n * @param meta - Initial metadata (object or array)\n */\n constructor(meta: Record<string, any> | NormalizedMeta[] | null = null) {\n this.meta = Meta.normalizeMeta(meta)\n }\n\n /**\n * Merge additional metadata\n * @param meta - Metadata to merge\n * @return This instance for chaining\n */\n merge(meta: Record<string, any> | NormalizedMeta[]): AtomMeta {\n const normalized = Meta.normalizeMeta(meta)\n \n // Use Set to avoid duplicates based on key\n const existingKeys = new Set(this.meta.map(m => m.key))\n \n for (const item of normalized) {\n if (existingKeys.has(item.key)) {\n // Update existing key\n const index = this.meta.findIndex(m => m.key === item.key)\n if (index !== -1) {\n this.meta[index] = item\n }\n } else {\n // Add new key\n this.meta.push(item)\n existingKeys.add(item.key)\n }\n }\n \n return this\n }\n\n /**\n * Add context metadata if enabled\n * @param context - Context URL or null for default\n * @return This instance for chaining\n */\n addContext(context: string | null = null): AtomMeta {\n // Add context key if it is enabled\n if (USE_META_CONTEXT) {\n this.merge({ context: context || DEFAULT_META_CONTEXT })\n }\n \n return this\n }\n\n /**\n * Set atom wallet metadata\n * @param wallet - Wallet to extract metadata from\n * @return This instance for chaining\n */\n setAtomWallet(wallet: any): AtomMeta {\n const walletMeta: Record<string, any> = {\n pubkey: wallet.pubkey,\n characters: wallet.characters\n }\n\n // Add token units meta key if present\n if (wallet.tokenUnits && wallet.tokenUnits.length) {\n walletMeta.tokenUnits = JSON.stringify(wallet.getTokenUnitsData ? wallet.getTokenUnitsData() : wallet.tokenUnits)\n }\n\n // Add trade rates meta key if present\n if (wallet.tradeRates && Object.keys(wallet.tradeRates).length) {\n walletMeta.tradeRates = JSON.stringify(wallet.tradeRates)\n }\n\n // Merge all wallet's metas\n this.merge(walletMeta)\n return this\n }\n\n /**\n * Set full NEW wallet metadata\n * Used for shadow wallet claim & wallet creation & token creation\n * @param wallet - Wallet with full metadata\n * @return This instance for chaining\n */\n setMetaWallet(wallet: any): AtomMeta {\n this.merge({\n walletTokenSlug: wallet.token,\n walletBundleHash: wallet.bundle,\n walletAddress: wallet.address,\n walletPosition: wallet.position,\n walletBatchId: wallet.batchId,\n walletPubkey: wallet.pubkey,\n walletCharacters: wallet.characters\n })\n return this\n }\n\n /**\n * Set shadow wallet claim flag\n * @param shadowWalletClaim - Claim flag (converted to number)\n * @return This instance for chaining\n */\n setShadowWalletClaim(shadowWalletClaim: boolean | number): AtomMeta {\n this.merge({ shadowWalletClaim: Number(shadowWalletClaim) })\n return this\n }\n\n /**\n * Set signing wallet metadata\n * @param signingWallet - Wallet used for signing\n * @return This instance for chaining\n */\n setSigningWallet(signingWallet: any): AtomMeta {\n this.merge({\n signingWallet: JSON.stringify({\n tokenSlug: signingWallet.token,\n bundleHash: signingWallet.bundle,\n address: signingWallet.address,\n position: signingWallet.position,\n pubkey: signingWallet.pubkey,\n characters: signingWallet.characters\n })\n })\n return this\n }\n\n /**\n * Add policy metadata\n * @param policy - Policy object to add\n * @return This instance for chaining\n */\n addPolicy(policy: Record<string, any>): AtomMeta {\n // For now, just stringify the policy\n // TODO: Implement PolicyMeta class if needed\n this.merge({\n policy: JSON.stringify(policy)\n })\n \n return this\n }\n\n /**\n * Get the normalized metadata array\n * @return Array of normalized metadata items\n */\n get(): NormalizedMeta[] {\n return this.meta\n }\n\n /**\n * Convert metadata to plain object\n * @return Aggregated metadata object\n */\n toObject(): Record<string, any> {\n return Meta.aggregateMeta(this.meta)\n }\n\n /**\n * Convert metadata to JSON string\n * @return JSON string representation\n */\n toJSON(): string {\n return JSON.stringify(this.toObject())\n }\n\n /**\n * Get metadata value by key\n * @param key - Key to lookup\n * @param defaultValue - Default if not found\n * @return Value or default\n */\n getValue(key: string, defaultValue: any = null): any {\n return Meta.getMetaValue(this.meta, key, defaultValue)\n }\n\n /**\n * Check if metadata has a key\n * @param key - Key to check\n * @return True if key exists\n */\n hasKey(key: string): boolean {\n return Meta.hasKey(this.meta, key)\n }\n\n /**\n * Remove metadata by key\n * @param key - Key to remove\n * @return This instance for chaining\n */\n remove(key: string): AtomMeta {\n this.meta = Meta.removeMeta(this.meta, key)\n return this\n }\n\n /**\n * Clear all metadata\n * @return This instance for chaining\n */\n clear(): AtomMeta {\n this.meta = []\n return this\n }\n\n /**\n * Get count of metadata items\n * @return Number of items\n */\n count(): number {\n return this.meta.length\n }\n\n /**\n * Clone this AtomMeta instance\n * @return New AtomMeta with same data\n */\n clone(): AtomMeta {\n return new AtomMeta(Meta.clone(this.meta))\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * KnishIO TypeScript SDK - Main Export Module\n * \n * A comprehensive TypeScript implementation of the Knish.IO SDK for \n * post-blockchain distributed ledger technology with enhanced type safety\n * and perfect cross-platform compatibility.\n */\n\n// =============================================================================\n// CORE CLASSES\n// =============================================================================\n\n// Core transaction classes\nexport { default as Atom } from './core/Atom'\nexport { default as Molecule } from './core/Molecule'\nexport { default as Wallet } from './core/Wallet'\nexport { default as Meta } from './core/Meta'\nexport { default as AtomMeta } from './core/AtomMeta'\n\n// Validation\nexport { default as CheckMolecule } from './libraries/CheckMolecule'\n\n// Utilities\nexport { default as Dot } from './libraries/Dot'\nexport { deepCloning, chunkArray, diff, intersect } from './libraries/array'\n\n// Client and authentication\nexport { default as KnishIOClient } from './KnishIOClient'\nexport { default as AuthToken } from './AuthToken'\nexport { default as GraphQLClient } from './libraries/GraphQLClient'\n\n// Base classes for queries and mutations\nexport { default as Query } from './query/Query'\nexport { default as Mutation } from './mutation/Mutation'\nexport { default as Response } from './response/Response'\n\n// Essential Query classes (Phase 1)\nexport { default as QueryBalance } from './query/QueryBalance'\nexport { default as QueryWalletBundle } from './query/QueryWalletBundle'\n\n// Phase 2 Tier 1 Query classes\nexport { default as QueryWalletList } from './query/QueryWalletList'\nexport { default as QueryAtom } from './query/QueryAtom'\n\n// Phase 2 Tier 2 Priority 1: Meta Operations\nexport { default as QueryMetaType } from './query/QueryMetaType'\nexport { default as QueryMetaTypeViaAtom } from './query/QueryMetaTypeViaAtom'\n\n// Phase 2 Tier 2 Priority 3: Essential Query Operations\nexport { default as QueryContinuId } from './query/QueryContinuId'\nexport { default as QueryBatch } from './query/QueryBatch'\n\n// Essential Mutation classes (Phase 1)\nexport { default as MutationProposeMolecule } from './mutation/MutationProposeMolecule'\nexport { default as MutationTransferTokens } from './mutation/MutationTransferTokens'\n\n// Phase 2 Tier 1 Mutation classes\nexport { default as MutationCreateWallet } from './mutation/MutationCreateWallet'\nexport { default as MutationRequestAuthorization } from './mutation/MutationRequestAuthorization'\n\n// Phase 2 Tier 2 Priority 1: Meta Operations\nexport { default as MutationCreateMeta } from './mutation/MutationCreateMeta'\n\n// Phase 2 Tier 2 Priority 2: Token Operations\nexport { default as MutationCreateToken } from './mutation/MutationCreateToken'\nexport { default as MutationRequestTokens } from './mutation/MutationRequestTokens'\n\n// Essential Response classes (Phase 1)\nexport { default as ResponseBalance } from './response/ResponseBalance'\nexport { default as ResponseWalletBundle } from './response/ResponseWalletBundle'\nexport { default as ResponseProposeMolecule } from './response/ResponseProposeMolecule'\nexport { default as ResponseTransferTokens } from './response/ResponseTransferTokens'\n\n// Phase 2 Tier 1 Response classes\nexport { default as ResponseWalletList } from './response/ResponseWalletList'\nexport { default as ResponseAtom } from './response/ResponseAtom'\nexport { default as ResponseCreateWallet } from './response/ResponseCreateWallet'\nexport { default as ResponseRequestAuthorization } from './response/ResponseRequestAuthorization'\n\n// Phase 2 Tier 2 Priority 1: Meta Operations\nexport { default as ResponseCreateMeta } from './response/ResponseCreateMeta'\nexport { default as ResponseMetaType } from './response/ResponseMetaType'\nexport { default as ResponseMetaTypeViaAtom } from './response/ResponseMetaTypeViaAtom'\n\n// Phase 2 Tier 2 Priority 2: Token Operations\nexport { default as ResponseCreateToken } from './response/ResponseCreateToken'\nexport { default as ResponseRequestTokens } from './response/ResponseRequestTokens'\n\n// Phase 2 Tier 2 Priority 3: Essential Query Operations\nexport { default as ResponseContinuId } from './response/ResponseContinuId'\n// QueryBatch uses base Response class directly\n\n// Phase 2 Prerequisite classes (completed)\nexport { default as TokenUnit } from './core/TokenUnit'\nexport { default as PolicyMeta } from './core/PolicyMeta'\n\n// =============================================================================\n// LIBRARY FUNCTIONS AND UTILITIES\n// =============================================================================\n\n// String utilities - maintaining compatibility with JS SDK\nimport {\n chunkSubstr,\n randomString,\n charsetBaseConvert,\n bufferToHexString,\n hexStringToBuffer,\n hexToBase64,\n base64ToHex,\n isHex,\n isNumeric,\n toCamelCase,\n toSnakeCase,\n capitalize,\n truncate\n} from './libraries/strings'\n\n// Re-export for external use\nexport {\n chunkSubstr,\n randomString,\n charsetBaseConvert,\n bufferToHexString,\n hexStringToBuffer,\n hexToBase64,\n base64ToHex,\n isHex,\n isNumeric,\n toCamelCase,\n toSnakeCase,\n capitalize,\n truncate\n}\n\n// Cryptographic functions - ensuring cross-platform compatibility\nimport {\n shake256,\n generateSecret,\n generateBundleHash,\n generateBatchId,\n generatePosition,\n generateWalletKey,\n generateWalletAddress,\n validateSecret,\n validateBundleHash,\n validatePosition,\n validateWalletAddress,\n runCompatibilityTests,\n CRYPTO_CONSTANTS,\n // NEW: WOTS+ signature system and Base17 conversion \n convertToBase17,\n enumerateMolecularHash,\n normalizeMolecularHash,\n generateOTSSignature,\n verifyOTSSignature,\n validateOTSSignature,\n validateMolecularHashForSignature,\n runExtendedCompatibilityTests,\n EXTENDED_COMPATIBILITY_TEST_VECTORS\n} from './libraries/crypto'\n\n// Re-export for external use\nexport {\n shake256,\n generateSecret,\n generateBundleHash,\n generateBatchId,\n generatePosition,\n generateWalletKey,\n generateWalletAddress,\n validateSecret,\n validateBundleHash,\n validatePosition,\n validateWalletAddress,\n runCompatibilityTests,\n CRYPTO_CONSTANTS,\n // NEW: WOTS+ signature system and Base17 conversion\n convertToBase17,\n enumerateMolecularHash,\n normalizeMolecularHash,\n generateOTSSignature,\n verifyOTSSignature,\n validateOTSSignature,\n validateMolecularHashForSignature,\n runExtendedCompatibilityTests,\n EXTENDED_COMPATIBILITY_TEST_VECTORS\n}\n\n// =============================================================================\n// EXCEPTION SYSTEM\n// =============================================================================\n\nexport {\n BaseException,\n AtomIndexException,\n AtomsMissingException,\n MolecularHashMismatchException,\n SignatureMismatchException,\n TransferBalanceException,\n WalletCredentialException,\n InvalidResponseException,\n ExceptionFactory,\n EXCEPTION_TYPES,\n EXCEPTION_CODES\n} from './exception'\n\n// =============================================================================\n// TYPE DEFINITIONS\n// =============================================================================\n\nexport type {\n // Core types\n WalletAddress,\n BundleHash,\n Position,\n MolecularHash,\n TokenSlug,\n MetaType,\n MetaId,\n CellSlug,\n AtomIsotope,\n HexString,\n Base17Hash,\n MetaData,\n\n // Parameter types\n AtomParams,\n WalletParams,\n MoleculeParams,\n KnishIOClientConfig,\n AuthParams,\n TransferParams,\n CreateTokenParams,\n RequestTokensParams,\n\n // Query types\n BalanceQueryParams,\n MetaQueryParams,\n WalletQueryParams,\n\n // Response types\n BaseResponse,\n ValidationResult,\n\n // Cryptographic types\n SHAKE256Options,\n SecretGenerationOptions,\n BundleHashOptions,\n PositionGenerationOptions,\n KeyGenerationOptions,\n SignatureOptions,\n VerificationOptions,\n\n // GraphQL types\n GraphQLRequest,\n GraphQLResponse,\n GraphQLError,\n QueryOperation,\n MutationOperation\n} from './types'\n\n// =============================================================================\n// UTILITY FUNCTIONS\n// =============================================================================\n\nimport {\n isHexString,\n isWalletAddress,\n isBundleHash,\n isPosition,\n isMolecularHash,\n isAtomIsotope,\n createWalletAddress,\n createBundleHash,\n createPosition,\n createTokenSlug,\n createMolecularHash\n} from './types'\n\n// Re-export for external use\nexport {\n isHexString,\n isWalletAddress,\n isBundleHash,\n isPosition,\n isMolecularHash,\n isAtomIsotope,\n createWalletAddress,\n createBundleHash,\n createPosition,\n createTokenSlug,\n createMolecularHash\n}\n\n// =============================================================================\n// VERSION AND SDK INFORMATION\n// =============================================================================\n\nexport const SDK_VERSION = '1.0.0'\nexport const SDK_NAME = 'KnishIO-Client-TS'\nexport const COMPATIBLE_SERVER_VERSIONS = [4, 5]\n\n/**\n * SDK Information object\n */\nexport const SDK_INFO = {\n name: SDK_NAME,\n version: SDK_VERSION,\n description: 'TypeScript SDK for Knish.IO post-blockchain distributed ledger',\n compatibleServerVersions: COMPATIBLE_SERVER_VERSIONS,\n features: [\n 'Post-quantum cryptography (XMSS, ML-KEM768)',\n 'Cross-platform compatibility',\n 'Type-safe APIs',\n 'DAG-based transaction processing',\n 'GraphQL integration',\n 'Real-time subscriptions',\n 'Cellular architecture support'\n ],\n build: {\n target: 'ES2022',\n formats: ['esm', 'cjs', 'iife'],\n typescript: true,\n strictMode: true\n }\n} as const\n\n// =============================================================================\n// INITIALIZATION AND CONFIGURATION\n// =============================================================================\n\n/**\n * Initialize the KnishIO SDK with global configuration\n * This is optional - the SDK can be used without global initialization\n */\nexport interface SDKConfig {\n defaultUri?: string | string[]\n defaultCellSlug?: string | null\n logging?: boolean\n cryptoValidation?: boolean\n compatibilityChecks?: boolean\n}\n\nlet globalConfig: SDKConfig = {\n logging: false,\n cryptoValidation: true,\n compatibilityChecks: true\n}\n\n/**\n * Configure the SDK globally\n */\nexport function configureSDK(config: Partial<SDKConfig>): void {\n globalConfig = { ...globalConfig, ...config }\n \n if (config.compatibilityChecks) {\n // Run basic compatibility tests on initialization\n const compatibilityResult = runCompatibilityTests()\n if (!compatibilityResult.passed) {\n console.warn('KnishIO SDK: Compatibility tests failed. Cross-platform operations may not work correctly.')\n if (globalConfig.logging) {\n console.log('Compatibility test results:', compatibilityResult.results)\n }\n }\n }\n}\n\n/**\n * Get current global SDK configuration\n */\nexport function getSDKConfig(): SDKConfig {\n return { ...globalConfig }\n}\n\n// =============================================================================\n// DEVELOPMENT AND DEBUGGING UTILITIES\n// =============================================================================\n\n/**\n * Development mode utilities (only available in development builds)\n */\nexport const DevUtils = process.env.NODE_ENV === 'development' ? {\n /**\n * Validate SDK installation and basic functionality\n */\n validateInstallation(): boolean {\n try {\n // Test basic cryptographic functions\n const testSecret = generateSecret('test-seed')\n const testBundle = generateBundleHash(testSecret)\n const testPosition = generatePosition()\n \n // Test string utilities\n const testChunks = chunkSubstr('abcdefghijklmnop', 4)\n \n // Test type validation\n const isValidBundle = isBundleHash(testBundle)\n const isValidPosition = isPosition(testPosition)\n \n return testSecret.length === 64 && \n testBundle.length === 64 && \n testPosition.length === 64 &&\n testChunks.length === 4 &&\n isValidBundle &&\n isValidPosition\n } catch (error) {\n console.error('SDK installation validation failed:', error)\n return false\n }\n },\n\n /**\n * Run comprehensive compatibility tests\n */\n runFullCompatibilityTests: runCompatibilityTests,\n\n /**\n * Get SDK build information\n */\n getBuildInfo() {\n return {\n ...SDK_INFO,\n buildTime: new Date().toISOString(),\n nodeVersion: typeof process !== 'undefined' ? process.version : 'unknown',\n environment: typeof window !== 'undefined' ? 'browser' : 'node'\n }\n }\n} : {}\n\n// =============================================================================\n// COMPATIBILITY WITH JAVASCRIPT SDK\n// =============================================================================\n\n/**\n * Legacy export names for compatibility with JavaScript SDK\n * These maintain the exact same naming convention\n */\nexport {\n // Core exports (matching JS SDK exactly)\n shake256 as default, // The JS SDK doesn't export a default, but this maintains compatibility\n}\n\n// Maintain exact export structure as JS SDK index.js\nexport const KnishIO = {\n shake256,\n generateSecret,\n generateBundleHash,\n generateBatchId,\n chunkSubstr,\n randomString,\n isHex,\n SDK_VERSION,\n SDK_INFO\n}\n\n// =============================================================================\n// FUTURE EXPORTS (PLACEHOLDERS)\n// =============================================================================\n\n// These will be uncommented as classes are implemented\n// export { default as Query } from './query/Query'\n// export { default as Mutation } from './mutation/Mutation'\n// export { default as Response } from './response/Response'\n// export { default as Subscribe } from './subscribe/Subscribe'","/**\n * Array utility functions\n * Essential utilities for KnishIO SDK operations\n */\n\n/**\n * Deep clone an object or array\n * Matches JavaScript SDK deepCloning function exactly\n * Used by Molecule.toJSON() and other operations requiring immutable copies\n */\nexport function deepCloning<T>(\n o: T, // Object to clone\n h?: any[] // Cache for circular reference handling\n): T {\n let i: any\n let r: any\n let x: any\n\n const t = [Array, Date, Number, String, Boolean] // Types to treat specially\n const s = Object.prototype.toString // Shortcut to toString\n h = h || [] // Create cache if not provided\n\n // Search cache for our object (handle circular references)\n for (i = 0; i < h.length; i += 2) {\n if (o === h[i]) {\n return h[i + 1] as T\n }\n }\n\n // Clone o if it is an uncached object and not null\n if (!r && o && typeof o === 'object') {\n r = {} // Default result template: plain object\n\n // Handle special types by comparing toString outputs\n for (i = 0; i < t.length; i++) {\n // @ts-ignore - Dynamic type construction\n if (s.call(o) === s.call(x = new t[i](o as any))) {\n r = i ? x : []\n }\n }\n\n h.push(o, r) // Add to cache before recursive call\n\n // Copy properties recursively\n for (i in o) {\n if (Object.prototype.hasOwnProperty.call(o, i)) {\n r[i] = deepCloning((o as any)[i], h)\n }\n }\n }\n\n return r || o\n}\n\n/**\n * Split an array into chunks of specified size\n * Used for batch processing operations\n */\nexport function chunkArray<T>(arr: T[], size: number): T[][] {\n if (!arr.length) {\n return []\n }\n\n return [arr.slice(0, size)].concat(chunkArray(arr.slice(size), size))\n}\n\n/**\n * Find elements that are different between arrays\n * Returns elements that are unique to each array\n */\nexport function diff<T>(...arrays: T[][]): T[] {\n return [].concat(...arrays.map((arr, i) => {\n const others = arrays.slice(0)\n others.splice(i, 1)\n const unique = [...new Set([].concat(...others as any))]\n return arr.filter(item => !unique.includes(item))\n }) as any)\n}\n\n/**\n * Find common elements across all arrays\n * Returns only elements present in all arrays\n */\nexport function intersect<T>(...arrays: T[][]): T[] {\n if (arrays.length === 0) return []\n if (arrays.length === 1) return arrays[0]\n \n return arrays.reduce((first, second) => \n first.filter(item => second.includes(item))\n )\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * High-precision decimal operations for financial calculations\n * Value determined by min SQL decimal precision\n */\n\nconst MULTIPLIER = 10 ** 18\n\nexport default class Decimal {\n /**\n * Validates and normalizes a decimal value\n */\n static val(value: number): number {\n if (Math.abs(value * MULTIPLIER) < 1) {\n return 0.0\n }\n\n return value\n }\n\n /**\n * Compares two decimal values with high precision\n * @param value1 First value to compare\n * @param value2 Second value to compare \n * @param debug Enable debug logging\n * @returns 0 if equal, 1 if value1 > value2, -1 if value1 < value2\n */\n static cmp(value1: number, value2: number, debug: boolean = false): number {\n const val1 = Decimal.val(value1) * MULTIPLIER\n const val2 = Decimal.val(value2) * MULTIPLIER\n\n // Equal\n if (Math.abs(val1 - val2) < 1) {\n return 0\n }\n\n // Greater or smaller\n return (val1 > val2) ? 1 : -1\n }\n\n /**\n * Tests if two decimal values are equal\n */\n static equal(value1: number, value2: number): boolean {\n return (Decimal.cmp(value1, value2) === 0)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport {\n createClient,\n Client,\n subscriptionExchange,\n cacheExchange,\n fetchExchange\n} from '@urql/core'\nimport { createClient as createWSClient } from 'graphql-ws'\nimport { pipe, subscribe } from 'wonka'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type Wallet from '@/core/Wallet'\n\n/**\n * GraphQL client wrapper for KnishIO SDK\n * Provides a unified interface for GraphQL operations\n */\nexport default class GraphQLClient implements IGraphQLClient {\n private $__client: Client\n private $__authToken: string = ''\n private $__pubkey: string | null = null\n private $__wallet: Wallet | null = null\n private serverUri: string\n private socketUri: string | null = null\n private cipherLink: boolean\n private $__subscriptionManager: Map<string, { unsubscribe: () => void }> = new Map()\n\n constructor({\n serverUri,\n socket = null,\n encrypt = false\n }: {\n serverUri: string\n socket?: { socketUri: string | null; appKey?: string } | null\n encrypt?: boolean\n }) {\n this.serverUri = serverUri\n this.socketUri = socket?.socketUri || null\n this.cipherLink = !!encrypt\n this.$__client = this.createUrqlClient({ serverUri, socket, encrypt })\n }\n\n private createUrqlClient({\n serverUri,\n socket,\n encrypt\n }: {\n serverUri: string\n socket?: { socketUri: string | null } | null\n encrypt?: boolean\n }): Client {\n const exchanges = [cacheExchange, fetchExchange]\n\n // Add subscription support if socket is configured\n if (socket?.socketUri) {\n const wsClient = createWSClient({\n url: socket.socketUri,\n connectionParams: () => ({\n authToken: this.$__authToken\n })\n })\n\n exchanges.push(\n subscriptionExchange({\n forwardSubscription: (operation) => ({\n subscribe: (sink) => {\n const disposable = wsClient.subscribe(operation, sink)\n return { unsubscribe: disposable }\n }\n })\n })\n )\n }\n\n return createClient({\n url: serverUri,\n exchanges,\n fetchOptions: () => ({\n headers: {\n 'X-Auth-Token': this.$__authToken\n },\n // Add 60 second timeout\n signal: AbortSignal.timeout(60000)\n })\n })\n }\n\n setAuthData({\n token,\n pubkey,\n wallet\n }: {\n token: string\n pubkey: string\n wallet?: Wallet\n }): void {\n this.$__authToken = token\n this.$__pubkey = pubkey\n this.$__wallet = wallet || null\n\n // Recreate client with new auth data\n this.$__client = this.createUrqlClient({\n serverUri: this.serverUri,\n socket: this.socketUri ? { socketUri: this.socketUri } : null,\n encrypt: this.cipherLink\n })\n }\n\n async query<TResult = unknown, TVariables = Record<string, any>>(\n request: { query: string; variables?: TVariables },\n variables?: TVariables\n ): Promise<any> {\n const finalVariables = variables || request.variables || {}\n const result = await this.$__client.query(request.query, finalVariables).toPromise()\n return this.formatResponse(result)\n }\n\n async mutate<TResult = unknown, TVariables = Record<string, any>>(\n request: { mutation: string; variables?: TVariables },\n variables?: TVariables\n ): Promise<any> {\n const finalVariables = variables || request.variables || {}\n const result = await this.$__client.mutation(request.mutation, finalVariables).toPromise()\n return this.formatResponse(result)\n }\n\n async mutation<TResult = unknown, TVariables = Record<string, any>>(\n request: { mutation: string; variables?: TVariables },\n variables?: TVariables\n ): Promise<any> {\n return this.mutate(request, variables)\n }\n\n subscribe(\n request: {\n query: string\n variables?: Record<string, any>\n operationName?: string\n },\n callback: (result: any) => void\n ): { unsubscribe: () => void } {\n const { query, variables, operationName = 'subscription' } = request\n\n const { unsubscribe } = pipe(\n this.$__client.subscription(query, variables || {}),\n subscribe((result) => {\n callback(this.formatResponse(result))\n })\n )\n\n // Store subscription for later cleanup\n this.$__subscriptionManager.set(operationName, { unsubscribe })\n\n return {\n unsubscribe: () => this.unsubscribe(operationName)\n }\n }\n\n private formatResponse(result: any): any {\n // Match old Apollo response format\n return {\n data: result.data,\n errors: result.error ? [result.error] : undefined\n }\n }\n\n unsubscribe(operationName: string): void {\n const subscription = this.$__subscriptionManager.get(operationName)\n if (subscription) {\n subscription.unsubscribe()\n this.$__subscriptionManager.delete(operationName)\n }\n }\n\n unsubscribeAll(): void {\n this.$__subscriptionManager.forEach((subscription, operationName) => {\n this.unsubscribe(operationName)\n })\n }\n\n setEncryption(encrypt: boolean = false): void {\n this.cipherLink = encrypt\n this.$__client = this.createUrqlClient({\n serverUri: this.serverUri,\n socket: this.socketUri ? { socketUri: this.socketUri } : null,\n encrypt\n })\n }\n\n // Getters for compatibility\n getAuthToken(): string {\n return this.$__authToken\n }\n\n getPubKey(): string | null {\n return this.$__pubkey\n }\n\n getWallet(): Wallet | null {\n return this.$__wallet\n }\n\n getServerUri(): string {\n return this.serverUri\n }\n\n getSocketUri(): string | null {\n return this.socketUri\n }\n\n getUri(): string {\n return this.serverUri\n }\n\n setUri(uri: string): void {\n this.serverUri = uri\n this.$__client = this.createUrqlClient({\n serverUri: uri,\n socket: this.socketUri ? { socketUri: this.socketUri } : null,\n encrypt: this.cipherLink\n })\n }\n\n socketDisconnect(): void {\n if (this.socketUri) {\n this.unsubscribeAll()\n }\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport { CodeException } from '@/exception'\nimport type Response from '@/response/Response'\nimport type { GraphQLClient } from '@/types'\n\n/**\n * Base Query class for constructing GraphQL queries\n */\nexport default class Query {\n protected client: GraphQLClient\n protected knishIOClient: any // Will be KnishIOClient type\n protected $__variables: Record<string, any> | null = null\n protected $__query: string | null = null\n protected $__response: Response | null = null\n protected $__request: any = null\n\n /**\n * Create new Query instance\n */\n constructor(graphQLClient: GraphQLClient, knishIOClient: any) {\n this.client = graphQLClient\n this.knishIOClient = knishIOClient\n }\n\n /**\n * Return a response object\n * Used at KnishIOClient::createMolecule => sets the source wallet from the remainder one stored in response object\n */\n response(): Response | null {\n return this.$__response\n }\n\n /**\n * Builds a Response based on JSON input\n */\n async createResponseRaw(response: any): Promise<Response> {\n return this.createResponse(response)\n }\n\n /**\n * Returns a Response object\n */\n createResponse(json: any): Response {\n // Import here to avoid circular dependency\n const Response = require('@/response/Response').default\n return new Response({\n query: this,\n json\n })\n }\n\n /**\n * Compiles variables for the query\n * Can be overridden by subclasses to add specific variables\n */\n compiledVariables(variables: Record<string, any> | null = null): Record<string, any> {\n return variables || {}\n }\n\n /**\n * Gets the current variables\n */\n variables(): Record<string, any> | null {\n return this.$__variables\n }\n\n /**\n * Gets the node URI\n */\n uri(): string {\n return this.client.getUri()\n }\n\n /**\n * Creates a new Request for the given parameters\n */\n createQuery({ variables = null }: { variables?: Record<string, any> | null }): any {\n this.$__variables = this.compiledVariables(variables)\n\n // Uri is a required parameter\n const uri = this.uri()\n if (!uri) {\n throw new CodeException('Query::createQuery() - Node URI was not initialized for this client instance!')\n }\n\n if (this.$__query === null) {\n throw new CodeException('Query::createQuery() - GraphQL query was not initialized!')\n }\n\n return {\n query: this.$__query,\n variables: this.variables()\n }\n }\n\n /**\n * Creates the query context\n */\n createQueryContext(): Record<string, any> {\n return {}\n }\n\n /**\n * Executes the Query and returns a Response\n */\n async execute({ \n variables = {}, \n context = {} \n }: { \n variables?: Record<string, any>\n context?: Record<string, any> \n } = {}): Promise<Response | null> {\n this.$__request = this.createQuery({ variables })\n\n const mergedContext = {\n ...context,\n ...this.createQueryContext()\n }\n\n try {\n const queryParams = {\n ...this.$__request,\n context: mergedContext\n }\n const response = await this.client.query(queryParams)\n this.$__response = await this.createResponseRaw(response)\n return this.$__response\n } catch (error) {\n if ((error as any).name === 'AbortError') {\n this.knishIOClient.log('warn', 'Query was cancelled')\n const Response = require('@/response/Response').default\n return new Response({\n query: this,\n json: { data: null, errors: [{ message: 'Query was cancelled' }] }\n })\n }\n throw error\n }\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from '@/query/Query'\nimport type Response from '@/response/Response'\n\n/**\n * Base class used to construct various GraphQL mutations\n */\nexport default class Mutation extends Query {\n /**\n * Creates a new Request for the given parameters\n */\n override createQuery({ variables = null }: { variables?: Record<string, any> | null }): any {\n const request = super.createQuery({ variables })\n request.mutation = request.query\n delete request.query\n return request\n }\n\n /**\n * Sends the Mutation to a Knish.IO node and returns the Response\n */\n override async execute({ \n variables = {}, \n context = {} \n }: { \n variables?: Record<string, any>\n context?: Record<string, any> \n } = {}): Promise<Response | null> {\n this.$__request = this.createQuery({ variables })\n\n const mergedContext = {\n ...context,\n ...this.createQueryContext()\n }\n\n try {\n const mutationParams = {\n ...this.$__request,\n context: mergedContext\n }\n const response = await this.client.mutate(mutationParams)\n this.$__response = await this.createResponseRaw(response)\n return this.$__response\n } catch (error) {\n if ((error as any).name === 'AbortError') {\n this.knishIOClient.log('warn', 'Mutation was cancelled')\n const Response = require('@/response/Response').default\n return new Response({\n query: this,\n json: { data: null, errors: [{ message: 'Mutation was cancelled' }] }\n })\n }\n throw error\n }\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * Zod Validation Schemas for KnishIO SDK\n * \n * Provides runtime validation with compile-time type safety\n * Implements 2025 TypeScript best practices with Zod integration\n */\n\nimport { z } from 'zod'\n\n// =============================================================================\n// CORE TYPE SCHEMAS (2025 TYPESCRIPT PATTERN)\n// =============================================================================\n\n/**\n * Branded type helper for Zod schemas\n * Creates runtime-validated branded types\n */\nfunction createBrandedSchema<T extends string>(\n name: T,\n baseSchema: z.ZodString = z.string()\n) {\n return baseSchema.brand(name)\n}\n\n// Crypto and identifier schemas with validation\nexport const WalletAddressSchema = createBrandedSchema('WalletAddress', \n z.string().regex(/^[0-9a-fA-F]{64}$/, 'Invalid wallet address format')\n)\n\nexport const BundleHashSchema = createBrandedSchema('BundleHash',\n z.string().regex(/^[0-9a-fA-F]{64}$/, 'Invalid bundle hash format')\n)\n\nexport const PositionSchema = createBrandedSchema('Position',\n z.string().regex(/^[0-9a-fA-F]{64}$/, 'Invalid position format')\n)\n\nexport const MolecularHashSchema = createBrandedSchema('MolecularHash',\n z.string().regex(/^[0-9a-g]+$/, 'Invalid molecular hash format (base17)')\n)\n\nexport const TokenSlugSchema = createBrandedSchema('TokenSlug',\n z.string().min(1).max(32).regex(/^[A-Z0-9_]+$/, 'Token slug must be uppercase alphanumeric')\n)\n\nexport const BatchIdSchema = createBrandedSchema('BatchId',\n z.string().uuid('Invalid batch ID format')\n)\n\nexport const CellSlugSchema = createBrandedSchema('CellSlug',\n z.string().min(1).max(64).regex(/^[a-zA-Z0-9\\-_.]+$/, 'Invalid cell slug format')\n)\n\n// =============================================================================\n// ATOM ISOTOPE SCHEMAS (DISCRIMINATED UNIONS)\n// =============================================================================\n\nconst ISOTOPES = ['C', 'V', 'U', 'T', 'M', 'I', 'R', 'B', 'F'] as const\nexport const AtomIsotopeSchema = z.enum(ISOTOPES)\n\n// Isotope-specific validation\nexport const ValueAtomSchema = z.object({\n isotope: z.literal('V'),\n value: z.union([z.string(), z.number()]).refine(\n val => !isNaN(Number(val)), \n 'Value must be numeric'\n )\n}).strict()\n\nexport const MetaAtomSchema = z.object({\n isotope: z.literal('M'),\n metaType: z.string().min(1),\n metaId: z.string().min(1),\n meta: z.array(z.object({\n key: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()])\n }))\n}).strict()\n\nexport const ContinueAtomSchema = z.object({\n isotope: z.literal('C')\n}).strict()\n\n// =============================================================================\n// METADATA SCHEMAS (ENHANCED VALIDATION)\n// =============================================================================\n\nexport const MetaDataSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(),\n z.number(), \n z.boolean(),\n z.null(),\n z.record(z.string(), MetaDataSchema),\n z.array(MetaDataSchema)\n ])\n)\n\nexport const AtomMetaDataSchema = z.object({\n key: z.string().min(1),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()])\n}).strict()\n\nexport const NormalizedMetaSchema = z.object({\n key: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()])\n}).passthrough() // Allow additional properties\n\n// =============================================================================\n// CORE ENTITY SCHEMAS\n// =============================================================================\n\nexport const AtomParamsSchema = z.object({\n position: z.string().optional(),\n walletAddress: z.union([WalletAddressSchema, z.string()]).optional(),\n isotope: AtomIsotopeSchema.default('C'),\n token: z.union([TokenSlugSchema, z.string()]).default('USER'),\n value: z.union([z.string(), z.number(), z.null()]).optional(),\n batchId: z.union([BatchIdSchema, z.string(), z.null()]).optional(),\n metaType: z.string().optional(),\n metaId: z.string().optional(),\n meta: z.array(AtomMetaDataSchema).optional(),\n otsFragment: z.string().optional(),\n index: z.number().int().min(0).optional(),\n createdAt: z.string().optional(),\n version: z.number().int().min(1).optional()\n}).strict()\n\nexport const WalletParamsSchema = z.object({\n secret: z.string().optional(),\n bundle: z.union([BundleHashSchema, z.string()]).optional(),\n token: z.union([TokenSlugSchema, z.string()]).default('USER'),\n address: z.union([WalletAddressSchema, z.string()]).optional(),\n position: z.union([PositionSchema, z.string()]).optional(),\n batchId: z.union([BatchIdSchema, z.string()]).optional(),\n characters: z.string().optional()\n}).strict()\n\nexport const MoleculeParamsSchema = z.object({\n secret: z.string().optional(),\n bundle: z.union([BundleHashSchema, z.string()]).optional(),\n sourceWallet: WalletParamsSchema.optional(),\n remainderWallet: WalletParamsSchema.optional(),\n cellSlug: z.union([CellSlugSchema, z.string()]).optional(),\n version: z.number().int().min(1).optional()\n}).strict()\n\n// =============================================================================\n// CLIENT CONFIGURATION SCHEMAS (ENV VALIDATION)\n// =============================================================================\n\nexport const KnishIOClientConfigSchema = z.object({\n uri: z.union([\n z.string().url('Invalid URI format'),\n z.array(z.string().url('Invalid URI format')).min(1)\n ]).optional(),\n cellSlug: z.union([CellSlugSchema, z.string()]).optional(),\n client: z.unknown().optional(),\n socket: z.unknown().optional(),\n serverSdkVersion: z.number().int().min(1).max(10).default(4),\n logging: z.boolean().default(false)\n}).strict()\n\n// Environment configuration with validation\nexport const EnvironmentConfigSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n KNISHIO_NODE_URI: z.string().url().optional(),\n KNISHIO_CELL_SLUG: z.string().optional(),\n KNISHIO_LOGGING: z.string().transform(val => val === 'true').default('false'),\n KNISHIO_SERVER_SDK_VERSION: z.string().transform(val => parseInt(val, 10)).default('4')\n}).partial()\n\n// =============================================================================\n// OPERATION PARAMETER SCHEMAS\n// =============================================================================\n\nexport const TransferParamsSchema = z.object({\n recipient: z.union([WalletAddressSchema, z.string()]),\n amount: z.union([z.number(), z.string()]).refine(\n val => Number(val) > 0,\n 'Amount must be positive'\n ),\n token: z.union([TokenSlugSchema, z.string()]).optional(),\n callbackUrl: z.string().url().optional(),\n metaType: z.string().optional(),\n metaId: z.string().optional(),\n meta: MetaDataSchema.optional()\n}).strict()\n\nexport const CreateTokenParamsSchema = z.object({\n token: z.union([TokenSlugSchema, z.string()]),\n amount: z.union([z.number(), z.string()]).refine(\n val => Number(val) > 0,\n 'Amount must be positive' \n ),\n metaType: z.string().optional(),\n metaId: z.string().optional(),\n meta: MetaDataSchema.optional(),\n fungible: z.boolean().default(true),\n splittable: z.number().int().min(0).optional(),\n supplyToken: z.union([TokenSlugSchema, z.string()]).optional()\n}).strict()\n\nexport const RequestTokensParamsSchema = z.object({\n amount: z.union([z.number(), z.string()]).refine(\n val => Number(val) > 0,\n 'Amount must be positive'\n ),\n token: z.union([TokenSlugSchema, z.string()]).optional(),\n metaType: z.string().optional(),\n metaId: z.string().optional(),\n meta: MetaDataSchema.optional()\n}).strict()\n\n// =============================================================================\n// QUERY PARAMETER SCHEMAS\n// =============================================================================\n\nexport const BalanceQueryParamsSchema = z.object({\n address: z.union([WalletAddressSchema, z.string()]).optional(),\n bundleHash: z.union([BundleHashSchema, z.string()]).optional(),\n token: z.union([TokenSlugSchema, z.string()]).optional(),\n type: z.enum(['token', 'user']).optional()\n}).strict()\n\nexport const MetaQueryParamsSchema = z.object({\n metaType: z.string().min(1),\n metaId: z.string().optional(),\n key: z.string().optional(),\n value: z.string().optional(),\n latest: z.boolean().optional(),\n filter: z.string().optional(),\n queryArgs: z.record(z.unknown()).optional(),\n count: z.number().int().min(0).optional(),\n countBy: z.string().optional(),\n cellSlug: z.union([CellSlugSchema, z.string()]).optional()\n}).strict()\n\nexport const WalletQueryParamsSchema = z.object({\n bundleHash: z.union([BundleHashSchema, z.string()]).optional(),\n tokenSlug: z.union([TokenSlugSchema, z.string()]).optional(),\n unspent: z.boolean().optional()\n}).strict()\n\n// =============================================================================\n// AUTHENTICATION SCHEMAS\n// =============================================================================\n\nexport const AuthTokenParamsSchema = z.object({\n token: z.string().min(1),\n expiresAt: z.number().int().min(0),\n encrypt: z.boolean(),\n pubkey: z.string().min(1)\n}).strict()\n\nexport const AuthParamsSchema = z.object({\n cellSlug: z.union([CellSlugSchema, z.string()]).optional(),\n encrypt: z.boolean().optional(),\n callback: z.function().optional()\n}).strict()\n\nexport const GuestAuthParamsSchema = z.object({\n cellSlug: z.union([CellSlugSchema, z.string()]).optional()\n}).strict()\n\n// =============================================================================\n// GRAPHQL SCHEMAS\n// =============================================================================\n\nexport const GraphQLRequestSchema = z.object({\n query: z.string().min(1),\n variables: z.record(z.unknown()).optional(),\n operationName: z.string().optional()\n}).strict()\n\nexport const GraphQLErrorSchema = z.object({\n message: z.string(),\n locations: z.array(z.object({\n line: z.number().int(),\n column: z.number().int()\n })).optional(),\n path: z.array(z.union([z.string(), z.number()])).optional(),\n extensions: z.record(z.unknown()).optional()\n}).strict()\n\nexport const GraphQLResponseSchema = z.object({\n data: z.unknown().optional(),\n errors: z.array(GraphQLErrorSchema).optional(),\n extensions: z.record(z.unknown()).optional()\n}).strict()\n\n// =============================================================================\n// VALIDATION UTILITIES (2025 PATTERNS)\n// =============================================================================\n\n/**\n * Safe parsing with enhanced error information\n */\nexport function safeParse<T>(schema: z.ZodType<T>, data: unknown) {\n const result = schema.safeParse(data)\n \n if (!result.success) {\n return {\n success: false as const,\n error: {\n issues: result.error.issues,\n message: result.error.message,\n formatted: result.error.format()\n }\n }\n }\n \n return {\n success: true as const,\n data: result.data\n }\n}\n\n/**\n * Strict validation that throws on failure\n */\nexport function validateStrict<T>(schema: z.ZodType<T>, data: unknown, context?: string): T {\n try {\n return schema.parse(data)\n } catch (error) {\n if (error instanceof z.ZodError) {\n const contextMsg = context ? ` in ${context}` : ''\n throw new Error(`Validation failed${contextMsg}: ${error.message}`)\n }\n throw error\n }\n}\n\n/**\n * Transform and validate with default fallbacks\n */\nexport function validateWithDefaults<T>(schema: z.ZodType<T>, data: unknown): T {\n return schema.parse(data)\n}\n\n/**\n * Runtime type guard generator\n */\nexport function createTypeGuard<T>(schema: z.ZodType<T>) {\n return (value: unknown): value is T => {\n return schema.safeParse(value).success\n }\n}\n\n// =============================================================================\n// SCHEMA EXPORTS FOR EXTERNAL USE\n// =============================================================================\n\nexport const Schemas = {\n // Core types\n WalletAddress: WalletAddressSchema,\n BundleHash: BundleHashSchema,\n Position: PositionSchema,\n MolecularHash: MolecularHashSchema,\n TokenSlug: TokenSlugSchema,\n BatchId: BatchIdSchema,\n CellSlug: CellSlugSchema,\n \n // Entities\n AtomParams: AtomParamsSchema,\n WalletParams: WalletParamsSchema,\n MoleculeParams: MoleculeParamsSchema,\n \n // Configuration\n ClientConfig: KnishIOClientConfigSchema,\n EnvironmentConfig: EnvironmentConfigSchema,\n \n // Operations\n TransferParams: TransferParamsSchema,\n CreateTokenParams: CreateTokenParamsSchema,\n RequestTokensParams: RequestTokensParamsSchema,\n \n // Queries\n BalanceQueryParams: BalanceQueryParamsSchema,\n MetaQueryParams: MetaQueryParamsSchema,\n WalletQueryParams: WalletQueryParamsSchema,\n \n // Auth\n AuthTokenParams: AuthTokenParamsSchema,\n AuthParams: AuthParamsSchema,\n GuestAuthParams: GuestAuthParamsSchema,\n \n // GraphQL\n GraphQLRequest: GraphQLRequestSchema,\n GraphQLResponse: GraphQLResponseSchema\n} as const\n\n// Type exports for compile-time usage\nexport type ValidatedWalletAddress = z.infer<typeof WalletAddressSchema>\nexport type ValidatedBundleHash = z.infer<typeof BundleHashSchema>\nexport type ValidatedTokenSlug = z.infer<typeof TokenSlugSchema>\nexport type ValidatedClientConfig = z.infer<typeof KnishIOClientConfigSchema>\nexport type ValidatedTransferParams = z.infer<typeof TransferParamsSchema>\nexport type ValidatedGraphQLResponse = z.infer<typeof GraphQLResponseSchema>","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * ValidationService - Centralized validation for KnishIO SDK\n * \n * Implements 2025 TypeScript patterns:\n * - Zod runtime validation with compile-time types\n * - Result<T, E> pattern for error handling\n * - Builder pattern for validation chains\n * - Branded types for domain safety\n */\n\nimport { z } from 'zod'\nimport type { \n KnishIOClientConfig,\n TransferParams,\n CreateTokenParams,\n RequestTokensParams,\n BalanceQueryParams,\n MetaQueryParams,\n WalletQueryParams\n} from '@/types'\nimport {\n Schemas,\n safeParse,\n validateStrict,\n validateWithDefaults,\n createTypeGuard,\n type ValidatedClientConfig,\n type ValidatedTransferParams,\n type ValidatedGraphQLResponse\n} from './schemas'\n\n// =============================================================================\n// RESULT TYPE PATTERN (2025 TYPESCRIPT)\n// =============================================================================\n\nexport type ValidationResult<T, E = ValidationError> = \n | { success: true; data: T; warnings?: string[] }\n | { success: false; error: E }\n\nexport interface ValidationError {\n code: 'VALIDATION_ERROR' | 'SCHEMA_ERROR' | 'TYPE_ERROR'\n message: string\n field?: string\n value?: unknown\n details?: z.ZodIssue[]\n context?: string\n}\n\nexport interface ValidationOptions {\n strict?: boolean\n allowUnknown?: boolean\n stripUnknown?: boolean\n context?: string\n warnings?: boolean\n}\n\n// =============================================================================\n// VALIDATION SERVICE CLASS\n// =============================================================================\n\n/**\n * Centralized validation service using Zod schemas\n * Provides type-safe validation with enhanced error reporting\n */\nexport class ValidationService {\n private static instance: ValidationService\n private validationHistory: Array<{\n timestamp: number\n schema: string\n success: boolean\n error?: string\n }> = []\n\n private constructor() {}\n\n static getInstance(): ValidationService {\n if (!ValidationService.instance) {\n ValidationService.instance = new ValidationService()\n }\n return ValidationService.instance\n }\n\n // =============================================================================\n // CORE VALIDATION METHODS\n // =============================================================================\n\n /**\n * Validate client configuration with environment overrides\n */\n validateClientConfig(config: unknown): ValidationResult<ValidatedClientConfig> {\n try {\n // First get environment-mapped client config\n const envResult = this.validateEnvironmentConfig()\n const envMappedConfig = envResult.success ? envResult.data : {}\n\n // Merge environment config with provided config (provided config takes precedence)\n const mergedConfig = {\n ...envMappedConfig,\n ...(typeof config === 'object' && config !== null ? config : {})\n }\n\n const parseResult = safeParse(Schemas.ClientConfig, mergedConfig)\n \n if (!parseResult.success) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: 'Invalid client configuration',\n details: parseResult.error.issues,\n context: 'ClientConfig'\n }\n }\n }\n\n this.logValidation('ClientConfig', true)\n return {\n success: true,\n data: parseResult.data,\n warnings: this.generateConfigWarnings(parseResult.data)\n }\n } catch (error) {\n this.logValidation('ClientConfig', false, String(error))\n return {\n success: false,\n error: {\n code: 'SCHEMA_ERROR',\n message: `Validation failed: ${error}`,\n context: 'ClientConfig'\n }\n }\n }\n }\n\n /**\n * Validate environment configuration and map to client config format\n */\n validateEnvironmentConfig(): ValidationResult<Record<string, any>> {\n try {\n const env = {\n NODE_ENV: process.env.NODE_ENV,\n KNISHIO_NODE_URI: process.env.KNISHIO_NODE_URI,\n KNISHIO_CELL_SLUG: process.env.KNISHIO_CELL_SLUG,\n KNISHIO_LOGGING: process.env.KNISHIO_LOGGING,\n KNISHIO_SERVER_SDK_VERSION: process.env.KNISHIO_SERVER_SDK_VERSION\n }\n\n const parseResult = safeParse(Schemas.EnvironmentConfig, env)\n \n if (!parseResult.success) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: 'Invalid environment configuration',\n details: parseResult.error.issues,\n context: 'Environment'\n }\n }\n }\n\n // Map environment variables to client configuration properties\n const validatedEnv = parseResult.data\n const clientConfig: Record<string, any> = {}\n\n // Map KNISHIO_NODE_URI to uri\n if (validatedEnv.KNISHIO_NODE_URI) {\n clientConfig.uri = validatedEnv.KNISHIO_NODE_URI\n }\n\n // Map KNISHIO_CELL_SLUG to cellSlug \n if (validatedEnv.KNISHIO_CELL_SLUG) {\n clientConfig.cellSlug = validatedEnv.KNISHIO_CELL_SLUG\n }\n\n // Map KNISHIO_LOGGING to logging\n if (validatedEnv.KNISHIO_LOGGING !== undefined) {\n clientConfig.logging = validatedEnv.KNISHIO_LOGGING\n }\n\n // Map KNISHIO_SERVER_SDK_VERSION to serverSdkVersion\n if (validatedEnv.KNISHIO_SERVER_SDK_VERSION !== undefined) {\n clientConfig.serverSdkVersion = validatedEnv.KNISHIO_SERVER_SDK_VERSION\n }\n\n return { success: true, data: clientConfig }\n } catch (error) {\n return {\n success: false,\n error: {\n code: 'SCHEMA_ERROR',\n message: `Environment validation failed: ${error}`,\n context: 'Environment'\n }\n }\n }\n }\n\n /**\n * Validate transfer parameters with business logic\n */\n validateTransferParams(params: unknown): ValidationResult<ValidatedTransferParams> {\n try {\n const parseResult = safeParse(Schemas.TransferParams, params)\n \n if (!parseResult.success) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: 'Invalid transfer parameters',\n details: parseResult.error.issues,\n context: 'TransferParams'\n }\n }\n }\n\n // Additional business logic validation\n const businessValidation = this.validateTransferBusinessLogic(parseResult.data)\n if (!businessValidation.success) {\n return businessValidation\n }\n\n this.logValidation('TransferParams', true)\n return {\n success: true,\n data: parseResult.data,\n warnings: this.generateTransferWarnings(parseResult.data)\n }\n } catch (error) {\n this.logValidation('TransferParams', false, String(error))\n return {\n success: false,\n error: {\n code: 'SCHEMA_ERROR',\n message: `Transfer validation failed: ${error}`,\n context: 'TransferParams'\n }\n }\n }\n }\n\n /**\n * Validate GraphQL response structure\n */\n validateGraphQLResponse(response: unknown): ValidationResult<ValidatedGraphQLResponse> {\n try {\n const parseResult = safeParse(Schemas.GraphQLResponse, response)\n \n if (!parseResult.success) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: 'Invalid GraphQL response format',\n details: parseResult.error.issues,\n context: 'GraphQLResponse'\n }\n }\n }\n\n // Check for GraphQL errors\n if (parseResult.data.errors && parseResult.data.errors.length > 0) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: 'GraphQL response contains errors',\n details: parseResult.data.errors.map(err => ({\n code: 'invalid_type',\n expected: 'success',\n received: 'error',\n path: [],\n message: err.message\n } as z.ZodIssue)),\n context: 'GraphQLResponse'\n }\n }\n }\n\n this.logValidation('GraphQLResponse', true)\n return { success: true, data: parseResult.data }\n } catch (error) {\n this.logValidation('GraphQLResponse', false, String(error))\n return {\n success: false,\n error: {\n code: 'SCHEMA_ERROR',\n message: `GraphQL response validation failed: ${error}`,\n context: 'GraphQLResponse'\n }\n }\n }\n }\n\n // =============================================================================\n // BUILDER PATTERN FOR VALIDATION CHAINS\n // =============================================================================\n\n /**\n * Create a validation chain builder\n */\n createValidationChain<T>(): ValidationChainBuilder<T> {\n return new ValidationChainBuilder<T>(this)\n }\n\n // =============================================================================\n // TYPE GUARDS AND UTILITIES\n // =============================================================================\n\n /**\n * Runtime type guards for common types\n */\n readonly typeGuards = {\n isWalletAddress: createTypeGuard(Schemas.WalletAddress),\n isBundleHash: createTypeGuard(Schemas.BundleHash),\n isTokenSlug: createTypeGuard(Schemas.TokenSlug),\n isClientConfig: createTypeGuard(Schemas.ClientConfig),\n isTransferParams: createTypeGuard(Schemas.TransferParams),\n isGraphQLResponse: createTypeGuard(Schemas.GraphQLResponse)\n } as const\n\n /**\n * Validate any value against a specific schema\n */\n validate<T>(schema: z.ZodType<T>, value: unknown, options: ValidationOptions = {}): ValidationResult<T> {\n try {\n const parseResult = safeParse(schema, value)\n \n if (!parseResult.success) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: options.context ? `Validation failed in ${options.context}` : 'Validation failed',\n details: parseResult.error.issues,\n context: options.context\n }\n }\n }\n\n return { success: true, data: parseResult.data }\n } catch (error) {\n return {\n success: false,\n error: {\n code: 'SCHEMA_ERROR',\n message: `Schema validation failed: ${error}`,\n context: options.context\n }\n }\n }\n }\n\n // =============================================================================\n // BUSINESS LOGIC VALIDATION\n // =============================================================================\n\n private validateTransferBusinessLogic(params: ValidatedTransferParams): ValidationResult<ValidatedTransferParams> {\n const warnings: string[] = []\n\n // Check for self-transfer\n if (params.recipient === params.recipient) {\n warnings.push('Transfer to same address detected')\n }\n\n // Validate amount ranges\n const amount = Number(params.amount)\n if (amount > 1000000) {\n warnings.push('Large transfer amount detected - consider splitting')\n }\n\n return { success: true, data: params, warnings }\n }\n\n private generateConfigWarnings(config: ValidatedClientConfig): string[] {\n const warnings: string[] = []\n\n if (!config.uri) {\n warnings.push('No URI specified - using default')\n }\n\n if (config.logging) {\n warnings.push('Logging enabled - may impact performance')\n }\n\n if (config.serverSdkVersion && config.serverSdkVersion < 4) {\n warnings.push('Using older server SDK version - consider upgrading')\n }\n\n return warnings\n }\n\n private generateTransferWarnings(params: ValidatedTransferParams): string[] {\n const warnings: string[] = []\n\n if (!params.token) {\n warnings.push('No token specified - using default USER token')\n }\n\n if (!params.metaType && !params.metaId) {\n warnings.push('No metadata specified for transfer')\n }\n\n return warnings\n }\n\n // =============================================================================\n // VALIDATION LOGGING AND MONITORING\n // =============================================================================\n\n private logValidation(schema: string, success: boolean, error?: string): void {\n this.validationHistory.push({\n timestamp: Date.now(),\n schema,\n success,\n error\n })\n\n // Keep only last 1000 validations\n if (this.validationHistory.length > 1000) {\n this.validationHistory = this.validationHistory.slice(-1000)\n }\n }\n\n /**\n * Get validation statistics\n */\n getValidationStats(): {\n total: number\n successful: number\n failed: number\n successRate: number\n schemaStats: Record<string, number>\n recentFailures: Array<{\n schema: string\n error?: string\n timestamp: number\n }>\n } {\n const total = this.validationHistory.length\n const successful = this.validationHistory.filter(v => v.success).length\n const failed = total - successful\n\n const schemaStats = this.validationHistory.reduce((acc, v) => {\n acc[v.schema] = (acc[v.schema] || 0) + 1\n return acc\n }, {} as Record<string, number>)\n\n return {\n total,\n successful,\n failed,\n successRate: total > 0 ? (successful / total) * 100 : 0,\n schemaStats,\n recentFailures: this.validationHistory\n .filter(v => !v.success)\n .slice(-10)\n .map(v => ({ schema: v.schema, error: v.error, timestamp: v.timestamp }))\n }\n }\n\n /**\n * Clear validation history\n */\n clearValidationHistory(): void {\n this.validationHistory = []\n }\n}\n\n// =============================================================================\n// VALIDATION CHAIN BUILDER (FLUENT PATTERN)\n// =============================================================================\n\nexport class ValidationChainBuilder<T> {\n private validators: Array<(value: T) => ValidationResult<T>> = []\n\n constructor(private service: ValidationService) {}\n\n /**\n * Add a schema validation step\n */\n schema<U>(schema: z.ZodType<U>): ValidationChainBuilder<T> {\n this.validators.push((value) => \n this.service.validate(schema, value) as ValidationResult<T>\n )\n return this\n }\n\n /**\n * Add a custom validation step\n */\n custom(validator: (value: T) => ValidationResult<T>): ValidationChainBuilder<T> {\n this.validators.push(validator)\n return this\n }\n\n /**\n * Add a business logic validation step\n */\n business(validator: (value: T) => boolean, errorMessage: string): ValidationChainBuilder<T> {\n this.validators.push((value) => {\n if (validator(value)) {\n return { success: true, data: value }\n }\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: errorMessage,\n value,\n context: 'BusinessLogic'\n }\n }\n })\n return this\n }\n\n /**\n * Execute the validation chain\n */\n validate(value: unknown): ValidationResult<T> {\n let currentValue = value as T\n\n for (const validator of this.validators) {\n const result = validator(currentValue)\n if (!result.success) {\n return result\n }\n currentValue = result.data\n }\n\n return { success: true, data: currentValue }\n }\n}\n\n// =============================================================================\n// SINGLETON INSTANCE AND UTILITIES\n// =============================================================================\n\n// Export singleton instance\nexport const validationService = ValidationService.getInstance()\n\n// Convenience functions\nexport const validateClientConfig = (config: unknown): ValidationResult<ValidatedClientConfig> => \n validationService.validateClientConfig(config)\n\nexport const validateTransferParams = (params: unknown): ValidationResult<ValidatedTransferParams> => \n validationService.validateTransferParams(params)\n\nexport const validateGraphQLResponse = (response: unknown): ValidationResult<ValidatedGraphQLResponse> => \n validationService.validateGraphQLResponse(response)\n\n// Type guard exports\nexport const { typeGuards } = validationService\n\n// Validation chain factory\nexport const createValidationChain = <T>(): ValidationChainBuilder<T> => \n validationService.createValidationChain<T>()","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * UNIVERSAL_CONFIGURATION_INTERFACES.ts\n * \n * Enhanced configuration interfaces compatible with Phase 2 standardization\n * across all KnishIO SDKs. Provides type-safe configuration validation with\n * enhanced error handling and warning system integration.\n * \n * Features:\n * - Universal configuration schemas across all SDKs\n * - Enhanced validation with warnings and recommendations\n * - Environment variable integration\n * - Configuration migration support\n * - Performance optimization hints\n */\n\nimport { z } from 'zod'\nimport type { ValidationResult } from './ValidationService'\n\n// =============================================================================\n// UNIVERSAL CONFIGURATION TYPES\n// =============================================================================\n\n/**\n * Enhanced client configuration interface with Phase 2 improvements\n */\nexport interface UniversalClientConfig {\n // Core connection settings\n uri: string | string[]\n cellSlug?: string | null\n \n // Network configuration\n timeout?: number\n retries?: number\n retryDelay?: number\n \n // Security settings\n encryption?: boolean\n authToken?: string | null\n \n // Performance tuning\n connectionPoolSize?: number\n keepAlive?: boolean\n compression?: boolean\n \n // SDK behavior\n logging?: boolean\n serverSdkVersion?: number\n strictMode?: boolean\n \n // Advanced features\n socket?: {\n socketUri: string | null\n appKey?: string\n } | null\n client?: any | null\n \n // Environment integration\n environment?: 'development' | 'testing' | 'staging' | 'production'\n \n // Migration support\n legacyCompatibility?: boolean\n \n // Performance hints\n performanceHints?: {\n batchRequests?: boolean\n cacheResponses?: boolean\n preloadSchemas?: boolean\n }\n}\n\n/**\n * Enhanced validation result with warnings and recommendations\n */\nexport interface EnhancedValidationResult<T> {\n isValid: boolean\n data?: T\n errors: string[]\n warnings: string[]\n recommendations: string[]\n performance: {\n validationTime: number\n memoryUsage?: number\n cacheHit?: boolean\n }\n metadata: {\n version: string\n timestamp: number\n validator: string\n }\n}\n\n/**\n * Configuration validation options\n */\nexport interface ValidationOptions {\n strict?: boolean\n includeWarnings?: boolean\n includeRecommendations?: boolean\n includePerformanceHints?: boolean\n environment?: string\n legacyMode?: boolean\n}\n\n// =============================================================================\n// CONFIGURATION VALIDATOR CLASS\n// =============================================================================\n\n/**\n * Universal configuration validator compatible with all KnishIO SDKs\n * Provides enhanced validation with warnings, recommendations, and performance hints\n */\nexport class ConfigValidator {\n private static instance: ConfigValidator\n private validationCache = new Map<string, EnhancedValidationResult<any>>()\n private performanceMetrics: Array<{ timestamp: number; duration: number }> = []\n\n private constructor() {}\n\n static getInstance(): ConfigValidator {\n if (!ConfigValidator.instance) {\n ConfigValidator.instance = new ConfigValidator()\n }\n return ConfigValidator.instance\n }\n\n /**\n * Validate client configuration with enhanced error reporting\n */\n static validateClientConfig(\n config: unknown, \n options: ValidationOptions = {}\n ): EnhancedValidationResult<UniversalClientConfig> {\n return ConfigValidator.getInstance().validateConfig(config, options)\n }\n\n /**\n * Internal validation implementation\n */\n private validateConfig(\n config: unknown,\n options: ValidationOptions = {}\n ): EnhancedValidationResult<UniversalClientConfig> {\n const startTime = performance.now()\n const cacheKey = this.generateCacheKey(config, options)\n \n // Check cache if not in strict mode\n if (!options.strict && this.validationCache.has(cacheKey)) {\n const cached = this.validationCache.get(cacheKey)!\n cached.performance.cacheHit = true\n return cached\n }\n\n const result: EnhancedValidationResult<UniversalClientConfig> = {\n isValid: true,\n errors: [],\n warnings: [],\n recommendations: [],\n performance: {\n validationTime: 0,\n cacheHit: false\n },\n metadata: {\n version: '2.0.0',\n timestamp: Date.now(),\n validator: 'ConfigValidator'\n }\n }\n\n try {\n // Core validation\n const coreValidation = this.validateCoreConfig(config)\n if (!coreValidation.isValid) {\n result.isValid = false\n result.errors.push(...coreValidation.errors)\n return result\n }\n\n result.data = coreValidation.data\n\n // Enhanced validations\n if (options.includeWarnings !== false) {\n result.warnings.push(...this.generateWarnings(result.data))\n }\n\n if (options.includeRecommendations !== false) {\n result.recommendations.push(...this.generateRecommendations(result.data, options))\n }\n\n // Performance validation\n if (options.includePerformanceHints !== false) {\n result.warnings.push(...this.generatePerformanceWarnings(result.data))\n }\n\n } catch (error) {\n result.isValid = false\n result.errors.push(`Validation failed: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n // Record performance metrics\n const endTime = performance.now()\n result.performance.validationTime = endTime - startTime\n this.recordPerformanceMetric(result.performance.validationTime)\n\n // Cache result\n this.validationCache.set(cacheKey, result)\n this.cleanupCache()\n\n return result\n }\n\n /**\n * Core configuration validation\n */\n private validateCoreConfig(config: unknown): EnhancedValidationResult<UniversalClientConfig> {\n const errors: string[] = []\n \n if (!config || typeof config !== 'object') {\n return {\n isValid: false,\n errors: ['Configuration must be an object'],\n warnings: [],\n recommendations: [],\n performance: { validationTime: 0 },\n metadata: { version: '2.0.0', timestamp: Date.now(), validator: 'ConfigValidator' }\n }\n }\n\n const typedConfig = config as Record<string, any>\n \n // Validate required URI field\n if (!typedConfig.uri) {\n errors.push('URI is required')\n } else if (typeof typedConfig.uri !== 'string' && !Array.isArray(typedConfig.uri)) {\n errors.push('URI must be a string or array of strings')\n } else if (Array.isArray(typedConfig.uri)) {\n if (typedConfig.uri.length === 0) {\n errors.push('URI array cannot be empty')\n } else if (!typedConfig.uri.every(u => typeof u === 'string' && u.length > 0)) {\n errors.push('All URI entries must be non-empty strings')\n }\n } else if (typeof typedConfig.uri === 'string' && typedConfig.uri.length === 0) {\n errors.push('URI cannot be empty')\n }\n\n // Validate optional fields with type checking\n if (typedConfig.cellSlug !== undefined && typedConfig.cellSlug !== null && typeof typedConfig.cellSlug !== 'string') {\n errors.push('cellSlug must be a string or null')\n }\n\n if (typedConfig.timeout !== undefined && (typeof typedConfig.timeout !== 'number' || typedConfig.timeout < 0)) {\n errors.push('timeout must be a positive number')\n }\n\n if (typedConfig.retries !== undefined && (typeof typedConfig.retries !== 'number' || typedConfig.retries < 0)) {\n errors.push('retries must be a non-negative number')\n }\n\n if (typedConfig.logging !== undefined && typeof typedConfig.logging !== 'boolean') {\n errors.push('logging must be a boolean')\n }\n\n if (typedConfig.serverSdkVersion !== undefined && (typeof typedConfig.serverSdkVersion !== 'number' || typedConfig.serverSdkVersion < 1)) {\n errors.push('serverSdkVersion must be a positive number')\n }\n\n if (errors.length > 0) {\n return {\n isValid: false,\n errors,\n warnings: [],\n recommendations: [],\n performance: { validationTime: 0 },\n metadata: { version: '2.0.0', timestamp: Date.now(), validator: 'ConfigValidator' }\n }\n }\n\n // Build validated config with defaults\n const validatedConfig: UniversalClientConfig = {\n uri: typedConfig.uri,\n cellSlug: typedConfig.cellSlug || null,\n timeout: typedConfig.timeout || 30000,\n retries: typedConfig.retries || 3,\n retryDelay: typedConfig.retryDelay || 1000,\n logging: typedConfig.logging || false,\n serverSdkVersion: typedConfig.serverSdkVersion || 3,\n strictMode: typedConfig.strictMode || false,\n encryption: typedConfig.encryption || false,\n socket: typedConfig.socket || null,\n client: typedConfig.client || null,\n environment: typedConfig.environment || 'development',\n legacyCompatibility: typedConfig.legacyCompatibility || false,\n connectionPoolSize: typedConfig.connectionPoolSize || 10,\n keepAlive: typedConfig.keepAlive !== false,\n compression: typedConfig.compression !== false,\n performanceHints: {\n batchRequests: typedConfig.performanceHints?.batchRequests !== false,\n cacheResponses: typedConfig.performanceHints?.cacheResponses !== false,\n preloadSchemas: typedConfig.performanceHints?.preloadSchemas !== false,\n ...(typedConfig.performanceHints || {})\n }\n }\n\n return {\n isValid: true,\n data: validatedConfig,\n errors: [],\n warnings: [],\n recommendations: [],\n performance: { validationTime: 0 },\n metadata: { version: '2.0.0', timestamp: Date.now(), validator: 'ConfigValidator' }\n }\n }\n\n /**\n * Generate configuration warnings\n */\n private generateWarnings(config: UniversalClientConfig): string[] {\n const warnings: string[] = []\n\n // URI warnings\n if (typeof config.uri === 'string' && !config.uri.startsWith('http')) {\n warnings.push('URI should use HTTP/HTTPS protocol')\n }\n\n // Timeout warnings\n if (config.timeout && config.timeout > 60000) {\n warnings.push('Timeout is very high (>60s), this may cause poor user experience')\n }\n\n if (config.timeout && config.timeout < 5000) {\n warnings.push('Timeout is very low (<5s), this may cause premature failures')\n }\n\n // Performance warnings\n if (config.logging && config.environment === 'production') {\n warnings.push('Logging is enabled in production environment')\n }\n\n if (config.serverSdkVersion && config.serverSdkVersion < 3) {\n warnings.push('Using older server SDK version, consider upgrading for better features and security')\n }\n\n // Security warnings\n if (!config.encryption && config.environment === 'production') {\n warnings.push('Encryption is disabled in production environment')\n }\n\n return warnings\n }\n\n /**\n * Generate configuration recommendations\n */\n private generateRecommendations(config: UniversalClientConfig, options: ValidationOptions): string[] {\n const recommendations: string[] = []\n\n // Performance recommendations\n if (config.performanceHints?.batchRequests === false) {\n recommendations.push('Enable request batching for better performance')\n }\n\n if (config.performanceHints?.cacheResponses === false) {\n recommendations.push('Enable response caching to reduce network overhead')\n }\n\n // Environment-specific recommendations\n if (options.environment === 'production') {\n recommendations.push('Consider enabling connection pooling for production environments')\n \n if (!config.compression) {\n recommendations.push('Enable compression to reduce bandwidth usage in production')\n }\n }\n\n // Security recommendations\n if (config.serverSdkVersion && config.serverSdkVersion >= 4) {\n recommendations.push('Consider enabling strict mode for enhanced security with SDK v4+')\n }\n\n return recommendations\n }\n\n /**\n * Generate performance warnings\n */\n private generatePerformanceWarnings(config: UniversalClientConfig): string[] {\n const warnings: string[] = []\n\n if (config.connectionPoolSize && config.connectionPoolSize > 50) {\n warnings.push('Large connection pool size may consume excessive memory')\n }\n\n if (!config.keepAlive) {\n warnings.push('Disabling keep-alive may impact performance with frequent requests')\n }\n\n return warnings\n }\n\n /**\n * Generate cache key for configuration\n */\n private generateCacheKey(config: unknown, options: ValidationOptions): string {\n return JSON.stringify({ config, options })\n }\n\n /**\n * Record performance metric\n */\n private recordPerformanceMetric(duration: number): void {\n this.performanceMetrics.push({\n timestamp: Date.now(),\n duration\n })\n\n // Keep only last 1000 metrics\n if (this.performanceMetrics.length > 1000) {\n this.performanceMetrics = this.performanceMetrics.slice(-1000)\n }\n }\n\n /**\n * Clean up validation cache\n */\n private cleanupCache(): void {\n if (this.validationCache.size > 500) {\n // Remove oldest entries\n const entries = Array.from(this.validationCache.entries())\n const toKeep = entries.slice(-250)\n this.validationCache.clear()\n toKeep.forEach(([key, value]) => this.validationCache.set(key, value))\n }\n }\n\n /**\n * Get validation statistics\n */\n getValidationStats(): {\n totalValidations: number\n cacheSize: number\n averageValidationTime: number\n recentValidations: number\n } {\n const recent = this.performanceMetrics.slice(-100)\n const avgTime = recent.reduce((sum, m) => sum + m.duration, 0) / recent.length || 0\n \n return {\n totalValidations: this.performanceMetrics.length,\n cacheSize: this.validationCache.size,\n averageValidationTime: Math.round(avgTime * 100) / 100,\n recentValidations: recent.length\n }\n }\n\n /**\n * Clear validation cache and metrics\n */\n clearCache(): void {\n this.validationCache.clear()\n this.performanceMetrics = []\n }\n}\n\n// =============================================================================\n// ENVIRONMENT CONFIGURATION INTEGRATION\n// =============================================================================\n\n/**\n * Load configuration from environment variables\n */\nexport function loadEnvironmentConfig(): Partial<UniversalClientConfig> {\n const config: Partial<UniversalClientConfig> = {}\n\n if (process.env.KNISHIO_NODE_URI) {\n config.uri = process.env.KNISHIO_NODE_URI.includes(',') \n ? process.env.KNISHIO_NODE_URI.split(',').map(u => u.trim())\n : process.env.KNISHIO_NODE_URI\n }\n\n if (process.env.KNISHIO_CELL_SLUG) {\n config.cellSlug = process.env.KNISHIO_CELL_SLUG\n }\n\n if (process.env.KNISHIO_TIMEOUT) {\n const timeout = parseInt(process.env.KNISHIO_TIMEOUT, 10)\n if (!isNaN(timeout)) {\n config.timeout = timeout\n }\n }\n\n if (process.env.KNISHIO_LOGGING) {\n config.logging = process.env.KNISHIO_LOGGING.toLowerCase() === 'true'\n }\n\n if (process.env.KNISHIO_SERVER_SDK_VERSION) {\n const version = parseInt(process.env.KNISHIO_SERVER_SDK_VERSION, 10)\n if (!isNaN(version)) {\n config.serverSdkVersion = version\n }\n }\n\n if (process.env.NODE_ENV) {\n config.environment = process.env.NODE_ENV as any\n }\n\n return config\n}\n\n/**\n * Merge configurations with precedence handling\n */\nexport function mergeConfigurations(\n base: Partial<UniversalClientConfig>,\n override: Partial<UniversalClientConfig>\n): UniversalClientConfig {\n const merged = { ...base, ...override } as UniversalClientConfig\n\n // Ensure required fields have defaults\n if (!merged.uri) {\n throw new Error('URI is required in configuration')\n }\n\n // Apply intelligent defaults\n merged.timeout = merged.timeout || 30000\n merged.retries = merged.retries || 3\n merged.retryDelay = merged.retryDelay || 1000\n merged.logging = merged.logging || false\n merged.serverSdkVersion = merged.serverSdkVersion || 3\n merged.environment = merged.environment || 'development'\n\n return merged\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport Wallet from '../core/Wallet'\nimport type Query from '../query/Query'\n\n/**\n * Response for balance query\n * Matches JavaScript SDK ResponseBalance implementation exactly\n */\nexport default class ResponseBalance extends Response {\n /**\n * Class constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, unknown>\n }) {\n super({\n query,\n json,\n dataKey: 'data.Balance'\n })\n }\n\n /**\n * Returns a wallet with balance\n * Matches JavaScript SDK payload() method exactly\n */\n payload(): Wallet | null {\n const walletData = this.data() as any\n\n if (!walletData || !walletData.bundleHash || !walletData.tokenSlug) {\n return null\n }\n\n return ResponseBalance.toClientWallet({\n data: walletData\n })\n }\n\n /**\n * Returns a Knish.IO client Wallet class instance out of object data\n * Simplified version - will be enhanced when TokenUnit is implemented\n * Matches JavaScript SDK ResponseWalletList.toClientWallet pattern\n */\n static toClientWallet({\n data,\n secret = null\n }: {\n data: any\n secret?: string | null\n }): Wallet {\n let wallet: Wallet\n\n if (data.position === null || typeof data.position === 'undefined') {\n wallet = Wallet.create({\n bundle: data.bundleHash,\n token: data.tokenSlug,\n batchId: data.batchId,\n characters: data.characters\n })\n } else {\n wallet = new Wallet({\n secret,\n token: data.tokenSlug,\n position: data.position,\n batchId: data.batchId,\n characters: data.characters\n })\n wallet.address = data.address\n wallet.bundle = data.bundleHash\n }\n\n // Set token information if available\n if (data.token) {\n wallet.tokenName = data.token.name\n wallet.tokenAmount = data.token.amount\n wallet.tokenSupply = data.token.supply\n wallet.tokenFungibility = data.token.fungibility\n }\n\n // TODO: Implement TokenUnit support when TokenUnit class is available\n // if (data.tokenUnits && data.tokenUnits.length) {\n // for (const tokenUnitData of data.tokenUnits) {\n // wallet.tokenUnits.push(TokenUnit.createFromGraphQL(tokenUnitData))\n // }\n // }\n\n // Set trade rates if available\n if (data.tradeRates && data.tradeRates.length) {\n for (const tradeRate of data.tradeRates) {\n wallet.tradeRates[tradeRate.tokenSlug] = tradeRate.amount\n }\n }\n\n // Set balance and other properties\n wallet.balance = Number(data.amount || 0)\n wallet.pubkey = data.pubkey\n wallet.createdAt = data.createdAt\n\n return wallet\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseBalance from '../response/ResponseBalance'\nimport type GraphQLClient from '../libraries/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * Query for getting the balance of a given wallet or token slug\n * Matches JavaScript SDK QueryBalance implementation exactly\n */\nexport default class QueryBalance extends Query {\n /**\n * Create QueryBalance instance\n */\n constructor(graphQLClient: GraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `\n query($address: String, $bundleHash: String, $type: String, $token: String, $position: String) {\n Balance(address: $address, bundleHash: $bundleHash, type: $type, token: $token, position: $position) {\n address,\n bundleHash,\n type,\n tokenSlug,\n batchId,\n position,\n amount,\n characters,\n pubkey,\n createdAt,\n tokenUnits {\n id,\n name,\n metas\n },\n tradeRates {\n tokenSlug,\n amount\n }\n }\n }\n `\n }\n\n /**\n * Create ResponseBalance instance from JSON data\n * Matches JavaScript SDK createResponse method signature exactly\n */\n override createResponse(json: Record<string, unknown>): ResponseBalance {\n return new ResponseBalance({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport type Query from '../query/Query'\nimport Response from './Response'\nimport Wallet from '../core/Wallet'\nimport TokenUnit from '../core/TokenUnit'\n\n/**\n * ResponseWalletList class - Response for Wallet List query\n * Matches JavaScript SDK ResponseWalletList implementation exactly\n */\nexport default class ResponseWalletList extends Response {\n /**\n * Class constructor\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: any\n }) {\n super({\n query,\n json,\n dataKey: 'data.Wallet'\n })\n }\n\n /**\n * Returns a Knish.IO client Wallet class instance out of object data\n * Matches JavaScript SDK toClientWallet method exactly\n */\n static toClientWallet({\n data,\n secret = null\n }: {\n data: any\n secret?: string | null\n }): Wallet {\n let wallet: Wallet\n\n if (data.position === null || typeof data.position === 'undefined') {\n wallet = Wallet.create({\n bundle: data.bundleHash,\n token: data.tokenSlug,\n batchId: data.batchId,\n characters: data.characters\n })\n } else {\n wallet = new Wallet({\n secret,\n token: data.tokenSlug,\n position: data.position,\n batchId: data.batchId,\n characters: data.characters\n })\n wallet.address = data.address\n wallet.bundle = data.bundleHash\n }\n\n if (data.token) {\n wallet.tokenName = data.token.name\n wallet.tokenAmount = data.token.amount\n wallet.tokenSupply = data.token.supply\n wallet.tokenFungibility = data.token.fungibility\n }\n\n if (data.tokenUnits.length) {\n for (const tokenUnitData of data.tokenUnits) {\n wallet.tokenUnits.push(TokenUnit.createFromGraphQL(tokenUnitData))\n }\n }\n\n if (data.tradeRates.length) {\n for (const tradeRate of data.tradeRates) {\n wallet.tradeRates[tradeRate.tokenSlug] = tradeRate.amount\n }\n }\n\n wallet.balance = Number(data.amount)\n wallet.pubkey = data.pubkey\n wallet.createdAt = data.createdAt\n\n return wallet\n }\n\n /**\n * Returns a list of Wallet class instances\n * Matches JavaScript SDK getWallets method exactly\n */\n getWallets(secret: string | null = null): Wallet[] | null {\n const list = this.data()\n\n if (!list) {\n return null\n }\n\n const wallets: Wallet[] = []\n\n for (const data of list) {\n wallets.push(ResponseWalletList.toClientWallet({\n data,\n secret\n }))\n }\n\n return wallets\n }\n\n /**\n * Returns response payload\n * Matches JavaScript SDK payload method exactly\n */\n payload(): Wallet[] | null {\n return this.getWallets()\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\n/**\n * TokenUnit class - Manages token utility data\n * Matches JavaScript SDK TokenUnit implementation exactly\n */\nexport default class TokenUnit {\n public id: string\n public name: string\n public metas: Record<string, any>\n\n /**\n * Create new TokenUnit instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(id: string, name: string, metas?: Record<string, any>) {\n this.id = id\n this.name = name\n this.metas = metas || {}\n }\n\n /**\n * Create TokenUnit from GraphQL response data\n * Matches JavaScript SDK createFromGraphQL method exactly\n */\n static createFromGraphQL(data: {\n id: string\n name: string\n metas?: any\n }): TokenUnit {\n let metas = data.metas || {}\n \n if (Array.isArray(metas) && metas.length) {\n try {\n metas = JSON.parse(metas as any)\n if (!metas) { // set an empty object instead of an array\n metas = {}\n }\n } catch (error) {\n metas = {}\n }\n }\n \n return new TokenUnit(\n data.id,\n data.name,\n metas\n )\n }\n\n /**\n * Create TokenUnit from database array data\n * Matches JavaScript SDK createFromDB method exactly\n */\n static createFromDB(data: [string, string, Record<string, any>?]): TokenUnit {\n return new TokenUnit(\n data[0],\n data[1],\n data.length > 2 ? data[2] : {}\n )\n }\n\n /**\n * Get fragment zone from metadata\n * Matches JavaScript SDK getFragmentZone method exactly\n */\n getFragmentZone(): any | null {\n return this.metas.fragmentZone || null\n }\n\n /**\n * Get fused token units from metadata\n * Matches JavaScript SDK getFusedTokenUnits method exactly\n */\n getFusedTokenUnits(): any | null {\n return this.metas.fusedTokenUnits || null\n }\n\n /**\n * Convert to data array format\n * Matches JavaScript SDK toData method exactly\n */\n toData(): [string, string, Record<string, any>] {\n return [this.id, this.name, this.metas]\n }\n\n /**\n * Convert to GraphQL response format\n * Matches JavaScript SDK toGraphQLResponse method exactly\n */\n toGraphQLResponse(): {\n id: string\n name: string\n metas: string\n } {\n return {\n id: this.id,\n name: this.name,\n metas: JSON.stringify(this.metas)\n }\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseWalletList from '../response/ResponseWalletList'\nimport type { UrqlClientWrapper } from '../client/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * QueryWalletList class - Query for getting a list of Wallets\n * Matches JavaScript SDK QueryWalletList implementation exactly\n */\nexport default class QueryWalletList extends Query {\n /**\n * Create new QueryWalletList instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(graphQLClient: UrqlClientWrapper, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `query( $bundleHash: String, $tokenSlug: String ) {\n Wallet( bundleHash: $bundleHash, tokenSlug: $tokenSlug ) {\n address,\n bundleHash,\n token {\n name,\n amount,\n fungibility,\n supply\n },\n tokenSlug,\n batchId,\n position,\n amount,\n characters,\n pubkey,\n createdAt,\n tokenUnits {\n id,\n name,\n metas\n },\n tradeRates {\n tokenSlug,\n amount\n }\n }\n }`\n }\n\n /**\n * Builds a Response object out of a JSON object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseWalletList {\n return new ResponseWalletList({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport Meta from '../core/Meta'\nimport type Query from '../query/Query'\n\n/**\n * Response for Wallet Bundle query\n * Matches JavaScript SDK ResponseWalletBundle implementation exactly\n */\nexport default class ResponseWalletBundle extends Response {\n /**\n * Class constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, unknown>\n }) {\n super({\n query,\n json,\n dataKey: 'data.WalletBundle'\n })\n }\n\n /**\n * Returns a wallet bundle with normalized metadata\n * Matches JavaScript SDK payload() method exactly\n */\n payload(): Record<string, any> | null {\n const bundleData = this.data() as any[]\n\n if (!bundleData || bundleData.length === 0) {\n return null\n }\n\n const aggregate: Record<string, any> = {}\n\n bundleData.forEach((bundle: any) => {\n bundle.metas = Meta.aggregateMeta(bundle.metas)\n aggregate[bundle.bundleHash] = bundle\n })\n\n return aggregate\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseWalletBundle from '../response/ResponseWalletBundle'\nimport type GraphQLClient from '../libraries/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * Query for retrieving information about Wallet Bundles\n * Matches JavaScript SDK QueryWalletBundle implementation exactly\n */\nexport default class QueryWalletBundle extends Query {\n /**\n * Create QueryWalletBundle instance\n */\n constructor(graphQLClient: GraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `\n query($bundleHashes: [String!]) {\n WalletBundle(bundleHashes: $bundleHashes) {\n bundleHash,\n metas {\n molecularHash,\n position,\n key,\n value,\n createdAt\n },\n createdAt\n }\n }\n `\n }\n\n /**\n * Builds a Response object out of a JSON object\n * Matches JavaScript SDK createResponse method signature exactly\n */\n override createResponse(json: Record<string, unknown>): ResponseWalletBundle {\n return new ResponseWalletBundle({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport type Query from '../query/Query'\nimport Response from './Response'\nimport Wallet from '../core/Wallet'\n\n/**\n * ResponseContinuId class - Response for ContinuID query\n * Matches JavaScript SDK ResponseContinuId implementation exactly\n */\nexport default class ResponseContinuId extends Response {\n /**\n * Class constructor\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: any\n }) {\n super({\n query,\n json,\n dataKey: 'data.ContinuId'\n })\n }\n\n /**\n * Returns the ContinuID wallet\n * Matches JavaScript SDK payload method exactly\n */\n payload(): Wallet | null {\n let wallet: Wallet | null = null\n\n const continuId = this.data()\n\n if (continuId) {\n wallet = new Wallet({\n secret: null,\n token: continuId.tokenSlug\n })\n wallet.address = continuId.address\n wallet.position = continuId.position\n wallet.bundle = continuId.bundleHash\n wallet.batchId = continuId.batchId\n wallet.characters = continuId.characters\n wallet.pubkey = continuId.pubkey\n wallet.balance = continuId.amount * 1.0\n }\n\n return wallet\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseContinuId from '../response/ResponseContinuId'\nimport type { UrqlClientWrapper } from '../client/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * QueryContinuId class - Queries the node for the next wallet to sign with for ContinuID\n * Matches JavaScript SDK QueryContinuId implementation exactly\n */\nexport default class QueryContinuId extends Query {\n /**\n * Create new QueryContinuId instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(graphQLClient: UrqlClientWrapper, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `query ($bundle: String!) {\n ContinuId(bundle: $bundle) {\n address,\n bundleHash,\n tokenSlug,\n position,\n batchId,\n characters,\n pubkey,\n amount,\n createdAt\n }\n }`\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseContinuId {\n return new ResponseContinuId({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport type Query from '../query/Query'\nimport Response from './Response'\n\n/**\n * ResponseMetaType class - Response for MetaType Query\n * Matches JavaScript SDK ResponseMetaType implementation exactly\n */\nexport default class ResponseMetaType extends Response {\n /**\n * Class constructor\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: any\n }) {\n super({\n query,\n json,\n dataKey: 'data.MetaType'\n })\n }\n\n /**\n * Returns meta type instance results\n * Matches JavaScript SDK payload method exactly\n */\n payload(): any | null {\n const metaTypeData = this.data()\n\n if (!metaTypeData || metaTypeData.length === 0) {\n return null\n }\n\n const response: any = {\n instances: {},\n instanceCount: {},\n paginatorInfo: {}\n }\n\n const metaData = metaTypeData.pop()\n\n if (metaData.instances) {\n response.instances = metaData.instances\n }\n\n if (metaData.instanceCount) {\n response.instanceCount = metaData.instanceCount\n }\n\n if (metaData.paginatorInfo) {\n response.paginatorInfo = metaData.paginatorInfo\n }\n\n return response\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseMetaType from '../response/ResponseMetaType'\nimport type { UrqlClientWrapper } from '../client/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * QueryMetaType class - Query for retrieving Meta Asset information\n * Matches JavaScript SDK QueryMetaType implementation exactly\n */\nexport default class QueryMetaType extends Query {\n /**\n * Create new QueryMetaType instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(graphQLClient: UrqlClientWrapper, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `query( $metaType: String, $metaTypes: [ String! ], $metaId: String, $metaIds: [ String! ], $key: String, $keys: [ String! ], $value: String, $values: [ String! ], $count: String, $latest: Boolean, $filter: [ MetaFilter! ], $queryArgs: QueryArgs, $countBy: String, $cellSlug: String ) {\n MetaType( metaType: $metaType, metaTypes: $metaTypes, metaId: $metaId, metaIds: $metaIds, key: $key, keys: $keys, value: $value, values: $values, count: $count, filter: $filter, queryArgs: $queryArgs, countBy: $countBy, cellSlug: $cellSlug ) {\n metaType,\n instanceCount {\n key,\n value\n },\n instances {\n metaType,\n metaId,\n createdAt,\n metas(latest:$latest) {\n molecularHash,\n position,\n key,\n value,\n createdAt\n }\n },\n paginatorInfo {\n currentPage,\n total\n }\n }\n }`\n }\n\n /**\n * Builds a GraphQL-friendly variables object based on input fields\n * Matches JavaScript SDK createVariables method exactly\n */\n static createVariables({\n metaType = null,\n metaId = null,\n key = null,\n value = null,\n latest = null,\n filter = null,\n queryArgs = null,\n count = null,\n countBy = null,\n cellSlug = null\n }: {\n metaType?: string | string[] | null\n metaId?: string | string[] | null\n key?: string | string[] | null\n value?: string | string[] | null\n latest?: boolean | null\n filter?: any | null\n queryArgs?: any | null\n count?: string | null\n countBy?: string | null\n cellSlug?: string | null\n } = {}): Record<string, any> {\n const variables: Record<string, any> = {}\n\n if (metaType) {\n variables[typeof metaType === 'string' ? 'metaType' : 'metaTypes'] = metaType\n }\n\n if (metaId) {\n variables[typeof metaId === 'string' ? 'metaId' : 'metaIds'] = metaId\n }\n\n if (key) {\n variables[typeof key === 'string' ? 'key' : 'keys'] = key\n }\n\n if (value) {\n variables[typeof value === 'string' ? 'value' : 'values'] = value\n }\n\n variables.latest = latest === true\n\n if (filter) {\n variables.filter = filter\n }\n\n if (queryArgs) {\n if (typeof queryArgs.limit === 'undefined' || queryArgs.limit === 0) {\n queryArgs.limit = '*'\n }\n\n variables.queryArgs = queryArgs\n }\n\n if (count) {\n variables.count = count\n }\n\n if (countBy) {\n variables.countBy = countBy\n }\n\n if (cellSlug) {\n variables.cellSlug = cellSlug\n }\n\n return variables\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseMetaType {\n return new ResponseMetaType({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport Response from '../response/Response'\nimport type { UrqlClientWrapper } from '../client/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * QueryBatch class - Query for retrieving batch information\n * Matches JavaScript SDK QueryBatch implementation exactly\n */\nexport default class QueryBatch extends Query {\n /**\n * Create new QueryBatch instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(graphQLClient: UrqlClientWrapper, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `query( $batchId: String ) {\n Batch( batchId: $batchId ) {\n ${QueryBatch.getFields()},\n children {\n ${QueryBatch.getFields()}\n }\n }\n }`\n }\n\n /**\n * Get GraphQL fields for batch query\n * Matches JavaScript SDK getFields method exactly\n */\n static getFields(): string {\n return `batchId,\n molecularHash,\n type,\n status,\n createdAt,\n wallet {\n address,\n bundleHash,\n amount,\n tokenSlug,\n token {\n name,\n amount\n },\n tokenUnits {\n id,\n name,\n metas\n }\n },\n fromWallet {\n address,\n bundleHash,\n amount,\n batchId\n },\n toWallet {\n address,\n bundleHash,\n amount,\n batchId\n },\n sourceTokenUnits {\n id,\n name,\n metas\n },\n transferTokenUnits {\n id,\n name,\n metas\n },\n metas {\n key,\n value,\n },\n throughMetas {\n key,\n value\n }`\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): Response {\n const responseObject = new Response({\n query: this,\n json\n })\n responseObject.dataKey = 'data.Batch'\n return responseObject\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport QueryBatch from './QueryBatch'\nimport Response from '@/response/Response'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\n\n/**\n * Query for retrieving Batch History information\n */\nexport default class QueryBatchHistory extends Query {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n query($batchId: String) {\n BatchHistory(batchId: $batchId) {\n ${QueryBatch.getFields()}\n }\n }\n `\n }\n\n /**\n * Returns a Response object\n */\n override createResponse(json: Record<string, any>): Response {\n const responseObject = new Response({\n query: this,\n json\n })\n responseObject.dataKey = 'data.BatchHistory'\n return responseObject\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport type Query from '../query/Query'\nimport Response from './Response'\n\n/**\n * ResponseAtom class - Response for Atom Query\n * Matches JavaScript SDK ResponseAtom implementation exactly\n */\nexport default class ResponseAtom extends Response {\n /**\n * Class constructor\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: any\n }) {\n super({\n query,\n json,\n dataKey: 'data.Atom'\n })\n }\n\n /**\n * Returns atom instance results\n * Matches JavaScript SDK payload method exactly\n */\n payload(): any | null {\n const metaTypeData = this.data()\n\n if (!metaTypeData) {\n return null\n }\n\n const response: any = {\n instances: [],\n instanceCount: {},\n paginatorInfo: {}\n }\n\n if (metaTypeData.instances) {\n response.instances = metaTypeData.instances\n\n for (const instanceKey in response.instances) {\n const instance = response.instances[instanceKey]\n if (instance.metasJson) {\n response.instances[instanceKey].metas = JSON.parse(instance.metasJson)\n }\n }\n }\n\n if (metaTypeData.instanceCount) {\n response.instanceCount = metaTypeData.instanceCount\n }\n\n if (metaTypeData.paginatorInfo) {\n response.paginatorInfo = metaTypeData.paginatorInfo\n }\n\n return response\n }\n\n /**\n * Returns parsed metas from all instances\n * Matches JavaScript SDK metas method exactly\n */\n metas(): any[] {\n const response = this.payload()\n const metas: any[] = []\n\n if (response && response.instances) {\n for (const instance of response.instances) {\n if (instance.metasJson) {\n metas.push(JSON.parse(instance.metasJson))\n }\n }\n }\n\n return metas\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseAtom from '../response/ResponseAtom'\nimport type { UrqlClientWrapper } from '../client/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * QueryAtom class - Query for getting Knish.IO Atoms\n * Matches JavaScript SDK QueryAtom implementation exactly\n */\nexport default class QueryAtom extends Query {\n /**\n * Create new QueryAtom instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(graphQLClient: UrqlClientWrapper, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `query(\n $molecularHashes: [String!],\n $bundleHashes: [String!],\n $positions:[String!],\n $walletAddresses: [String!],\n $isotopes: [String!],\n $tokenSlugs: [String!],\n $cellSlugs: [String!],\n $batchIds: [String!],\n $values: [String!],\n $metaTypes: [String!],\n $metaIds: [String!],\n $indexes: [String!],\n $filter: [ MetaFilter! ],\n $latest: Boolean,\n $queryArgs: QueryArgs,\n ) {\n Atom(\n molecularHashes: $molecularHashes,\n bundleHashes: $bundleHashes,\n positions: $positions,\n walletAddresses: $walletAddresses,\n isotopes: $isotopes,\n tokenSlugs: $tokenSlugs,\n cellSlugs: $cellSlugs,\n batchIds: $batchIds,\n values: $values,\n metaTypes: $metaTypes,\n metaIds: $metaIds,\n indexes: $indexes,\n filter: $filter,\n latest: $latest,\n queryArgs: $queryArgs,\n ) {\n instances {\n position,\n walletAddress,\n tokenSlug,\n isotope,\n index,\n molecularHash,\n metaId,\n metaType,\n metasJson,\n batchId,\n value,\n bundleHashes,\n cellSlugs,\n createdAt,\n otsFragment\n },\n paginatorInfo {\n currentPage,\n total\n }\n }\n }`\n }\n\n /**\n * Queries Knish.IO Atoms\n * Matches JavaScript SDK createVariables method exactly\n */\n static createVariables({\n molecularHashes,\n molecularHash,\n bundleHashes,\n bundleHash,\n positions,\n position,\n walletAddresses,\n walletAddress,\n isotopes,\n isotope,\n tokenSlugs,\n tokenSlug,\n cellSlugs,\n cellSlug,\n batchIds,\n batchId,\n values,\n value,\n metaTypes,\n metaType,\n metaIds,\n metaId,\n indexes,\n index,\n filter,\n latest,\n queryArgs\n }: {\n molecularHashes?: string[]\n molecularHash?: string\n bundleHashes?: string[]\n bundleHash?: string\n positions?: string[]\n position?: string\n walletAddresses?: string[]\n walletAddress?: string\n isotopes?: string[]\n isotope?: string\n tokenSlugs?: string[]\n tokenSlug?: string\n cellSlugs?: string[]\n cellSlug?: string\n batchIds?: string[]\n batchId?: string\n values?: string[]\n value?: string | number\n metaTypes?: string[]\n metaType?: string\n metaIds?: string[]\n metaId?: string\n indexes?: number[]\n index?: number\n filter?: object[]\n latest?: boolean\n queryArgs?: object\n }): Record<string, any> {\n if (molecularHash) {\n molecularHashes = molecularHashes || []\n molecularHashes.push(molecularHash)\n }\n\n if (bundleHash) {\n bundleHashes = bundleHashes || []\n bundleHashes.push(bundleHash)\n }\n\n if (position) {\n positions = positions || []\n positions.push(position)\n }\n\n if (walletAddress) {\n walletAddresses = walletAddresses || []\n walletAddresses.push(walletAddress)\n }\n\n if (isotope) {\n isotopes = isotopes || []\n isotopes.push(isotope)\n }\n\n if (tokenSlug) {\n tokenSlugs = tokenSlugs || []\n tokenSlugs.push(tokenSlug)\n }\n\n if (cellSlug) {\n cellSlugs = cellSlugs || []\n cellSlugs.push(cellSlug)\n }\n\n if (batchId) {\n batchIds = batchIds || []\n batchIds.push(batchId)\n }\n\n if (value) {\n values = values || []\n values.push(String(value))\n }\n\n if (metaType) {\n metaTypes = metaTypes || []\n metaTypes.push(metaType)\n }\n\n if (metaId) {\n metaIds = metaIds || []\n metaIds.push(metaId)\n }\n\n if (index) {\n indexes = indexes || []\n indexes.push(index)\n }\n\n return {\n molecularHashes,\n bundleHashes,\n positions,\n walletAddresses,\n isotopes,\n tokenSlugs,\n cellSlugs,\n batchIds,\n values,\n metaTypes,\n metaIds,\n indexes,\n filter,\n latest,\n queryArgs\n }\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseAtom {\n return new ResponseAtom({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport type Query from '@/query/Query'\n\n/**\n * Response for Policy queries\n */\nexport default class ResponsePolicy extends Response {\n /**\n * Constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, any>\n }) {\n super({\n query,\n json\n })\n this.dataKey = 'data.Policy'\n this.init()\n }\n\n /**\n * Returns the policy payload\n */\n payload(): any {\n const policy = this.data()\n\n if (!policy) {\n return null\n }\n\n if (policy.callback) {\n return JSON.parse(policy.callback)\n }\n\n return null\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponsePolicy from '@/response/ResponsePolicy'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\nimport type { MetaType, MetaId } from '@/types'\n\n/**\n * Query for retrieving Policy information\n */\nexport default class QueryPolicy extends Query {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n query($metaType: String, $metaId: String) {\n Policy(metaType: $metaType, metaId: $metaId) {\n molecularHash\n position\n metaType\n metaId\n conditions\n callback\n rule\n createdAt\n }\n }\n `\n }\n\n /**\n * Returns a Response object\n */\n override createResponse(json: Record<string, any>): ResponsePolicy {\n return new ResponsePolicy({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport type Query from '@/query/Query'\n\n/**\n * Response for QueryActiveSession\n */\nexport default class ResponseQueryActiveSession extends Response {\n /**\n * Constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, any>\n }) {\n super({\n query,\n json,\n dataKey: 'data.ActiveUser'\n })\n }\n\n /**\n * Returns processed active session data\n */\n payload(): any {\n const list = this.data()\n\n if (!list) {\n return null\n }\n\n const activeUsers: any[] = []\n\n for (const item of list) {\n const activeSession = { ...item }\n\n if (activeSession.jsonData) {\n activeSession.jsonData = JSON.parse(activeSession.jsonData)\n }\n\n if (activeSession.createdAt) {\n activeSession.createdAt = new Date(activeSession.createdAt)\n }\n\n if (activeSession.updatedAt) {\n activeSession.updatedAt = new Date(activeSession.updatedAt)\n }\n\n activeUsers.push(activeSession)\n }\n\n return activeUsers\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseQueryActiveSession from '@/response/ResponseQueryActiveSession'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\nimport type { BundleHash, MetaType, MetaId } from '@/types'\n\n/**\n * Query for retrieving a list of active User Sessions\n */\nexport default class QueryActiveSession extends Query {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n query ActiveUserQuery($bundleHash: String, $metaType: String, $metaId: String) {\n ActiveUser(bundleHash: $bundleHash, metaType: $metaType, metaId: $metaId) {\n bundleHash\n metaType\n metaId\n jsonData\n createdAt\n updatedAt\n }\n }\n `\n }\n\n /**\n * Creates a Response object\n */\n override createResponse(json: Record<string, any>): ResponseQueryActiveSession {\n return new ResponseQueryActiveSession({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport type Query from '@/query/Query'\n\n/**\n * Response for QueryUserActivity\n */\nexport default class ResponseQueryUserActivity extends Response {\n /**\n * Constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, any>\n }) {\n super({\n query,\n json,\n dataKey: 'data.UserActivity'\n })\n }\n\n /**\n * Returns processed user activity data\n */\n payload(): any {\n const data = JSON.parse(JSON.stringify(this.data()))\n\n if (data.instances) {\n for (const datum of data.instances) {\n if (datum.jsonData) {\n datum.jsonData = JSON.parse(datum.jsonData)\n }\n }\n }\n\n return data\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseQueryUserActivity from '@/response/ResponseQueryUserActivity'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\nimport type { BundleHash, MetaType, MetaId } from '@/types'\n\n/**\n * Query for retrieving information about user activity\n */\nexport default class QueryUserActivity extends Query {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n query UserActivity(\n $bundleHash: String\n $metaType: String\n $metaId: String\n $ipAddress: String\n $browser: String\n $osCpu: String\n $resolution: String\n $timeZone: String\n $countBy: [CountByUserActivity]\n $interval: span\n ) {\n UserActivity(\n bundleHash: $bundleHash\n metaType: $metaType\n metaId: $metaId\n ipAddress: $ipAddress\n browser: $browser\n osCpu: $osCpu\n resolution: $resolution\n timeZone: $timeZone\n countBy: $countBy\n interval: $interval\n ) {\n createdAt\n bundleHash\n metaType\n metaId\n instances {\n bundleHash\n metaType\n metaId\n jsonData\n createdAt\n updatedAt\n }\n instanceCount {\n ...SubFields\n ...Recursive\n }\n }\n }\n\n fragment SubFields on InstanceCountType {\n id\n count\n }\n\n fragment Recursive on InstanceCountType {\n instances {\n ...SubFields\n instances {\n ...SubFields\n instances {\n ...SubFields\n instances {\n ...SubFields\n instances {\n ...SubFields\n instances {\n ...SubFields\n instances {\n ...SubFields\n instances {\n ...SubFields\n }\n }\n }\n }\n }\n }\n }\n }\n }\n `\n }\n\n /**\n * Returns a Response object\n */\n override createResponse(json: Record<string, any>): ResponseQueryUserActivity {\n return new ResponseQueryUserActivity({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport Response from '@/response/Response'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\n\n/**\n * Query for getting token information\n */\nexport default class QueryToken extends Query {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n query($slug: String, $slugs: [String!], $limit: Int, $order: String) {\n Token(slug: $slug, slugs: $slugs, limit: $limit, order: $order) {\n slug\n name\n fungibility\n supply\n decimals\n amount\n icon\n }\n }\n `\n }\n\n /**\n * Creates a Response object\n */\n override createResponse(json: Record<string, any>): Response {\n return new Response({\n query: this,\n json,\n dataKey: 'data.Token'\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport type Query from '../query/Query'\nimport Response from './Response'\n\n/**\n * ResponseMetaTypeViaAtom class - Response for MetaTypeViaAtom Query\n * Matches JavaScript SDK ResponseMetaTypeViaAtom implementation exactly\n */\nexport default class ResponseMetaTypeViaAtom extends Response {\n /**\n * Class constructor\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: any\n }) {\n super({\n query,\n json,\n dataKey: 'data.MetaTypeViaAtom'\n })\n }\n\n /**\n * Returns meta type instance results via atom\n * Matches JavaScript SDK payload method exactly\n */\n payload(): any | null {\n const metaTypeData = this.data()\n\n if (!metaTypeData || metaTypeData.length === 0) {\n return null\n }\n\n const response: any = {\n instances: {},\n instanceCount: {},\n paginatorInfo: {}\n }\n\n const metaData = metaTypeData.pop()\n\n if (metaData.instances) {\n response.instances = metaData.instances\n }\n\n if (metaData.instanceCount) {\n response.instanceCount = metaData.instanceCount\n }\n\n if (metaData.paginatorInfo) {\n response.paginatorInfo = metaData.paginatorInfo\n }\n\n return response\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Query from './Query'\nimport ResponseMetaTypeViaAtom from '../response/ResponseMetaTypeViaAtom'\nimport type { UrqlClientWrapper } from '../client/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\n\n/**\n * QueryMetaTypeViaAtom class - Alternative atom-based meta querying\n * Matches JavaScript SDK QueryMetaTypeViaAtom implementation exactly\n */\nexport default class QueryMetaTypeViaAtom extends Query {\n /**\n * Create new QueryMetaTypeViaAtom instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(graphQLClient: UrqlClientWrapper, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = `query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {\n MetaTypeViaAtom(\n metaTypes: $metaTypes\n metaIds: $metaIds\n atomValues: $atomValues\n cellSlugs: $cellSlugs\n filter: $filter,\n latest: $latest,\n queryArgs: $queryArgs\n countBy: $countBy\n ) {\n metaType,\n instanceCount {\n key,\n value\n },\n instances {\n metaType,\n metaId,\n createdAt,\n metas( values: $values, keys: $keys ) {\n molecularHash,\n position,\n key,\n value,\n createdAt\n }\n },\n paginatorInfo {\n currentPage,\n total\n }\n }\n }`\n }\n\n /**\n * Builds a GraphQL-friendly variables object based on input fields\n * Matches JavaScript SDK createVariables method exactly\n */\n static createVariables({\n metaType = null,\n metaId = null,\n key = null,\n value = null,\n keys = null,\n values = null,\n atomValues = null,\n latest = null,\n filter = null,\n queryArgs = null,\n countBy = null,\n cellSlug = null\n }: {\n metaType?: string | string[] | null\n metaId?: string | string[] | null\n key?: string | null\n value?: string | null\n keys?: string[] | null\n values?: string[] | null\n atomValues?: string[] | null\n latest?: boolean | null\n filter?: any[] | null\n queryArgs?: any | null\n countBy?: string | null\n cellSlug?: string | string[] | null\n } = {}): Record<string, any> {\n const variables: Record<string, any> = {}\n\n if (atomValues) {\n variables.atomValues = atomValues\n }\n\n if (keys) {\n variables.keys = keys\n }\n\n if (values) {\n variables.values = values\n }\n\n if (metaType) {\n variables.metaTypes = typeof metaType === 'string' ? [metaType] : metaType\n }\n\n if (metaId) {\n variables.metaIds = typeof metaId === 'string' ? [metaId] : metaId\n }\n\n if (cellSlug) {\n variables.cellSlugs = typeof cellSlug === 'string' ? [cellSlug] : cellSlug\n }\n\n if (countBy) {\n variables.countBy = countBy\n }\n\n if (filter) {\n variables.filter = filter\n }\n\n if (key && value) {\n variables.filter = variables.filter || []\n variables.filter.push({\n key,\n value,\n comparison: '='\n })\n }\n\n variables.latest = latest === true\n\n if (queryArgs) {\n if (typeof queryArgs.limit === 'undefined' || queryArgs.limit === 0) {\n queryArgs.limit = '*'\n }\n\n variables.queryArgs = queryArgs\n }\n\n return variables\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseMetaTypeViaAtom {\n return new ResponseMetaTypeViaAtom({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport Dot from '../libraries/Dot'\nimport Molecule from '../core/Molecule'\nimport type Query from '../query/Query'\n\n/**\n * Response for proposing new Molecules\n * Matches JavaScript SDK ResponseProposeMolecule implementation exactly\n */\nexport default class ResponseProposeMolecule extends Response {\n private $__clientMolecule: any\n private $__payload: any = null\n\n /**\n * Class constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, unknown>\n }) {\n super({\n query,\n json,\n dataKey: 'data.ProposeMolecule'\n })\n this.$__clientMolecule = (query as any).molecule()\n this.init()\n }\n\n /**\n * Initialize response object with payload data\n * Matches JavaScript SDK init method exactly\n */\n init(): void {\n const payloadJson = Dot.get(this.data(), 'payload')\n try {\n this.$__payload = Object.prototype.toString.call(payloadJson) === '[object String]'\n ? JSON.parse(payloadJson as string)\n : payloadJson\n } catch (err) {\n this.$__payload = null\n }\n }\n\n /**\n * Returns the client molecule\n * Matches JavaScript SDK clientMolecule method exactly\n */\n clientMolecule(): any {\n return this.$__clientMolecule\n }\n\n /**\n * Returns the resulting molecule\n * Matches JavaScript SDK molecule method exactly\n */\n molecule(): Molecule | null {\n const data = this.data()\n\n if (!data) {\n return null\n }\n\n const molecule = new Molecule({})\n\n molecule.molecularHash = Dot.get(data, 'molecularHash')\n molecule.status = Dot.get(data, 'status')\n molecule.createdAt = Dot.get(data, 'createdAt')\n\n return molecule\n }\n\n /**\n * Returns whether molecule was accepted or not\n * Matches JavaScript SDK success method exactly\n */\n success(): boolean {\n return this.status() === 'accepted'\n }\n\n /**\n * Returns the status of the proposal\n * Matches JavaScript SDK status method exactly\n */\n status(): string {\n return Dot.get(this.data(), 'status', 'rejected') as string\n }\n\n /**\n * Returns the reason for rejection\n * Matches JavaScript SDK reason method exactly\n */\n reason(): string {\n return Dot.get(this.data(), 'reason', 'Invalid response from server') as string\n }\n\n /**\n * Returns payload object\n * Matches JavaScript SDK payload method exactly\n */\n payload(): any {\n return this.$__payload\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Mutation from './Mutation'\nimport ResponseProposeMolecule from '../response/ResponseProposeMolecule'\nimport type GraphQLClient from '../libraries/GraphQLClient'\nimport type KnishIOClient from '../KnishIOClient'\nimport type Molecule from '../core/Molecule'\n\n/**\n * MutationProposeMolecule - Foundation for all molecular proposals\n * Matches JavaScript SDK MutationProposeMolecule implementation exactly\n */\nexport default abstract class MutationProposeMolecule extends Mutation {\n protected $__molecule: Molecule\n protected $__remainderWallet: any | null = null\n\n /**\n * Create MutationProposeMolecule instance\n */\n constructor(graphQLClient: GraphQLClient, knishIOClient: KnishIOClient, molecule: Molecule) {\n super(graphQLClient, knishIOClient)\n\n this.$__molecule = molecule\n this.$__remainderWallet = null\n this.$__query = `\n mutation($molecule: MoleculeInput!) {\n ProposeMolecule(molecule: $molecule) {\n molecularHash,\n height,\n depth,\n status,\n reason,\n payload,\n createdAt,\n receivedAt,\n processedAt,\n broadcastedAt\n }\n }\n `\n }\n\n /**\n * Returns an object of query variables\n * Matches JavaScript SDK compiledVariables method exactly\n */\n override compiledVariables(variables: Record<string, any> | null = null): Record<string, any> {\n const _variables = super.compiledVariables(variables)\n return { ..._variables, ...{ molecule: this.molecule() } }\n }\n\n /**\n * Creates a new response from a JSON object\n * Matches JavaScript SDK createResponse method signature exactly\n */\n override createResponse(json: Record<string, unknown>): ResponseProposeMolecule {\n return new ResponseProposeMolecule({\n query: this,\n json\n })\n }\n\n /**\n * Executes the mutation\n * Matches JavaScript SDK execute method signature exactly\n */\n override async execute({ variables = null }: { variables?: Record<string, any> | null } = {}): Promise<ResponseProposeMolecule | null> {\n variables = variables || {}\n variables.molecule = this.molecule()\n\n const response = await super.execute({\n variables\n })\n\n return response as ResponseProposeMolecule | null\n }\n\n /**\n * Returns the remainder wallet\n * Matches JavaScript SDK remainderWallet method exactly\n */\n remainderWallet(): any | null {\n return this.$__remainderWallet\n }\n\n /**\n * Returns the molecule we are proposing\n * Matches JavaScript SDK molecule method exactly\n */\n molecule(): any {\n // Convert molecule to GraphQL input format\n // This should match the JavaScript SDK's molecule serialization\n return this.$__molecule.toJSON ? this.$__molecule.toJSON() : this.$__molecule\n }\n\n /**\n * Abstract method to be implemented by subclasses\n * Fills the molecule with specific mutation data\n */\n abstract fillMolecule(params: any): void\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * ResponseCreateToken class - Response for token creation\n * Matches JavaScript SDK ResponseCreateToken implementation exactly\n */\nexport default class ResponseCreateToken extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n // Empty class by design, matching JavaScript SDK exactly\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseCreateToken from '../response/ResponseCreateToken'\nimport type Wallet from '../core/Wallet'\n\n/**\n * MutationCreateToken class - Mutation for creating new Tokens\n * Matches JavaScript SDK MutationCreateToken implementation exactly\n */\nexport default class MutationCreateToken extends MutationProposeMolecule {\n /**\n * Fill molecule for token creation\n * Matches JavaScript SDK fillMolecule method exactly\n */\n override fillMolecule({\n recipientWallet,\n amount,\n meta = null\n }: {\n recipientWallet: Wallet\n amount: number | string\n meta?: any | null\n }): void {\n (this.$__molecule as any).initTokenCreation({\n recipientWallet,\n amount,\n meta: meta || {}\n });\n (this.$__molecule as any).sign({\n bundle: recipientWallet.bundle\n });\n (this.$__molecule as any).check()\n }\n\n /**\n * Builds a new Response object from a JSON object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseCreateToken {\n return new ResponseCreateToken({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * ResponseRequestTokens class - Response for token requests\n * Matches JavaScript SDK ResponseRequestTokens implementation exactly\n */\nexport default class ResponseRequestTokens extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n // Empty class by design, matching JavaScript SDK exactly\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseRequestTokens from '../response/ResponseRequestTokens'\n\n/**\n * MutationRequestTokens class - Mutation for requesting tokens\n * Matches JavaScript SDK MutationRequestTokens implementation exactly\n */\nexport default class MutationRequestTokens extends MutationProposeMolecule {\n /**\n * Fills a Molecule with the appropriate atoms and prepares for broadcast\n * Matches JavaScript SDK fillMolecule method exactly\n */\n override fillMolecule({\n token,\n amount,\n metaType,\n metaId,\n meta = null,\n batchId = null\n }: {\n token: string\n amount: number | string\n metaType: string\n metaId: string\n meta?: any | null\n batchId?: string | null\n }): void {\n (this.$__molecule as any).initTokenRequest({\n token,\n amount,\n metaType,\n metaId,\n meta: meta || {},\n batchId\n });\n (this.$__molecule as any).sign({});\n (this.$__molecule as any).check()\n }\n\n /**\n * Builds a Response object out of a JSON object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseRequestTokens {\n return new ResponseRequestTokens({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * Response for token transfer mutations\n * Matches JavaScript SDK ResponseTransferTokens implementation exactly\n */\nexport default class ResponseTransferTokens extends ResponseProposeMolecule {\n /**\n * Returns result of the transfer\n * Matches JavaScript SDK payload method exactly\n */\n payload(): { reason: string | null; status: string | null } {\n const result = {\n reason: null as string | null,\n status: null as string | null\n }\n const data = this.data() as any\n\n result.reason = typeof data.reason === 'undefined' ? 'Invalid response from server' : data.reason\n result.status = typeof data.status === 'undefined' ? 'rejected' : data.status\n\n return result\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseTransferTokens from '../response/ResponseTransferTokens'\nimport type Wallet from '../core/Wallet'\n\n/**\n * Mutation for moving tokens between wallets\n * Matches JavaScript SDK MutationTransferTokens implementation exactly\n */\nexport default class MutationTransferTokens extends MutationProposeMolecule {\n /**\n * Fills the Molecule with provided wallet and amount data\n * Matches JavaScript SDK fillMolecule method exactly\n */\n override fillMolecule({\n recipientWallet,\n amount\n }: {\n recipientWallet: Wallet\n amount: number | string\n }): void {\n (this.$__molecule as any).initValue({\n recipientWallet,\n amount\n });\n (this.$__molecule as any).sign({});\n (this.$__molecule as any).check((this.$__molecule as any).sourceWallet)\n }\n\n /**\n * Builds a Response object out of a JSON object\n * Matches JavaScript SDK createResponse method signature exactly\n */\n override createResponse(json: Record<string, unknown>): ResponseTransferTokens {\n return new ResponseTransferTokens({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * ResponseCreateWallet class - Response for Wallet creation\n * Matches JavaScript SDK ResponseCreateWallet implementation exactly\n */\nexport default class ResponseCreateWallet extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n // Empty class by design, matching JavaScript SDK exactly\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseCreateWallet from '../response/ResponseCreateWallet'\nimport type Wallet from '../core/Wallet'\n\n/**\n * MutationCreateWallet class - Mutation for creating new Wallets\n * Matches JavaScript SDK MutationCreateWallet implementation exactly\n */\nexport default class MutationCreateWallet extends MutationProposeMolecule {\n /**\n * Fill molecule for wallet creation\n * Matches JavaScript SDK fillMolecule method exactly\n */\n override fillMolecule(wallet: Wallet): void {\n (this.$__molecule as any).initWalletCreation(wallet);\n (this.$__molecule as any).sign({});\n (this.$__molecule as any).check()\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseCreateWallet {\n return new ResponseCreateWallet({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * Response for shadow wallet claim operations\n */\nexport default class ResponseClaimShadowWallet extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport Wallet from '@/core/Wallet'\nimport ResponseClaimShadowWallet from '@/response/ResponseClaimShadowWallet'\nimport type { TokenSlug } from '@/types'\n\n/**\n * Mutation for claiming a Shadow Wallet\n */\nexport default class MutationClaimShadowWallet extends MutationProposeMolecule {\n /**\n * Fills the molecule with shadow wallet claim data\n */\n override fillMolecule({\n token,\n batchId = null\n }: {\n token: TokenSlug\n batchId?: string | null\n }): void {\n // Create the wallet to claim\n const wallet = Wallet.create({\n secret: this.$__molecule.secret,\n bundle: this.$__molecule.bundle,\n token,\n batchId\n })\n\n // Initialize shadow wallet claim on the molecule\n (this.$__molecule as any).initShadowWalletClaim(wallet)\n this.$__molecule.sign({})\n this.$__molecule.check()\n }\n\n /**\n * Builds a Response object out of a JSON string\n */\n override createResponse(json: Record<string, any>): ResponseClaimShadowWallet {\n return new ResponseClaimShadowWallet({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * ResponseCreateMeta class - Response for meta creation\n * Matches JavaScript SDK ResponseCreateMeta implementation exactly\n */\nexport default class ResponseCreateMeta extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n // Empty class by design, matching JavaScript SDK exactly\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseCreateMeta from '../response/ResponseCreateMeta'\n\n/**\n * MutationCreateMeta class - Mutation for creating new Meta attached to some MetaType\n * Matches JavaScript SDK MutationCreateMeta implementation exactly\n */\nexport default class MutationCreateMeta extends MutationProposeMolecule {\n /**\n * Fills a molecule with an appropriate metadata atom\n * Matches JavaScript SDK fillMolecule method exactly\n */\n override fillMolecule({\n metaType,\n metaId,\n meta,\n policy\n }: {\n metaType: string\n metaId: string\n meta: any[] | any\n policy: any\n }): void {\n (this.$__molecule as any).initMeta({\n meta,\n metaType,\n metaId,\n policy\n });\n (this.$__molecule as any).sign({});\n (this.$__molecule as any).check()\n }\n\n /**\n * Builds a new Response object from a JSON object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseCreateMeta {\n return new ResponseCreateMeta({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * Response for rule creation operations\n */\nexport default class ResponseCreateRule extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseCreateRule from '@/response/ResponseCreateRule'\nimport type { MetaType, MetaId } from '@/types'\n\n/**\n * Mutation for creating new Rule attached to some MetaType\n */\nexport default class MutationCreateRule extends MutationProposeMolecule {\n /**\n * Fills the molecule with rule creation data\n */\n override fillMolecule({\n metaType,\n metaId,\n rule,\n policy\n }: {\n metaType: MetaType\n metaId: MetaId\n rule: Record<string, any>[]\n policy: Record<string, any>\n }): void {\n (this.$__molecule as any).createRule({\n metaType,\n metaId,\n rule,\n policy\n })\n this.$__molecule.sign({})\n this.$__molecule.check()\n }\n\n /**\n * Builds a new Response object from a JSON string\n */\n override createResponse(json: Record<string, any>): ResponseCreateRule {\n return new ResponseCreateRule({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * Response for identifier creation operations\n */\nexport default class ResponseCreateIdentifier extends ResponseProposeMolecule {\n // Inherits all functionality from ResponseProposeMolecule\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseCreateIdentifier from '@/response/ResponseCreateIdentifier'\n\n/**\n * Mutation for creating a new Identifier\n */\nexport default class MutationCreateIdentifier extends MutationProposeMolecule {\n /**\n * Fills the molecule with identifier creation data\n */\n override fillMolecule({\n type,\n contact,\n code\n }: {\n type: string\n contact: string\n code: string\n }): void {\n (this.$__molecule as any).initIdentifierCreation({\n type,\n contact,\n code\n })\n this.$__molecule.sign({})\n this.$__molecule.check()\n }\n\n /**\n * Builds a Response object out of a JSON string\n */\n override createResponse(json: Record<string, any>): ResponseCreateIdentifier {\n return new ResponseCreateIdentifier({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport type Query from '@/query/Query'\n\n/**\n * Response for Active Session queries\n */\nexport default class ResponseActiveSession extends Response {\n /**\n * Constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, any>\n }) {\n super({\n query,\n json,\n dataKey: 'data.ActiveSession'\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Mutation from './Mutation'\nimport ResponseActiveSession from '@/response/ResponseActiveSession'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\n\n/**\n * Mutation for declaring an active User Session with a given MetaAsset\n */\nexport default class MutationActiveSession extends Mutation {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n mutation(\n $bundleHash: String!\n $metaType: String!\n $metaId: String!\n $ipAddress: String\n $browser: String\n $osCpu: String\n $resolution: String\n $timeZone: String\n $json: String\n ) {\n ActiveSession(\n bundleHash: $bundleHash\n metaType: $metaType\n metaId: $metaId\n ipAddress: $ipAddress\n browser: $browser\n osCpu: $osCpu\n resolution: $resolution\n timeZone: $timeZone\n json: $json\n ) {\n bundleHash\n metaType\n metaId\n jsonData\n createdAt\n updatedAt\n }\n }\n `\n }\n\n /**\n * Builds a Response object out of a JSON string\n */\n override createResponse(json: Record<string, any>): ResponseActiveSession {\n return new ResponseActiveSession({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\n\n/**\n * Mutation for depositing buffer tokens\n */\nexport default class MutationDepositBufferToken extends MutationProposeMolecule {\n /**\n * Fills the Molecule with provided wallet and amount data\n */\n override fillMolecule({\n amount,\n tradeRates\n }: {\n amount: number\n tradeRates: Record<string, any>\n }): void {\n (this.$__molecule as any).initDepositBuffer({\n amount,\n tradeRates\n })\n this.$__molecule.sign({})\n this.$__molecule.check(this.$__molecule.sourceWallet)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport type Wallet from '@/core/Wallet'\n\n/**\n * Mutation for withdrawing buffer tokens\n */\nexport default class MutationWithdrawBufferToken extends MutationProposeMolecule {\n /**\n * Fills the molecule with buffer withdrawal data\n */\n override fillMolecule({\n recipients,\n signingWallet\n }: {\n recipients: Record<string, any>\n signingWallet?: Wallet\n }): void {\n (this.$__molecule as any).initWithdrawBuffer({\n recipients,\n signingWallet\n })\n this.$__molecule.sign({})\n this.$__molecule.check(this.$__molecule.sourceWallet)\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Dot from '../libraries/Dot'\nimport { InvalidResponseException } from '../exception'\nimport ResponseProposeMolecule from './ResponseProposeMolecule'\n\n/**\n * ResponseRequestAuthorization class - Response for auth token mutation\n * Matches JavaScript SDK ResponseRequestAuthorization implementation exactly\n */\nexport default class ResponseRequestAuthorization extends ResponseProposeMolecule {\n /**\n * Return the authorization key\n * Matches JavaScript SDK payloadKey method exactly\n */\n payloadKey(key: string): any {\n if (!Dot.has(this.payload(), key)) {\n throw new InvalidResponseException(`ResponseRequestAuthorization::payloadKey() - '${key}' key was not found in the payload!`)\n }\n return Dot.get(this.payload(), key)\n }\n\n /**\n * Returns the auth token\n * Matches JavaScript SDK token method exactly\n */\n token(): string {\n return this.payloadKey('token')\n }\n\n /**\n * Returns timestamp\n * Matches JavaScript SDK time method exactly\n */\n time(): string {\n return this.payloadKey('time')\n }\n\n /**\n * Returns encryption info\n * Matches JavaScript SDK encrypt method exactly\n */\n encrypt(): string {\n return this.payloadKey('encrypt')\n }\n\n /**\n * Returns public key\n * Matches JavaScript SDK pubKey method exactly\n */\n pubKey(): string {\n return this.payloadKey('key')\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport MutationProposeMolecule from './MutationProposeMolecule'\nimport ResponseRequestAuthorization from '../response/ResponseRequestAuthorization'\n\n/**\n * MutationRequestAuthorization class - Mutation for requesting an authorization token from the node\n * Matches JavaScript SDK MutationRequestAuthorization implementation exactly\n */\nexport default class MutationRequestAuthorization extends MutationProposeMolecule {\n /**\n * Fill molecule for authorization request\n * Matches JavaScript SDK fillMolecule method exactly\n */\n override fillMolecule({ meta }: { meta: any }): void {\n (this.$__molecule as any).initAuthorization({ meta });\n (this.$__molecule as any).sign({});\n (this.$__molecule as any).check()\n }\n\n /**\n * Returns a Response object\n * Matches JavaScript SDK createResponse method exactly\n */\n override createResponse(json: any): ResponseRequestAuthorization {\n return new ResponseRequestAuthorization({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport Dot from '@/libraries/Dot'\nimport { InvalidResponseException } from '@/exception'\nimport type MutationRequestAuthorizationGuest from '@/mutation/MutationRequestAuthorizationGuest'\n\n/**\n * Response for guest auth mutation\n */\nexport default class ResponseRequestAuthorizationGuest extends Response {\n /**\n * Constructor\n */\n constructor({\n query,\n json\n }: {\n query: MutationRequestAuthorizationGuest\n json: Record<string, any>\n }) {\n super({\n query,\n json,\n dataKey: 'data.AccessToken'\n })\n }\n\n /**\n * Returns the reason for rejection\n */\n reason(): string {\n return 'Invalid response from server'\n }\n\n /**\n * Returns whether authorization was successful\n */\n success(): boolean {\n return this.payload() !== null\n }\n\n /**\n * Returns authorization data\n */\n payload(): any {\n return this.data()\n }\n\n /**\n * Returns the authorization key\n */\n payloadKey(key: string): any {\n if (!Dot.has(this.payload(), key)) {\n throw new InvalidResponseException(`ResponseRequestAuthorizationGuest::payloadKey() - '${key}' key is not found in the payload!`)\n }\n return Dot.get(this.payload(), key)\n }\n\n /**\n * Returns the auth token\n */\n token(): any {\n return this.payloadKey('token')\n }\n\n /**\n * Returns timestamp\n */\n time(): any {\n return this.payloadKey('time')\n }\n\n /**\n * Returns public key\n */\n pubKey(): string {\n return this.payloadKey('key')\n }\n\n /**\n * Returns encrypt flag\n */\n encrypt(): any {\n return this.payloadKey('encrypt')\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Mutation from './Mutation'\nimport ResponseRequestAuthorizationGuest from '@/response/ResponseRequestAuthorizationGuest'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\n\n/**\n * Mutation for requesting guest authorization\n */\nexport default class MutationRequestAuthorizationGuest extends Mutation {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n mutation($cellSlug: String, $pubkey: String, $encrypt: Boolean) {\n AccessToken(cellSlug: $cellSlug, pubkey: $pubkey, encrypt: $encrypt) {\n token\n pubkey\n expiresAt\n }\n }\n `\n }\n\n /**\n * Returns a Response object\n */\n override createResponse(json: Record<string, any>): ResponseRequestAuthorizationGuest {\n return new ResponseRequestAuthorizationGuest({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Response from './Response'\nimport Dot from '@/libraries/Dot'\nimport type Query from '@/query/Query'\n\n/**\n * Response for mutation to create / link an Identifier to a Wallet Bundle\n */\nexport default class ResponseLinkIdentifier extends Response {\n /**\n * Constructor\n */\n constructor({\n query,\n json\n }: {\n query: Query\n json: Record<string, any>\n }) {\n super({\n query,\n json,\n dataKey: 'data.LinkIdentifier'\n })\n }\n\n /**\n * Returns success status\n */\n success(): any {\n return Dot.get(this.data(), 'set')\n }\n\n /**\n * Returns message\n */\n message(): any {\n return Dot.get(this.data(), 'message')\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Mutation from './Mutation'\nimport ResponseLinkIdentifier from '@/response/ResponseLinkIdentifier'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport type KnishIOClient from '@/KnishIOClient'\n\n/**\n * Mutation for linking an Identifier to a Wallet Bundle\n */\nexport default class MutationLinkIdentifier extends Mutation {\n /**\n * Constructor\n */\n constructor(graphQLClient: IGraphQLClient, knishIOClient: KnishIOClient) {\n super(graphQLClient, knishIOClient)\n\n this.$__query = gql`\n mutation($bundle: String!, $type: String!, $content: String!) {\n LinkIdentifier(bundle: $bundle, type: $type, content: $content) {\n type\n bundle\n content\n set\n message\n }\n }\n `\n }\n\n /**\n * Returns a Response object\n */\n override createResponse(json: Record<string, any>): ResponseLinkIdentifier {\n return new ResponseLinkIdentifier({\n query: this,\n json\n })\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\nimport { CodeException } from '@/exception'\nimport type { DocumentNode } from 'graphql'\nimport { GraphQLRequestSchema, parseWithSchema } from '@/schemas'\n\n// Define subscription-specific types for better type safety\ninterface SubscriptionRequest {\n query: DocumentNode | null\n variables: Record<string, unknown> | null\n fetchPolicy: 'no-cache'\n}\n\ninterface SubscriptionVariables extends Record<string, unknown> {\n [key: string]: string | number | boolean | null | undefined | SubscriptionVariables | SubscriptionVariables[]\n}\n\ninterface SubscriptionExecuteParams {\n variables?: SubscriptionVariables | null\n closure: (result: unknown) => void\n}\n\ninterface SubscriptionCreateParams {\n variables?: SubscriptionVariables | null\n}\n\n// Type for GraphQL client with subscription support\ninterface GraphQLSubscriptionClient extends IGraphQLClient {\n subscribe?: (request: SubscriptionRequest, closure: (result: unknown) => void) => Promise<string>\n getUri?: () => string | null\n}\n\n/**\n * Base Subscribe class for GraphQL subscriptions with enhanced type safety\n * \n * Implements TypeScript 2025 patterns with proper generics and runtime validation\n */\nexport default abstract class Subscribe {\n protected client: GraphQLSubscriptionClient\n protected $__variables: SubscriptionVariables | null = null\n protected $__subscribe: DocumentNode | null = null\n protected $__request: SubscriptionRequest | null = null\n\n /**\n * Constructor with type-safe client parameter\n */\n constructor(graphQLClient: IGraphQLClient) {\n this.client = graphQLClient as GraphQLSubscriptionClient\n }\n\n /**\n * Creates a new Request for the given parameters with validation\n */\n createSubscribe(params: SubscriptionCreateParams = {}): SubscriptionRequest {\n const { variables = null } = params\n \n this.$__variables = this.compiledVariables(variables)\n\n // Uri is a required parameter\n const uri = this.uri()\n\n if (!uri) {\n throw new CodeException('Subscribe::createSubscribe() - Node URI was not initialized for this client instance!')\n }\n\n if (this.$__subscribe === null) {\n throw new CodeException('Subscribe::createSubscribe() - GraphQL subscription was not initialized!')\n }\n\n const request: SubscriptionRequest = {\n query: this.$__subscribe,\n variables: this.variables(),\n fetchPolicy: 'no-cache'\n }\n\n return request\n }\n\n /**\n * Sends the Subscription to a Knish.IO node and returns the operation\n * Type-safe execution with proper error handling\n */\n async execute(params: SubscriptionExecuteParams): Promise<string> {\n const { variables = null, closure } = params\n \n if (!closure) {\n throw new CodeException(`${this.constructor.name}::execute() - closure parameter is required!`)\n }\n\n this.$__request = this.createSubscribe({\n variables\n })\n\n if (!this.client.subscribe) {\n throw new CodeException('GraphQL client does not support subscriptions')\n }\n\n return this.client.subscribe(this.$__request, closure)\n }\n\n /**\n * Returns a variables object for the Subscription with validation\n */\n protected compiledVariables(variables: SubscriptionVariables | null = null): SubscriptionVariables {\n return variables || {}\n }\n\n /**\n * Returns the Knish.IO endpoint URI with type safety\n */\n protected uri(): string | null {\n return this.client.getUri ? this.client.getUri() : null\n }\n\n /**\n * Returns the subscription variables object\n */\n variables(): SubscriptionVariables | null {\n return this.$__variables\n }\n\n /**\n * Type-safe setter for subscription DocumentNode\n */\n protected setSubscription(subscription: DocumentNode): void {\n this.$__subscribe = subscription\n }\n\n /**\n * Type-safe getter for subscription DocumentNode\n */\n protected getSubscription(): DocumentNode | null {\n return this.$__subscribe\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Subscribe from './Subscribe'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\n\n/**\n * CreateMoleculeSubscribe handles real-time molecule creation events\n */\nexport default class CreateMoleculeSubscribe extends Subscribe {\n constructor(graphQLClient: IGraphQLClient) {\n super(graphQLClient)\n this.$__subscribe = gql`\n subscription onCreateMolecule($bundle: String!) {\n CreateMolecule(bundle: $bundle) {\n molecularHash\n cellSlug\n counterparty\n bundleHash\n status\n local\n height\n depth\n createdAt\n receivedAt\n processedAt\n broadcastedAt\n reason\n reasonPayload\n payload\n status\n atoms {\n molecularHash\n position\n isotope\n walletAddress\n tokenSlug\n batchId\n value\n index\n metaType\n metaId\n metasJson\n otsFragment\n createdAt\n metas {\n molecularHash\n position\n metaType\n metaId\n key\n value\n createdAt\n }\n }\n }\n }\n `\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Subscribe from './Subscribe'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\n\n/**\n * WalletStatusSubscribe handles real-time wallet status events\n */\nexport default class WalletStatusSubscribe extends Subscribe {\n constructor(graphQLClient: IGraphQLClient) {\n super(graphQLClient)\n this.$__subscribe = gql`\n subscription onWalletStatus($bundle: String!, $token: String!) {\n WalletStatus(bundle: $bundle, token: $token) {\n bundle\n token\n admission\n balance\n }\n }\n `\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Subscribe from './Subscribe'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\n\n/**\n * ActiveWalletSubscribe handles real-time active wallet events\n */\nexport default class ActiveWalletSubscribe extends Subscribe {\n constructor(graphQLClient: IGraphQLClient) {\n super(graphQLClient)\n this.$__subscribe = gql`\n subscription onActiveWallet($bundle: String!) {\n ActiveWallet(bundle: $bundle) {\n address\n bundleHash\n walletBundle {\n bundleHash\n slug\n createdAt\n }\n tokenSlug\n token {\n slug\n name\n fungibility\n supply\n decimals\n amount\n icon\n createdAt\n }\n batchId\n position\n characters\n pubkey\n amount\n createdAt\n metas {\n molecularHash\n position\n metaType\n metaId\n key\n value\n createdAt\n }\n }\n }\n `\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Subscribe from './Subscribe'\nimport { gql } from '@urql/core'\nimport type { GraphQLClient as IGraphQLClient } from '@/types'\n\n/**\n * ActiveSessionSubscribe handles real-time active user session events\n */\nexport default class ActiveSessionSubscribe extends Subscribe {\n constructor(graphQLClient: IGraphQLClient) {\n super(graphQLClient)\n this.$__subscribe = gql`\n subscription onActiveUser($metaType: String!, $metaId: String!) {\n ActiveUser(metaType: $metaType, metaId: $metaId) {\n bundleHash\n metaType\n metaId\n jsonData\n createdAt\n updatedAt\n }\n }\n `\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n */\n\nimport Decimal from '@/libraries/Decimal'\nimport GraphQLClient from '@/libraries/GraphQLClient'\nimport {\n generateBundleHash\n} from '@/libraries/crypto'\nimport Molecule from '@/core/Molecule'\nimport Wallet from '@/core/Wallet'\nimport AuthToken from '@/AuthToken'\nimport Query from '@/query/Query'\nimport Mutation from '@/mutation/Mutation'\nimport Response from '@/response/Response'\n\n// 2025 TypeScript: Zod validation integration\nimport { \n validateClientConfig, \n validateTransferParams,\n type ValidationResult \n} from '@/validation/ValidationService'\n\n// Enhanced configuration validation (Phase 2)\nimport { ConfigValidator } from '@/validation/UNIVERSAL_CONFIGURATION_INTERFACES'\n\n// Query imports\nimport QueryBalance from '@/query/QueryBalance'\nimport QueryWalletList from '@/query/QueryWalletList'\nimport QueryWalletBundle from '@/query/QueryWalletBundle'\nimport QueryContinuId from '@/query/QueryContinuId'\n// QueryMeta is not needed - using QueryMetaType instead\nimport QueryMetaType from '@/query/QueryMetaType'\nimport QueryBatch from '@/query/QueryBatch'\nimport QueryBatchHistory from '@/query/QueryBatchHistory'\nimport QueryAtom from '@/query/QueryAtom'\nimport QueryPolicy from '@/query/QueryPolicy'\nimport QueryActiveSession from '@/query/QueryActiveSession'\nimport QueryUserActivity from '@/query/QueryUserActivity'\nimport QueryToken from '@/query/QueryToken'\nimport QueryMetaTypeViaAtom from '@/query/QueryMetaTypeViaAtom'\n\n// Mutation imports\nimport MutationCreateToken from '@/mutation/MutationCreateToken'\nimport MutationRequestTokens from '@/mutation/MutationRequestTokens'\nimport MutationTransferTokens from '@/mutation/MutationTransferTokens'\nimport MutationCreateWallet from '@/mutation/MutationCreateWallet'\nimport MutationClaimShadowWallet from '@/mutation/MutationClaimShadowWallet'\nimport MutationCreateMeta from '@/mutation/MutationCreateMeta'\nimport MutationCreateRule from '@/mutation/MutationCreateRule'\nimport MutationCreateIdentifier from '@/mutation/MutationCreateIdentifier'\nimport MutationActiveSession from '@/mutation/MutationActiveSession'\nimport MutationDepositBufferToken from '@/mutation/MutationDepositBufferToken'\nimport MutationWithdrawBufferToken from '@/mutation/MutationWithdrawBufferToken'\nimport MutationRequestAuthorization from '@/mutation/MutationRequestAuthorization'\nimport MutationRequestAuthorizationGuest from '@/mutation/MutationRequestAuthorizationGuest'\nimport MutationLinkIdentifier from '@/mutation/MutationLinkIdentifier'\n\n// Subscribe imports\nimport CreateMoleculeSubscribe from '@/subscribe/CreateMoleculeSubscribe'\nimport WalletStatusSubscribe from '@/subscribe/WalletStatusSubscribe'\nimport ActiveWalletSubscribe from '@/subscribe/ActiveWalletSubscribe'\nimport ActiveSessionSubscribe from '@/subscribe/ActiveSessionSubscribe'\n\n// Exception imports\nimport {\n CodeException,\n UnauthenticatedException,\n TransferBalanceException,\n WalletShadowException\n} from '@/exception'\n\n// Type imports\nimport type {\n WalletAddress,\n BundleHash,\n TokenSlug,\n CellSlug,\n MetaType,\n MetaId,\n BatchId\n} from '@/types'\n\n/**\n * Base client class providing a powerful but user-friendly wrapper\n * around complex Knish.IO ledger transactions.\n */\nexport default class KnishIOClient {\n private $__secret: string = ''\n private $__bundle: string = ''\n private $__cellSlug: string | null = null\n private $__encrypt: boolean = false\n private $__uris: string[] = []\n private $__client: GraphQLClient\n private $__serverSdkVersion: number = 3\n private $__logging: boolean = false\n private $__authTokenObjects: Record<string, AuthToken | null> = {}\n private $__authToken: AuthToken | null = null\n private $__remainderWallet: Wallet | null = null\n private lastMoleculeQuery: Mutation | null = null\n private abortControllers: Map<string, AbortController> = new Map()\n\n /**\n * Enhanced constructor with standardized configuration validation (Phase 2 Enhancement)\n */\n constructor(config: {\n uri: string | string[]\n cellSlug?: string | null\n client?: GraphQLClient | null\n socket?: { socketUri: string | null; appKey?: string } | null\n serverSdkVersion?: number\n logging?: boolean\n }) {\n // Phase 2 Enhancement: Use standardized configuration validation\n const standardValidationResult = ConfigValidator.validateClientConfig(config)\n \n if (!standardValidationResult.isValid) {\n const errorDetails = standardValidationResult.errors.join(', ')\n throw new Error(`Invalid KnishIOClient configuration: ${errorDetails}`)\n }\n \n // Enhanced validation with warnings (Phase 2 improvement)\n if (standardValidationResult.warnings.length > 0 && config.logging) {\n console.warn('KnishIOClient Configuration Warnings:', standardValidationResult.warnings)\n }\n \n // Legacy validation for backward compatibility\n const legacyValidationResult = validateClientConfig(config)\n \n if (!legacyValidationResult.success) {\n const errorDetails = legacyValidationResult.error.details\n ?.map(issue => `${issue.path.join('.')}: ${issue.message}`)\n .join(', ') || legacyValidationResult.error.message\n \n throw new Error(`KnishIOClient configuration validation failed: ${errorDetails}`)\n }\n \n // Use enhanced configuration with backward compatibility\n const validatedConfig = legacyValidationResult.data\n \n // Extract validated values (maintaining existing pattern)\n const {\n uri,\n cellSlug = null,\n client = null,\n socket = null,\n serverSdkVersion = 3,\n logging = false\n } = validatedConfig\n \n this.initialize({\n uri,\n cellSlug,\n socket,\n client,\n serverSdkVersion,\n logging\n })\n }\n\n /**\n * Initializes a new Knish.IO client session\n */\n initialize({\n uri,\n cellSlug = null,\n socket = null,\n client = null,\n serverSdkVersion = 3,\n logging = false\n }: {\n uri: string | string[]\n cellSlug?: string | null\n socket?: { socketUri: string | null; appKey?: string } | null\n client?: GraphQLClient | null\n serverSdkVersion?: number\n logging?: boolean\n }): void {\n this.reset()\n\n this.$__logging = logging\n this.$__authTokenObjects = {}\n\n this.setUri(uri)\n\n if (cellSlug) {\n this.setCellSlug(cellSlug)\n }\n\n for (const url of this.$__uris) {\n this.$__authTokenObjects[url] = null\n }\n\n this.log('info', `KnishIOClient::initialize() - Initializing new Knish.IO client session for SDK version ${serverSdkVersion}...`)\n\n this.$__client = client || new GraphQLClient({\n socket: {\n socketUri: socket?.socketUri || null,\n appKey: socket?.appKey || 'knishio'\n },\n serverUri: this.getRandomUri(),\n encrypt: this.$__encrypt\n })\n\n this.$__serverSdkVersion = serverSdkVersion\n }\n\n /**\n * Get random uri from specified this.$__uris\n */\n getRandomUri(): string {\n const rand = Math.floor(Math.random() * this.$__uris.length)\n return this.$__uris[rand]\n }\n\n /**\n * Switch encryption on/off\n */\n switchEncryption(encrypt: boolean): boolean {\n if (this.$__encrypt === encrypt) {\n return false\n }\n this.log('info', `KnishIOClient::switchEncryption() - Forcing encryption ${encrypt ? 'on' : 'off'} to match node...`)\n\n // Set encryption\n this.$__encrypt = encrypt\n if ('setEncryption' in this.$__client) {\n (this.$__client as any).setEncryption(encrypt)\n }\n return true\n }\n\n /**\n * De-initializes the Knish.IO client session so that a new session can replace it\n */\n deinitialize(): void {\n this.log('info', 'KnishIOClient::deinitialize() - Clearing the Knish.IO client session...')\n this.reset()\n }\n\n /**\n * Subscribes the client to the node's broadcast socket\n */\n subscribe(): GraphQLClient {\n if (!('getSocketUri' in this.$__client) || !(this.$__client as any).getSocketUri()) {\n throw new CodeException('KnishIOClient::subscribe() - Socket client not initialized!')\n }\n return this.client()\n }\n\n /**\n * Gets the client's SDK version\n */\n getServerSdkVersion(): number {\n return this.$__serverSdkVersion\n }\n\n /**\n * Reset common properties\n */\n reset(): void {\n this.$__secret = ''\n this.$__bundle = ''\n this.$__encrypt = false\n this.$__cellSlug = null\n this.$__authToken = null\n this.$__remainderWallet = null\n this.lastMoleculeQuery = null\n }\n\n /**\n * Get the GraphQL client\n */\n client(): GraphQLClient {\n return this.$__client\n }\n\n /**\n * Sets the Knish.IO server URIs\n */\n setUri(uri: string | string[]): void {\n if (typeof uri === 'string') {\n this.$__uris = [uri]\n } else {\n this.$__uris = uri\n }\n }\n\n /**\n * Gets the Knish.IO server URIs\n */\n getUri(): string[] {\n return this.$__uris\n }\n\n /**\n * Sets the Cell slug\n */\n setCellSlug(cellSlug: string | null): void {\n this.$__cellSlug = cellSlug\n }\n\n /**\n * Gets the Cell slug\n */\n getCellSlug(): string | null {\n return this.$__cellSlug\n }\n\n /**\n * Returns whether a secret is stored for this session\n */\n hasSecret(): boolean {\n return !!this.$__secret && this.$__secret.length > 0\n }\n\n /**\n * Returns the stored secret\n */\n getSecret(): string {\n if (!this.hasSecret()) {\n throw new UnauthenticatedException('KnishIOClient::getSecret() - Unable to find a stored secret! Have you set a secret?')\n }\n return this.$__secret\n }\n\n /**\n * Returns whether a bundle hash is being stored for this session\n */\n hasBundle(): boolean {\n return !!this.$__bundle && this.$__bundle.length > 0\n }\n\n /**\n * Returns the stored bundle hash\n */\n getBundle(): string {\n if (!this.hasBundle()) {\n throw new UnauthenticatedException('KnishIOClient::getBundle() - Unable to find a stored bundle! Have you set a secret?')\n }\n return this.$__bundle\n }\n\n /**\n * Sets the remainder wallet for this session\n */\n setRemainderWallet(remainderWallet: Wallet): void {\n this.$__remainderWallet = remainderWallet\n }\n\n /**\n * Gets the remainder wallet for this session\n */\n getRemainderWallet(): Wallet | null {\n return this.$__remainderWallet\n }\n\n /**\n * Creates a new molecule for a transaction\n */\n async createMolecule({\n secret = null,\n bundle = null,\n sourceWallet = null,\n remainderWallet = null\n }: {\n secret?: string | null\n bundle?: string | null\n sourceWallet?: Wallet | null\n remainderWallet?: Wallet | null\n } = {}): Promise<Molecule> {\n this.log('info', 'KnishIOClient::createMolecule() - Creating a new molecule...')\n\n secret = secret || this.getSecret()\n bundle = bundle || this.getBundle()\n\n // Sets the source wallet as the last remainder wallet (to maintain ContinuID)\n if (!sourceWallet &&\n this.lastMoleculeQuery &&\n this.getRemainderWallet()?.token === 'USER' &&\n this.lastMoleculeQuery.response() &&\n this.lastMoleculeQuery.response()?.success()\n ) {\n sourceWallet = this.getRemainderWallet()\n }\n\n // Unable to use last remainder wallet; Figure out what wallet to use:\n if (!sourceWallet) {\n // Get source wallet\n sourceWallet = await this.getSourceWallet()\n }\n\n return new Molecule({\n secret,\n bundle,\n sourceWallet,\n remainderWallet\n })\n }\n\n /**\n * Creates a new molecule mutation\n */\n async createMoleculeMutation({\n mutationClass,\n molecule = null\n }: {\n mutationClass: typeof Mutation\n molecule?: Molecule | null\n }): Promise<Mutation> {\n this.log('info', `KnishIOClient::createMoleculeMutation() - Creating a new ${mutationClass.name} query...`)\n\n // If you don't supply the molecule, we'll generate one for you\n const _molecule = molecule || await this.createMolecule({})\n\n const mutation = new mutationClass(this.client(), this) as Mutation\n\n if (!(mutation instanceof Mutation)) {\n throw new CodeException(`${this.constructor.name}::createMoleculeMutation() - This method only accepts Mutation subclasses!`)\n }\n\n this.lastMoleculeQuery = mutation\n\n return mutation\n }\n\n /**\n * Executes a query or mutation\n */\n async executeQuery(query: Query | Mutation, variables: Record<string, any> | null = null): Promise<Response | null> {\n // Check and refresh authorization token if needed\n if (this.$__authToken && this.$__authToken.isExpired()) {\n this.log('info', 'KnishIOClient::executeQuery() - Access token is expired. Getting new one...')\n await this.requestAuthToken({\n secret: this.$__secret,\n cellSlug: this.$__cellSlug,\n encrypt: this.$__encrypt\n })\n }\n\n // Execute the query\n return await query.execute({ variables: variables || {} })\n }\n\n /**\n * Sets the secret for this session\n */\n setSecret(secret: string): void {\n this.$__secret = secret\n this.$__bundle = generateBundleHash(secret)\n }\n\n /**\n * Sets the auth token for this session\n */\n setAuthToken(authToken: AuthToken): void {\n this.$__authToken = authToken\n \n // Set auth data on the client\n if ('setAuthData' in this.$__client) {\n (this.$__client as any).setAuthData(authToken.getAuthData())\n }\n }\n\n /**\n * Gets source wallet - basic implementation\n */\n async getSourceWallet(): Promise<Wallet> {\n // For now, create a new wallet with the current secret\n // In full implementation, this would query the ledger\n return Wallet.create({\n secret: this.getSecret(),\n bundle: this.getBundle(),\n token: 'USER'\n })\n }\n\n /**\n * Transfer tokens between wallets\n * Enhanced with 2025 TypeScript validation patterns\n */\n async transferToken(params: {\n bundleHash: string\n token: string\n amount?: number | null\n units?: string[]\n batchId?: string | null\n sourceWallet?: Wallet | null\n }): Promise<ValidationResult<Response | null>> {\n // 2025 Pattern: Validate parameters with Zod\n const transferParams = {\n recipient: params.bundleHash,\n amount: params.amount || 0,\n token: params.token\n }\n \n const validationResult = validateTransferParams(transferParams)\n \n if (!validationResult.success) {\n return {\n success: false,\n error: {\n code: 'VALIDATION_ERROR',\n message: 'Invalid transfer parameters',\n details: validationResult.error.details,\n context: 'transferToken'\n }\n }\n }\n \n // Use validated parameters\n const validatedParams = validationResult.data\n let {\n bundleHash,\n token,\n amount = null,\n units = [],\n batchId = null,\n sourceWallet = null\n } = params\n // Calculate amount & set meta key\n if (units.length > 0) {\n // Can't move stackable units AND provide amount\n if (amount && amount > 0) {\n throw new CodeException('Cannot specify both amount and units')\n }\n amount = units.length\n }\n\n // Build recipient wallet\n const recipientWallet = Wallet.create({\n bundle: bundleHash,\n token,\n batchId\n })\n\n // Get source wallet\n if (!sourceWallet) {\n sourceWallet = await this.getSourceWallet()\n }\n\n // Check balance\n if (!sourceWallet.balance || sourceWallet.balance < (amount || 0)) {\n throw new TransferBalanceException()\n }\n\n // Create remainder wallet\n const remainderWallet = sourceWallet.createRemainder(this.getSecret())\n\n // Build the molecule itself\n const molecule = await this.createMolecule({\n sourceWallet,\n remainderWallet\n })\n\n // For now, return a basic implementation\n // Full implementation would create and execute MutationTransferTokens\n return null\n }\n\n /**\n * Request authorization token\n */\n async requestAuthToken({\n secret = null,\n seed = null,\n cellSlug = null,\n encrypt = false\n }: {\n secret?: string | null\n seed?: string | null\n cellSlug?: string | null\n encrypt?: boolean\n }): Promise<Response | null> {\n // SDK versions 2 and below do not utilize an authorization token\n if (this.$__serverSdkVersion < 3) {\n this.log('warn', 'KnishIOClient::authorize() - Server SDK version does not require an authorization...')\n return null\n }\n\n // For now, return null - full implementation would handle authorization\n return null\n }\n\n /**\n * Logging utility\n */\n log(level: 'info' | 'warn' | 'error', message: string): void {\n if (this.$__logging) {\n switch (level) {\n case 'info':\n console.log(`[INFO] ${message}`)\n break\n case 'warn':\n console.warn(`[WARN] ${message}`)\n break\n case 'error':\n console.error(`[ERROR] ${message}`)\n break\n }\n }\n }\n\n /**\n * Creates a Query instance\n */\n createQuery<T extends Query>(QueryClass: new (client: GraphQLClient, knishIOClient: KnishIOClient) => T): T {\n return new QueryClass(this.client(), this)\n }\n\n /**\n * Creates a Subscribe instance\n */\n createSubscribe<T>(SubscribeClass: new (client: GraphQLClient) => T): T {\n return new SubscribeClass(this.client())\n }\n\n /**\n * Helper to hash secret into bundle hash\n */\n hashSecret(secret: string, source: string | null = null): string {\n const bundleHash = generateBundleHash(secret, source)\n this.$__bundle = bundleHash\n return bundleHash\n }\n\n /**\n * Get current auth token\n */\n getAuthToken(): AuthToken | null {\n return this.$__authToken\n }\n\n /**\n * Cancel a specific query\n */\n cancelQuery(query: Query | Mutation, variables: Record<string, any> | null = null): void {\n const queryKey = `${query.constructor.name}_${JSON.stringify(variables || {})}`\n const controller = this.abortControllers.get(queryKey)\n \n if (controller) {\n controller.abort()\n this.abortControllers.delete(queryKey)\n }\n }\n\n /**\n * Cancel all pending queries\n */\n cancelAllQueries(): void {\n for (const controller of this.abortControllers.values()) {\n controller.abort()\n }\n this.abortControllers.clear()\n }\n\n // =============================================================================\n // QUERY METHODS\n // =============================================================================\n\n /**\n * Query wallet balance for a specific token\n */\n async queryBalance({\n token,\n bundle = null,\n type = 'regular'\n }: {\n token: TokenSlug | string\n bundle?: BundleHash | string | null\n type?: 'regular' | 'stackable'\n }): Promise<Response> {\n const query = this.createQuery(QueryBalance)\n \n return this.executeQuery(query, {\n bundleHash: bundle || this.getBundle(),\n token,\n type\n }) as Promise<Response>\n }\n\n /**\n * Get source wallet with sufficient balance for a transaction\n */\n async querySourceWallet({\n token,\n amount,\n type = 'regular'\n }: {\n token: TokenSlug | string\n amount: number | string\n type?: 'regular' | 'stackable'\n }): Promise<Wallet> {\n const response = await this.queryBalance({\n token,\n type\n })\n \n const sourceWallet = response.payload() as Wallet | null\n\n // Do you have enough tokens?\n if (sourceWallet === null || Decimal.cmp(sourceWallet.balance || 0, amount) < 0) {\n throw new TransferBalanceException()\n }\n\n // Check shadow wallet\n if (!sourceWallet.position || !sourceWallet.address) {\n throw new TransferBalanceException('Source wallet cannot be a shadow wallet.')\n }\n\n return sourceWallet\n }\n\n /**\n * Query wallet list\n */\n async queryWallets({\n bundle = null,\n token = null,\n unspent = true\n }: {\n bundle?: BundleHash | string | null\n token?: TokenSlug | string | null\n unspent?: boolean\n } = {}): Promise<Wallet[]> {\n this.log('info', `KnishIOClient::queryWallets() - Querying wallets${bundle ? ` for ${bundle}` : ''}...`)\n\n const walletQuery = this.createQuery(QueryWalletList)\n\n const response = await this.executeQuery(walletQuery, {\n bundleHash: bundle || this.getBundle(),\n tokenSlug: token,\n unspent\n })\n\n return response?.payload() || []\n }\n\n /**\n * Query wallet bundle metadata\n */\n async queryBundle({\n bundle = null,\n fields = null,\n raw = false\n }: {\n bundle?: BundleHash | string | string[] | null\n fields?: string[] | null\n raw?: boolean\n } = {}): Promise<any> {\n this.log('info', `KnishIOClient::queryBundle() - Querying wallet bundle metadata${bundle ? ` for ${bundle}` : ''}...`)\n\n // Bundle default init & to array conversion\n if (!bundle) {\n bundle = this.getBundle()\n }\n if (typeof bundle === 'string') {\n bundle = [bundle]\n }\n\n const query = this.createQuery(QueryWalletBundle)\n const response = await this.executeQuery(query, { bundleHashes: bundle })\n \n return raw ? response : response?.payload()\n }\n\n /**\n * Query next ContinuId wallet\n */\n async queryContinuId({\n bundle\n }: {\n bundle: BundleHash | string\n }): Promise<Response> {\n const query = this.createQuery(QueryContinuId)\n\n return this.executeQuery(query, {\n bundle\n }) as Promise<Response>\n }\n\n /**\n * Query metadata\n */\n async queryMeta({\n metaType,\n metaId = null,\n key = null,\n value = null,\n latest = null,\n fields = null,\n filter = null,\n queryArgs = null,\n count = null,\n countBy = null,\n throughAtom = null,\n values = null,\n keys = null,\n atomValues = null\n }: {\n metaType: MetaType | string\n metaId?: MetaId | string | null\n key?: string | null\n value?: string | null\n latest?: boolean | null\n fields?: string[] | null\n filter?: string | null\n queryArgs?: Record<string, any> | null\n count?: number | null\n countBy?: string | null\n throughAtom?: boolean | null\n values?: any[] | null\n keys?: string[] | null\n atomValues?: any[] | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::queryMeta() - Querying metaType: ${metaType}, metaId: ${metaId}...`)\n\n let query: Query\n\n if (throughAtom === true) {\n query = this.createQuery(QueryMetaTypeViaAtom)\n } else {\n query = this.createQuery(QueryMetaType)\n }\n\n const variables: Record<string, any> = {\n metaType: metaType.toUpperCase(),\n metaId\n }\n\n if (filter !== null) {\n variables.filter = filter\n }\n if (latest !== null) {\n variables.latest = latest\n }\n if (key !== null) {\n variables.key = key\n }\n if (value !== null) {\n variables.value = value\n }\n if (queryArgs !== null) {\n variables.queryArgs = queryArgs\n }\n if (count !== null) {\n variables.count = count\n }\n if (countBy !== null) {\n variables.countBy = countBy\n }\n if (values !== null) {\n variables.values = values\n }\n if (keys !== null) {\n variables.keys = keys\n }\n if (atomValues !== null) {\n variables.atomValues = atomValues\n }\n\n return this.executeQuery(query, variables) as Promise<Response>\n }\n\n /**\n * Query cascading meta instances for batchId\n */\n async queryBatch({\n batchId\n }: {\n batchId: BatchId | string\n }): Promise<Response> {\n this.log('info', `KnishIOClient::queryBatch() - Querying cascading meta instances for batchId: ${batchId}...`)\n\n const query = this.createQuery(QueryBatch)\n\n return this.executeQuery(query, {\n batchId\n }) as Promise<Response>\n }\n\n /**\n * Query batch history\n */\n async queryBatchHistory({\n batchId\n }: {\n batchId: BatchId | string\n }): Promise<Response> {\n this.log('info', `KnishIOClient::queryBatchHistory() - Querying cascading meta instances for batchId: ${batchId}...`)\n\n const query = this.createQuery(QueryBatchHistory)\n\n return this.executeQuery(query, {\n batchId\n }) as Promise<Response>\n }\n\n /**\n * Query atoms with comprehensive filters\n */\n async queryAtom({\n molecularHashes = null,\n molecularHash = null,\n bundleHashes = null,\n bundleHash = null,\n positions = null,\n position = null,\n walletAddresses = null,\n walletAddress = null,\n isotopes = null,\n isotope = null,\n tokenSlugs = null,\n tokenSlug = null,\n cellSlugs = null,\n cellSlug = null,\n batchIds = null,\n batchId = null,\n values = null,\n value = null,\n metaTypes = null,\n metaType = null,\n metaIds = null,\n metaId = null,\n indexes = null,\n index = null,\n filter = null,\n latest = null,\n queryArgs = null\n }: {\n molecularHashes?: string[] | null\n molecularHash?: string | null\n bundleHashes?: string[] | null\n bundleHash?: string | null\n positions?: string[] | null\n position?: string | null\n walletAddresses?: string[] | null\n walletAddress?: string | null\n isotopes?: string[] | null\n isotope?: string | null\n tokenSlugs?: string[] | null\n tokenSlug?: string | null\n cellSlugs?: string[] | null\n cellSlug?: string | null\n batchIds?: string[] | null\n batchId?: string | null\n values?: any[] | null\n value?: any | null\n metaTypes?: string[] | null\n metaType?: string | null\n metaIds?: string[] | null\n metaId?: string | null\n indexes?: number[] | null\n index?: number | null\n filter?: string | null\n latest?: boolean | null\n queryArgs?: Record<string, any> | null\n } = {}): Promise<Response> {\n const query = this.createQuery(QueryAtom)\n\n const variables: Record<string, any> = {}\n\n // Add all non-null parameters to variables\n if (molecularHashes !== null) variables.molecularHashes = molecularHashes\n if (molecularHash !== null) variables.molecularHash = molecularHash\n if (bundleHashes !== null) variables.bundleHashes = bundleHashes\n if (bundleHash !== null) variables.bundleHash = bundleHash\n if (positions !== null) variables.positions = positions\n if (position !== null) variables.position = position\n if (walletAddresses !== null) variables.walletAddresses = walletAddresses\n if (walletAddress !== null) variables.walletAddress = walletAddress\n if (isotopes !== null) variables.isotopes = isotopes\n if (isotope !== null) variables.isotope = isotope\n if (tokenSlugs !== null) variables.tokenSlugs = tokenSlugs\n if (tokenSlug !== null) variables.tokenSlug = tokenSlug\n if (cellSlugs !== null) variables.cellSlugs = cellSlugs\n if (cellSlug !== null) variables.cellSlug = cellSlug\n if (batchIds !== null) variables.batchIds = batchIds\n if (batchId !== null) variables.batchId = batchId\n if (values !== null) variables.values = values\n if (value !== null) variables.value = value\n if (metaTypes !== null) variables.metaTypes = metaTypes\n if (metaType !== null) variables.metaType = metaType\n if (metaIds !== null) variables.metaIds = metaIds\n if (metaId !== null) variables.metaId = metaId\n if (indexes !== null) variables.indexes = indexes\n if (index !== null) variables.index = index\n if (filter !== null) variables.filter = filter\n if (latest !== null) variables.latest = latest\n if (queryArgs !== null) variables.queryArgs = queryArgs\n\n return this.executeQuery(query, variables) as Promise<Response>\n }\n\n /**\n * Query policy\n */\n async queryPolicy({\n metaType,\n metaId\n }: {\n metaType: MetaType | string\n metaId: MetaId | string\n }): Promise<Response> {\n const query = this.createQuery(QueryPolicy)\n\n return this.executeQuery(query, {\n metaType,\n metaId\n }) as Promise<Response>\n }\n\n /**\n * Query active sessions\n */\n async queryActiveSession({\n bundleHash,\n metaType,\n metaId\n }: {\n bundleHash: BundleHash | string\n metaType: MetaType | string\n metaId: MetaId | string\n }): Promise<Response> {\n const query = this.createQuery(QueryActiveSession)\n\n return this.executeQuery(query, {\n bundleHash,\n metaType,\n metaId\n }) as Promise<Response>\n }\n\n /**\n * Query user activity\n */\n async queryUserActivity({\n bundleHash,\n metaType,\n metaId,\n ipAddress = null,\n browser = null,\n osCpu = null,\n resolution = null,\n timeZone = null,\n countBy = null,\n interval = null\n }: {\n bundleHash: BundleHash | string\n metaType: MetaType | string\n metaId: MetaId | string\n ipAddress?: string | null\n browser?: string | null\n osCpu?: string | null\n resolution?: string | null\n timeZone?: string | null\n countBy?: string | null\n interval?: string | null\n }): Promise<Response> {\n const query = this.createQuery(QueryUserActivity)\n\n const variables: Record<string, any> = {\n bundleHash,\n metaType,\n metaId\n }\n\n if (ipAddress !== null) variables.ipAddress = ipAddress\n if (browser !== null) variables.browser = browser\n if (osCpu !== null) variables.osCpu = osCpu\n if (resolution !== null) variables.resolution = resolution\n if (timeZone !== null) variables.timeZone = timeZone\n if (countBy !== null) variables.countBy = countBy\n if (interval !== null) variables.interval = interval\n\n return this.executeQuery(query, variables) as Promise<Response>\n }\n\n /**\n * Query token information\n */\n async queryToken({\n token\n }: {\n token: TokenSlug | string\n }): Promise<Response> {\n const query = this.createQuery(QueryToken)\n\n return this.executeQuery(query, {\n token\n }) as Promise<Response>\n }\n\n // =============================================================================\n // SUBSCRIPTION METHODS\n // =============================================================================\n\n /**\n * Subscribe to molecule creation events\n */\n async subscribeCreateMolecule({\n bundle,\n closure\n }: {\n bundle: BundleHash | string | null\n closure: (result: any) => void\n }): Promise<string> {\n const subscribe = this.createSubscribe(CreateMoleculeSubscribe)\n\n return await subscribe.execute({\n variables: {\n bundle: bundle || this.getBundle()\n },\n closure\n })\n }\n\n /**\n * Subscribe to wallet status updates\n */\n async subscribeWalletStatus({\n bundle,\n token,\n closure\n }: {\n bundle: BundleHash | string | null\n token: TokenSlug | string\n closure: (result: any) => void\n }): Promise<string> {\n if (!token) {\n throw new CodeException(`${this.constructor.name}::subscribeWalletStatus() - Token parameter is required!`)\n }\n\n const subscribe = this.createSubscribe(WalletStatusSubscribe)\n\n return await subscribe.execute({\n variables: {\n bundle: bundle || this.getBundle(),\n token\n },\n closure\n })\n }\n\n /**\n * Subscribe to active wallet updates\n */\n async subscribeActiveWallet({\n bundle,\n closure\n }: {\n bundle: BundleHash | string | null\n closure: (result: any) => void\n }): Promise<string> {\n const subscribe = this.createSubscribe(ActiveWalletSubscribe)\n\n return await subscribe.execute({\n variables: {\n bundle: bundle || this.getBundle()\n },\n closure\n })\n }\n\n /**\n * Subscribe to active session updates\n */\n async subscribeActiveSession({\n metaType,\n metaId,\n closure\n }: {\n metaType: MetaType | string\n metaId: MetaId | string\n closure: (result: any) => void\n }): Promise<string> {\n const subscribe = this.createSubscribe(ActiveSessionSubscribe)\n\n return await subscribe.execute({\n variables: {\n metaType,\n metaId\n },\n closure\n })\n }\n\n /**\n * Unsubscribe from a specific subscription\n */\n unsubscribe(operationName: string): void {\n if ('unsubscribe' in this.$__client) {\n (this.$__client as any).unsubscribe(operationName)\n }\n }\n\n /**\n * Unsubscribe from all subscriptions\n */\n unsubscribeAll(): void {\n if ('unsubscribeAll' in this.$__client) {\n (this.$__client as any).unsubscribeAll()\n }\n }\n\n // =============================================================================\n // MUTATION METHODS - TOKEN OPERATIONS\n // =============================================================================\n\n /**\n * Create a new token\n */\n async createToken({\n token,\n amount = null,\n meta = null,\n batchId = null,\n units = null\n }: {\n token: TokenSlug | string\n amount?: number | string | null\n meta?: Record<string, any> | null\n batchId?: BatchId | string | null\n units?: string[] | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::createToken() - Creating token ${token}...`)\n\n const mutation = this.createQuery(MutationCreateToken) as MutationCreateToken\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the create token mutation\n await mutation.fillMolecule({\n sourceWallet,\n token: token.toUpperCase(),\n amount,\n meta,\n batchId,\n units\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Token creation failed')\n }\n\n return response\n }\n\n /**\n * Request tokens for recipient\n */\n async requestTokens({\n token,\n to = null,\n amount = null,\n units = null,\n meta = null,\n batchId = null\n }: {\n token: TokenSlug | string\n to?: WalletAddress | string | null\n amount?: number | string | null\n units?: string[] | null\n meta?: Record<string, any> | null\n batchId?: BatchId | string | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::requestTokens() - Requesting ${amount || 'units'} of ${token}...`)\n\n const mutation = this.createQuery(MutationRequestTokens) as MutationRequestTokens\n\n // Get source wallet if needed\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the request tokens mutation\n await mutation.fillMolecule({\n sourceWallet,\n token: token.toUpperCase(),\n to,\n amount,\n units,\n meta,\n batchId\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Token request failed')\n }\n\n return response\n }\n\n /**\n * Burn/destroy tokens\n */\n async burnTokens({\n token,\n amount = null,\n units = null,\n sourceWallet = null\n }: {\n token: TokenSlug | string\n amount?: number | string | null\n units?: string[] | null\n sourceWallet?: Wallet | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::burnTokens() - Burning ${amount || 'units'} of ${token}...`)\n\n // Get source wallet if not provided\n if (!sourceWallet) {\n sourceWallet = await this.querySourceWallet({\n token,\n amount: amount || 0\n })\n }\n\n // Create a transfer to null address (burn)\n const mutation = this.createQuery(MutationTransferTokens) as MutationTransferTokens\n\n await mutation.fillMolecule({\n sourceWallet,\n recipient: '0000000000000000000000000000000000000000000000000000000000000000', // Burn address\n token: token.toUpperCase(),\n amount,\n units\n })\n\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Token burn failed')\n }\n\n return response\n }\n\n /**\n * Replenish tokens\n */\n async replenishToken({\n token,\n amount = null,\n units = null,\n sourceWallet = null\n }: {\n token: TokenSlug | string\n amount?: number | string | null\n units?: string[] | null\n sourceWallet?: Wallet | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::replenishToken() - Replenishing ${amount || 'units'} of ${token}...`)\n\n // Similar to requestTokens but with specific replenishment logic\n return this.requestTokens({\n token,\n amount,\n units\n })\n }\n\n /**\n * Fuse token units\n */\n async fuseToken({\n bundleHash,\n tokenSlug,\n newTokenUnit,\n fusedTokenUnitIds,\n sourceWallet = null\n }: {\n bundleHash: BundleHash | string\n tokenSlug: TokenSlug | string\n newTokenUnit: string\n fusedTokenUnitIds: string[]\n sourceWallet?: Wallet | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::fuseToken() - Fusing token units for ${tokenSlug}...`)\n\n // This would require a specific mutation for token fusion\n // For now, return a placeholder\n throw new CodeException('Token fusion not yet implemented')\n }\n\n // =============================================================================\n // MUTATION METHODS - WALLET OPERATIONS\n // =============================================================================\n\n /**\n * Create a new wallet for a token\n */\n async createWallet({\n token\n }: {\n token: TokenSlug | string\n }): Promise<Response> {\n this.log('info', `KnishIOClient::createWallet() - Creating wallet for token ${token}...`)\n\n const mutation = this.createQuery(MutationCreateWallet) as MutationCreateWallet\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the create wallet mutation\n await mutation.fillMolecule({\n sourceWallet,\n token: token.toUpperCase()\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Wallet creation failed')\n }\n\n return response\n }\n\n /**\n * Claim a single shadow wallet\n */\n async claimShadowWallet({\n token,\n batchId = null,\n molecule = null\n }: {\n token: TokenSlug | string\n batchId?: BatchId | string | null\n molecule?: Molecule | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::claimShadowWallet() - Claiming shadow wallet for token ${token}...`)\n\n // Get shadow wallets\n const shadowWallets = await this.queryWallets({ token })\n \n if (!shadowWallets || shadowWallets.length === 0) {\n throw new WalletShadowException('No shadow wallets found')\n }\n\n // Find the shadow wallet with matching batchId\n const shadowWallet = batchId \n ? shadowWallets.find(w => w.batchId === batchId)\n : shadowWallets[0]\n\n if (!shadowWallet) {\n throw new WalletShadowException('Shadow wallet not found')\n }\n\n if (!shadowWallet.isShadow()) {\n throw new WalletShadowException('Wallet is not a shadow wallet')\n }\n\n const mutation = this.createQuery(MutationClaimShadowWallet) as MutationClaimShadowWallet\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the claim shadow wallet mutation\n await mutation.fillMolecule({\n sourceWallet,\n token: token.toUpperCase(),\n batchId: shadowWallet.batchId\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Shadow wallet claim failed')\n }\n\n return response\n }\n\n /**\n * Claim all shadow wallets for a token\n */\n async claimShadowWallets({\n token\n }: {\n token: TokenSlug | string\n }): Promise<Response[]> {\n this.log('info', `KnishIOClient::claimShadowWallets() - Claiming all shadow wallets for token ${token}...`)\n\n // Get all shadow wallets\n const shadowWallets = await this.queryWallets({ token })\n \n if (!shadowWallets || !Array.isArray(shadowWallets)) {\n throw new WalletShadowException()\n }\n\n // Verify they are all shadow wallets\n shadowWallets.forEach(shadowWallet => {\n if (!shadowWallet.isShadow()) {\n throw new WalletShadowException('Found non-shadow wallet in list')\n }\n })\n\n // Claim each shadow wallet\n const responses: Response[] = []\n for (const shadowWallet of shadowWallets) {\n const response = await this.claimShadowWallet({\n token,\n batchId: shadowWallet.batchId\n })\n responses.push(response)\n }\n\n return responses\n }\n\n // =============================================================================\n // MUTATION METHODS - METADATA OPERATIONS\n // =============================================================================\n\n /**\n * Create metadata entry\n */\n async createMeta({\n metaType,\n metaId,\n meta = null,\n policy = null\n }: {\n metaType: MetaType | string\n metaId: MetaId | string\n meta?: Record<string, any> | null\n policy?: any | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::createMeta() - Creating metadata for ${metaType}:${metaId}...`)\n\n const mutation = this.createQuery(MutationCreateMeta) as MutationCreateMeta\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the create meta mutation\n await mutation.fillMolecule({\n sourceWallet,\n metaType: metaType.toUpperCase(),\n metaId,\n meta,\n policy\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Metadata creation failed')\n }\n\n return response\n }\n\n /**\n * Create a new rule\n */\n async createRule({\n metaType,\n metaId,\n rule,\n policy = null\n }: {\n metaType: MetaType | string\n metaId: MetaId | string\n rule: any\n policy?: any | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::createRule() - Creating rule for ${metaType}:${metaId}...`)\n\n const mutation = this.createQuery(MutationCreateRule) as MutationCreateRule\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the create rule mutation\n await mutation.fillMolecule({\n sourceWallet,\n metaType: metaType.toUpperCase(),\n metaId,\n rule,\n policy\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Rule creation failed')\n }\n\n return response\n }\n\n /**\n * Create a policy\n */\n async createPolicy({\n metaType,\n metaId,\n policy = null\n }: {\n metaType: MetaType | string\n metaId: MetaId | string\n policy?: any | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::createPolicy() - Creating policy for ${metaType}:${metaId}...`)\n\n // Policies are created via createMeta with policy parameter\n return this.createMeta({\n metaType,\n metaId,\n meta: null,\n policy\n })\n }\n\n /**\n * Create an identifier\n */\n async createIdentifier({\n type,\n contact,\n code\n }: {\n type: string\n contact: string\n code: string\n }): Promise<Response> {\n this.log('info', `KnishIOClient::createIdentifier() - Creating identifier of type ${type}...`)\n\n const mutation = this.createQuery(MutationCreateIdentifier) as MutationCreateIdentifier\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the create identifier mutation\n await mutation.fillMolecule({\n sourceWallet,\n type,\n contact,\n code\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Identifier creation failed')\n }\n\n return response\n }\n\n /**\n * Link an identifier\n */\n async linkIdentifier({\n type,\n contact\n }: {\n type: string\n contact: string\n }): Promise<Response> {\n this.log('info', `KnishIOClient::linkIdentifier() - Linking identifier of type ${type}...`)\n\n const mutation = this.createQuery(MutationLinkIdentifier) as MutationLinkIdentifier\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the link identifier mutation\n await mutation.fillMolecule({\n sourceWallet,\n type,\n contact\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Identifier linking failed')\n }\n\n return response\n }\n\n // =============================================================================\n // MUTATION METHODS - SESSION & BUFFER OPERATIONS\n // =============================================================================\n\n /**\n * Declare an active session\n */\n async activeSession({\n bundle,\n metaType,\n metaId,\n ipAddress,\n browser,\n osCpu,\n resolution,\n timeZone,\n json = null\n }: {\n bundle: BundleHash | string\n metaType: MetaType | string\n metaId: MetaId | string\n ipAddress: string\n browser: string\n osCpu: string\n resolution: string\n timeZone: string\n json?: any | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::activeSession() - Declaring active session for ${metaType}:${metaId}...`)\n\n const mutation = this.createQuery(MutationActiveSession) as MutationActiveSession\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the active session mutation\n await mutation.fillMolecule({\n sourceWallet,\n bundle,\n metaType: metaType.toUpperCase(),\n metaId,\n ipAddress,\n browser,\n osCpu,\n resolution,\n timeZone,\n json\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Active session declaration failed')\n }\n\n return response\n }\n\n /**\n * Deposit buffer tokens\n */\n async depositBufferToken({\n tokenSlug,\n amount,\n tradeRates,\n sourceWallet = null\n }: {\n tokenSlug: TokenSlug | string\n amount: number | string\n tradeRates: Record<string, number>\n sourceWallet?: Wallet | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::depositBufferToken() - Depositing ${amount} of ${tokenSlug} to buffer...`)\n\n // Get source wallet if not provided\n if (!sourceWallet) {\n sourceWallet = await this.querySourceWallet({\n token: tokenSlug,\n amount\n })\n }\n\n const mutation = this.createQuery(MutationDepositBufferToken) as MutationDepositBufferToken\n\n // Initialize the deposit buffer token mutation\n await mutation.fillMolecule({\n sourceWallet,\n tokenSlug: tokenSlug.toUpperCase(),\n amount,\n tradeRates\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Buffer token deposit failed')\n }\n\n return response\n }\n\n /**\n * Withdraw buffer tokens\n */\n async withdrawBufferToken({\n tokenSlug,\n amount,\n sourceWallet = null,\n signingWallet = null\n }: {\n tokenSlug: TokenSlug | string\n amount: number | string\n sourceWallet?: Wallet | null\n signingWallet?: Wallet | null\n }): Promise<Response> {\n this.log('info', `KnishIOClient::withdrawBufferToken() - Withdrawing ${amount} of ${tokenSlug} from buffer...`)\n\n // Get source wallet if not provided\n if (!sourceWallet) {\n sourceWallet = await this.getSourceWallet()\n }\n\n const mutation = this.createQuery(MutationWithdrawBufferToken) as MutationWithdrawBufferToken\n\n // Initialize the withdraw buffer token mutation\n await mutation.fillMolecule({\n sourceWallet,\n tokenSlug: tokenSlug.toUpperCase(),\n amount,\n signingWallet\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Buffer token withdrawal failed')\n }\n\n return response\n }\n\n // =============================================================================\n // AUTHENTICATION METHODS\n // =============================================================================\n\n /**\n * Request guest authentication token\n */\n async requestGuestAuthToken({\n cellSlug = null,\n encrypt = false\n }: {\n cellSlug?: CellSlug | string | null\n encrypt?: boolean\n } = {}): Promise<Response> {\n this.log('info', 'KnishIOClient::requestGuestAuthToken() - Requesting guest auth token...')\n\n const mutation = this.createQuery(MutationRequestAuthorizationGuest) as MutationRequestAuthorizationGuest\n\n // Initialize the guest auth mutation\n await mutation.fillMolecule({\n cellSlug: cellSlug || this.getCellSlug()\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Guest auth token request failed')\n }\n\n // Handle encryption if needed\n if (encrypt) {\n this.switchEncryption(true)\n }\n\n return response\n }\n\n /**\n * Request profile authentication token\n */\n async requestProfileAuthToken({\n secret,\n encrypt = false\n }: {\n secret: string\n encrypt?: boolean\n }): Promise<Response> {\n this.log('info', 'KnishIOClient::requestProfileAuthToken() - Requesting profile auth token...')\n\n // Set the secret\n this.setSecret(secret)\n\n const mutation = this.createQuery(MutationRequestAuthorization) as MutationRequestAuthorization\n\n // Get source wallet\n const sourceWallet = await this.getSourceWallet()\n\n // Initialize the profile auth mutation\n await mutation.fillMolecule({\n sourceWallet,\n cellSlug: this.getCellSlug()\n })\n\n // Create the molecule mutation\n const moleculeMutation = await this.createMoleculeMutation({ mutationClass: mutation })\n\n // Execute the mutation\n const response = await this.executeQuery(moleculeMutation)\n\n if (!response) {\n throw new CodeException('Profile auth token request failed')\n }\n\n // Handle encryption if needed\n if (encrypt) {\n this.switchEncryption(true)\n }\n\n return response\n }\n\n // =============================================================================\n // LEGACY/DEPRECATED METHODS\n // =============================================================================\n\n /**\n * @deprecated Use getCellSlug() instead\n */\n cellSlug(): string | null {\n return this.getCellSlug()\n }\n\n /**\n * @deprecated Use getUri() instead\n */\n uri(): string[] {\n return this.getUri()\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport Wallet from '@/core/Wallet'\n\n/**\n * AuthToken class for managing authentication tokens\n */\nexport default class AuthToken {\n private $__token: string\n private $__expiresAt: number\n private $__pubkey: string\n private $__encrypt: boolean\n private $__wallet?: Wallet\n\n /**\n * Create new AuthToken instance\n */\n constructor({\n token,\n expiresAt,\n encrypt,\n pubkey\n }: {\n token: string\n expiresAt: number\n encrypt: boolean\n pubkey: string\n }) {\n this.$__token = token\n this.$__expiresAt = expiresAt\n this.$__pubkey = pubkey\n this.$__encrypt = encrypt\n }\n\n /**\n * Static factory method to create AuthToken with wallet\n */\n static create(data: {\n token: string\n expiresAt: number\n encrypt: boolean\n pubkey: string\n }, wallet: Wallet): AuthToken {\n const authToken = new AuthToken(data)\n authToken.setWallet(wallet)\n return authToken\n }\n\n /**\n * Restore AuthToken from snapshot\n */\n static restore(snapshot: {\n token: string\n expiresAt: number\n pubkey: string\n encrypt: boolean\n wallet: {\n position: string\n characters: string | null\n }\n }, secret: string): AuthToken {\n const wallet = new Wallet({\n secret,\n token: 'AUTH',\n position: snapshot.wallet.position,\n characters: snapshot.wallet.characters\n })\n \n return AuthToken.create({\n token: snapshot.token,\n expiresAt: snapshot.expiresAt,\n pubkey: snapshot.pubkey,\n encrypt: snapshot.encrypt\n }, wallet)\n }\n\n /**\n * Set wallet for this auth token\n */\n setWallet(wallet: Wallet): void {\n this.$__wallet = wallet\n }\n\n /**\n * Get wallet\n */\n getWallet(): Wallet | undefined {\n return this.$__wallet\n }\n\n /**\n * Get auth token\n */\n getToken(): string {\n return this.$__token\n }\n\n /**\n * Get expiration timestamp\n */\n getExpiresAt(): number {\n return this.$__expiresAt\n }\n\n /**\n * Get public key\n */\n getPubkey(): string {\n return this.$__pubkey\n }\n\n /**\n * Check if encryption is enabled\n */\n isEncrypted(): boolean {\n return this.$__encrypt\n }\n\n /**\n * Check if token is expired\n */\n isExpired(): boolean {\n const now = Math.floor(Date.now() / 1000)\n return now >= this.$__expiresAt\n }\n\n /**\n * Get auth data for GraphQL client\n */\n getAuthData(): {\n token: string\n pubkey: string\n wallet: Wallet | undefined\n } {\n return {\n token: this.$__token,\n pubkey: this.$__pubkey,\n wallet: this.$__wallet\n }\n }\n\n /**\n * Create snapshot for persistence\n */\n toSnapshot(): {\n token: string\n expiresAt: number\n pubkey: string\n encrypt: boolean\n wallet?: {\n position: string | null\n characters: string | null\n }\n } {\n return {\n token: this.$__token,\n expiresAt: this.$__expiresAt,\n pubkey: this.$__pubkey,\n encrypt: this.$__encrypt,\n ...(this.$__wallet ? {\n wallet: {\n position: this.$__wallet.position,\n characters: this.$__wallet.characters\n }\n } : {})\n }\n }\n}","/*\n (\n (/(\n (//(\n (///(\n (/////(\n (//////( )\n (////////( (/)\n (////////( (///)\n (//////////( (////)\n (//////////( (//////)\n (////////////( (///////)\n (/////////////( (/////////)\n (//////////////( (///////////)\n (///////////////( (/////////////)\n (////////////////( (//////////////)\n ((((((((((((((((((( (((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n ((((((((((((((((((( ((((((((((((((\n (((((((((((((((((((( (((((((((((((\n (((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((((\n ((((((((((((((((((( ((((((((((\n ((((((((((((((((((/ (((((((((\n (((((((((((((((((( ((((((((\n ((((((((((((((((( (((((((\n (((((((((((((((((( (((((\n ################# ##\n ################ #\n ################# ##\n %################ ###\n ###############( ####\n ############### ####\n ############### ######\n %#############( (#######\n %############# #########\n ############( ##########\n ########### #############\n ######### ##############\n %######\n\n Powered by Knish.IO: Connecting a Decentralized World\n\nPlease visit https://github.com/WishKnish/KnishIO-Client-TS for information.\n\nLicense: https://github.com/WishKnish/KnishIO-Client-TS/blob/master/LICENSE\n*/\n\nimport { diff } from '../libraries/array'\n\n/**\n * PolicyMeta class - Manages metadata access policies\n * Matches JavaScript SDK PolicyMeta implementation exactly\n */\nexport default class PolicyMeta {\n public policy: Record<string, any>\n\n /**\n * Create new PolicyMeta instance\n * Matches JavaScript SDK constructor signature exactly\n */\n constructor(policy: Record<string, any> = {}, metaKeys: string[] = []) {\n this.policy = PolicyMeta.normalizePolicy(policy)\n this.fillDefault(metaKeys)\n }\n\n /**\n * Normalize policy object structure\n * Matches JavaScript SDK normalizePolicy method exactly\n */\n static normalizePolicy(policy: Record<string, any> = {}): Record<string, any> {\n const policyMeta: Record<string, any> = {}\n \n for (const [policyKey, value] of Object.entries(policy)) {\n if (value !== null && ['read', 'write'].includes(policyKey)) {\n policyMeta[policyKey] = {}\n for (const [key, content] of Object.entries(value as Record<string, any>)) {\n policyMeta[policyKey][key] = content\n }\n }\n }\n \n return policyMeta\n }\n\n /**\n * Fill default policy values for metadata keys\n * Matches JavaScript SDK fillDefault method exactly\n */\n fillDefault(metaKeys: string[] = []): void {\n // Exactly match JavaScript SDK behavior with Array.from\n const readPolicy = Array.from(this.policy as any).filter((item: any) => item.action === 'read')\n const writePolicy = Array.from(this.policy as any).filter((item: any) => item.action === 'write')\n\n for (const [type, value] of Object.entries({\n read: readPolicy,\n write: writePolicy\n })) {\n const policyKey = (value as any[]).map((item: any) => item.key)\n\n if (!this.policy[type]) {\n this.policy[type] = {}\n }\n\n for (const key of diff(metaKeys, policyKey)) {\n if (!this.policy[type][key]) {\n this.policy[type][key] = (type === 'write' && !['characters', 'pubkey'].includes(key)) \n ? ['self'] \n : ['all']\n }\n }\n }\n }\n\n /**\n * Get the policy object\n * Matches JavaScript SDK get method exactly\n */\n get(): Record<string, any> {\n return this.policy\n }\n\n /**\n * Convert policy to JSON string\n * Matches JavaScript SDK toJson method exactly\n */\n toJson(): string {\n return JSON.stringify(this.get())\n }\n}"]}