@mysten/sui 1.28.1 → 1.29.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 (117) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +5 -4
  3. package/dist/cjs/client/client.d.ts +2 -1
  4. package/dist/cjs/client/client.js +7 -0
  5. package/dist/cjs/client/client.js.map +2 -2
  6. package/dist/cjs/experimental/core.d.ts +2 -1
  7. package/dist/cjs/experimental/core.js +12 -1
  8. package/dist/cjs/experimental/core.js.map +2 -2
  9. package/dist/cjs/experimental/transports/graphql.d.ts +26 -0
  10. package/dist/cjs/experimental/transports/graphql.js +310 -0
  11. package/dist/cjs/experimental/transports/graphql.js.map +7 -0
  12. package/dist/cjs/experimental/transports/jsonRPC.d.ts +5 -3
  13. package/dist/cjs/experimental/transports/jsonRPC.js +53 -105
  14. package/dist/cjs/experimental/transports/jsonRPC.js.map +3 -3
  15. package/dist/cjs/experimental/transports/utils.d.ts +6 -0
  16. package/dist/cjs/experimental/transports/utils.js +102 -0
  17. package/dist/cjs/experimental/transports/utils.js.map +7 -0
  18. package/dist/cjs/experimental/types.d.ts +27 -6
  19. package/dist/cjs/experimental/types.js.map +1 -1
  20. package/dist/cjs/faucet/faucet.d.ts +1 -1
  21. package/dist/cjs/faucet/faucet.js.map +1 -1
  22. package/dist/cjs/graphql/client.d.ts +10 -3
  23. package/dist/cjs/graphql/client.js +12 -4
  24. package/dist/cjs/graphql/client.js.map +3 -3
  25. package/dist/cjs/graphql/generated/queries.d.ts +5653 -0
  26. package/dist/cjs/graphql/generated/queries.js +722 -0
  27. package/dist/cjs/graphql/generated/queries.js.map +7 -0
  28. package/dist/cjs/multisig/publickey.d.ts +3 -3
  29. package/dist/cjs/multisig/publickey.js.map +2 -2
  30. package/dist/cjs/transactions/Commands.d.ts +2 -2
  31. package/dist/cjs/transactions/Commands.js.map +2 -2
  32. package/dist/cjs/transactions/Transaction.d.ts +10 -2
  33. package/dist/cjs/transactions/Transaction.js +165 -21
  34. package/dist/cjs/transactions/Transaction.js.map +3 -3
  35. package/dist/cjs/transactions/TransactionData.d.ts +4 -2
  36. package/dist/cjs/transactions/TransactionData.js +72 -41
  37. package/dist/cjs/transactions/TransactionData.js.map +2 -2
  38. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -1
  39. package/dist/cjs/verify/verify.d.ts +5 -5
  40. package/dist/cjs/verify/verify.js.map +2 -2
  41. package/dist/cjs/version.d.ts +2 -2
  42. package/dist/cjs/version.js +2 -2
  43. package/dist/cjs/version.js.map +1 -1
  44. package/dist/cjs/zklogin/publickey.d.ts +9 -3
  45. package/dist/cjs/zklogin/publickey.js +8 -30
  46. package/dist/cjs/zklogin/publickey.js.map +2 -2
  47. package/dist/esm/client/client.d.ts +2 -1
  48. package/dist/esm/client/client.js +7 -0
  49. package/dist/esm/client/client.js.map +2 -2
  50. package/dist/esm/experimental/core.d.ts +2 -1
  51. package/dist/esm/experimental/core.js +12 -1
  52. package/dist/esm/experimental/core.js.map +2 -2
  53. package/dist/esm/experimental/transports/graphql.d.ts +26 -0
  54. package/dist/esm/experimental/transports/graphql.js +303 -0
  55. package/dist/esm/experimental/transports/graphql.js.map +7 -0
  56. package/dist/esm/experimental/transports/jsonRPC.d.ts +5 -3
  57. package/dist/esm/experimental/transports/jsonRPC.js +52 -104
  58. package/dist/esm/experimental/transports/jsonRPC.js.map +2 -2
  59. package/dist/esm/experimental/transports/utils.d.ts +6 -0
  60. package/dist/esm/experimental/transports/utils.js +82 -0
  61. package/dist/esm/experimental/transports/utils.js.map +7 -0
  62. package/dist/esm/experimental/types.d.ts +27 -6
  63. package/dist/esm/faucet/faucet.d.ts +1 -1
  64. package/dist/esm/faucet/faucet.js.map +1 -1
  65. package/dist/esm/graphql/client.d.ts +10 -3
  66. package/dist/esm/graphql/client.js +12 -4
  67. package/dist/esm/graphql/client.js.map +2 -2
  68. package/dist/esm/graphql/generated/queries.d.ts +5653 -0
  69. package/dist/esm/graphql/generated/queries.js +702 -0
  70. package/dist/esm/graphql/generated/queries.js.map +7 -0
  71. package/dist/esm/multisig/publickey.d.ts +3 -3
  72. package/dist/esm/multisig/publickey.js.map +2 -2
  73. package/dist/esm/transactions/Commands.d.ts +2 -2
  74. package/dist/esm/transactions/Commands.js.map +2 -2
  75. package/dist/esm/transactions/Transaction.d.ts +10 -2
  76. package/dist/esm/transactions/Transaction.js +165 -21
  77. package/dist/esm/transactions/Transaction.js.map +3 -3
  78. package/dist/esm/transactions/TransactionData.d.ts +4 -2
  79. package/dist/esm/transactions/TransactionData.js +72 -41
  80. package/dist/esm/transactions/TransactionData.js.map +2 -2
  81. package/dist/esm/transactions/intents/CoinWithBalance.js.map +1 -1
  82. package/dist/esm/verify/verify.d.ts +5 -5
  83. package/dist/esm/verify/verify.js.map +2 -2
  84. package/dist/esm/version.d.ts +2 -2
  85. package/dist/esm/version.js +2 -2
  86. package/dist/esm/version.js.map +1 -1
  87. package/dist/esm/zklogin/publickey.d.ts +9 -3
  88. package/dist/esm/zklogin/publickey.js +8 -30
  89. package/dist/esm/zklogin/publickey.js.map +2 -2
  90. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  91. package/dist/tsconfig.tsbuildinfo +1 -1
  92. package/package.json +4 -1
  93. package/src/client/client.ts +10 -0
  94. package/src/experimental/core.ts +17 -1
  95. package/src/experimental/transports/graphql.ts +421 -0
  96. package/src/experimental/transports/jsonRPC.ts +47 -132
  97. package/src/experimental/transports/utils.ts +117 -0
  98. package/src/experimental/types.ts +38 -7
  99. package/src/faucet/faucet.ts +1 -1
  100. package/src/graphql/client.ts +21 -3
  101. package/src/graphql/generated/queries.ts +6061 -0
  102. package/src/graphql/queries/getAllBalances.graphql +20 -0
  103. package/src/graphql/queries/getBalance.graphql +14 -0
  104. package/src/graphql/queries/getCoins.graphql +29 -0
  105. package/src/graphql/queries/getDynamicFields.graphql +36 -0
  106. package/src/graphql/queries/getReferenceGasPrice.graphql +8 -0
  107. package/src/graphql/queries/objects.graphql +89 -0
  108. package/src/graphql/queries/transactions.graphql +80 -0
  109. package/src/graphql/queries/verifyZkLoginSignature.graphql +16 -0
  110. package/src/multisig/publickey.ts +3 -3
  111. package/src/transactions/Commands.ts +3 -2
  112. package/src/transactions/Transaction.ts +215 -12
  113. package/src/transactions/TransactionData.ts +86 -46
  114. package/src/transactions/intents/CoinWithBalance.ts +1 -1
  115. package/src/verify/verify.ts +6 -6
  116. package/src/version.ts +2 -2
  117. package/src/zklogin/publickey.ts +23 -39
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/experimental/transports/jsonRPC.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64 } from '@mysten/bcs';\n\nimport { bcs } from '../../bcs/index.js';\nimport type {\n\tObjectOwner,\n\tSuiClient,\n\tSuiObjectChange,\n\tSuiObjectData,\n\tSuiTransactionBlockResponse,\n\tTransactionEffects,\n} from '../../client/index.js';\nimport { batch } from '../../transactions/plugins/utils.js';\nimport { Transaction } from '../../transactions/Transaction.js';\nimport { normalizeStructTag } from '../../utils/sui-types.js';\nimport { Experimental_CoreClient } from '../core.js';\nimport { ObjectError } from '../errors.js';\nimport type { Experimental_SuiClientTypes } from '../types.js';\n\nexport class JSONRpcTransport extends Experimental_CoreClient {\n\t#jsonRpcClient: SuiClient;\n\n\tconstructor(jsonRpcClient: SuiClient) {\n\t\tsuper({ network: jsonRpcClient.network });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\tasync getObjects(options: Experimental_SuiClientTypes.GetObjectsOptions) {\n\t\tconst batches = batch(options.objectIds, 50);\n\t\tconst results: Experimental_SuiClientTypes.GetObjectsResponse['objects'] = [];\n\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t\tshowBcs: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(ObjectError.fromResponse(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\tasync getOwnedObjects(options: Experimental_SuiClientTypes.GetOwnedObjectsOptions) {\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.address,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\toptions: {\n\t\t\t\tshowOwner: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowBcs: true,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow ObjectError.fromResponse(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\tasync getCoins(options: Experimental_SuiClientTypes.GetCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.address,\n\t\t\tcoinType: options.coinType,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map((coin) => {\n\t\t\t\treturn {\n\t\t\t\t\tid: coin.coinObjectId,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tbalance: coin.balance,\n\t\t\t\t\ttype: `0x2::coin::Coin<${coin.coinType}>`,\n\t\t\t\t\tcontent: Coin.serialize({\n\t\t\t\t\t\tid: coin.coinObjectId,\n\t\t\t\t\t\tbalance: {\n\t\t\t\t\t\t\tvalue: coin.balance,\n\t\t\t\t\t\t},\n\t\t\t\t\t}).toBytes(),\n\t\t\t\t\towner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: options.address,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\tasync getBalance(options: Experimental_SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.address,\n\t\t\tcoinType: options.coinType,\n\t\t});\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: balance.coinType,\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t},\n\t\t};\n\t}\n\tasync getAllBalances(options: Experimental_SuiClientTypes.GetAllBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.address,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => ({\n\t\t\t\tcoinType: balance.coinType,\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t})),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\tasync getTransaction(options: Experimental_SuiClientTypes.GetTransactionOptions) {\n\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\tdigest: options.digest,\n\t\t\toptions: {\n\t\t\t\tshowRawInput: true,\n\t\t\t\tshowObjectChanges: true,\n\t\t\t\tshowRawEffects: true,\n\t\t\t\tshowEvents: true,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(transaction),\n\t\t};\n\t}\n\tasync executeTransaction(options: Experimental_SuiClientTypes.ExecuteTransactionOptions) {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\tshowRawEffects: true,\n\t\t\t\tshowEvents: true,\n\t\t\t\tshowObjectChanges: true,\n\t\t\t\tshowRawInput: true,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(transaction),\n\t\t};\n\t}\n\tasync dryRunTransaction(options: Experimental_SuiClientTypes.DryRunTransactionOptions) {\n\t\tconst tx = Transaction.from(options.transaction);\n\t\tconst result = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: {\n\t\t\t\tdigest: await tx.getDigest(),\n\t\t\t\teffects: parseTransactionEffectsJson({\n\t\t\t\t\teffects: result.effects,\n\t\t\t\t\tobjectChanges: result.objectChanges,\n\t\t\t\t}),\n\t\t\t\tsignatures: [],\n\t\t\t\tbcs: options.transaction,\n\t\t\t},\n\t\t};\n\t}\n\tasync getReferenceGasPrice() {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice();\n\t\treturn {\n\t\t\treferenceGasPrice: String(referenceGasPrice),\n\t\t};\n\t}\n\n\tasync getDynamicFields(options: Experimental_SuiClientTypes.GetDynamicFieldsOptions) {\n\t\tconst dynamicFields = await this.#jsonRpcClient.getDynamicFields({\n\t\t\tparentId: options.parentId,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t});\n\n\t\treturn {\n\t\t\tdynamicFields: dynamicFields.data.map((dynamicField) => ({\n\t\t\t\tid: dynamicField.objectId,\n\t\t\t\tversion: dynamicField.version,\n\t\t\t\tdigest: dynamicField.digest,\n\t\t\t\ttype: dynamicField.objectType,\n\t\t\t\tname: {\n\t\t\t\t\ttype: dynamicField.name.type,\n\t\t\t\t\tbcs: fromBase64(dynamicField.bcsName),\n\t\t\t\t},\n\t\t\t})),\n\t\t\thasNextPage: dynamicFields.hasNextPage,\n\t\t\tcursor: dynamicFields.nextCursor,\n\t\t};\n\t}\n}\n\nfunction parseObject(object: SuiObjectData): Experimental_SuiClientTypes.ObjectResponse {\n\treturn {\n\t\tid: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype: object.type!,\n\t\tcontent:\n\t\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : new Uint8Array(),\n\t\towner: parseOwner(object.owner!),\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): Experimental_SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusV2' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusV2',\n\t\t\tConsensusV2: {\n\t\t\t\tauthenticator: {\n\t\t\t\t\t$kind: 'SingleOwner',\n\t\t\t\t\tSingleOwner: owner.ConsensusV2.authenticator.SingleOwner,\n\t\t\t\t},\n\t\t\t\tstartVersion: owner.ConsensusV2.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseTransaction(\n\ttransaction: SuiTransactionBlockResponse,\n): Experimental_SuiClientTypes.TransactionResponse {\n\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction!))[0];\n\n\treturn {\n\t\tdigest: transaction.digest,\n\t\teffects: parseTransactionEffects({\n\t\t\teffects: new Uint8Array(transaction.rawEffects!),\n\t\t\tobjectChanges: transaction.objectChanges ?? null,\n\t\t}),\n\t\tbcs: bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),\n\t\tsignatures: parsedTx.txSignatures,\n\t};\n}\n\nfunction parseTransactionEffects({\n\teffects,\n\tepoch,\n\tobjectChanges,\n}: {\n\teffects: Uint8Array;\n\tobjectChanges: SuiObjectChange[] | null;\n\tepoch?: string | null;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tconst parsed = bcs.TransactionEffects.parse(effects);\n\tconst objectTypes: Record<string, string> = {};\n\n\tobjectChanges?.forEach((change) => {\n\t\tif (change.type !== 'published') {\n\t\t\tobjectTypes[change.objectId] = change.objectType;\n\t\t}\n\t});\n\n\tswitch (parsed.$kind) {\n\t\tcase 'V1':\n\t\t\treturn parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1, epoch, objectTypes });\n\t\tcase 'V2':\n\t\t\treturn parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2, epoch, objectTypes });\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown transaction effects version: ${(parsed as { $kind: string }).$kind}`,\n\t\t\t);\n\t}\n}\n\nfunction parseTransactionEffectsV1(_: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V1']>;\n\tepoch?: string | null;\n\tobjectTypes: Record<string, string>;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tthrow new Error('V1 effects are not supported yet');\n}\n\nfunction parseTransactionEffectsV2({\n\tbytes,\n\teffects,\n\tepoch,\n\tobjectTypes,\n}: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V2']>;\n\tepoch?: string | null;\n\tobjectTypes: Record<string, string>;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tconst changedObjects = effects.changedObjects.map(\n\t\t([id, change]): Experimental_SuiClientTypes.ChangedObject => {\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tinputState: change.inputState.$kind === 'Exist' ? 'Exists' : 'DoesNotExist',\n\t\t\t\tinputVersion: change.inputState.Exist?.[0][0] ?? null,\n\t\t\t\tinputDigest: change.inputState.Exist?.[0][1] ?? null,\n\t\t\t\tinputOwner: change.inputState.Exist?.[1] ?? null,\n\t\t\t\toutputState:\n\t\t\t\t\tchange.outputState.$kind === 'NotExist' ? 'DoesNotExist' : change.outputState.$kind,\n\t\t\t\toutputVersion:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[0]\n\t\t\t\t\t\t: change.outputState.ObjectWrite\n\t\t\t\t\t\t\t? effects.lamportVersion\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputDigest:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[1]\n\t\t\t\t\t\t: (change.outputState.ObjectWrite?.[0] ?? null),\n\t\t\t\toutputOwner: change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : null,\n\t\t\t\tidOperation: change.idOperation.$kind,\n\t\t\t\tobjectType: objectTypes[id] ?? null,\n\t\t\t};\n\t\t},\n\t);\n\n\treturn {\n\t\tbcs: bytes,\n\t\tdigest: effects.transactionDigest,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.$kind === 'Success'\n\t\t\t\t? {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t// TODO: add command\n\t\t\t\t\t\terror: effects.status.Failed.error.$kind,\n\t\t\t\t\t},\n\t\tepoch: epoch ?? null,\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject:\n\t\t\teffects.gasObjectIndex === null ? null : (changedObjects[effects.gasObjectIndex] ?? null),\n\t\teventsDigest: effects.eventsDigest,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion,\n\t\tchangedObjects,\n\t\tunchangedSharedObjects: effects.unchangedSharedObjects.map(\n\t\t\t([objectId, object]): Experimental_SuiClientTypes.UnchangedSharedObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: object.$kind,\n\t\t\t\t\tobjectId: objectId,\n\t\t\t\t\tversion:\n\t\t\t\t\t\tobject.$kind === 'ReadOnlyRoot'\n\t\t\t\t\t\t\t? object.ReadOnlyRoot[0]\n\t\t\t\t\t\t\t: (object[object.$kind] as string | null),\n\t\t\t\t\tdigest: object.$kind === 'ReadOnlyRoot' ? object.ReadOnlyRoot[1] : null,\n\t\t\t\t\tobjectType: objectTypes[objectId] ?? null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxDataDigest,\n\t};\n}\n\nfunction parseTransactionEffectsJson({\n\tbytes,\n\teffects,\n\tepoch,\n\tobjectChanges,\n}: {\n\tbytes?: Uint8Array;\n\teffects: TransactionEffects;\n\tepoch?: string | null;\n\tobjectChanges: SuiObjectChange[] | null;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tconst changedObjects: Experimental_SuiClientTypes.ChangedObject[] = [];\n\tconst unchangedSharedObjects: Experimental_SuiClientTypes.UnchangedSharedObject[] = [];\n\n\tobjectChanges?.forEach((change) => {\n\t\tswitch (change.type) {\n\t\t\tcase 'published':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.packageId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'PackageWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t\tobjectType: null,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transferred':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: change.digest,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.recipient),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'mutated':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.previousVersion,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: parseOwner(change.owner),\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'deleted':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'DoesNotExist',\n\t\t\t\t\toutputVersion: null,\n\t\t\t\t\toutputDigest: null,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Deleted',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'wrapped':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest:\n\t\t\t\t\t\teffects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\toutputOwner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'created':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn {\n\t\tbcs: bytes ?? null,\n\t\tdigest: effects.transactionDigest,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.status === 'success'\n\t\t\t\t? { success: true, error: null }\n\t\t\t\t: { success: false, error: effects.status.error! },\n\t\tepoch: epoch ?? null,\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject: {\n\t\t\tid: effects.gasObject?.reference.objectId,\n\t\t\tinputState: 'Exists',\n\t\t\tinputVersion: null,\n\t\t\tinputDigest: null,\n\t\t\tinputOwner: null,\n\t\t\toutputState: 'ObjectWrite',\n\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\tidOperation: 'None',\n\t\t\tobjectType: normalizeStructTag('0x2::coin::Coin<0x2::sui::SUI>'),\n\t\t},\n\t\teventsDigest: effects.eventsDigest ?? null,\n\t\tdependencies: effects.dependencies ?? [],\n\t\tlamportVersion: effects.gasObject.reference.version,\n\t\tchangedObjects,\n\t\tunchangedSharedObjects,\n\t\tauxiliaryDataDigest: null,\n\t};\n}\n\nconst Balance = bcs.struct('Balance', {\n\tvalue: bcs.u64(),\n});\n\nconst Coin = bcs.struct('Coin', {\n\tid: bcs.Address,\n\tbalance: Balance,\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64 } from '@mysten/bcs';\n\nimport { bcs } from '../../bcs/index.js';\nimport type {\n\tObjectOwner,\n\tSuiClient,\n\tSuiObjectChange,\n\tSuiObjectData,\n\tSuiTransactionBlockResponse,\n\tTransactionEffects,\n} from '../../client/index.js';\nimport { batch } from '../../transactions/plugins/utils.js';\nimport { Transaction } from '../../transactions/Transaction.js';\nimport { normalizeStructTag } from '../../utils/sui-types.js';\nimport { Experimental_CoreClient } from '../core.js';\nimport { ObjectError } from '../errors.js';\nimport type { Experimental_SuiClientTypes } from '../types.js';\nimport { parseTransactionEffects } from './utils.js';\n\nexport class JSONRpcTransport extends Experimental_CoreClient {\n\t#jsonRpcClient: SuiClient;\n\n\tconstructor(jsonRpcClient: SuiClient) {\n\t\tsuper({ network: jsonRpcClient.network });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\tasync getObjects(options: Experimental_SuiClientTypes.GetObjectsOptions) {\n\t\tconst batches = batch(options.objectIds, 50);\n\t\tconst results: Experimental_SuiClientTypes.GetObjectsResponse['objects'] = [];\n\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t\tshowBcs: true,\n\t\t\t\t},\n\t\t\t\tsignal: options.signal,\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(ObjectError.fromResponse(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\tasync getOwnedObjects(options: Experimental_SuiClientTypes.GetOwnedObjectsOptions) {\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.address,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\toptions: {\n\t\t\t\tshowOwner: true,\n\t\t\t\tshowType: true,\n\t\t\t\tshowBcs: true,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow ObjectError.fromResponse(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\tasync getCoins(options: Experimental_SuiClientTypes.GetCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.address,\n\t\t\tcoinType: options.coinType,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map((coin) => {\n\t\t\t\treturn {\n\t\t\t\t\tid: coin.coinObjectId,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tbalance: coin.balance,\n\t\t\t\t\ttype: `0x2::coin::Coin<${coin.coinType}>`,\n\t\t\t\t\tcontent: Coin.serialize({\n\t\t\t\t\t\tid: coin.coinObjectId,\n\t\t\t\t\t\tbalance: {\n\t\t\t\t\t\t\tvalue: coin.balance,\n\t\t\t\t\t\t},\n\t\t\t\t\t}).toBytes(),\n\t\t\t\t\towner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: options.address,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\tasync getBalance(options: Experimental_SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.address,\n\t\t\tcoinType: options.coinType,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: balance.coinType,\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t},\n\t\t};\n\t}\n\tasync getAllBalances(options: Experimental_SuiClientTypes.GetAllBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.address,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => ({\n\t\t\t\tcoinType: balance.coinType,\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t})),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\tasync getTransaction(options: Experimental_SuiClientTypes.GetTransactionOptions) {\n\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\tdigest: options.digest,\n\t\t\toptions: {\n\t\t\t\tshowRawInput: true,\n\t\t\t\tshowObjectChanges: true,\n\t\t\t\tshowRawEffects: true,\n\t\t\t\tshowEvents: true,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(transaction),\n\t\t};\n\t}\n\tasync executeTransaction(options: Experimental_SuiClientTypes.ExecuteTransactionOptions) {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\tshowRawEffects: true,\n\t\t\t\tshowEvents: true,\n\t\t\t\tshowObjectChanges: true,\n\t\t\t\tshowRawInput: true,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(transaction),\n\t\t};\n\t}\n\tasync dryRunTransaction(options: Experimental_SuiClientTypes.DryRunTransactionOptions) {\n\t\tconst tx = Transaction.from(options.transaction);\n\t\tconst result = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: {\n\t\t\t\tdigest: await tx.getDigest(),\n\t\t\t\teffects: parseTransactionEffectsJson({\n\t\t\t\t\teffects: result.effects,\n\t\t\t\t\tobjectChanges: result.objectChanges,\n\t\t\t\t}),\n\t\t\t\tsignatures: [],\n\t\t\t\tbcs: options.transaction,\n\t\t\t},\n\t\t};\n\t}\n\tasync getReferenceGasPrice(options?: Experimental_SuiClientTypes.GetReferenceGasPriceOptions) {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice({\n\t\t\tsignal: options?.signal,\n\t\t});\n\t\treturn {\n\t\t\treferenceGasPrice: String(referenceGasPrice),\n\t\t};\n\t}\n\n\tasync getDynamicFields(options: Experimental_SuiClientTypes.GetDynamicFieldsOptions) {\n\t\tconst dynamicFields = await this.#jsonRpcClient.getDynamicFields({\n\t\t\tparentId: options.parentId,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t});\n\n\t\treturn {\n\t\t\tdynamicFields: dynamicFields.data.map((dynamicField) => {\n\t\t\t\treturn {\n\t\t\t\t\tid: dynamicField.objectId,\n\t\t\t\t\ttype: dynamicField.objectType,\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: dynamicField.name.type,\n\t\t\t\t\t\tbcs: fromBase64(dynamicField.bcsName),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: dynamicFields.hasNextPage,\n\t\t\tcursor: dynamicFields.nextCursor,\n\t\t};\n\t}\n\n\tasync verifyZkLoginSignature(options: Experimental_SuiClientTypes.VerifyZkLoginSignatureOptions) {\n\t\tconst result = await this.#jsonRpcClient.verifyZkLoginSignature({\n\t\t\tbytes: options.bytes,\n\t\t\tsignature: options.signature,\n\t\t\tintentScope: options.intentScope,\n\t\t\tauthor: options.author,\n\t\t});\n\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\terrors: result.errors,\n\t\t};\n\t}\n}\n\nfunction parseObject(object: SuiObjectData): Experimental_SuiClientTypes.ObjectResponse {\n\treturn {\n\t\tid: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype: object.type!,\n\t\tcontent:\n\t\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : new Uint8Array(),\n\t\towner: parseOwner(object.owner!),\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): Experimental_SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusV2' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusV2',\n\t\t\tConsensusV2: {\n\t\t\t\tauthenticator: {\n\t\t\t\t\t$kind: 'SingleOwner',\n\t\t\t\t\tSingleOwner: owner.ConsensusV2.authenticator.SingleOwner,\n\t\t\t\t},\n\t\t\t\tstartVersion: owner.ConsensusV2.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseTransaction(\n\ttransaction: SuiTransactionBlockResponse,\n): Experimental_SuiClientTypes.TransactionResponse {\n\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction!))[0];\n\tconst objectTypes: Record<string, string> = {};\n\n\ttransaction.objectChanges?.forEach((change) => {\n\t\tif (change.type !== 'published') {\n\t\t\tobjectTypes[change.objectId] = change.objectType;\n\t\t}\n\t});\n\n\treturn {\n\t\tdigest: transaction.digest,\n\t\teffects: parseTransactionEffects({\n\t\t\teffects: new Uint8Array(transaction.rawEffects!),\n\t\t\tobjectTypes,\n\t\t}),\n\t\tbcs: bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),\n\t\tsignatures: parsedTx.txSignatures,\n\t};\n}\n\nfunction parseTransactionEffectsJson({\n\tbytes,\n\teffects,\n\tepoch,\n\tobjectChanges,\n}: {\n\tbytes?: Uint8Array;\n\teffects: TransactionEffects;\n\tepoch?: string | null;\n\tobjectChanges: SuiObjectChange[] | null;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tconst changedObjects: Experimental_SuiClientTypes.ChangedObject[] = [];\n\tconst unchangedSharedObjects: Experimental_SuiClientTypes.UnchangedSharedObject[] = [];\n\n\tobjectChanges?.forEach((change) => {\n\t\tswitch (change.type) {\n\t\t\tcase 'published':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.packageId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'PackageWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t\tobjectType: null,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'transferred':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: change.digest,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.recipient),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'mutated':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.previousVersion,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: parseOwner(change.owner),\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'deleted':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'DoesNotExist',\n\t\t\t\t\toutputVersion: null,\n\t\t\t\t\toutputDigest: null,\n\t\t\t\t\toutputOwner: null,\n\t\t\t\t\tidOperation: 'Deleted',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'wrapped':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'Exists',\n\t\t\t\t\tinputVersion: change.version,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: {\n\t\t\t\t\t\t$kind: 'AddressOwner' as const,\n\t\t\t\t\t\tAddressOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest:\n\t\t\t\t\t\teffects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,\n\t\t\t\t\toutputOwner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: change.sender,\n\t\t\t\t\t},\n\t\t\t\t\tidOperation: 'None',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'created':\n\t\t\t\tchangedObjects.push({\n\t\t\t\t\tid: change.objectId,\n\t\t\t\t\tinputState: 'DoesNotExist',\n\t\t\t\t\tinputVersion: null,\n\t\t\t\t\tinputDigest: null,\n\t\t\t\t\tinputOwner: null,\n\t\t\t\t\toutputState: 'ObjectWrite',\n\t\t\t\t\toutputVersion: change.version,\n\t\t\t\t\toutputDigest: change.digest,\n\t\t\t\t\toutputOwner: parseOwner(change.owner),\n\t\t\t\t\tidOperation: 'Created',\n\t\t\t\t\tobjectType: change.objectType,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn {\n\t\tbcs: bytes ?? null,\n\t\tdigest: effects.transactionDigest,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.status === 'success'\n\t\t\t\t? { success: true, error: null }\n\t\t\t\t: { success: false, error: effects.status.error! },\n\t\tepoch: epoch ?? null,\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject: {\n\t\t\tid: effects.gasObject?.reference.objectId,\n\t\t\tinputState: 'Exists',\n\t\t\tinputVersion: null,\n\t\t\tinputDigest: null,\n\t\t\tinputOwner: null,\n\t\t\toutputState: 'ObjectWrite',\n\t\t\toutputVersion: effects.gasObject.reference.version,\n\t\t\toutputDigest: effects.gasObject.reference.digest,\n\t\t\toutputOwner: parseOwner(effects.gasObject.owner),\n\t\t\tidOperation: 'None',\n\t\t\tobjectType: normalizeStructTag('0x2::coin::Coin<0x2::sui::SUI>'),\n\t\t},\n\t\teventsDigest: effects.eventsDigest ?? null,\n\t\tdependencies: effects.dependencies ?? [],\n\t\tlamportVersion: effects.gasObject.reference.version,\n\t\tchangedObjects,\n\t\tunchangedSharedObjects,\n\t\tauxiliaryDataDigest: null,\n\t};\n}\n\nconst Balance = bcs.struct('Balance', {\n\tvalue: bcs.u64(),\n});\n\nconst Coin = bcs.struct('Coin', {\n\tid: bcs.Address,\n\tbalance: Balance,\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["batch"]
7
7
  }
@@ -0,0 +1,6 @@
1
+ import type { Experimental_SuiClientTypes } from '../types.js';
2
+ export declare function parseTransactionEffects({ effects, epoch, objectTypes, }: {
3
+ effects: Uint8Array;
4
+ objectTypes: Record<string, string>;
5
+ epoch?: string | null;
6
+ }): Experimental_SuiClientTypes.TransactionEffects;
@@ -0,0 +1,82 @@
1
+ import { bcs } from "../../bcs/index.js";
2
+ function parseTransactionEffects({
3
+ effects,
4
+ epoch,
5
+ objectTypes
6
+ }) {
7
+ const parsed = bcs.TransactionEffects.parse(effects);
8
+ switch (parsed.$kind) {
9
+ case "V1":
10
+ return parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1, epoch, objectTypes });
11
+ case "V2":
12
+ return parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2, epoch, objectTypes });
13
+ default:
14
+ throw new Error(
15
+ `Unknown transaction effects version: ${parsed.$kind}`
16
+ );
17
+ }
18
+ }
19
+ function parseTransactionEffectsV1(_) {
20
+ throw new Error("V1 effects are not supported yet");
21
+ }
22
+ function parseTransactionEffectsV2({
23
+ bytes,
24
+ effects,
25
+ epoch,
26
+ objectTypes
27
+ }) {
28
+ const changedObjects = effects.changedObjects.map(
29
+ ([id, change]) => {
30
+ return {
31
+ id,
32
+ inputState: change.inputState.$kind === "Exist" ? "Exists" : "DoesNotExist",
33
+ inputVersion: change.inputState.Exist?.[0][0] ?? null,
34
+ inputDigest: change.inputState.Exist?.[0][1] ?? null,
35
+ inputOwner: change.inputState.Exist?.[1] ?? null,
36
+ outputState: change.outputState.$kind === "NotExist" ? "DoesNotExist" : change.outputState.$kind,
37
+ outputVersion: change.outputState.$kind === "PackageWrite" ? change.outputState.PackageWrite?.[0] : change.outputState.ObjectWrite ? effects.lamportVersion : null,
38
+ outputDigest: change.outputState.$kind === "PackageWrite" ? change.outputState.PackageWrite?.[1] : change.outputState.ObjectWrite?.[0] ?? null,
39
+ outputOwner: change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : null,
40
+ idOperation: change.idOperation.$kind,
41
+ objectType: objectTypes[id] ?? null
42
+ };
43
+ }
44
+ );
45
+ return {
46
+ bcs: bytes,
47
+ digest: effects.transactionDigest,
48
+ version: 2,
49
+ status: effects.status.$kind === "Success" ? {
50
+ success: true,
51
+ error: null
52
+ } : {
53
+ success: false,
54
+ // TODO: add command
55
+ error: effects.status.Failed.error.$kind
56
+ },
57
+ epoch: epoch ?? null,
58
+ gasUsed: effects.gasUsed,
59
+ transactionDigest: effects.transactionDigest,
60
+ gasObject: effects.gasObjectIndex === null ? null : changedObjects[effects.gasObjectIndex] ?? null,
61
+ eventsDigest: effects.eventsDigest,
62
+ dependencies: effects.dependencies,
63
+ lamportVersion: effects.lamportVersion,
64
+ changedObjects,
65
+ unchangedSharedObjects: effects.unchangedSharedObjects.map(
66
+ ([objectId, object]) => {
67
+ return {
68
+ kind: object.$kind,
69
+ objectId,
70
+ version: object.$kind === "ReadOnlyRoot" ? object.ReadOnlyRoot[0] : object[object.$kind],
71
+ digest: object.$kind === "ReadOnlyRoot" ? object.ReadOnlyRoot[1] : null,
72
+ objectType: objectTypes[objectId] ?? null
73
+ };
74
+ }
75
+ ),
76
+ auxiliaryDataDigest: effects.auxDataDigest
77
+ };
78
+ }
79
+ export {
80
+ parseTransactionEffects
81
+ };
82
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/experimental/transports/utils.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '../../bcs/index.js';\nimport type { Experimental_SuiClientTypes } from '../types.js';\n\nexport function parseTransactionEffects({\n\teffects,\n\tepoch,\n\tobjectTypes,\n}: {\n\teffects: Uint8Array;\n\tobjectTypes: Record<string, string>;\n\tepoch?: string | null;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tconst parsed = bcs.TransactionEffects.parse(effects);\n\n\tswitch (parsed.$kind) {\n\t\tcase 'V1':\n\t\t\treturn parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1, epoch, objectTypes });\n\t\tcase 'V2':\n\t\t\treturn parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2, epoch, objectTypes });\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown transaction effects version: ${(parsed as { $kind: string }).$kind}`,\n\t\t\t);\n\t}\n}\n\nfunction parseTransactionEffectsV1(_: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V1']>;\n\tepoch?: string | null;\n\tobjectTypes: Record<string, string>;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tthrow new Error('V1 effects are not supported yet');\n}\n\nfunction parseTransactionEffectsV2({\n\tbytes,\n\teffects,\n\tepoch,\n\tobjectTypes,\n}: {\n\tbytes: Uint8Array;\n\teffects: NonNullable<(typeof bcs.TransactionEffects.$inferType)['V2']>;\n\tepoch?: string | null;\n\tobjectTypes: Record<string, string>;\n}): Experimental_SuiClientTypes.TransactionEffects {\n\tconst changedObjects = effects.changedObjects.map(\n\t\t([id, change]): Experimental_SuiClientTypes.ChangedObject => {\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tinputState: change.inputState.$kind === 'Exist' ? 'Exists' : 'DoesNotExist',\n\t\t\t\tinputVersion: change.inputState.Exist?.[0][0] ?? null,\n\t\t\t\tinputDigest: change.inputState.Exist?.[0][1] ?? null,\n\t\t\t\tinputOwner: change.inputState.Exist?.[1] ?? null,\n\t\t\t\toutputState:\n\t\t\t\t\tchange.outputState.$kind === 'NotExist' ? 'DoesNotExist' : change.outputState.$kind,\n\t\t\t\toutputVersion:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[0]\n\t\t\t\t\t\t: change.outputState.ObjectWrite\n\t\t\t\t\t\t\t? effects.lamportVersion\n\t\t\t\t\t\t\t: null,\n\t\t\t\toutputDigest:\n\t\t\t\t\tchange.outputState.$kind === 'PackageWrite'\n\t\t\t\t\t\t? change.outputState.PackageWrite?.[1]\n\t\t\t\t\t\t: (change.outputState.ObjectWrite?.[0] ?? null),\n\t\t\t\toutputOwner: change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : null,\n\t\t\t\tidOperation: change.idOperation.$kind,\n\t\t\t\tobjectType: objectTypes[id] ?? null,\n\t\t\t};\n\t\t},\n\t);\n\n\treturn {\n\t\tbcs: bytes,\n\t\tdigest: effects.transactionDigest,\n\t\tversion: 2,\n\t\tstatus:\n\t\t\teffects.status.$kind === 'Success'\n\t\t\t\t? {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\terror: null,\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t// TODO: add command\n\t\t\t\t\t\terror: effects.status.Failed.error.$kind,\n\t\t\t\t\t},\n\t\tepoch: epoch ?? null,\n\t\tgasUsed: effects.gasUsed,\n\t\ttransactionDigest: effects.transactionDigest,\n\t\tgasObject:\n\t\t\teffects.gasObjectIndex === null ? null : (changedObjects[effects.gasObjectIndex] ?? null),\n\t\teventsDigest: effects.eventsDigest,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion,\n\t\tchangedObjects,\n\t\tunchangedSharedObjects: effects.unchangedSharedObjects.map(\n\t\t\t([objectId, object]): Experimental_SuiClientTypes.UnchangedSharedObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: object.$kind,\n\t\t\t\t\tobjectId: objectId,\n\t\t\t\t\tversion:\n\t\t\t\t\t\tobject.$kind === 'ReadOnlyRoot'\n\t\t\t\t\t\t\t? object.ReadOnlyRoot[0]\n\t\t\t\t\t\t\t: (object[object.$kind] as string | null),\n\t\t\t\t\tdigest: object.$kind === 'ReadOnlyRoot' ? object.ReadOnlyRoot[1] : null,\n\t\t\t\t\tobjectType: objectTypes[objectId] ?? null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxDataDigest,\n\t};\n}\n"],
5
+ "mappings": "AAGA,SAAS,WAAW;AAGb,SAAS,wBAAwB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD,GAImD;AAClD,QAAM,SAAS,IAAI,mBAAmB,MAAM,OAAO;AAEnD,UAAQ,OAAO,OAAO;AAAA,IACrB,KAAK;AACJ,aAAO,0BAA0B,EAAE,OAAO,SAAS,SAAS,OAAO,IAAI,OAAO,YAAY,CAAC;AAAA,IAC5F,KAAK;AACJ,aAAO,0BAA0B,EAAE,OAAO,SAAS,SAAS,OAAO,IAAI,OAAO,YAAY,CAAC;AAAA,IAC5F;AACC,YAAM,IAAI;AAAA,QACT,wCAAyC,OAA6B,KAAK;AAAA,MAC5E;AAAA,EACF;AACD;AAEA,SAAS,0BAA0B,GAKgB;AAClD,QAAM,IAAI,MAAM,kCAAkC;AACnD;AAEA,SAAS,0BAA0B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAKmD;AAClD,QAAM,iBAAiB,QAAQ,eAAe;AAAA,IAC7C,CAAC,CAAC,IAAI,MAAM,MAAiD;AAC5D,aAAO;AAAA,QACN;AAAA,QACA,YAAY,OAAO,WAAW,UAAU,UAAU,WAAW;AAAA,QAC7D,cAAc,OAAO,WAAW,QAAQ,CAAC,EAAE,CAAC,KAAK;AAAA,QACjD,aAAa,OAAO,WAAW,QAAQ,CAAC,EAAE,CAAC,KAAK;AAAA,QAChD,YAAY,OAAO,WAAW,QAAQ,CAAC,KAAK;AAAA,QAC5C,aACC,OAAO,YAAY,UAAU,aAAa,iBAAiB,OAAO,YAAY;AAAA,QAC/E,eACC,OAAO,YAAY,UAAU,iBAC1B,OAAO,YAAY,eAAe,CAAC,IACnC,OAAO,YAAY,cAClB,QAAQ,iBACR;AAAA,QACL,cACC,OAAO,YAAY,UAAU,iBAC1B,OAAO,YAAY,eAAe,CAAC,IAClC,OAAO,YAAY,cAAc,CAAC,KAAK;AAAA,QAC5C,aAAa,OAAO,YAAY,cAAc,OAAO,YAAY,YAAY,CAAC,IAAI;AAAA,QAClF,aAAa,OAAO,YAAY;AAAA,QAChC,YAAY,YAAY,EAAE,KAAK;AAAA,MAChC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN,KAAK;AAAA,IACL,QAAQ,QAAQ;AAAA,IAChB,SAAS;AAAA,IACT,QACC,QAAQ,OAAO,UAAU,YACtB;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA,IACR,IACC;AAAA,MACA,SAAS;AAAA;AAAA,MAET,OAAO,QAAQ,OAAO,OAAO,MAAM;AAAA,IACpC;AAAA,IACH,OAAO,SAAS;AAAA,IAChB,SAAS,QAAQ;AAAA,IACjB,mBAAmB,QAAQ;AAAA,IAC3B,WACC,QAAQ,mBAAmB,OAAO,OAAQ,eAAe,QAAQ,cAAc,KAAK;AAAA,IACrF,cAAc,QAAQ;AAAA,IACtB,cAAc,QAAQ;AAAA,IACtB,gBAAgB,QAAQ;AAAA,IACxB;AAAA,IACA,wBAAwB,QAAQ,uBAAuB;AAAA,MACtD,CAAC,CAAC,UAAU,MAAM,MAAyD;AAC1E,eAAO;AAAA,UACN,MAAM,OAAO;AAAA,UACb;AAAA,UACA,SACC,OAAO,UAAU,iBACd,OAAO,aAAa,CAAC,IACpB,OAAO,OAAO,KAAK;AAAA,UACxB,QAAQ,OAAO,UAAU,iBAAiB,OAAO,aAAa,CAAC,IAAI;AAAA,UACnE,YAAY,YAAY,QAAQ,KAAK;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAAA,IACA,qBAAqB,QAAQ;AAAA,EAC9B;AACD;",
6
+ "names": []
7
+ }
@@ -29,6 +29,9 @@ export declare namespace Experimental_SuiClientTypes {
29
29
  interface GetObjectsOptions extends CoreClientMethodOptions {
30
30
  objectIds: string[];
31
31
  }
32
+ interface GetObjectOptions extends CoreClientMethodOptions {
33
+ objectId: string;
34
+ }
32
35
  interface GetOwnedObjectsOptions extends CoreClientMethodOptions {
33
36
  address: string;
34
37
  limit?: number;
@@ -38,6 +41,8 @@ export declare namespace Experimental_SuiClientTypes {
38
41
  interface GetCoinsOptions extends CoreClientMethodOptions {
39
42
  address: string;
40
43
  coinType: string;
44
+ limit?: number;
45
+ cursor?: string | null;
41
46
  }
42
47
  interface GetDynamicFieldsOptions extends CoreClientMethodOptions {
43
48
  parentId: string;
@@ -51,6 +56,9 @@ export declare namespace Experimental_SuiClientTypes {
51
56
  interface GetObjectsResponse {
52
57
  objects: (ObjectResponse | Error)[];
53
58
  }
59
+ interface GetObjectResponse {
60
+ object: ObjectResponse;
61
+ }
54
62
  interface GetOwnedObjectsResponse {
55
63
  objects: ObjectResponse[];
56
64
  hasNextPage: boolean;
@@ -76,11 +84,9 @@ export declare namespace Experimental_SuiClientTypes {
76
84
  hasNextPage: boolean;
77
85
  cursor: string | null;
78
86
  dynamicFields: {
79
- name: DynamicFieldName;
80
87
  id: string;
81
- version: string;
82
- digest: string;
83
88
  type: string;
89
+ name: DynamicFieldName;
84
90
  }[];
85
91
  }
86
92
  interface GetDynamicFieldResponse {
@@ -136,9 +142,8 @@ export declare namespace Experimental_SuiClientTypes {
136
142
  interface TransactionResponse {
137
143
  digest: string;
138
144
  signatures: string[];
139
- bcs: Uint8Array;
140
145
  effects: TransactionEffects;
141
- events?: Uint8Array;
146
+ bcs: Uint8Array;
142
147
  }
143
148
  interface GetTransactionOptions extends CoreClientMethodOptions {
144
149
  digest: string;
@@ -159,12 +164,28 @@ export declare namespace Experimental_SuiClientTypes {
159
164
  interface ExecuteTransactionResponse {
160
165
  transaction: TransactionResponse;
161
166
  }
167
+ interface GetReferenceGasPriceOptions extends CoreClientMethodOptions {
168
+ }
162
169
  interface TransportMethods {
163
- getReferenceGasPrice?: () => Promise<GetReferenceGasPriceResponse>;
170
+ getReferenceGasPrice?: (options?: GetReferenceGasPriceOptions) => Promise<GetReferenceGasPriceResponse>;
164
171
  }
165
172
  interface GetReferenceGasPriceResponse {
166
173
  referenceGasPrice: string;
167
174
  }
175
+ /** ZkLogin methods */
176
+ interface VerifyZkLoginSignatureOptions extends CoreClientMethodOptions {
177
+ bytes: string;
178
+ signature: string;
179
+ intentScope: 'TransactionData' | 'PersonalMessage';
180
+ author: string;
181
+ }
182
+ interface ZkLoginVerifyResponse {
183
+ success: boolean;
184
+ errors: string[];
185
+ }
186
+ interface TransportMethods {
187
+ verifyZkLoginSignature?: (options: VerifyZkLoginSignatureOptions) => Promise<ZkLoginVerifyResponse>;
188
+ }
168
189
  /** ObjectOwner types */
169
190
  interface AddressOwner {
170
191
  $kind: 'AddressOwner';
@@ -25,7 +25,7 @@ type BatchStatusFaucetResponse = {
25
25
  };
26
26
  type FaucetResponseV2 = {
27
27
  status: 'Success' | FaucetFailure;
28
- coin_sent: FaucetCoinInfo | null;
28
+ coins_sent: FaucetCoinInfo[] | null;
29
29
  };
30
30
  type FaucetFailure = {
31
31
  Failure: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/faucet/faucet.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport class FaucetRateLimitError extends Error {}\n\ntype FaucetCoinInfo = {\n\tamount: number;\n\tid: string;\n\ttransferTxDigest: string;\n};\n\ntype FaucetResponse = {\n\ttransferredGasObjects: FaucetCoinInfo[];\n\terror?: string | null;\n};\n\ntype BatchFaucetResponse = {\n\ttask?: string | null;\n\terror?: string | null;\n};\n\ntype BatchSendStatusType = {\n\tstatus: 'INPROGRESS' | 'SUCCEEDED' | 'DISCARDED';\n\ttransferred_gas_objects: { sent: FaucetCoinInfo[] };\n};\n\ntype BatchStatusFaucetResponse = {\n\tstatus: BatchSendStatusType;\n\terror?: string | null;\n};\n\ntype FaucetResponseV2 = {\n\tstatus: 'Success' | FaucetFailure;\n\tcoin_sent: FaucetCoinInfo | null;\n};\n\ntype FaucetFailure = {\n\tFailure: {\n\t\tinternal: string;\n\t};\n};\n\ntype FaucetRequest = {\n\thost: string;\n\tpath: string;\n\tbody?: Record<string, any>;\n\theaders?: HeadersInit;\n\tmethod: 'GET' | 'POST';\n};\n\nasync function faucetRequest<T>({ host, path, body, headers, method }: FaucetRequest): Promise<T> {\n\tconst endpoint = new URL(path, host).toString();\n\tconst res = await fetch(endpoint, {\n\t\tmethod,\n\t\tbody: body ? JSON.stringify(body) : undefined,\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(headers || {}),\n\t\t},\n\t});\n\n\tif (res.status === 429) {\n\t\tthrow new FaucetRateLimitError(\n\t\t\t`Too many requests from this client have been sent to the faucet. Please retry later`,\n\t\t);\n\t}\n\n\ttry {\n\t\tconst parsed = await res.json();\n\t\treturn parsed as T;\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Encountered error when parsing response from faucet, error: ${e}, status ${res.status}, response ${res}`,\n\t\t);\n\t}\n}\n\n/**\n * @deprecated(\"Use requestSuiFromFaucetV2 instead\")\n */\nexport async function requestSuiFromFaucetV0(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}): Promise<FaucetResponse> {\n\tconst response = await faucetRequest<FaucetResponse>({\n\t\thost: input.host,\n\t\tpath: '/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n\n\tif (response.error) {\n\t\tthrow new Error(`Faucet request failed: ${response.error}`);\n\t}\n\n\treturn response;\n}\n\n/**\n * @deprecated(\"Use requestSuiFromFaucetV2 instead\")\n */\nexport async function requestSuiFromFaucetV1(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}): Promise<BatchFaucetResponse> {\n\tconst response = await faucetRequest<BatchFaucetResponse>({\n\t\thost: input.host,\n\t\tpath: '/v1/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n\n\tif (response.error) {\n\t\tthrow new Error(`Faucet request failed: ${response.error}`);\n\t}\n\n\treturn response;\n}\n\nexport async function requestSuiFromFaucetV2(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}) {\n\tconst response = await faucetRequest<FaucetResponseV2>({\n\t\thost: input.host,\n\t\tpath: '/v2/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n\n\tif (response.status !== 'Success') {\n\t\tthrow new Error(`Faucet request failed: ${response.status.Failure.internal}`);\n\t}\n\n\treturn response;\n}\n\n/**\n * @deprecated(\"Use requestSuiFromFaucetV2 which returns directly a success or failure status\")\n */\nexport async function getFaucetRequestStatus(input: {\n\thost: string;\n\ttaskId: string;\n\theaders?: HeadersInit;\n}) {\n\tconst response = await faucetRequest<BatchStatusFaucetResponse>({\n\t\thost: input.host,\n\t\tpath: `/v1/status/${input.taskId}`,\n\t\theaders: input.headers,\n\t\tmethod: 'GET',\n\t});\n\n\tif (response.error) {\n\t\tthrow new Error(`Faucet request failed: ${response.error}`);\n\t}\n\n\treturn response;\n}\n\nexport function getFaucetHost(network: 'testnet' | 'devnet' | 'localnet') {\n\tswitch (network) {\n\t\tcase 'testnet':\n\t\t\treturn 'https://faucet.testnet.sui.io';\n\t\tcase 'devnet':\n\t\t\treturn 'https://faucet.devnet.sui.io';\n\t\tcase 'localnet':\n\t\t\treturn 'http://127.0.0.1:9123';\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown network: ${network}`);\n\t}\n}\n"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport class FaucetRateLimitError extends Error {}\n\ntype FaucetCoinInfo = {\n\tamount: number;\n\tid: string;\n\ttransferTxDigest: string;\n};\n\ntype FaucetResponse = {\n\ttransferredGasObjects: FaucetCoinInfo[];\n\terror?: string | null;\n};\n\ntype BatchFaucetResponse = {\n\ttask?: string | null;\n\terror?: string | null;\n};\n\ntype BatchSendStatusType = {\n\tstatus: 'INPROGRESS' | 'SUCCEEDED' | 'DISCARDED';\n\ttransferred_gas_objects: { sent: FaucetCoinInfo[] };\n};\n\ntype BatchStatusFaucetResponse = {\n\tstatus: BatchSendStatusType;\n\terror?: string | null;\n};\n\ntype FaucetResponseV2 = {\n\tstatus: 'Success' | FaucetFailure;\n\tcoins_sent: FaucetCoinInfo[] | null;\n};\n\ntype FaucetFailure = {\n\tFailure: {\n\t\tinternal: string;\n\t};\n};\n\ntype FaucetRequest = {\n\thost: string;\n\tpath: string;\n\tbody?: Record<string, any>;\n\theaders?: HeadersInit;\n\tmethod: 'GET' | 'POST';\n};\n\nasync function faucetRequest<T>({ host, path, body, headers, method }: FaucetRequest): Promise<T> {\n\tconst endpoint = new URL(path, host).toString();\n\tconst res = await fetch(endpoint, {\n\t\tmethod,\n\t\tbody: body ? JSON.stringify(body) : undefined,\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(headers || {}),\n\t\t},\n\t});\n\n\tif (res.status === 429) {\n\t\tthrow new FaucetRateLimitError(\n\t\t\t`Too many requests from this client have been sent to the faucet. Please retry later`,\n\t\t);\n\t}\n\n\ttry {\n\t\tconst parsed = await res.json();\n\t\treturn parsed as T;\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Encountered error when parsing response from faucet, error: ${e}, status ${res.status}, response ${res}`,\n\t\t);\n\t}\n}\n\n/**\n * @deprecated(\"Use requestSuiFromFaucetV2 instead\")\n */\nexport async function requestSuiFromFaucetV0(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}): Promise<FaucetResponse> {\n\tconst response = await faucetRequest<FaucetResponse>({\n\t\thost: input.host,\n\t\tpath: '/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n\n\tif (response.error) {\n\t\tthrow new Error(`Faucet request failed: ${response.error}`);\n\t}\n\n\treturn response;\n}\n\n/**\n * @deprecated(\"Use requestSuiFromFaucetV2 instead\")\n */\nexport async function requestSuiFromFaucetV1(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}): Promise<BatchFaucetResponse> {\n\tconst response = await faucetRequest<BatchFaucetResponse>({\n\t\thost: input.host,\n\t\tpath: '/v1/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n\n\tif (response.error) {\n\t\tthrow new Error(`Faucet request failed: ${response.error}`);\n\t}\n\n\treturn response;\n}\n\nexport async function requestSuiFromFaucetV2(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}) {\n\tconst response = await faucetRequest<FaucetResponseV2>({\n\t\thost: input.host,\n\t\tpath: '/v2/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n\n\tif (response.status !== 'Success') {\n\t\tthrow new Error(`Faucet request failed: ${response.status.Failure.internal}`);\n\t}\n\n\treturn response;\n}\n\n/**\n * @deprecated(\"Use requestSuiFromFaucetV2 which returns directly a success or failure status\")\n */\nexport async function getFaucetRequestStatus(input: {\n\thost: string;\n\ttaskId: string;\n\theaders?: HeadersInit;\n}) {\n\tconst response = await faucetRequest<BatchStatusFaucetResponse>({\n\t\thost: input.host,\n\t\tpath: `/v1/status/${input.taskId}`,\n\t\theaders: input.headers,\n\t\tmethod: 'GET',\n\t});\n\n\tif (response.error) {\n\t\tthrow new Error(`Faucet request failed: ${response.error}`);\n\t}\n\n\treturn response;\n}\n\nexport function getFaucetHost(network: 'testnet' | 'devnet' | 'localnet') {\n\tswitch (network) {\n\t\tcase 'testnet':\n\t\t\treturn 'https://faucet.testnet.sui.io';\n\t\tcase 'devnet':\n\t\t\treturn 'https://faucet.devnet.sui.io';\n\t\tcase 'localnet':\n\t\t\treturn 'http://127.0.0.1:9123';\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown network: ${network}`);\n\t}\n}\n"],
5
5
  "mappings": "AAGO,MAAM,6BAA6B,MAAM;AAAC;AA+CjD,eAAe,cAAiB,EAAE,MAAM,MAAM,MAAM,SAAS,OAAO,GAA8B;AACjG,QAAM,WAAW,IAAI,IAAI,MAAM,IAAI,EAAE,SAAS;AAC9C,QAAM,MAAM,MAAM,MAAM,UAAU;AAAA,IACjC;AAAA,IACA,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,IACpC,SAAS;AAAA,MACR,gBAAgB;AAAA,MAChB,GAAI,WAAW,CAAC;AAAA,IACjB;AAAA,EACD,CAAC;AAED,MAAI,IAAI,WAAW,KAAK;AACvB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,MAAI;AACH,UAAM,SAAS,MAAM,IAAI,KAAK;AAC9B,WAAO;AAAA,EACR,SAAS,GAAG;AACX,UAAM,IAAI;AAAA,MACT,+DAA+D,CAAC,YAAY,IAAI,MAAM,cAAc,GAAG;AAAA,IACxG;AAAA,EACD;AACD;AAKA,eAAsB,uBAAuB,OAIjB;AAC3B,QAAM,WAAW,MAAM,cAA8B;AAAA,IACpD,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AAED,MAAI,SAAS,OAAO;AACnB,UAAM,IAAI,MAAM,0BAA0B,SAAS,KAAK,EAAE;AAAA,EAC3D;AAEA,SAAO;AACR;AAKA,eAAsB,uBAAuB,OAIZ;AAChC,QAAM,WAAW,MAAM,cAAmC;AAAA,IACzD,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AAED,MAAI,SAAS,OAAO;AACnB,UAAM,IAAI,MAAM,0BAA0B,SAAS,KAAK,EAAE;AAAA,EAC3D;AAEA,SAAO;AACR;AAEA,eAAsB,uBAAuB,OAI1C;AACF,QAAM,WAAW,MAAM,cAAgC;AAAA,IACtD,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AAED,MAAI,SAAS,WAAW,WAAW;AAClC,UAAM,IAAI,MAAM,0BAA0B,SAAS,OAAO,QAAQ,QAAQ,EAAE;AAAA,EAC7E;AAEA,SAAO;AACR;AAKA,eAAsB,uBAAuB,OAI1C;AACF,QAAM,WAAW,MAAM,cAAyC;AAAA,IAC/D,MAAM,MAAM;AAAA,IACZ,MAAM,cAAc,MAAM,MAAM;AAAA,IAChC,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AAED,MAAI,SAAS,OAAO;AACnB,UAAM,IAAI,MAAM,0BAA0B,SAAS,KAAK,EAAE;AAAA,EAC3D;AAEA,SAAO;AACR;AAEO,SAAS,cAAc,SAA4C;AACzE,UAAQ,SAAS;AAAA,IAChB,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR;AACC,YAAM,IAAI,MAAM,oBAAoB,OAAO,EAAE;AAAA,EAC/C;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,11 +1,16 @@
1
1
  import type { TypedDocumentNode } from '@graphql-typed-document-node/core';
2
2
  import type { TadaDocumentNode } from 'gql.tada';
3
3
  import type { DocumentNode } from 'graphql';
4
- export type GraphQLDocument<Result = Record<string, unknown>, Variables = Record<string, unknown>> = string | DocumentNode | TypedDocumentNode<Result, Variables> | TadaDocumentNode<Result, Variables>;
4
+ import { Experimental_BaseClient } from '../experimental/index.js';
5
+ import type { Experimental_SuiClientTypes } from '../experimental/index.js';
6
+ import { GraphQLTransport } from '../experimental/transports/graphql.js';
7
+ import type { TypedDocumentString } from './generated/queries.js';
8
+ export type GraphQLDocument<Result = Record<string, unknown>, Variables = Record<string, unknown>> = string | DocumentNode | TypedDocumentString<Result, Variables> | TypedDocumentNode<Result, Variables> | TadaDocumentNode<Result, Variables>;
5
9
  export type GraphQLQueryOptions<Result = Record<string, unknown>, Variables = Record<string, unknown>> = {
6
10
  query: GraphQLDocument<Result, Variables>;
7
11
  operationName?: string;
8
12
  extensions?: Record<string, unknown>;
13
+ signal?: AbortSignal;
9
14
  } & (Variables extends {
10
15
  [key: string]: never;
11
16
  } ? {
@@ -31,12 +36,14 @@ export interface SuiGraphQLClientOptions<Queries extends Record<string, GraphQLD
31
36
  fetch?: typeof fetch;
32
37
  headers?: Record<string, string>;
33
38
  queries?: Queries;
39
+ network?: Experimental_SuiClientTypes.Network;
34
40
  }
35
41
  export declare class SuiGraphQLRequestError extends Error {
36
42
  }
37
- export declare class SuiGraphQLClient<Queries extends Record<string, GraphQLDocument> = {}> {
43
+ export declare class SuiGraphQLClient<Queries extends Record<string, GraphQLDocument> = {}> extends Experimental_BaseClient {
38
44
  #private;
39
- constructor({ url, fetch: fetchFn, headers, queries, }: SuiGraphQLClientOptions<Queries>);
45
+ core: GraphQLTransport;
46
+ constructor({ url, fetch: fetchFn, headers, queries, network, }: SuiGraphQLClientOptions<Queries>);
40
47
  query<Result = Record<string, unknown>, Variables = Record<string, unknown>>(options: GraphQLQueryOptions<Result, Variables>): Promise<GraphQLQueryResult<Result>>;
41
48
  execute<const Query extends Extract<keyof Queries, string>, Result = Queries[Query] extends GraphQLDocument<infer R, unknown> ? R : Record<string, unknown>, Variables = Queries[Query] extends GraphQLDocument<unknown, infer V> ? V : Record<string, unknown>>(query: Query, options: Omit<GraphQLQueryOptions<Result, Variables>, 'query'>): Promise<GraphQLQueryResult<Result>>;
42
49
  }
@@ -7,19 +7,26 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
7
7
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
8
  var _url, _queries, _headers, _fetch;
9
9
  import { print } from "graphql";
10
+ import { Experimental_BaseClient } from "../experimental/index.js";
11
+ import { GraphQLTransport } from "../experimental/transports/graphql.js";
10
12
  class SuiGraphQLRequestError extends Error {
11
13
  }
12
- class SuiGraphQLClient {
14
+ class SuiGraphQLClient extends Experimental_BaseClient {
13
15
  constructor({
14
16
  url,
15
17
  fetch: fetchFn = fetch,
16
18
  headers = {},
17
- queries = {}
19
+ queries = {},
20
+ network = "unknown"
18
21
  }) {
22
+ super({
23
+ network
24
+ });
19
25
  __privateAdd(this, _url);
20
26
  __privateAdd(this, _queries);
21
27
  __privateAdd(this, _headers);
22
28
  __privateAdd(this, _fetch);
29
+ this.core = new GraphQLTransport(this);
23
30
  __privateSet(this, _url, url);
24
31
  __privateSet(this, _queries, queries);
25
32
  __privateSet(this, _headers, headers);
@@ -33,11 +40,12 @@ class SuiGraphQLClient {
33
40
  ...__privateGet(this, _headers)
34
41
  },
35
42
  body: JSON.stringify({
36
- query: typeof options.query === "string" ? String(options.query) : print(options.query),
43
+ query: typeof options.query === "string" || options.query instanceof String ? String(options.query) : print(options.query),
37
44
  variables: options.variables,
38
45
  extensions: options.extensions,
39
46
  operationName: options.operationName
40
- })
47
+ }),
48
+ signal: options.signal
41
49
  });
42
50
  if (!res.ok) {
43
51
  throw new SuiGraphQLRequestError(`GraphQL request failed: ${res.statusText} (${res.status})`);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/graphql/client.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport type { TadaDocumentNode } from 'gql.tada';\nimport type { DocumentNode } from 'graphql';\nimport { print } from 'graphql';\n\nexport type GraphQLDocument<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> =\n\t| string\n\t| DocumentNode\n\t| TypedDocumentNode<Result, Variables>\n\t| TadaDocumentNode<Result, Variables>;\n\nexport type GraphQLQueryOptions<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> = {\n\tquery: GraphQLDocument<Result, Variables>;\n\toperationName?: string;\n\textensions?: Record<string, unknown>;\n} & (Variables extends { [key: string]: never }\n\t? { variables?: Variables }\n\t: {\n\t\t\tvariables: Variables;\n\t\t});\n\nexport type GraphQLQueryResult<Result = Record<string, unknown>> = {\n\tdata?: Result;\n\terrors?: GraphQLResponseErrors;\n\textensions?: Record<string, unknown>;\n};\n\nexport type GraphQLResponseErrors = Array<{\n\tmessage: string;\n\tlocations?: { line: number; column: number }[];\n\tpath?: (string | number)[];\n}>;\n\nexport interface SuiGraphQLClientOptions<Queries extends Record<string, GraphQLDocument>> {\n\turl: string;\n\tfetch?: typeof fetch;\n\theaders?: Record<string, string>;\n\tqueries?: Queries;\n}\n\nexport class SuiGraphQLRequestError extends Error {}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class SuiGraphQLClient<Queries extends Record<string, GraphQLDocument> = {}> {\n\t#url: string;\n\t#queries: Queries;\n\t#headers: Record<string, string>;\n\t#fetch: typeof fetch;\n\n\tconstructor({\n\t\turl,\n\t\tfetch: fetchFn = fetch,\n\t\theaders = {},\n\t\tqueries = {} as Queries,\n\t}: SuiGraphQLClientOptions<Queries>) {\n\t\tthis.#url = url;\n\t\tthis.#queries = queries;\n\t\tthis.#headers = headers;\n\t\tthis.#fetch = (...args) => fetchFn(...args);\n\t}\n\n\tasync query<Result = Record<string, unknown>, Variables = Record<string, unknown>>(\n\t\toptions: GraphQLQueryOptions<Result, Variables>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\tconst res = await this.#fetch(this.#url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...this.#headers,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tquery: typeof options.query === 'string' ? String(options.query) : print(options.query),\n\t\t\t\tvariables: options.variables,\n\t\t\t\textensions: options.extensions,\n\t\t\t\toperationName: options.operationName,\n\t\t\t}),\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tthrow new SuiGraphQLRequestError(`GraphQL request failed: ${res.statusText} (${res.status})`);\n\t\t}\n\n\t\treturn await res.json();\n\t}\n\n\tasync execute<\n\t\tconst Query extends Extract<keyof Queries, string>,\n\t\tResult = Queries[Query] extends GraphQLDocument<infer R, unknown> ? R : Record<string, unknown>,\n\t\tVariables = Queries[Query] extends GraphQLDocument<unknown, infer V>\n\t\t\t? V\n\t\t\t: Record<string, unknown>,\n\t>(\n\t\tquery: Query,\n\t\toptions: Omit<GraphQLQueryOptions<Result, Variables>, 'query'>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\treturn this.query({\n\t\t\t...(options as { variables: Record<string, unknown> }),\n\t\t\tquery: this.#queries[query]!,\n\t\t}) as Promise<GraphQLQueryResult<Result>>;\n\t}\n}\n"],
5
- "mappings": ";;;;;;;AAAA;AAMA,SAAS,aAAa;AA2Cf,MAAM,+BAA+B,MAAM;AAAC;AAG5C,MAAM,iBAAuE;AAAA,EAMnF,YAAY;AAAA,IACX;AAAA,IACA,OAAO,UAAU;AAAA,IACjB,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,EACZ,GAAqC;AAVrC;AACA;AACA;AACA;AAQC,uBAAK,MAAO;AACZ,uBAAK,UAAW;AAChB,uBAAK,UAAW;AAChB,uBAAK,QAAS,IAAI,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEA,MAAM,MACL,SACsC;AACtC,UAAM,MAAM,MAAM,mBAAK,QAAL,WAAY,mBAAK,OAAM;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,GAAG,mBAAK;AAAA,MACT;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACpB,OAAO,OAAO,QAAQ,UAAU,WAAW,OAAO,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK;AAAA,QACtF,WAAW,QAAQ;AAAA,QACnB,YAAY,QAAQ;AAAA,QACpB,eAAe,QAAQ;AAAA,MACxB,CAAC;AAAA,IACF;AAEA,QAAI,CAAC,IAAI,IAAI;AACZ,YAAM,IAAI,uBAAuB,2BAA2B,IAAI,UAAU,KAAK,IAAI,MAAM,GAAG;AAAA,IAC7F;AAEA,WAAO,MAAM,IAAI,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,QAOL,OACA,SACsC;AACtC,WAAO,KAAK,MAAM;AAAA,MACjB,GAAI;AAAA,MACJ,OAAO,mBAAK,UAAS,KAAK;AAAA,IAC3B,CAAC;AAAA,EACF;AACD;AAxDC;AACA;AACA;AACA;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport type { TadaDocumentNode } from 'gql.tada';\nimport type { DocumentNode } from 'graphql';\nimport { print } from 'graphql';\nimport { Experimental_BaseClient } from '../experimental/index.js';\nimport type { Experimental_SuiClientTypes } from '../experimental/index.js';\nimport { GraphQLTransport } from '../experimental/transports/graphql.js';\nimport type { TypedDocumentString } from './generated/queries.js';\n\nexport type GraphQLDocument<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> =\n\t| string\n\t| DocumentNode\n\t| TypedDocumentString<Result, Variables>\n\t| TypedDocumentNode<Result, Variables>\n\t| TadaDocumentNode<Result, Variables>;\n\nexport type GraphQLQueryOptions<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> = {\n\tquery: GraphQLDocument<Result, Variables>;\n\toperationName?: string;\n\textensions?: Record<string, unknown>;\n\tsignal?: AbortSignal;\n} & (Variables extends { [key: string]: never }\n\t? { variables?: Variables }\n\t: {\n\t\t\tvariables: Variables;\n\t\t});\n\nexport type GraphQLQueryResult<Result = Record<string, unknown>> = {\n\tdata?: Result;\n\terrors?: GraphQLResponseErrors;\n\textensions?: Record<string, unknown>;\n};\n\nexport type GraphQLResponseErrors = Array<{\n\tmessage: string;\n\tlocations?: { line: number; column: number }[];\n\tpath?: (string | number)[];\n}>;\n\nexport interface SuiGraphQLClientOptions<Queries extends Record<string, GraphQLDocument>> {\n\turl: string;\n\tfetch?: typeof fetch;\n\theaders?: Record<string, string>;\n\tqueries?: Queries;\n\tnetwork?: Experimental_SuiClientTypes.Network;\n}\n\nexport class SuiGraphQLRequestError extends Error {}\n\nexport class SuiGraphQLClient<\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tQueries extends Record<string, GraphQLDocument> = {},\n> extends Experimental_BaseClient {\n\t#url: string;\n\t#queries: Queries;\n\t#headers: Record<string, string>;\n\t#fetch: typeof fetch;\n\tcore: GraphQLTransport = new GraphQLTransport(this);\n\n\tconstructor({\n\t\turl,\n\t\tfetch: fetchFn = fetch,\n\t\theaders = {},\n\t\tqueries = {} as Queries,\n\t\tnetwork = 'unknown',\n\t}: SuiGraphQLClientOptions<Queries>) {\n\t\tsuper({\n\t\t\tnetwork,\n\t\t});\n\t\tthis.#url = url;\n\t\tthis.#queries = queries;\n\t\tthis.#headers = headers;\n\t\tthis.#fetch = (...args) => fetchFn(...args);\n\t}\n\n\tasync query<Result = Record<string, unknown>, Variables = Record<string, unknown>>(\n\t\toptions: GraphQLQueryOptions<Result, Variables>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\tconst res = await this.#fetch(this.#url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...this.#headers,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tquery:\n\t\t\t\t\ttypeof options.query === 'string' || options.query instanceof String\n\t\t\t\t\t\t? String(options.query)\n\t\t\t\t\t\t: print(options.query),\n\t\t\t\tvariables: options.variables,\n\t\t\t\textensions: options.extensions,\n\t\t\t\toperationName: options.operationName,\n\t\t\t}),\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tthrow new SuiGraphQLRequestError(`GraphQL request failed: ${res.statusText} (${res.status})`);\n\t\t}\n\n\t\treturn await res.json();\n\t}\n\n\tasync execute<\n\t\tconst Query extends Extract<keyof Queries, string>,\n\t\tResult = Queries[Query] extends GraphQLDocument<infer R, unknown> ? R : Record<string, unknown>,\n\t\tVariables = Queries[Query] extends GraphQLDocument<unknown, infer V>\n\t\t\t? V\n\t\t\t: Record<string, unknown>,\n\t>(\n\t\tquery: Query,\n\t\toptions: Omit<GraphQLQueryOptions<Result, Variables>, 'query'>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\treturn this.query({\n\t\t\t...(options as { variables: Record<string, unknown> }),\n\t\t\tquery: this.#queries[query]!,\n\t\t}) as Promise<GraphQLQueryResult<Result>>;\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;AAAA;AAMA,SAAS,aAAa;AACtB,SAAS,+BAA+B;AAExC,SAAS,wBAAwB;AA+C1B,MAAM,+BAA+B,MAAM;AAAC;AAE5C,MAAM,yBAGH,wBAAwB;AAAA,EAOjC,YAAY;AAAA,IACX;AAAA,IACA,OAAO,UAAU;AAAA,IACjB,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,IACX,UAAU;AAAA,EACX,GAAqC;AACpC,UAAM;AAAA,MACL;AAAA,IACD,CAAC;AAfF;AACA;AACA;AACA;AACA,gBAAyB,IAAI,iBAAiB,IAAI;AAYjD,uBAAK,MAAO;AACZ,uBAAK,UAAW;AAChB,uBAAK,UAAW;AAChB,uBAAK,QAAS,IAAI,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEA,MAAM,MACL,SACsC;AACtC,UAAM,MAAM,MAAM,mBAAK,QAAL,WAAY,mBAAK,OAAM;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,GAAG,mBAAK;AAAA,MACT;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACpB,OACC,OAAO,QAAQ,UAAU,YAAY,QAAQ,iBAAiB,SAC3D,OAAO,QAAQ,KAAK,IACpB,MAAM,QAAQ,KAAK;AAAA,QACvB,WAAW,QAAQ;AAAA,QACnB,YAAY,QAAQ;AAAA,QACpB,eAAe,QAAQ;AAAA,MACxB,CAAC;AAAA,MACD,QAAQ,QAAQ;AAAA,IACjB;AAEA,QAAI,CAAC,IAAI,IAAI;AACZ,YAAM,IAAI,uBAAuB,2BAA2B,IAAI,UAAU,KAAK,IAAI,MAAM,GAAG;AAAA,IAC7F;AAEA,WAAO,MAAM,IAAI,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,QAOL,OACA,SACsC;AACtC,WAAO,KAAK,MAAM;AAAA,MACjB,GAAI;AAAA,MACJ,OAAO,mBAAK,UAAS,KAAK;AAAA,IAC3B,CAAC;AAAA,EACF;AACD;AAjEC;AACA;AACA;AACA;",
6
6
  "names": []
7
7
  }