@iota/graphql-transport 0.1.2 → 0.2.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.
- package/CHANGELOG.md +13 -0
- package/dist/cjs/generated/queries.d.ts +973 -1395
- package/dist/cjs/generated/queries.js +119 -714
- package/dist/cjs/generated/queries.js.map +2 -2
- package/dist/cjs/mappers/bcs.js.map +1 -1
- package/dist/cjs/mappers/move.js.map +2 -2
- package/dist/cjs/mappers/transaction-block.d.ts +1 -0
- package/dist/cjs/mappers/transaction-block.js +316 -146
- package/dist/cjs/mappers/transaction-block.js.map +2 -2
- package/dist/cjs/mappers/validator.js +4 -6
- package/dist/cjs/mappers/validator.js.map +2 -2
- package/dist/cjs/methods.js +25 -30
- package/dist/cjs/methods.js.map +2 -2
- package/dist/cjs/transport.d.ts +1 -1
- package/dist/cjs/transport.js +18 -33
- package/dist/cjs/transport.js.map +2 -2
- package/dist/esm/generated/queries.d.ts +973 -1395
- package/dist/esm/generated/queries.js +119 -714
- package/dist/esm/generated/queries.js.map +2 -2
- package/dist/esm/mappers/bcs.js.map +1 -1
- package/dist/esm/mappers/move.js.map +2 -2
- package/dist/esm/mappers/transaction-block.d.ts +1 -0
- package/dist/esm/mappers/transaction-block.js +318 -148
- package/dist/esm/mappers/transaction-block.js.map +2 -2
- package/dist/esm/mappers/validator.js +4 -6
- package/dist/esm/mappers/validator.js.map +2 -2
- package/dist/esm/methods.js +26 -31
- package/dist/esm/methods.js.map +2 -2
- package/dist/esm/transport.d.ts +1 -1
- package/dist/esm/transport.js +17 -32
- package/dist/esm/transport.js.map +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -16
package/dist/cjs/methods.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/methods.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64, toB58 } from '@iota/bcs';\nimport type {\n MoveValue,\n ProtocolConfigValue,\n IotaArgument,\n IotaClient,\n IotaMoveNormalizedModule,\n} from '@iota/iota-sdk/client';\nimport { TransactionBlock } from '@iota/iota-sdk/transactions';\nimport { normalizeStructTag, normalizeIotaAddress, parseStructTag } from '@iota/iota-sdk/utils';\n\nimport type {\n ObjectFilter,\n QueryEventsQueryVariables,\n Rpc_Checkpoint_FieldsFragment,\n Rpc_Transaction_FieldsFragment,\n} from './generated/queries.js';\nimport {\n DevInspectTransactionBlockDocument,\n DryRunTransactionBlockDocument,\n ExecuteTransactionBlockDocument,\n GetAllBalancesDocument,\n GetBalanceDocument,\n GetChainIdentifierDocument,\n GetCheckpointDocument,\n GetCheckpointsDocument,\n GetCoinMetadataDocument,\n GetCoinsDocument,\n GetCommitteeInfoDocument,\n GetCurrentEpochDocument,\n GetDynamicFieldObjectDocument,\n GetDynamicFieldsDocument,\n GetLatestCheckpointSequenceNumberDocument,\n GetLatestIotaSystemStateDocument,\n GetMoveFunctionArgTypesDocument,\n GetNormalizedMoveFunctionDocument,\n GetNormalizedMoveModuleDocument,\n GetNormalizedMoveModulesByPackageDocument,\n GetNormalizedMoveStructDocument,\n GetObjectDocument,\n GetOwnedObjectsDocument,\n GetProtocolConfigDocument,\n GetReferenceGasPriceDocument,\n GetStakesByIdsDocument,\n GetStakesDocument,\n GetTotalSupplyDocument,\n GetTotalTransactionBlocksDocument,\n GetTransactionBlockDocument,\n GetTypeLayoutDocument,\n GetValidatorsApyDocument,\n MultiGetObjectsDocument,\n MultiGetTransactionBlocksDocument,\n PaginateCheckpointTransactionBlocksDocument,\n PaginateEpochValidatorsDocument,\n PaginateMoveModuleListsDocument,\n PaginateTransactionBlockListsDocument,\n QueryEventsDocument,\n QueryTransactionBlocksDocument,\n TransactionBlockKindInput,\n TryGetPastObjectDocument,\n} from './generated/queries.js';\nimport { mapJsonToBcs } from './mappers/bcs.js';\nimport { mapGraphQLCheckpointToRpcCheckpoint } from './mappers/checkpint.js';\nimport {\n mapNormalizedMoveFunction,\n mapNormalizedMoveModule,\n mapNormalizedMoveStruct,\n moveDataToRpcContent,\n} from './mappers/move.js';\nimport { mapGraphQLMoveObjectToRpcObject, mapGraphQLObjectToRpcObject } from './mappers/object.js';\nimport { mapGraphQLStakeToRpcStake } from './mappers/stakes.js';\nimport { mapGraphQLTransactionBlockToRpcTransactionBlock } from './mappers/transaction-block.js';\nimport { isNumericString, toShortTypeString } from './mappers/util.js';\nimport { mapGraphQlValidatorToRpcValidator } from './mappers/validator.js';\nimport type { IotaClientGraphQLTransport } from './transport.js';\n\ninterface ResponseTypes {\n getRpcApiVersion: {\n info: { version?: string };\n };\n}\n\nexport const RPC_METHODS: {\n [K in keyof IotaClient as IotaClient[K] extends (...args: any[]) => Promise<any>\n ? K\n : never]?: IotaClient[K] extends (...args: any[]) => infer R\n ? (\n transport: IotaClientGraphQLTransport,\n inputs: any[],\n ) => K extends keyof ResponseTypes ? Promise<ResponseTypes[K]> : R\n : never;\n} = {\n async getRpcApiVersion(transport) {\n const res = await transport.graphqlRequest({\n query: 'query { __typename }',\n variables: {},\n });\n\n if (!res.ok) {\n throw new Error('Failed to fetch');\n }\n\n return {\n info: {\n version: res.headers.get('x-iota-rpc-version') ?? undefined,\n },\n };\n },\n\n async getCoins(transport, [owner, coinType, cursor, limit]) {\n const { nodes: coins, pageInfo } = await transport.graphqlQuery(\n {\n query: GetCoinsDocument,\n variables: {\n owner,\n type: coinType,\n cursor: cursor,\n first: limit,\n },\n },\n (data) => data.address?.coins,\n );\n\n return {\n data: coins.map((coin) => ({\n balance: coin.coinBalance,\n coinObjectId: coin.address,\n coinType: toShortTypeString(\n normalizeStructTag(parseStructTag(coin.contents?.type.repr!).typeParams[0]),\n ),\n digest: coin.digest!,\n previousTransaction: coin.previousTransactionBlock?.digest!,\n version: String(coin.version!),\n })),\n nextCursor: pageInfo.endCursor,\n hasNextPage: pageInfo.hasNextPage,\n };\n },\n\n async getAllCoins(transport, inputs) {\n const { nodes: coins, pageInfo } = await transport.graphqlQuery(\n {\n query: GetCoinsDocument,\n variables: {\n owner: inputs[0],\n cursor: inputs[1],\n first: inputs[2],\n },\n },\n (data) => data.address?.coins,\n );\n\n return {\n data: coins.map((coin) => ({\n balance: coin.coinBalance,\n coinObjectId: coin.address,\n coinType: toShortTypeString(\n normalizeStructTag(parseStructTag(coin.contents?.type.repr!).typeParams[0]),\n ),\n digest: coin.digest!,\n previousTransaction: coin.previousTransactionBlock?.digest!,\n version: String(coin.version!),\n })),\n nextCursor: pageInfo.endCursor,\n hasNextPage: pageInfo.hasNextPage,\n };\n },\n\n async getBalance(transport, inputs) {\n const balance = await transport.graphqlQuery(\n {\n query: GetBalanceDocument,\n variables: {\n owner: inputs[0],\n type: inputs[1],\n },\n },\n (data) => data.address?.balance,\n );\n\n return {\n coinType: toShortTypeString(balance.coinType?.repr!),\n coinObjectCount: balance.coinObjectCount!,\n totalBalance: balance.totalBalance,\n lockedBalance: {},\n };\n },\n\n async getAllBalances(transport, inputs) {\n const balances = await transport.graphqlQuery(\n {\n query: GetAllBalancesDocument,\n variables: {\n owner: inputs[0],\n },\n },\n (data) => data.address?.balances?.nodes,\n );\n\n return balances.map((balance) => ({\n coinType: toShortTypeString(balance.coinType?.repr!),\n coinObjectCount: balance.coinObjectCount!,\n totalBalance: balance.totalBalance,\n lockedBalance: {},\n }));\n },\n async getCoinMetadata(transport, inputs) {\n const metadata = await transport.graphqlQuery(\n {\n query: GetCoinMetadataDocument,\n variables: {\n coinType: inputs[0],\n },\n },\n (data) => data.coinMetadata,\n );\n\n return {\n decimals: metadata.decimals!,\n name: metadata.name!,\n symbol: metadata.symbol!,\n description: metadata.description!,\n iconUrl: metadata.iconUrl,\n id: metadata.address,\n };\n },\n async getTotalSupply(transport, inputs) {\n const metadata = await transport.graphqlQuery(\n {\n query: GetTotalSupplyDocument,\n variables: {\n coinType: inputs[0],\n },\n },\n (data) => data.coinMetadata,\n );\n\n return {\n value: BigInt(metadata.supply!).toString(),\n };\n },\n async getMoveFunctionArgTypes(transport, [pkg, module, fn]) {\n const moveModule = await transport.graphqlQuery(\n {\n query: GetMoveFunctionArgTypesDocument,\n variables: {\n module: module,\n packageId: pkg,\n function: fn,\n },\n },\n (data) => data.object?.asMovePackage?.module?.function?.parameters,\n );\n\n return moveModule.map((parameter) => {\n if (!parameter.signature.body.datatype) {\n return 'Pure';\n }\n\n return {\n Object:\n parameter.signature.ref === '&'\n ? 'ByImmutableReference'\n : parameter.signature.ref === '&mut'\n ? 'ByMutableReference'\n : 'ByValue',\n };\n });\n },\n async getNormalizedMoveFunction(transport, [pkg, module, fn]) {\n const moveFunction = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveFunctionDocument,\n variables: {\n module: module,\n packageId: pkg,\n function: fn,\n },\n },\n (data) => data.object?.asMovePackage?.module?.function,\n );\n\n return mapNormalizedMoveFunction(moveFunction);\n },\n async getNormalizedMoveModulesByPackage(transport, [pkg]) {\n const movePackage = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveModulesByPackageDocument,\n variables: {\n packageId: pkg,\n },\n },\n (data) => data.object?.asMovePackage,\n );\n\n let hasNextPage = movePackage.modules?.pageInfo.hasNextPage ?? false;\n let cursor = movePackage.modules?.pageInfo.endCursor;\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveModulesByPackageDocument,\n variables: {\n packageId: pkg,\n cursor,\n },\n },\n (data) => data.object?.asMovePackage,\n );\n\n movePackage.modules?.nodes.push(...(page.modules?.nodes ?? []));\n hasNextPage = page.modules?.pageInfo.hasNextPage ?? false;\n cursor = page.modules?.pageInfo.endCursor;\n }\n\n const address = toShortTypeString(movePackage.address);\n const modules: Record<string, IotaMoveNormalizedModule> = {};\n\n for (const moveModule of movePackage.modules?.nodes ?? []) {\n let hasMoreFriends = moveModule.friends?.pageInfo.hasNextPage ?? false;\n let hasMoreFunctions = moveModule.functions?.pageInfo.hasNextPage ?? false;\n let hasMoreStructs = moveModule.structs?.pageInfo.hasNextPage ?? false;\n let afterFriends = moveModule.friends?.pageInfo.endCursor;\n let afterFunctions = moveModule.functions?.pageInfo.endCursor;\n let afterStructs = moveModule.structs?.pageInfo.endCursor;\n\n while (hasMoreFriends || hasMoreStructs || hasMoreFunctions) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateMoveModuleListsDocument,\n variables: {\n module: moveModule.name,\n packageId: pkg,\n hasMoreFriends,\n hasMoreFunctions,\n hasMoreStructs,\n afterFriends,\n afterFunctions,\n afterStructs,\n },\n },\n (data) => data.object?.asMovePackage?.module,\n );\n\n moveModule.friends.nodes.push(...(page.friends?.nodes ?? []));\n moveModule.functions?.nodes.push(...(page.functions?.nodes ?? []));\n moveModule.structs?.nodes.push(...(page.structs?.nodes ?? []));\n hasMoreFriends = page.friends?.pageInfo.hasNextPage ?? false;\n hasMoreFunctions = page.functions?.pageInfo.hasNextPage ?? false;\n hasMoreStructs = page.structs?.pageInfo.hasNextPage ?? false;\n afterFriends = page.friends?.pageInfo.endCursor;\n afterFunctions = page.functions?.pageInfo.endCursor;\n afterStructs = page.structs?.pageInfo.endCursor;\n }\n }\n\n movePackage.modules?.nodes.forEach((module) => {\n modules[module.name] = mapNormalizedMoveModule(module, address);\n });\n\n return modules;\n },\n async getNormalizedMoveModule(transport, [pkg, module]) {\n const moveModule = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveModuleDocument,\n variables: {\n module,\n packageId: pkg,\n },\n },\n (data) => data.object?.asMovePackage?.module,\n );\n\n let hasMoreFriends = moveModule.friends?.pageInfo.hasNextPage ?? false;\n let hasMoreFunctions = moveModule.functions?.pageInfo.hasNextPage ?? false;\n let hasMoreStructs = moveModule.structs?.pageInfo.hasNextPage ?? false;\n let afterFriends = moveModule.friends?.pageInfo.endCursor;\n let afterFunctions = moveModule.functions?.pageInfo.endCursor;\n let afterStructs = moveModule.structs?.pageInfo.endCursor;\n\n while (hasMoreFriends || hasMoreStructs || hasMoreFunctions) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateMoveModuleListsDocument,\n variables: {\n module,\n packageId: pkg,\n hasMoreFriends,\n hasMoreFunctions,\n hasMoreStructs,\n afterFriends,\n afterFunctions,\n afterStructs,\n },\n },\n (data) => data.object?.asMovePackage?.module,\n );\n\n moveModule.friends.nodes.push(...(page.friends?.nodes ?? []));\n moveModule.functions?.nodes.push(...(page.functions?.nodes ?? []));\n moveModule.structs?.nodes.push(...(page.structs?.nodes ?? []));\n hasMoreFriends = page.friends?.pageInfo.hasNextPage ?? false;\n hasMoreFunctions = page.functions?.pageInfo.hasNextPage ?? false;\n hasMoreStructs = page.structs?.pageInfo.hasNextPage ?? false;\n afterFriends = page.friends?.pageInfo.endCursor;\n afterFunctions = page.functions?.pageInfo.endCursor;\n afterStructs = page.structs?.pageInfo.endCursor;\n }\n\n return mapNormalizedMoveModule(moveModule, normalizeIotaAddress(pkg));\n },\n async getNormalizedMoveStruct(transport, [pkg, module, struct]) {\n const moveStruct = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveStructDocument,\n variables: {\n packageId: pkg,\n module,\n struct,\n },\n },\n (data) => data.object?.asMovePackage?.module?.struct,\n );\n\n return mapNormalizedMoveStruct(moveStruct);\n },\n async getOwnedObjects(transport, [owner, { filter: inputFilter, options }, cursor, limit]) {\n let filter: ObjectFilter | undefined;\n let typeFilter: string | undefined;\n\n if (inputFilter) {\n if ('Package' in inputFilter) {\n typeFilter = inputFilter.Package;\n } else if ('MoveModule' in inputFilter) {\n typeFilter = `${inputFilter.MoveModule.package}::${inputFilter.MoveModule.module}`;\n } else if ('StructType' in inputFilter) {\n typeFilter = inputFilter.StructType;\n }\n\n filter = {\n objectIds:\n 'ObjectIds' in inputFilter\n ? inputFilter.ObjectIds\n : 'ObjectId' in inputFilter\n ? [inputFilter.ObjectId]\n : undefined,\n type: typeFilter,\n owner:\n 'ObjectOwner' in inputFilter\n ? inputFilter.ObjectOwner\n : 'AddressOwner' in inputFilter\n ? inputFilter.AddressOwner\n : undefined,\n };\n const unsupportedFilters = ['MatchAll', 'MatchAny', 'MatchNone', 'Version'];\n\n for (const unsupportedFilter of unsupportedFilters) {\n if (unsupportedFilter in inputFilter) {\n throw new UnsupportedParamError('getOwnedObjects', unsupportedFilter);\n }\n }\n }\n\n const { nodes: objects, pageInfo } = await transport.graphqlQuery(\n {\n query: GetOwnedObjectsDocument,\n variables: {\n owner,\n limit,\n cursor,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n filter,\n },\n },\n (data) => data.address?.objects,\n );\n\n return {\n hasNextPage: pageInfo.hasNextPage,\n nextCursor: pageInfo.endCursor,\n data: objects.map((object) => ({\n data: mapGraphQLMoveObjectToRpcObject(object, options ?? {}),\n })),\n };\n },\n async getObject(transport, [id, options]) {\n const object = await transport.graphqlQuery(\n {\n query: GetObjectDocument,\n variables: {\n id,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n },\n },\n (data) => data.object,\n );\n\n return {\n data: mapGraphQLObjectToRpcObject(object, options ?? {}),\n };\n },\n async tryGetPastObject(transport, [id, version, options]) {\n const data = await transport.graphqlQuery({\n query: TryGetPastObjectDocument,\n variables: {\n id,\n version,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n },\n });\n\n if (!data.current) {\n return {\n details: 'Could not find the referenced object',\n status: 'ObjectNotExists',\n };\n }\n\n if (!data.object) {\n return data.current.version < Number(version)\n ? {\n status: 'VersionTooHigh',\n details: {\n asked_version: String(version),\n latest_version: String(data.current.version),\n object_id: data.current.address,\n },\n }\n : {\n status: 'VersionNotFound',\n details: [data.current.address, String(version)],\n };\n }\n\n return {\n status: 'VersionFound',\n details: mapGraphQLObjectToRpcObject(data.object, options ?? {}),\n };\n },\n async multiGetObjects(transport, [ids, options]) {\n const objects = await transport.graphqlQuery(\n {\n query: MultiGetObjectsDocument,\n variables: {\n ids,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n limit: ids.length,\n },\n },\n (data) => data.objects?.nodes,\n );\n\n return objects.map((object) => ({\n data: mapGraphQLObjectToRpcObject(object, options ?? {}),\n }));\n },\n async queryTransactionBlocks(transport, [{ filter, options }, cursor, limit = 20, descending]) {\n const pagination = descending\n ? {\n last: limit,\n before: cursor,\n }\n : {\n first: limit,\n after: cursor,\n };\n\n const unsupportedFilters = ['FromOrToAddress', 'FromAndToAddress', 'TransactionKindIn'];\n\n if (filter) {\n for (const unsupportedFilter of unsupportedFilters) {\n if (unsupportedFilter in filter) {\n throw new UnsupportedParamError('queryTransactionBlocks', unsupportedFilter);\n }\n }\n }\n\n const { nodes: transactionBlocks, pageInfo } = await transport.graphqlQuery(\n {\n query: QueryTransactionBlocksDocument,\n variables: {\n ...pagination,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n showInput: options?.showInput,\n filter: filter\n ? {\n atCheckpoint:\n 'Checkpoint' in filter\n ? Number.parseInt(filter.Checkpoint)\n : undefined,\n function:\n 'MoveFunction' in filter\n ? `${filter.MoveFunction.package}::${filter.MoveFunction.module}::${filter.MoveFunction.function}`\n : undefined,\n inputObject: 'InputObject' in filter ? filter.InputObject : undefined,\n changedObject:\n 'ChangedObject' in filter ? filter.ChangedObject : undefined,\n signAddress: 'FromAddress' in filter ? filter.FromAddress : undefined,\n recvAddress: 'ToAddress' in filter ? filter.ToAddress : undefined,\n kind:\n 'TransactionKind' in filter\n ? filter.TransactionKind === 'ProgrammableTransaction'\n ? TransactionBlockKindInput.ProgrammableTx\n : TransactionBlockKindInput.SystemTx\n : undefined,\n }\n : {},\n },\n },\n (data) => data.transactionBlocks,\n );\n\n for (const transactionBlock of transactionBlocks) {\n await paginateTransactionBlockLists(transport, transactionBlock);\n }\n\n if (pagination.last) {\n transactionBlocks.reverse();\n }\n\n return {\n hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,\n nextCursor: pagination.last ? pageInfo.startCursor : pageInfo.endCursor,\n data: transactionBlocks.map((transactionBlock) =>\n mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options ?? {}),\n ),\n };\n },\n async getTransactionBlock(transport, [digest, options]) {\n const transactionBlock = await transport.graphqlQuery(\n {\n query: GetTransactionBlockDocument,\n variables: {\n digest,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n showInput: options?.showInput,\n },\n },\n (data) => data.transactionBlock,\n );\n\n await paginateTransactionBlockLists(transport, transactionBlock);\n\n return mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options);\n },\n\n async multiGetTransactionBlocks(transport, [digests, options]) {\n const transactionBlocks = await transport.graphqlQuery(\n {\n query: MultiGetTransactionBlocksDocument,\n variables: {\n digests: digests,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n showInput: options?.showInput,\n limit: digests.length,\n },\n },\n (data) => data.transactionBlocks?.nodes,\n );\n\n for (const transactionBlock of transactionBlocks) {\n await paginateTransactionBlockLists(transport, transactionBlock);\n }\n\n return transactionBlocks.map((transactionBlock) =>\n mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options),\n );\n },\n async getTotalTransactionBlocks(transport): Promise<bigint> {\n return transport.graphqlQuery(\n {\n query: GetTotalTransactionBlocksDocument,\n },\n (data) => BigInt(data.checkpoint?.networkTotalTransactions!),\n );\n },\n async getReferenceGasPrice(transport) {\n const epoch = await transport.graphqlQuery(\n {\n query: GetReferenceGasPriceDocument,\n variables: {},\n },\n (data) => data.epoch,\n );\n\n return BigInt(epoch.referenceGasPrice);\n },\n async getStakes(transport, [owner]) {\n const stakes = await transport.graphqlQuery(\n {\n query: GetStakesDocument,\n variables: {\n owner,\n },\n },\n (data) => data.address?.stakedIotas?.nodes,\n );\n\n return mapGraphQLStakeToRpcStake(stakes);\n },\n async getStakesByIds(transport, [stakedIotaIds]) {\n const stakes = await transport.graphqlQuery(\n {\n query: GetStakesByIdsDocument,\n variables: {\n ids: stakedIotaIds,\n },\n },\n (data) =>\n data.objects?.nodes\n .map((node) => node?.asMoveObject?.asStakedIota!)\n .filter(Boolean),\n );\n\n return mapGraphQLStakeToRpcStake(stakes);\n },\n async getLatestIotaSystemState(transport) {\n const systemState = await transport.graphqlQuery(\n {\n query: GetLatestIotaSystemStateDocument,\n },\n (data) => data.epoch,\n );\n\n let hasMoreValidators =\n systemState.validatorSet?.activeValidators?.pageInfo.hasNextPage ?? false;\n let afterValidators = systemState.validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasMoreValidators) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateEpochValidatorsDocument,\n variables: {\n id: systemState.epochId,\n after: afterValidators,\n },\n },\n (data) => data.epoch,\n );\n\n systemState.validatorSet?.activeValidators?.nodes.push(\n ...(page.validatorSet?.activeValidators?.nodes ?? []),\n );\n hasMoreValidators = page.validatorSet?.activeValidators?.pageInfo.hasNextPage ?? false;\n afterValidators = page.validatorSet?.activeValidators?.pageInfo.endCursor;\n }\n\n return {\n activeValidators: systemState.validatorSet?.activeValidators?.nodes.map(\n mapGraphQlValidatorToRpcValidator,\n )!,\n atRiskValidators: systemState.validatorSet?.activeValidators.nodes\n ?.filter((validator) => validator.atRisk)\n .map((validator) => [validator.address.address!, validator.atRisk!.toString()])!,\n epoch: String(systemState.epochId),\n epochDurationMs: String(\n new Date(systemState.endTimestamp).getTime() -\n new Date(systemState.startTimestamp).getTime(),\n ),\n epochStartTimestampMs: String(new Date(systemState.startTimestamp).getTime()),\n inactivePoolsSize: String(systemState.validatorSet?.inactivePoolsSize),\n iotaTotalSupply: String(systemState.iotaTotalSupply),\n maxValidatorCount: String(systemState.systemParameters?.maxValidatorCount),\n minValidatorJoiningStake: String(\n systemState.systemParameters?.minValidatorJoiningStake,\n ),\n pendingActiveValidatorsSize: String(\n systemState.validatorSet?.pendingActiveValidatorsSize,\n ),\n pendingRemovals:\n systemState.validatorSet?.pendingRemovals?.map((idx) => String(idx)) ?? [],\n protocolVersion: String(systemState.protocolConfigs?.protocolVersion),\n referenceGasPrice: String(systemState.referenceGasPrice),\n safeMode: systemState.safeMode?.enabled!,\n safeModeComputationRewards: String(systemState.safeMode?.gasSummary?.computationCost),\n safeModeNonRefundableStorageFee: String(\n systemState.safeMode?.gasSummary?.nonRefundableStorageFee,\n ),\n safeModeStorageRebates: String(systemState.safeMode?.gasSummary?.storageRebate),\n safeModeStorageCharges: String(systemState.safeMode?.gasSummary?.storageCost),\n stakingPoolMappingsSize: String(systemState.validatorSet?.stakingPoolMappingsSize),\n storageFundNonRefundableBalance: String(systemState.storageFund?.nonRefundableBalance),\n storageFundTotalObjectStorageRebates: String(\n systemState.storageFund?.totalObjectStorageRebates,\n ),\n systemStateVersion: String(systemState.systemStateVersion),\n totalStake: systemState.validatorSet?.totalStake,\n validatorCandidatesSize: systemState.validatorSet?.validatorCandidatesSize?.toString()!,\n validatorLowStakeGracePeriod:\n systemState.systemParameters?.validatorLowStakeGracePeriod,\n validatorLowStakeThreshold: systemState.systemParameters?.validatorLowStakeThreshold,\n validatorReportRecords: [], // TODO\n validatorVeryLowStakeThreshold:\n systemState.systemParameters?.validatorVeryLowStakeThreshold,\n validatorCandidatesId: '', // TODO\n inactivePoolsId: '', // TODO\n pendingActiveValidatorsId: '', // TODO\n stakingPoolMappingsId: '', // TODO\n };\n },\n async queryEvents(transport, [query, cursor, limit, descending]) {\n const pagination: Partial<QueryEventsQueryVariables> = descending\n ? { last: limit, before: cursor as never }\n : { first: limit, after: cursor as never };\n\n const filter: QueryEventsQueryVariables['filter'] = {\n sender: 'Sender' in query ? query.Sender : undefined,\n transactionDigest: 'Transaction' in query ? query.Transaction : undefined,\n eventType: 'MoveEventType' in query ? query.MoveEventType : undefined,\n emittingModule:\n 'MoveModule' in query\n ? `${query.MoveModule.package}::${query.MoveModule.module}`\n : undefined,\n };\n\n if ('MoveEventType' in query) {\n filter.eventType = query.MoveEventType;\n } else if ('MoveEventModule' in query) {\n filter.eventType = `${query.MoveEventModule.package}::${query.MoveEventModule.module}`;\n }\n\n const unsupportedFilters = [\n 'Package',\n 'MoveEventField',\n 'Any',\n 'All',\n 'And',\n 'Or',\n 'TimeRange',\n ];\n\n if (query) {\n for (const unsupportedFilter of unsupportedFilters) {\n if (unsupportedFilter in query) {\n throw new UnsupportedParamError('queryEvents', unsupportedFilter);\n }\n }\n }\n\n const { nodes: events, pageInfo } = await transport.graphqlQuery(\n {\n query: QueryEventsDocument,\n variables: {\n ...pagination,\n filter,\n },\n },\n (data) => data.events,\n );\n\n if (pagination.last) {\n events.reverse();\n }\n\n return {\n hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,\n nextCursor: (pagination.last ? pageInfo.startCursor : pageInfo.endCursor) as never,\n data: events.map((event) => ({\n bcs: event.bcs,\n id: {\n eventSeq: '', // TODO\n txDigest: '', // TODO\n },\n packageId: event.sendingModule?.package.address!,\n parsedJson: event.json ? JSON.parse(event.json) : undefined,\n sender: event.sender?.address,\n timestampMs: new Date(event.timestamp).getTime().toString(),\n transactionModule: `${event.sendingModule?.package.address}::${event.sendingModule?.name}`,\n type: toShortTypeString(event.type?.repr)!,\n })),\n };\n },\n async devInspectTransactionBlock(transport, [sender, devInspectTxBytes, gasPrice]) {\n const { transaction, error, results } = await transport.graphqlQuery(\n {\n query: DevInspectTransactionBlockDocument,\n variables: {\n txBytes: devInspectTxBytes,\n txMeta: {\n gasPrice: Number.parseInt(gasPrice),\n sender: sender,\n },\n showEffects: true,\n showEvents: true,\n },\n },\n (data) => data.dryRunTransactionBlock,\n );\n\n if (!transaction) {\n throw new Error('Unexpected error during dry run');\n }\n\n const result = mapGraphQLTransactionBlockToRpcTransactionBlock(transaction, {\n showEffects: true,\n showEvents: true,\n });\n\n return {\n error,\n effects: result.effects!,\n events: result.events!,\n results: results?.map((result) => ({\n mutableReferenceOutputs: result.mutatedReferences?.map(\n (ref): [IotaArgument, number[], string] => [\n ref.input.__typename === 'GasCoin'\n ? 'GasCoin'\n : ref.input.__typename === 'Input'\n ? {\n Input: ref.input.inputIndex,\n }\n : typeof ref.input.resultIndex === 'number'\n ? {\n NestedResult: [ref.input.cmd, ref.input.resultIndex!] as [\n number,\n number,\n ],\n }\n : {\n Result: ref.input.cmd,\n },\n Array.from(fromB64(ref.bcs)),\n toShortTypeString(ref.type.repr),\n ],\n ),\n returnValues: result.returnValues?.map((value) => [\n Array.from(fromB64(value.bcs)),\n toShortTypeString(value.type.repr),\n ]),\n })),\n };\n },\n async getDynamicFields(transport, [parentId, cursor, limit]) {\n const { nodes: fields, pageInfo } = await transport.graphqlQuery(\n {\n query: GetDynamicFieldsDocument,\n variables: {\n parentId,\n first: limit,\n cursor,\n },\n },\n (data) => data.object?.dynamicFields,\n );\n\n return {\n data: fields.map((field) => ({\n bcsName: field.name?.bcs && toB58(fromB64(field.name.bcs)),\n digest: (field.value?.__typename === 'MoveObject'\n ? field.value.digest\n : undefined)!,\n name: {\n type: toShortTypeString(field.name?.type.repr)!,\n value: field.name?.json,\n },\n objectId:\n field.value?.__typename === 'MoveObject' ? field.value.address : undefined,\n objectType: (field.value?.__typename === 'MoveObject'\n ? field.value.contents?.type.repr\n : field.value?.type.repr)!,\n type: field.value?.__typename === 'MoveObject' ? 'DynamicObject' : 'DynamicField',\n version: (field.value?.__typename === 'MoveObject'\n ? field.value.version\n : undefined) as unknown as string,\n })),\n nextCursor: pageInfo.endCursor ?? null,\n hasNextPage: pageInfo.hasNextPage,\n };\n },\n async getDynamicFieldObject(transport, [parentId, name]) {\n const nameLayout = await transport.graphqlQuery(\n {\n query: GetTypeLayoutDocument,\n variables: {\n type: name.type,\n },\n },\n (data) => data.type.layout,\n );\n\n const bcsName = mapJsonToBcs(name.value, nameLayout);\n\n const parent = await transport.graphqlQuery(\n {\n query: GetDynamicFieldObjectDocument,\n variables: {\n parentId: parentId,\n name: {\n type: name.type,\n bcs: bcsName,\n },\n },\n },\n (data) => {\n return data.object?.dynamicObjectField?.value?.__typename === 'MoveObject'\n ? data.object.dynamicObjectField.value.owner?.__typename === 'Parent'\n ? data.object.dynamicObjectField.value.owner.parent\n : undefined\n : undefined;\n },\n );\n\n return {\n data: {\n content: {\n dataType: 'moveObject' as const,\n ...(moveDataToRpcContent(\n parent?.asMoveObject?.contents?.data!,\n parent?.asMoveObject?.contents?.type.layout!,\n ) as {\n fields: {\n [key: string]: MoveValue;\n };\n type: string;\n }),\n hasPublicTransfer: parent?.asMoveObject?.hasPublicTransfer!,\n },\n digest: parent?.digest!,\n objectId: parent?.address,\n type: toShortTypeString(parent?.asMoveObject?.contents?.type.repr),\n version: parent?.version.toString()!,\n storageRebate: parent.storageRebate,\n previousTransaction: parent.previousTransactionBlock?.digest,\n owner:\n parent.owner?.__typename === 'Parent'\n ? {\n ObjectOwner: parent.owner.parent?.address,\n }\n : undefined,\n },\n };\n },\n async executeTransactionBlock(transport, [txBytes, signatures, options, _requestType]) {\n // TODO: requestType\n const { effects, errors } = await transport.graphqlQuery(\n {\n query: ExecuteTransactionBlockDocument,\n variables: {\n txBytes,\n signatures,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showInput: options?.showInput,\n showEvents: options?.showEvents,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n },\n },\n (data) => data.executeTransactionBlock,\n );\n\n if (!effects?.transactionBlock) {\n const txb = TransactionBlock.from(fromB64(txBytes));\n return { errors: errors ?? undefined, digest: await txb.getDigest() };\n }\n\n await paginateTransactionBlockLists(transport, effects.transactionBlock);\n\n return mapGraphQLTransactionBlockToRpcTransactionBlock(\n effects.transactionBlock,\n options,\n errors,\n );\n },\n async dryRunTransactionBlock(transport, [txBytes]) {\n const txb = TransactionBlock.from(fromB64(txBytes));\n const { transaction, error } = await transport.graphqlQuery(\n {\n query: DryRunTransactionBlockDocument,\n variables: {\n txBytes,\n showBalanceChanges: true,\n showEffects: true,\n showEvents: true,\n showObjectChanges: true,\n showInput: true,\n },\n },\n (data) => data.dryRunTransactionBlock,\n );\n\n if (error || !transaction) {\n throw new Error(error ?? 'Unexpected error during dry run');\n }\n\n const result = mapGraphQLTransactionBlockToRpcTransactionBlock(\n { ...transaction, digest: await txb.getDigest() },\n {\n showBalanceChanges: true,\n showEffects: true,\n showEvents: true,\n showObjectChanges: true,\n showInput: true,\n },\n );\n\n return {\n input: result.transaction?.data!,\n balanceChanges: result.balanceChanges!,\n effects: result.effects!,\n events: result.events!,\n objectChanges: result.objectChanges!,\n };\n },\n async getLatestCheckpointSequenceNumber(transport) {\n const sequenceNumber = await transport.graphqlQuery(\n {\n query: GetLatestCheckpointSequenceNumberDocument,\n },\n (data) => data.checkpoint?.sequenceNumber,\n );\n\n return sequenceNumber.toString();\n },\n async getCheckpoint(transport, [id]) {\n const checkpoint = await transport.graphqlQuery(\n {\n query: GetCheckpointDocument,\n variables: {\n id:\n typeof id === 'number' || isNumericString(id)\n ? {\n sequenceNumber: Number.parseInt(id.toString(), 10),\n }\n : {\n digest: id,\n },\n },\n },\n (data) => data.checkpoint,\n );\n\n await paginateCheckpointLists(transport, checkpoint);\n return mapGraphQLCheckpointToRpcCheckpoint(checkpoint);\n },\n async getCheckpoints(transport, [cursor, limit, descendingOrder]) {\n const pagination: Partial<QueryEventsQueryVariables> = descendingOrder\n ? { last: limit, before: cursor as never }\n : { first: limit, after: cursor as never };\n\n const { nodes: checkpoints, pageInfo } = await transport.graphqlQuery(\n {\n query: GetCheckpointsDocument,\n variables: {\n ...pagination,\n },\n },\n (data) => data.checkpoints,\n );\n\n for (const checkpoint of checkpoints) {\n await paginateCheckpointLists(transport, checkpoint);\n }\n\n if (pagination.last) {\n checkpoints.reverse();\n }\n\n return {\n hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,\n nextCursor: (pagination.last ? pageInfo.startCursor : pageInfo.endCursor) as never,\n data: checkpoints.map((checkpoint) => mapGraphQLCheckpointToRpcCheckpoint(checkpoint)),\n };\n },\n async getCommitteeInfo(transport, [epoch]) {\n const { validatorSet, epochId } = await transport.graphqlQuery(\n {\n query: GetCommitteeInfoDocument,\n variables: {\n epochId: epoch ? Number.parseInt(epoch) : undefined,\n },\n },\n (data) => data.epoch,\n );\n\n let hasNextPage = validatorSet?.activeValidators?.pageInfo.hasNextPage;\n let after = validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: GetCommitteeInfoDocument,\n variables: {\n epochId: epoch ? Number.parseInt(epoch) : undefined,\n after,\n },\n },\n (data) => data.epoch?.validatorSet?.activeValidators,\n );\n\n validatorSet?.activeValidators.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo.hasNextPage;\n after = page.pageInfo.endCursor;\n }\n\n return {\n epoch: epochId.toString(),\n validators: validatorSet?.activeValidators?.nodes.map((val) => [\n val.credentials?.protocolPubKey!,\n String(val.votingPower),\n ])!,\n };\n },\n async getCurrentEpoch(transport) {\n const epoch = await transport.graphqlQuery(\n {\n query: GetCurrentEpochDocument,\n },\n (data) => data.epoch,\n );\n\n let hasNextPage = epoch.validatorSet?.activeValidators?.pageInfo.hasNextPage;\n let after = epoch.validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateEpochValidatorsDocument,\n variables: {\n id: epoch.epochId,\n after,\n },\n },\n (data) => data.epoch?.validatorSet?.activeValidators,\n );\n\n epoch.validatorSet?.activeValidators?.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo.hasNextPage;\n after = page.pageInfo.endCursor;\n }\n\n return {\n epoch: String(epoch.epochId),\n validators: epoch.validatorSet?.activeValidators?.nodes.map(\n mapGraphQlValidatorToRpcValidator,\n )!,\n epochTotalTransactions: '0', // TODO\n firstCheckpointId: epoch.firstCheckpoint?.nodes[0]?.sequenceNumber.toString()!,\n endOfEpochInfo: null,\n referenceGasPrice: epoch.referenceGasPrice,\n epochStartTimestamp: new Date(epoch.startTimestamp).getTime().toString(),\n };\n },\n async getValidatorsApy(transport) {\n const epoch = await transport.graphqlQuery(\n {\n query: GetValidatorsApyDocument,\n },\n (data) => data.epoch,\n );\n\n let hasNextPage = epoch.validatorSet?.activeValidators?.pageInfo.hasNextPage;\n let after = epoch.validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateEpochValidatorsDocument,\n variables: {\n id: epoch.epochId,\n after,\n },\n },\n (data) => data.epoch,\n );\n\n epoch.validatorSet?.activeValidators?.nodes.push(\n ...(page.validatorSet?.activeValidators?.nodes ?? []),\n );\n hasNextPage = page.validatorSet?.activeValidators?.pageInfo.hasNextPage;\n after = page.validatorSet?.activeValidators?.pageInfo.endCursor;\n }\n\n return {\n epoch: String(epoch.epochId),\n apys: epoch.validatorSet?.activeValidators?.nodes.map((validator) => ({\n address: validator.address.address!,\n apy: (typeof validator.apy === 'number' ? validator.apy / 100 : null) as number,\n }))!,\n };\n },\n async getChainIdentifier(transport): Promise<string> {\n const identifier = await transport.graphqlQuery(\n {\n query: GetChainIdentifierDocument,\n },\n (data) => data.chainIdentifier,\n );\n\n return identifier;\n },\n async getProtocolConfig(transport, [version]) {\n const protocolConfig = await transport.graphqlQuery(\n {\n query: GetProtocolConfigDocument,\n variables: {\n protocolVersion: version ? Number.parseInt(version) : undefined,\n },\n },\n (data) => data.protocolConfig,\n );\n\n const featureFlags: Record<string, boolean> = {};\n const attributes: Record<string, ProtocolConfigValue | null> = {};\n\n const configTypeMap: Record<string, string> = {\n max_arguments: 'u32',\n max_gas_payment_objects: 'u32',\n max_modules_in_publish: 'u32',\n max_programmable_tx_commands: 'u32',\n max_pure_argument_size: 'u32',\n max_type_argument_depth: 'u32',\n max_type_arguments: 'u32',\n move_binary_format_version: 'u32',\n random_beacon_reduction_allowed_delta: 'u16',\n random_beacon_dkg_timeout_round: 'u32',\n random_beacon_reduction_lower_bound: 'u32',\n scoring_decision_cutoff_value: 'f64',\n scoring_decision_mad_divisor: 'f64',\n group_ops_bls12381_msm_max_len: 'u32',\n binary_module_handles: 'u16',\n binary_struct_handles: 'u16',\n binary_function_handles: 'u16',\n binary_function_instantiations: 'u16',\n binary_signatures: 'u16',\n binary_constant_pool: 'u16',\n binary_identifiers: 'u16',\n binary_address_identifiers: 'u16',\n binary_struct_defs: 'u16',\n binary_struct_def_instantiations: 'u16',\n binary_function_defs: 'u16',\n binary_field_handles: 'u16',\n binary_field_instantiations: 'u16',\n binary_friend_decls: 'u16',\n max_package_dependencies: 'u32',\n };\n\n for (const { key, value } of protocolConfig.configs) {\n attributes[key] =\n value === null\n ? null\n : ({\n [configTypeMap[key] ?? 'u64']: value,\n } as ProtocolConfigValue);\n }\n\n for (const { key, value } of protocolConfig.featureFlags) {\n featureFlags[key] = value;\n }\n\n return {\n maxSupportedProtocolVersion: protocolConfig.protocolVersion?.toString(),\n minSupportedProtocolVersion: '1',\n protocolVersion: protocolConfig.protocolVersion?.toString(),\n attributes,\n featureFlags,\n };\n },\n};\n\nexport class UnsupportedParamError extends Error {\n constructor(method: string, param: string) {\n super(`Parameter ${param} is not supported for ${method} in the GraphQL API`);\n }\n}\n\nexport class UnsupportedMethodError extends Error {\n constructor(method: string) {\n super(`Method ${method} is not supported in the GraphQL API`);\n }\n}\n\nasync function paginateTransactionBlockLists(\n transport: IotaClientGraphQLTransport,\n transactionBlock: Rpc_Transaction_FieldsFragment,\n) {\n let hasMoreEvents = transactionBlock.effects?.events?.pageInfo.hasNextPage ?? false;\n let hasMoreBalanceChanges =\n transactionBlock.effects?.balanceChanges?.pageInfo.hasNextPage ?? false;\n let hasMoreObjectChanges =\n transactionBlock.effects?.objectChanges?.pageInfo.hasNextPage ?? false;\n let hasMoreDependencies = transactionBlock.effects?.dependencies?.pageInfo.hasNextPage ?? false;\n let afterEvents = transactionBlock.effects?.events?.pageInfo.endCursor;\n let afterBalanceChanges = transactionBlock.effects?.balanceChanges?.pageInfo.endCursor;\n let afterObjectChanges = transactionBlock.effects?.objectChanges?.pageInfo.endCursor;\n let afterDependencies = transactionBlock.effects?.dependencies?.pageInfo.endCursor;\n\n while (hasMoreEvents || hasMoreBalanceChanges || hasMoreObjectChanges || hasMoreDependencies) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateTransactionBlockListsDocument,\n variables: {\n digest: transactionBlock.digest!,\n afterEvents,\n afterBalanceChanges,\n afterObjectChanges,\n afterDependencies,\n hasMoreEvents,\n hasMoreBalanceChanges,\n hasMoreObjectChanges,\n hasMoreDependencies,\n },\n },\n (data) => data.transactionBlock?.effects,\n );\n\n transactionBlock.effects?.events?.nodes.push(...(page.events?.nodes ?? []));\n transactionBlock.effects?.balanceChanges?.nodes.push(...(page.balanceChanges?.nodes ?? []));\n transactionBlock.effects?.objectChanges?.nodes.push(...(page.objectChanges?.nodes ?? []));\n transactionBlock.effects?.dependencies?.nodes.push(...(page.dependencies?.nodes ?? []));\n hasMoreEvents = page.events?.pageInfo.hasNextPage ?? false;\n hasMoreBalanceChanges = page.balanceChanges?.pageInfo.hasNextPage ?? false;\n hasMoreObjectChanges = page.objectChanges?.pageInfo.hasNextPage ?? false;\n hasMoreDependencies = page.dependencies?.pageInfo.hasNextPage ?? false;\n afterEvents = page.events?.pageInfo.endCursor;\n afterBalanceChanges = page.balanceChanges?.pageInfo.endCursor;\n afterObjectChanges = page.objectChanges?.pageInfo.endCursor;\n afterDependencies = page.dependencies?.pageInfo.endCursor;\n }\n}\n\nasync function paginateCheckpointLists(\n transport: IotaClientGraphQLTransport,\n checkpoint: Rpc_Checkpoint_FieldsFragment,\n) {\n let hasNextPage = checkpoint.transactionBlocks.pageInfo.hasNextPage;\n let after = checkpoint.transactionBlocks.pageInfo.endCursor;\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateCheckpointTransactionBlocksDocument,\n variables: {\n id: { digest: checkpoint.digest! },\n after,\n },\n },\n (data) => data.checkpoint?.transactionBlocks,\n );\n\n checkpoint.transactionBlocks.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo.hasNextPage;\n after = page.pageInfo.endCursor;\n }\n\n const endOfEpochTx = checkpoint.endOfEpoch.nodes[0];\n\n if (\n endOfEpochTx?.kind?.__typename === 'EndOfEpochTransaction' &&\n endOfEpochTx.kind?.transactions.nodes[0].__typename === 'ChangeEpochTransaction' &&\n endOfEpochTx.kind.transactions.nodes[0].epoch?.epochId\n ) {\n const validatorSet = endOfEpochTx.kind.transactions.nodes[0].epoch.validatorSet;\n let hasNextPage = validatorSet?.activeValidators.pageInfo.hasNextPage;\n let after = validatorSet?.activeValidators.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: GetCommitteeInfoDocument,\n variables: {\n epochId: endOfEpochTx.kind.transactions.nodes[0].epoch?.epochId,\n after,\n },\n },\n (data) => data.epoch?.validatorSet?.activeValidators,\n );\n\n validatorSet?.activeValidators.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo?.hasNextPage;\n after = page.pageInfo?.endCursor;\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64, toB58 } from '@iota/bcs';\nimport type {\n MoveValue,\n ProtocolConfigValue,\n IotaArgument,\n IotaClient,\n IotaMoveNormalizedModule,\n} from '@iota/iota-sdk/client';\nimport { Transaction } from '@iota/iota-sdk/transactions';\nimport { normalizeStructTag, normalizeIotaAddress, parseStructTag } from '@iota/iota-sdk/utils';\n\nimport type {\n ObjectFilter,\n QueryEventsQueryVariables,\n QueryTransactionBlocksQueryVariables,\n Rpc_Checkpoint_FieldsFragment,\n Rpc_Transaction_FieldsFragment,\n} from './generated/queries.js';\nimport {\n DevInspectTransactionBlockDocument,\n DryRunTransactionBlockDocument,\n ExecuteTransactionBlockDocument,\n GetAllBalancesDocument,\n GetBalanceDocument,\n GetChainIdentifierDocument,\n GetCheckpointDocument,\n GetCheckpointsDocument,\n GetCoinMetadataDocument,\n GetCoinsDocument,\n GetCommitteeInfoDocument,\n GetCurrentEpochDocument,\n GetDynamicFieldObjectDocument,\n GetDynamicFieldsDocument,\n GetLatestCheckpointSequenceNumberDocument,\n GetLatestIotaSystemStateDocument,\n GetMoveFunctionArgTypesDocument,\n GetNormalizedMoveFunctionDocument,\n GetNormalizedMoveModuleDocument,\n GetNormalizedMoveModulesByPackageDocument,\n GetNormalizedMoveStructDocument,\n GetObjectDocument,\n GetOwnedObjectsDocument,\n GetProtocolConfigDocument,\n GetReferenceGasPriceDocument,\n GetStakesByIdsDocument,\n GetStakesDocument,\n GetTotalSupplyDocument,\n GetTotalTransactionBlocksDocument,\n GetTransactionBlockDocument,\n GetTypeLayoutDocument,\n GetValidatorsApyDocument,\n MultiGetObjectsDocument,\n MultiGetTransactionBlocksDocument,\n PaginateCheckpointTransactionBlocksDocument,\n PaginateEpochValidatorsDocument,\n PaginateMoveModuleListsDocument,\n PaginateTransactionBlockListsDocument,\n QueryEventsDocument,\n QueryTransactionBlocksDocument,\n TransactionBlockKindInput,\n TryGetPastObjectDocument,\n} from './generated/queries.js';\nimport { mapJsonToBcs } from './mappers/bcs.js';\nimport { mapGraphQLCheckpointToRpcCheckpoint } from './mappers/checkpint.js';\nimport {\n mapNormalizedMoveFunction,\n mapNormalizedMoveModule,\n mapNormalizedMoveStruct,\n moveDataToRpcContent,\n} from './mappers/move.js';\nimport { mapGraphQLMoveObjectToRpcObject, mapGraphQLObjectToRpcObject } from './mappers/object.js';\nimport { mapGraphQLStakeToRpcStake } from './mappers/stakes.js';\nimport { mapGraphQLTransactionBlockToRpcTransactionBlock } from './mappers/transaction-block.js';\nimport { isNumericString, toShortTypeString } from './mappers/util.js';\nimport { mapGraphQlValidatorToRpcValidator } from './mappers/validator.js';\nimport type { IotaClientGraphQLTransport } from './transport.js';\n\ninterface ResponseTypes {\n getRpcApiVersion: {\n info: { version?: string };\n };\n}\n\nexport const RPC_METHODS: {\n [K in keyof IotaClient as IotaClient[K] extends (...args: any[]) => Promise<any>\n ? K\n : never]?: IotaClient[K] extends (...args: any[]) => infer R\n ? (\n transport: IotaClientGraphQLTransport,\n inputs: any[],\n ) => K extends keyof ResponseTypes ? Promise<ResponseTypes[K]> : R\n : never;\n} = {\n async getRpcApiVersion(transport) {\n const res = await transport.graphqlRequest({\n query: 'query { __typename }',\n variables: {},\n });\n\n if (!res.ok) {\n throw new Error('Failed to fetch');\n }\n\n return {\n info: {\n version: res.headers.get('x-iota-rpc-version') ?? undefined,\n },\n };\n },\n\n async getCoins(transport, [owner, coinType, cursor, limit]) {\n const { nodes: coins, pageInfo } = await transport.graphqlQuery(\n {\n query: GetCoinsDocument,\n variables: {\n owner,\n type: coinType,\n cursor: cursor,\n first: limit,\n },\n },\n (data) => data.address?.coins,\n );\n\n return {\n data: coins.map((coin) => ({\n balance: coin.coinBalance,\n coinObjectId: coin.address,\n coinType: toShortTypeString(\n normalizeStructTag(parseStructTag(coin.contents?.type.repr!).typeParams[0]),\n ),\n digest: coin.digest!,\n previousTransaction: coin.previousTransactionBlock?.digest!,\n version: String(coin.version!),\n })),\n nextCursor: pageInfo.endCursor,\n hasNextPage: pageInfo.hasNextPage,\n };\n },\n\n async getAllCoins(transport, inputs) {\n const { nodes: coins, pageInfo } = await transport.graphqlQuery(\n {\n query: GetCoinsDocument,\n variables: {\n owner: inputs[0],\n cursor: inputs[1],\n first: inputs[2],\n },\n },\n (data) => data.address?.coins,\n );\n\n return {\n data: coins.map((coin) => ({\n balance: coin.coinBalance,\n coinObjectId: coin.address,\n coinType: toShortTypeString(\n normalizeStructTag(parseStructTag(coin.contents?.type.repr!).typeParams[0]),\n ),\n digest: coin.digest!,\n previousTransaction: coin.previousTransactionBlock?.digest!,\n version: String(coin.version!),\n })),\n nextCursor: pageInfo.endCursor,\n hasNextPage: pageInfo.hasNextPage,\n };\n },\n\n async getBalance(transport, inputs) {\n const balance = await transport.graphqlQuery(\n {\n query: GetBalanceDocument,\n variables: {\n owner: inputs[0],\n type: inputs[1],\n },\n },\n (data) => data.address?.balance,\n );\n\n return {\n coinType: toShortTypeString(balance.coinType?.repr!),\n coinObjectCount: balance.coinObjectCount!,\n totalBalance: balance.totalBalance,\n };\n },\n\n async getAllBalances(transport, inputs) {\n const balances = await transport.graphqlQuery(\n {\n query: GetAllBalancesDocument,\n variables: {\n owner: inputs[0],\n },\n },\n (data) => data.address?.balances?.nodes,\n );\n\n return balances.map((balance) => ({\n coinType: toShortTypeString(balance.coinType?.repr!),\n coinObjectCount: balance.coinObjectCount!,\n totalBalance: balance.totalBalance,\n }));\n },\n async getCoinMetadata(transport, inputs) {\n const metadata = await transport.graphqlQuery(\n {\n query: GetCoinMetadataDocument,\n variables: {\n coinType: inputs[0],\n },\n },\n (data) => data.coinMetadata,\n );\n\n return {\n decimals: metadata.decimals!,\n name: metadata.name!,\n symbol: metadata.symbol!,\n description: metadata.description!,\n iconUrl: metadata.iconUrl,\n id: metadata.address,\n };\n },\n async getTotalSupply(transport, inputs) {\n const metadata = await transport.graphqlQuery(\n {\n query: GetTotalSupplyDocument,\n variables: {\n coinType: inputs[0],\n },\n },\n (data) => data.coinMetadata,\n );\n\n return {\n value: BigInt(metadata.supply!).toString(),\n };\n },\n async getMoveFunctionArgTypes(transport, [pkg, module, fn]) {\n const moveModule = await transport.graphqlQuery(\n {\n query: GetMoveFunctionArgTypesDocument,\n variables: {\n module: module,\n packageId: pkg,\n function: fn,\n },\n },\n (data) => data.object?.asMovePackage?.module?.function?.parameters,\n );\n\n return moveModule.map((parameter) => {\n if (!parameter.signature.body.datatype) {\n return 'Pure';\n }\n\n return {\n Object:\n parameter.signature.ref === '&'\n ? 'ByImmutableReference'\n : parameter.signature.ref === '&mut'\n ? 'ByMutableReference'\n : 'ByValue',\n };\n });\n },\n async getNormalizedMoveFunction(transport, [pkg, module, fn]) {\n const moveFunction = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveFunctionDocument,\n variables: {\n module: module,\n packageId: pkg,\n function: fn,\n },\n },\n (data) => data.object?.asMovePackage?.module?.function,\n );\n\n return mapNormalizedMoveFunction(moveFunction);\n },\n async getNormalizedMoveModulesByPackage(transport, [pkg]) {\n const movePackage = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveModulesByPackageDocument,\n variables: {\n packageId: pkg,\n },\n },\n (data) => data.object?.asMovePackage,\n );\n\n let hasNextPage = movePackage.modules?.pageInfo.hasNextPage ?? false;\n let cursor = movePackage.modules?.pageInfo.endCursor;\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveModulesByPackageDocument,\n variables: {\n packageId: pkg,\n cursor,\n },\n },\n (data) => data.object?.asMovePackage,\n );\n\n movePackage.modules?.nodes.push(...(page.modules?.nodes ?? []));\n hasNextPage = page.modules?.pageInfo.hasNextPage ?? false;\n cursor = page.modules?.pageInfo.endCursor;\n }\n\n const address = toShortTypeString(movePackage.address);\n const modules: Record<string, IotaMoveNormalizedModule> = {};\n\n for (const moveModule of movePackage.modules?.nodes ?? []) {\n let hasMoreFriends = moveModule.friends?.pageInfo.hasNextPage ?? false;\n let hasMoreFunctions = moveModule.functions?.pageInfo.hasNextPage ?? false;\n let hasMoreStructs = moveModule.structs?.pageInfo.hasNextPage ?? false;\n let afterFriends = moveModule.friends?.pageInfo.endCursor;\n let afterFunctions = moveModule.functions?.pageInfo.endCursor;\n let afterStructs = moveModule.structs?.pageInfo.endCursor;\n\n while (hasMoreFriends || hasMoreStructs || hasMoreFunctions) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateMoveModuleListsDocument,\n variables: {\n module: moveModule.name,\n packageId: pkg,\n hasMoreFriends,\n hasMoreFunctions,\n hasMoreStructs,\n afterFriends,\n afterFunctions,\n afterStructs,\n },\n },\n (data) => data.object?.asMovePackage?.module,\n );\n\n moveModule.friends.nodes.push(...(page.friends?.nodes ?? []));\n moveModule.functions?.nodes.push(...(page.functions?.nodes ?? []));\n moveModule.structs?.nodes.push(...(page.structs?.nodes ?? []));\n hasMoreFriends = page.friends?.pageInfo.hasNextPage ?? false;\n hasMoreFunctions = page.functions?.pageInfo.hasNextPage ?? false;\n hasMoreStructs = page.structs?.pageInfo.hasNextPage ?? false;\n afterFriends = page.friends?.pageInfo.endCursor;\n afterFunctions = page.functions?.pageInfo.endCursor;\n afterStructs = page.structs?.pageInfo.endCursor;\n }\n }\n\n movePackage.modules?.nodes.forEach((module) => {\n modules[module.name] = mapNormalizedMoveModule(module, address);\n });\n\n return modules;\n },\n async getNormalizedMoveModule(transport, [pkg, module]) {\n const moveModule = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveModuleDocument,\n variables: {\n module,\n packageId: pkg,\n },\n },\n (data) => data.object?.asMovePackage?.module,\n );\n\n let hasMoreFriends = moveModule.friends?.pageInfo.hasNextPage ?? false;\n let hasMoreFunctions = moveModule.functions?.pageInfo.hasNextPage ?? false;\n let hasMoreStructs = moveModule.structs?.pageInfo.hasNextPage ?? false;\n let afterFriends = moveModule.friends?.pageInfo.endCursor;\n let afterFunctions = moveModule.functions?.pageInfo.endCursor;\n let afterStructs = moveModule.structs?.pageInfo.endCursor;\n\n while (hasMoreFriends || hasMoreStructs || hasMoreFunctions) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateMoveModuleListsDocument,\n variables: {\n module,\n packageId: pkg,\n hasMoreFriends,\n hasMoreFunctions,\n hasMoreStructs,\n afterFriends,\n afterFunctions,\n afterStructs,\n },\n },\n (data) => data.object?.asMovePackage?.module,\n );\n\n moveModule.friends.nodes.push(...(page.friends?.nodes ?? []));\n moveModule.functions?.nodes.push(...(page.functions?.nodes ?? []));\n moveModule.structs?.nodes.push(...(page.structs?.nodes ?? []));\n hasMoreFriends = page.friends?.pageInfo.hasNextPage ?? false;\n hasMoreFunctions = page.functions?.pageInfo.hasNextPage ?? false;\n hasMoreStructs = page.structs?.pageInfo.hasNextPage ?? false;\n afterFriends = page.friends?.pageInfo.endCursor;\n afterFunctions = page.functions?.pageInfo.endCursor;\n afterStructs = page.structs?.pageInfo.endCursor;\n }\n\n return mapNormalizedMoveModule(moveModule, normalizeIotaAddress(pkg));\n },\n async getNormalizedMoveStruct(transport, [pkg, module, struct]) {\n const moveStruct = await transport.graphqlQuery(\n {\n query: GetNormalizedMoveStructDocument,\n variables: {\n packageId: pkg,\n module,\n struct,\n },\n },\n (data) => data.object?.asMovePackage?.module?.struct,\n );\n\n return mapNormalizedMoveStruct(moveStruct);\n },\n async getOwnedObjects(transport, [owner, { filter: inputFilter, options }, cursor, limit]) {\n let filter: ObjectFilter | undefined;\n let typeFilter: string | undefined;\n\n if (inputFilter) {\n if ('Package' in inputFilter) {\n typeFilter = inputFilter.Package;\n } else if ('MoveModule' in inputFilter) {\n typeFilter = `${inputFilter.MoveModule.package}::${inputFilter.MoveModule.module}`;\n } else if ('StructType' in inputFilter) {\n typeFilter = inputFilter.StructType;\n }\n\n filter = {\n objectIds:\n 'ObjectIds' in inputFilter\n ? inputFilter.ObjectIds\n : 'ObjectId' in inputFilter\n ? [inputFilter.ObjectId]\n : undefined,\n type: typeFilter,\n owner:\n 'ObjectOwner' in inputFilter\n ? inputFilter.ObjectOwner\n : 'AddressOwner' in inputFilter\n ? inputFilter.AddressOwner\n : undefined,\n };\n const unsupportedFilters = ['MatchAll', 'MatchAny', 'MatchNone', 'Version'];\n\n for (const unsupportedFilter of unsupportedFilters) {\n if (unsupportedFilter in inputFilter) {\n throw new UnsupportedParamError('getOwnedObjects', unsupportedFilter);\n }\n }\n }\n\n const { nodes: objects, pageInfo } = await transport.graphqlQuery(\n {\n query: GetOwnedObjectsDocument,\n variables: {\n owner,\n limit,\n cursor,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n filter,\n },\n },\n (data) => data.address?.objects,\n );\n\n return {\n hasNextPage: pageInfo.hasNextPage,\n nextCursor: pageInfo.endCursor,\n data: objects.map((object) => ({\n data: mapGraphQLMoveObjectToRpcObject(object, options ?? {}),\n })),\n };\n },\n async getObject(transport, [id, options]) {\n const object = await transport.graphqlQuery(\n {\n query: GetObjectDocument,\n variables: {\n id,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n },\n },\n (data) => data.object,\n );\n\n return {\n data: mapGraphQLObjectToRpcObject(object, options ?? {}),\n };\n },\n async tryGetPastObject(transport, [id, version, options]) {\n const data = await transport.graphqlQuery({\n query: TryGetPastObjectDocument,\n variables: {\n id,\n version,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n },\n });\n\n if (!data.current) {\n return {\n details: 'Could not find the referenced object',\n status: 'ObjectNotExists',\n };\n }\n\n if (!data.object) {\n return data.current.version < Number(version)\n ? {\n status: 'VersionTooHigh',\n details: {\n asked_version: String(version),\n latest_version: String(data.current.version),\n object_id: data.current.address,\n },\n }\n : {\n status: 'VersionNotFound',\n details: [data.current.address, String(version)],\n };\n }\n\n return {\n status: 'VersionFound',\n details: mapGraphQLObjectToRpcObject(data.object, options ?? {}),\n };\n },\n async multiGetObjects(transport, [ids, options]) {\n const objects = await transport.graphqlQuery(\n {\n query: MultiGetObjectsDocument,\n variables: {\n ids,\n showBcs: options?.showBcs,\n showContent: options?.showContent,\n showOwner: options?.showOwner,\n showPreviousTransaction: options?.showPreviousTransaction,\n showStorageRebate: options?.showStorageRebate,\n showType: options?.showType,\n limit: ids.length,\n },\n },\n (data) => data.objects?.nodes,\n );\n\n return objects.map((object) => ({\n data: mapGraphQLObjectToRpcObject(object, options ?? {}),\n }));\n },\n async queryTransactionBlocks(transport, [{ filter, options }, cursor, limit = 20, descending]) {\n const pagination: Partial<QueryTransactionBlocksQueryVariables> = descending\n ? {\n last: limit,\n before: cursor,\n }\n : {\n first: limit,\n after: cursor,\n };\n\n const unsupportedFilters = ['FromOrToAddress', 'FromAndToAddress', 'TransactionKindIn'];\n\n if (filter) {\n for (const unsupportedFilter of unsupportedFilters) {\n if (unsupportedFilter in filter) {\n throw new UnsupportedParamError('queryTransactionBlocks', unsupportedFilter);\n }\n }\n }\n\n const { nodes: transactionBlocks, pageInfo } = await transport.graphqlQuery(\n {\n query: QueryTransactionBlocksDocument,\n variables: {\n ...pagination,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showRawEffects: options?.showRawEffects,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n showInput: options?.showInput,\n filter: filter\n ? {\n atCheckpoint:\n 'Checkpoint' in filter\n ? Number.parseInt(filter.Checkpoint)\n : undefined,\n function:\n 'MoveFunction' in filter\n ? `${filter.MoveFunction.package}::${filter.MoveFunction.module}::${filter.MoveFunction.function}`\n : undefined,\n inputObject: 'InputObject' in filter ? filter.InputObject : undefined,\n changedObject:\n 'ChangedObject' in filter ? filter.ChangedObject : undefined,\n signAddress: 'FromAddress' in filter ? filter.FromAddress : undefined,\n recvAddress: 'ToAddress' in filter ? filter.ToAddress : undefined,\n kind:\n 'TransactionKind' in filter\n ? filter.TransactionKind === 'ProgrammableTransaction'\n ? TransactionBlockKindInput.ProgrammableTx\n : TransactionBlockKindInput.SystemTx\n : undefined,\n }\n : {},\n },\n },\n (data) => data.transactionBlocks,\n );\n\n for (const transactionBlock of transactionBlocks) {\n await paginateTransactionBlockLists(transport, transactionBlock);\n }\n\n if (pagination.last) {\n transactionBlocks.reverse();\n }\n\n return {\n hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,\n nextCursor: pagination.last ? pageInfo.startCursor : pageInfo.endCursor,\n data: transactionBlocks.map((transactionBlock) =>\n mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options ?? {}),\n ),\n };\n },\n async getTransactionBlock(transport, [digest, options]) {\n const transactionBlock = await transport.graphqlQuery(\n {\n query: GetTransactionBlockDocument,\n variables: {\n digest,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showRawEffects: options?.showRawEffects,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n showInput: options?.showInput,\n },\n },\n (data) => data.transactionBlock,\n );\n\n await paginateTransactionBlockLists(transport, transactionBlock);\n\n return mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options);\n },\n\n async multiGetTransactionBlocks(transport, [digests, options]) {\n const transactionBlocks = await transport.graphqlQuery(\n {\n query: MultiGetTransactionBlocksDocument,\n variables: {\n digests: digests,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showRawEffects: options?.showEffects,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n showInput: options?.showInput,\n limit: digests.length,\n },\n },\n (data) => data.transactionBlocks?.nodes,\n );\n\n for (const transactionBlock of transactionBlocks) {\n await paginateTransactionBlockLists(transport, transactionBlock);\n }\n\n return transactionBlocks.map((transactionBlock) =>\n mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options),\n );\n },\n async getTotalTransactionBlocks(transport): Promise<bigint> {\n return transport.graphqlQuery(\n {\n query: GetTotalTransactionBlocksDocument,\n },\n (data) => BigInt(data.checkpoint?.networkTotalTransactions!),\n );\n },\n async getReferenceGasPrice(transport) {\n const epoch = await transport.graphqlQuery(\n {\n query: GetReferenceGasPriceDocument,\n variables: {},\n },\n (data) => data.epoch,\n );\n\n return BigInt(epoch.referenceGasPrice);\n },\n async getStakes(transport, [owner]) {\n const stakes = await transport.graphqlQuery(\n {\n query: GetStakesDocument,\n variables: {\n owner,\n },\n },\n (data) => data.address?.stakedIotas?.nodes,\n );\n\n return mapGraphQLStakeToRpcStake(stakes);\n },\n async getStakesByIds(transport, [stakedIotaIds]) {\n const stakes = await transport.graphqlQuery(\n {\n query: GetStakesByIdsDocument,\n variables: {\n ids: stakedIotaIds,\n },\n },\n (data) =>\n data.objects?.nodes\n .map((node) => node?.asMoveObject?.asStakedIota!)\n .filter(Boolean),\n );\n\n return mapGraphQLStakeToRpcStake(stakes);\n },\n async getLatestIotaSystemState(transport) {\n const systemState = await transport.graphqlQuery(\n {\n query: GetLatestIotaSystemStateDocument,\n },\n (data) => data.epoch,\n );\n\n let hasMoreValidators =\n systemState.validatorSet?.activeValidators?.pageInfo.hasNextPage ?? false;\n let afterValidators = systemState.validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasMoreValidators) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateEpochValidatorsDocument,\n variables: {\n id: systemState.epochId,\n after: afterValidators,\n },\n },\n (data) => data.epoch,\n );\n\n systemState.validatorSet?.activeValidators?.nodes.push(\n ...(page.validatorSet?.activeValidators?.nodes ?? []),\n );\n hasMoreValidators = page.validatorSet?.activeValidators?.pageInfo.hasNextPage ?? false;\n afterValidators = page.validatorSet?.activeValidators?.pageInfo.endCursor;\n }\n\n return {\n activeValidators: systemState.validatorSet?.activeValidators?.nodes.map(\n mapGraphQlValidatorToRpcValidator,\n )!,\n atRiskValidators: systemState.validatorSet?.activeValidators.nodes\n ?.filter((validator) => validator.atRisk)\n .map((validator) => [validator.address.address!, validator.atRisk!.toString()])!,\n epoch: String(systemState.epochId),\n epochDurationMs: String(\n new Date(systemState.endTimestamp).getTime() -\n new Date(systemState.startTimestamp).getTime(),\n ),\n epochStartTimestampMs: String(new Date(systemState.startTimestamp).getTime()),\n inactivePoolsSize: String(systemState.validatorSet?.inactivePoolsSize),\n iotaTotalSupply: String(systemState.iotaTotalSupply),\n iotaTreasuryCapId: String(systemState.iotaTreasuryCapId),\n maxValidatorCount: String(systemState.systemParameters?.maxValidatorCount),\n minValidatorCount: String(systemState.systemParameters?.minValidatorCount),\n minValidatorJoiningStake: String(\n systemState.systemParameters?.minValidatorJoiningStake,\n ),\n pendingActiveValidatorsSize: String(\n systemState.validatorSet?.pendingActiveValidatorsSize,\n ),\n pendingRemovals:\n systemState.validatorSet?.pendingRemovals?.map((idx) => String(idx)) ?? [],\n protocolVersion: String(systemState.protocolConfigs?.protocolVersion),\n referenceGasPrice: String(systemState.referenceGasPrice),\n safeMode: systemState.safeMode?.enabled!,\n safeModeComputationRewards: String(systemState.safeMode?.gasSummary?.computationCost),\n safeModeNonRefundableStorageFee: String(\n systemState.safeMode?.gasSummary?.nonRefundableStorageFee,\n ),\n safeModeStorageRebates: String(systemState.safeMode?.gasSummary?.storageRebate),\n safeModeStorageCharges: String(systemState.safeMode?.gasSummary?.storageCost),\n stakingPoolMappingsSize: String(systemState.validatorSet?.stakingPoolMappingsSize),\n storageFundNonRefundableBalance: String(systemState.storageFund?.nonRefundableBalance),\n storageFundTotalObjectStorageRebates: String(\n systemState.storageFund?.totalObjectStorageRebates,\n ),\n systemStateVersion: String(systemState.systemStateVersion),\n totalStake: systemState.validatorSet?.totalStake,\n validatorCandidatesSize: systemState.validatorSet?.validatorCandidatesSize?.toString()!,\n validatorLowStakeGracePeriod:\n systemState.systemParameters?.validatorLowStakeGracePeriod,\n validatorLowStakeThreshold: systemState.systemParameters?.validatorLowStakeThreshold,\n validatorReportRecords: [], // TODO\n validatorVeryLowStakeThreshold:\n systemState.systemParameters?.validatorVeryLowStakeThreshold,\n validatorCandidatesId: systemState.validatorSet?.validatorCandidatesId,\n inactivePoolsId: systemState.validatorSet?.inactivePoolsId,\n pendingActiveValidatorsId: systemState.validatorSet?.pendingActiveValidatorsId,\n stakingPoolMappingsId: systemState.validatorSet?.stakingPoolMappingsId,\n };\n },\n async queryEvents(transport, [query, cursor, limit, descending]) {\n const pagination: Partial<QueryEventsQueryVariables> = descending\n ? { last: limit, before: cursor as never }\n : { first: limit, after: cursor as never };\n\n const filter: QueryEventsQueryVariables['filter'] = {\n sender: 'Sender' in query ? query.Sender : undefined,\n transactionDigest: 'Transaction' in query ? query.Transaction : undefined,\n eventType: 'MoveEventType' in query ? query.MoveEventType : undefined,\n emittingModule:\n 'MoveModule' in query\n ? `${query.MoveModule.package}::${query.MoveModule.module}`\n : undefined,\n };\n\n if ('MoveEventType' in query) {\n filter.eventType = query.MoveEventType;\n } else if ('MoveEventModule' in query) {\n filter.eventType = `${query.MoveEventModule.package}::${query.MoveEventModule.module}`;\n }\n\n const unsupportedFilters = [\n 'Package',\n 'MoveEventField',\n 'Any',\n 'All',\n 'And',\n 'Or',\n 'TimeRange',\n ];\n\n if (query) {\n for (const unsupportedFilter of unsupportedFilters) {\n if (unsupportedFilter in query) {\n throw new UnsupportedParamError('queryEvents', unsupportedFilter);\n }\n }\n }\n\n const { nodes: events, pageInfo } = await transport.graphqlQuery(\n {\n query: QueryEventsDocument,\n variables: {\n ...pagination,\n filter,\n },\n },\n (data) => data.events,\n );\n\n if (pagination.last) {\n events.reverse();\n }\n\n return {\n hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,\n nextCursor: (pagination.last ? pageInfo.startCursor : pageInfo.endCursor) as never,\n data: events.map((event) => ({\n bcs: event.bcs,\n id: {\n eventSeq: '', // TODO\n txDigest: '', // TODO\n },\n packageId: event.sendingModule?.package.address!,\n parsedJson: event.json ? JSON.parse(event.json) : undefined,\n sender: event.sender?.address,\n timestampMs: new Date(event.timestamp).getTime().toString(),\n transactionModule: `${event.sendingModule?.package.address}::${event.sendingModule?.name}`,\n type: toShortTypeString(event.type?.repr)!,\n })),\n };\n },\n async devInspectTransactionBlock(transport, [sender, devInspectTxBytes, gasPrice]) {\n const { transaction, error, results } = await transport.graphqlQuery(\n {\n query: DevInspectTransactionBlockDocument,\n variables: {\n txBytes: devInspectTxBytes,\n txMeta: {\n gasPrice: Number.parseInt(gasPrice),\n sender: sender,\n },\n showEffects: true,\n showEvents: true,\n },\n },\n (data) => data.dryRunTransactionBlock,\n );\n\n if (!transaction) {\n throw new Error('Unexpected error during dry run');\n }\n\n const result = mapGraphQLTransactionBlockToRpcTransactionBlock(transaction, {\n showEffects: true,\n showEvents: true,\n });\n\n return {\n error,\n effects: result.effects!,\n events: result.events!,\n results: results?.map((result) => ({\n mutableReferenceOutputs: result.mutatedReferences?.map(\n (ref): [IotaArgument, number[], string] => [\n ref.input.__typename === 'GasCoin'\n ? 'GasCoin'\n : ref.input.__typename === 'Input'\n ? {\n Input: ref.input.inputIndex,\n }\n : typeof ref.input.resultIndex === 'number'\n ? {\n NestedResult: [ref.input.cmd, ref.input.resultIndex!] as [\n number,\n number,\n ],\n }\n : {\n Result: ref.input.cmd,\n },\n Array.from(fromB64(ref.bcs)),\n toShortTypeString(ref.type.repr),\n ],\n ),\n returnValues: result.returnValues?.map((value) => [\n Array.from(fromB64(value.bcs)),\n toShortTypeString(value.type.repr),\n ]),\n })),\n };\n },\n async getDynamicFields(transport, [parentId, cursor, limit]) {\n const { nodes: fields, pageInfo } = await transport.graphqlQuery(\n {\n query: GetDynamicFieldsDocument,\n variables: {\n parentId,\n first: limit,\n cursor,\n },\n },\n (data) => data.owner?.dynamicFields,\n );\n\n return {\n data: fields.map((field) => ({\n bcsName: field.name?.bcs && toB58(fromB64(field.name.bcs)),\n digest: (field.value?.__typename === 'MoveObject'\n ? field.value.digest\n : undefined)!,\n name: {\n type: toShortTypeString(field.name?.type.repr)!,\n value: field.name?.json,\n },\n objectId:\n field.value?.__typename === 'MoveObject' ? field.value.address : undefined,\n objectType: (field.value?.__typename === 'MoveObject'\n ? field.value.contents?.type.repr\n : field.value?.type.repr)!,\n type: field.value?.__typename === 'MoveObject' ? 'DynamicObject' : 'DynamicField',\n version: (field.value?.__typename === 'MoveObject'\n ? field.value.version\n : undefined) as unknown as string,\n })),\n nextCursor: pageInfo.endCursor ?? null,\n hasNextPage: pageInfo.hasNextPage,\n };\n },\n async getDynamicFieldObject(transport, [parentId, name]) {\n const nameLayout = await transport.graphqlQuery(\n {\n query: GetTypeLayoutDocument,\n variables: {\n type: name.type,\n },\n },\n (data) => data.type.layout,\n );\n\n const bcsName = mapJsonToBcs(name.value, nameLayout);\n\n const parent = await transport.graphqlQuery(\n {\n query: GetDynamicFieldObjectDocument,\n variables: {\n parentId: parentId,\n name: {\n type: name.type,\n bcs: bcsName,\n },\n },\n },\n (data) => {\n return data.owner?.dynamicObjectField?.value?.__typename === 'MoveObject'\n ? data.owner.dynamicObjectField.value.owner?.__typename === 'Parent'\n ? data.owner.dynamicObjectField.value.owner.parent\n : undefined\n : undefined;\n },\n );\n\n return {\n data: {\n content: {\n dataType: 'moveObject' as const,\n ...(moveDataToRpcContent(\n parent?.asMoveObject?.contents?.data!,\n parent?.asMoveObject?.contents?.type.layout!,\n ) as {\n fields: {\n [key: string]: MoveValue;\n };\n type: string;\n }),\n hasPublicTransfer: parent?.asMoveObject?.hasPublicTransfer!,\n },\n digest: parent?.digest!,\n objectId: parent?.address,\n type: toShortTypeString(parent?.asMoveObject?.contents?.type.repr),\n version: parent?.version.toString()!,\n storageRebate: parent.storageRebate,\n previousTransaction: parent.previousTransactionBlock?.digest,\n owner:\n parent.owner?.__typename === 'Parent'\n ? {\n ObjectOwner: parent.owner.parent?.address,\n }\n : undefined,\n },\n };\n },\n async executeTransactionBlock(transport, [txBytes, signatures, options]) {\n const { effects, errors } = await transport.graphqlQuery(\n {\n query: ExecuteTransactionBlockDocument,\n variables: {\n txBytes,\n signatures,\n showBalanceChanges: options?.showBalanceChanges,\n showEffects: options?.showEffects,\n showRawEffects: options?.showRawEffects,\n showInput: options?.showInput,\n showEvents: options?.showEvents,\n showObjectChanges: options?.showObjectChanges,\n showRawInput: options?.showRawInput,\n },\n },\n (data) => data.executeTransactionBlock,\n );\n\n if (!effects?.transactionBlock) {\n const tx = Transaction.from(fromB64(txBytes));\n return { errors: errors ?? undefined, digest: await tx.getDigest() };\n }\n\n await paginateTransactionBlockLists(transport, effects.transactionBlock);\n\n return mapGraphQLTransactionBlockToRpcTransactionBlock(\n effects.transactionBlock,\n options,\n errors,\n );\n },\n async dryRunTransactionBlock(transport, [txBytes]) {\n const tx = Transaction.from(fromB64(txBytes));\n const { transaction, error } = await transport.graphqlQuery(\n {\n query: DryRunTransactionBlockDocument,\n variables: {\n txBytes,\n showBalanceChanges: true,\n showEffects: true,\n showEvents: true,\n showObjectChanges: true,\n showInput: true,\n },\n },\n (data) => data.dryRunTransactionBlock,\n );\n\n if (error || !transaction) {\n throw new Error(error ?? 'Unexpected error during dry run');\n }\n\n const result = mapGraphQLTransactionBlockToRpcTransactionBlock(\n { ...transaction, digest: await tx.getDigest() },\n {\n showBalanceChanges: true,\n showEffects: true,\n showEvents: true,\n showObjectChanges: true,\n showInput: true,\n },\n );\n\n return {\n input: result.transaction?.data!,\n balanceChanges: result.balanceChanges!,\n effects: result.effects!,\n events: result.events!,\n objectChanges: result.objectChanges!,\n };\n },\n async getLatestCheckpointSequenceNumber(transport) {\n const sequenceNumber = await transport.graphqlQuery(\n {\n query: GetLatestCheckpointSequenceNumberDocument,\n },\n (data) => data.checkpoint?.sequenceNumber,\n );\n\n return sequenceNumber.toString();\n },\n async getCheckpoint(transport, [id]) {\n const checkpoint = await transport.graphqlQuery(\n {\n query: GetCheckpointDocument,\n variables: {\n id:\n typeof id === 'number' || isNumericString(id)\n ? {\n sequenceNumber: Number.parseInt(id.toString(), 10),\n }\n : {\n digest: id,\n },\n },\n },\n (data) => data.checkpoint,\n );\n\n await paginateCheckpointLists(transport, checkpoint);\n return mapGraphQLCheckpointToRpcCheckpoint(checkpoint);\n },\n async getCheckpoints(transport, [cursor, limit, descendingOrder]) {\n const pagination: Partial<QueryEventsQueryVariables> = descendingOrder\n ? { last: limit, before: cursor as never }\n : { first: limit, after: cursor as never };\n\n const { nodes: checkpoints, pageInfo } = await transport.graphqlQuery(\n {\n query: GetCheckpointsDocument,\n variables: {\n ...pagination,\n },\n },\n (data) => data.checkpoints,\n );\n\n for (const checkpoint of checkpoints) {\n await paginateCheckpointLists(transport, checkpoint);\n }\n\n if (pagination.last) {\n checkpoints.reverse();\n }\n\n return {\n hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,\n nextCursor: (pagination.last ? pageInfo.startCursor : pageInfo.endCursor) as never,\n data: checkpoints.map((checkpoint) => mapGraphQLCheckpointToRpcCheckpoint(checkpoint)),\n };\n },\n async getCommitteeInfo(transport, [epoch]) {\n const { validatorSet, epochId } = await transport.graphqlQuery(\n {\n query: GetCommitteeInfoDocument,\n variables: {\n epochId: epoch ? Number.parseInt(epoch) : undefined,\n },\n },\n (data) => data.epoch,\n );\n\n let hasNextPage = validatorSet?.activeValidators?.pageInfo.hasNextPage;\n let after = validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: GetCommitteeInfoDocument,\n variables: {\n epochId: epoch ? Number.parseInt(epoch) : undefined,\n after,\n },\n },\n (data) => data.epoch?.validatorSet?.activeValidators,\n );\n\n validatorSet?.activeValidators.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo.hasNextPage;\n after = page.pageInfo.endCursor;\n }\n\n return {\n epoch: epochId.toString(),\n validators: validatorSet?.activeValidators?.nodes.map((val) => [\n val.credentials?.authorityPubKey!,\n String(val.votingPower),\n ])!,\n };\n },\n async getCurrentEpoch(transport) {\n const epoch = await transport.graphqlQuery(\n {\n query: GetCurrentEpochDocument,\n },\n (data) => data.epoch,\n );\n\n let hasNextPage = epoch.validatorSet?.activeValidators?.pageInfo.hasNextPage;\n let after = epoch.validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateEpochValidatorsDocument,\n variables: {\n id: epoch.epochId,\n after,\n },\n },\n (data) => data.epoch?.validatorSet?.activeValidators,\n );\n\n epoch.validatorSet?.activeValidators?.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo.hasNextPage;\n after = page.pageInfo.endCursor;\n }\n\n return {\n epoch: String(epoch.epochId),\n validators: epoch.validatorSet?.activeValidators?.nodes.map(\n mapGraphQlValidatorToRpcValidator,\n )!,\n epochTotalTransactions: '0', // TODO\n firstCheckpointId: epoch.firstCheckpoint?.nodes[0]?.sequenceNumber.toString()!,\n endOfEpochInfo: null,\n referenceGasPrice: epoch.referenceGasPrice,\n epochStartTimestamp: new Date(epoch.startTimestamp).getTime().toString(),\n };\n },\n async getValidatorsApy(transport) {\n const epoch = await transport.graphqlQuery(\n {\n query: GetValidatorsApyDocument,\n },\n (data) => data.epoch,\n );\n\n let hasNextPage = epoch.validatorSet?.activeValidators?.pageInfo.hasNextPage;\n let after = epoch.validatorSet?.activeValidators?.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateEpochValidatorsDocument,\n variables: {\n id: epoch.epochId,\n after,\n },\n },\n (data) => data.epoch,\n );\n\n epoch.validatorSet?.activeValidators?.nodes.push(\n ...(page.validatorSet?.activeValidators?.nodes ?? []),\n );\n hasNextPage = page.validatorSet?.activeValidators?.pageInfo.hasNextPage;\n after = page.validatorSet?.activeValidators?.pageInfo.endCursor;\n }\n\n return {\n epoch: String(epoch.epochId),\n apys: epoch.validatorSet?.activeValidators?.nodes.map((validator) => ({\n address: validator.address.address!,\n apy: (typeof validator.apy === 'number' ? validator.apy / 100 : null) as number,\n }))!,\n };\n },\n async getChainIdentifier(transport): Promise<string> {\n const identifier = await transport.graphqlQuery(\n {\n query: GetChainIdentifierDocument,\n },\n (data) => data.chainIdentifier,\n );\n\n return identifier;\n },\n async getProtocolConfig(transport, [version]) {\n const protocolConfig = await transport.graphqlQuery(\n {\n query: GetProtocolConfigDocument,\n variables: {\n protocolVersion: version ? Number.parseInt(version) : undefined,\n },\n },\n (data) => data.protocolConfig,\n );\n\n const featureFlags: Record<string, boolean> = {};\n const attributes: Record<string, ProtocolConfigValue | null> = {};\n\n const configTypeMap: Record<string, string> = {\n max_arguments: 'u32',\n max_gas_payment_objects: 'u32',\n max_modules_in_publish: 'u32',\n max_programmable_tx_commands: 'u32',\n max_pure_argument_size: 'u32',\n max_type_argument_depth: 'u32',\n max_type_arguments: 'u32',\n move_binary_format_version: 'u32',\n min_move_binary_format_version: 'u32',\n random_beacon_reduction_allowed_delta: 'u16',\n random_beacon_dkg_timeout_round: 'u32',\n random_beacon_reduction_lower_bound: 'u32',\n scoring_decision_cutoff_value: 'f64',\n scoring_decision_mad_divisor: 'f64',\n group_ops_bls12381_msm_max_len: 'u32',\n binary_module_handles: 'u16',\n binary_struct_handles: 'u16',\n binary_function_handles: 'u16',\n binary_function_instantiations: 'u16',\n binary_signatures: 'u16',\n binary_constant_pool: 'u16',\n binary_identifiers: 'u16',\n binary_address_identifiers: 'u16',\n binary_struct_defs: 'u16',\n binary_struct_def_instantiations: 'u16',\n binary_function_defs: 'u16',\n binary_field_handles: 'u16',\n binary_field_instantiations: 'u16',\n binary_friend_decls: 'u16',\n max_package_dependencies: 'u32',\n bridge_should_try_to_finalize_committee: 'bool',\n };\n\n for (const { key, value } of protocolConfig.configs) {\n attributes[key] =\n value === null\n ? null\n : ({\n [configTypeMap[key] ?? 'u64']: value,\n } as ProtocolConfigValue);\n }\n\n for (const { key, value } of protocolConfig.featureFlags) {\n featureFlags[key] = value;\n }\n\n return {\n maxSupportedProtocolVersion: protocolConfig.protocolVersion?.toString(),\n minSupportedProtocolVersion: '1',\n protocolVersion: protocolConfig.protocolVersion?.toString(),\n attributes,\n featureFlags,\n };\n },\n};\n\nexport class UnsupportedParamError extends Error {\n constructor(method: string, param: string) {\n super(`Parameter ${param} is not supported for ${method} in the GraphQL API`);\n }\n}\n\nexport class UnsupportedMethodError extends Error {\n constructor(method: string) {\n super(`Method ${method} is not supported in the GraphQL API`);\n }\n}\n\nasync function paginateTransactionBlockLists(\n transport: IotaClientGraphQLTransport,\n transactionBlock: Rpc_Transaction_FieldsFragment,\n) {\n let hasMoreEvents = transactionBlock.effects?.events?.pageInfo.hasNextPage ?? false;\n let hasMoreBalanceChanges =\n transactionBlock.effects?.balanceChanges?.pageInfo.hasNextPage ?? false;\n let hasMoreObjectChanges =\n transactionBlock.effects?.objectChanges?.pageInfo.hasNextPage ?? false;\n let afterEvents = transactionBlock.effects?.events?.pageInfo.endCursor;\n let afterBalanceChanges = transactionBlock.effects?.balanceChanges?.pageInfo.endCursor;\n let afterObjectChanges = transactionBlock.effects?.objectChanges?.pageInfo.endCursor;\n\n while (hasMoreEvents || hasMoreBalanceChanges || hasMoreObjectChanges) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateTransactionBlockListsDocument,\n variables: {\n digest: transactionBlock.digest!,\n afterEvents,\n afterBalanceChanges,\n afterObjectChanges,\n hasMoreEvents,\n hasMoreBalanceChanges,\n hasMoreObjectChanges,\n },\n },\n (data) => data.transactionBlock?.effects,\n );\n\n transactionBlock.effects?.events?.nodes.push(...(page.events?.nodes ?? []));\n transactionBlock.effects?.balanceChanges?.nodes.push(...(page.balanceChanges?.nodes ?? []));\n transactionBlock.effects?.objectChanges?.nodes.push(...(page.objectChanges?.nodes ?? []));\n hasMoreEvents = page.events?.pageInfo.hasNextPage ?? false;\n hasMoreBalanceChanges = page.balanceChanges?.pageInfo.hasNextPage ?? false;\n hasMoreObjectChanges = page.objectChanges?.pageInfo.hasNextPage ?? false;\n afterEvents = page.events?.pageInfo.endCursor;\n afterBalanceChanges = page.balanceChanges?.pageInfo.endCursor;\n afterObjectChanges = page.objectChanges?.pageInfo.endCursor;\n }\n}\n\nasync function paginateCheckpointLists(\n transport: IotaClientGraphQLTransport,\n checkpoint: Rpc_Checkpoint_FieldsFragment,\n) {\n let hasNextPage = checkpoint.transactionBlocks.pageInfo.hasNextPage;\n let after = checkpoint.transactionBlocks.pageInfo.endCursor;\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: PaginateCheckpointTransactionBlocksDocument,\n variables: {\n id: { digest: checkpoint.digest! },\n after,\n },\n },\n (data) => data.checkpoint?.transactionBlocks,\n );\n\n checkpoint.transactionBlocks.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo.hasNextPage;\n after = page.pageInfo.endCursor;\n }\n\n const endOfEpochTx = checkpoint.endOfEpoch.nodes[0];\n\n if (\n endOfEpochTx?.kind?.__typename === 'EndOfEpochTransaction' &&\n endOfEpochTx.kind?.transactions.nodes[0].__typename === 'ChangeEpochTransaction' &&\n endOfEpochTx.kind.transactions.nodes[0].epoch?.epochId\n ) {\n const validatorSet = endOfEpochTx.kind.transactions.nodes[0].epoch.validatorSet;\n let hasNextPage = validatorSet?.activeValidators.pageInfo.hasNextPage;\n let after = validatorSet?.activeValidators.pageInfo.endCursor;\n\n while (hasNextPage) {\n const page = await transport.graphqlQuery(\n {\n query: GetCommitteeInfoDocument,\n variables: {\n epochId: endOfEpochTx.kind.transactions.nodes[0].epoch?.epochId,\n after,\n },\n },\n (data) => data.epoch?.validatorSet?.activeValidators,\n );\n\n validatorSet?.activeValidators.nodes.push(...page.nodes);\n hasNextPage = page.pageInfo?.hasNextPage;\n after = page.pageInfo?.endCursor;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_bcs", "module", "result", "hasNextPage", "after"]
|
|
7
7
|
}
|
package/dist/cjs/transport.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { TypedDocumentString } from './generated/queries.js';
|
|
|
5
5
|
import { RPC_METHODS } from './methods.js';
|
|
6
6
|
export interface IotaClientGraphQLTransportOptions {
|
|
7
7
|
url: string;
|
|
8
|
-
|
|
8
|
+
fallbackTransportUrl?: string;
|
|
9
9
|
fallbackMethods?: (keyof typeof RPC_METHODS)[];
|
|
10
10
|
}
|
|
11
11
|
export type GraphQLDocument<Result = Record<string, unknown>, Variables = Record<string, unknown>> = string | DocumentNode | TypedDocumentNode<Result, Variables> | TypedDocumentString<Result, Variables>;
|
package/dist/cjs/transport.js
CHANGED
|
@@ -3,6 +3,9 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __typeError = (msg) => {
|
|
7
|
+
throw TypeError(msg);
|
|
8
|
+
};
|
|
6
9
|
var __export = (target, all) => {
|
|
7
10
|
for (var name in all)
|
|
8
11
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,28 +19,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
19
|
return to;
|
|
17
20
|
};
|
|
18
21
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var __accessCheck = (obj, member, msg) =>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
__accessCheck(obj, member, "read from private field");
|
|
25
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
26
|
-
};
|
|
27
|
-
var __privateAdd = (obj, member, value) => {
|
|
28
|
-
if (member.has(obj))
|
|
29
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
30
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
31
|
-
};
|
|
32
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
33
|
-
__accessCheck(obj, member, "write to private field");
|
|
34
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
35
|
-
return value;
|
|
36
|
-
};
|
|
37
|
-
var __privateMethod = (obj, member, method) => {
|
|
38
|
-
__accessCheck(obj, member, "access private method");
|
|
39
|
-
return method;
|
|
40
|
-
};
|
|
22
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
23
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
24
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
25
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
26
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
41
27
|
var transport_exports = {};
|
|
42
28
|
__export(transport_exports, {
|
|
43
29
|
IotaClientGraphQLTransport: () => IotaClientGraphQLTransport
|
|
@@ -47,22 +33,22 @@ var import_client = require("@iota/iota-sdk/client");
|
|
|
47
33
|
var import_graphql = require("graphql");
|
|
48
34
|
var import_queries = require("./generated/queries.js");
|
|
49
35
|
var import_methods = require("./methods.js");
|
|
50
|
-
var _options, _fallbackTransport, _fallbackMethods,
|
|
36
|
+
var _options, _fallbackTransport, _fallbackMethods, _IotaClientGraphQLTransport_instances, unsupportedMethod_fn;
|
|
51
37
|
class IotaClientGraphQLTransport {
|
|
52
38
|
constructor(options) {
|
|
53
|
-
__privateAdd(this,
|
|
54
|
-
__privateAdd(this, _options
|
|
55
|
-
__privateAdd(this, _fallbackTransport
|
|
56
|
-
__privateAdd(this, _fallbackMethods
|
|
39
|
+
__privateAdd(this, _IotaClientGraphQLTransport_instances);
|
|
40
|
+
__privateAdd(this, _options);
|
|
41
|
+
__privateAdd(this, _fallbackTransport);
|
|
42
|
+
__privateAdd(this, _fallbackMethods);
|
|
57
43
|
__privateSet(this, _options, options);
|
|
58
44
|
__privateSet(this, _fallbackMethods, options.fallbackMethods || [
|
|
59
45
|
"executeTransactionBlock",
|
|
60
46
|
"dryRunTransactionBlock",
|
|
61
47
|
"devInspectTransactionBlock"
|
|
62
48
|
]);
|
|
63
|
-
if (options.
|
|
49
|
+
if (options.fallbackTransportUrl) {
|
|
64
50
|
__privateSet(this, _fallbackTransport, new import_client.IotaHTTPTransport({
|
|
65
|
-
url: options.
|
|
51
|
+
url: options.fallbackTransportUrl
|
|
66
52
|
}));
|
|
67
53
|
}
|
|
68
54
|
}
|
|
@@ -107,7 +93,7 @@ class IotaClientGraphQLTransport {
|
|
|
107
93
|
}
|
|
108
94
|
const method = import_methods.RPC_METHODS[clientMethod];
|
|
109
95
|
if (!method || __privateGet(this, _fallbackMethods).includes(clientMethod)) {
|
|
110
|
-
return __privateMethod(this,
|
|
96
|
+
return __privateMethod(this, _IotaClientGraphQLTransport_instances, unsupportedMethod_fn).call(this, input);
|
|
111
97
|
}
|
|
112
98
|
try {
|
|
113
99
|
return method(this, input.params);
|
|
@@ -128,7 +114,7 @@ class IotaClientGraphQLTransport {
|
|
|
128
114
|
_options = new WeakMap();
|
|
129
115
|
_fallbackTransport = new WeakMap();
|
|
130
116
|
_fallbackMethods = new WeakMap();
|
|
131
|
-
|
|
117
|
+
_IotaClientGraphQLTransport_instances = new WeakSet();
|
|
132
118
|
unsupportedMethod_fn = async function(input) {
|
|
133
119
|
if (!__privateGet(this, _fallbackTransport)) {
|
|
134
120
|
throw new import_methods.UnsupportedMethodError(input.method);
|
|
@@ -136,8 +122,7 @@ unsupportedMethod_fn = async function(input) {
|
|
|
136
122
|
return __privateGet(this, _fallbackTransport).request(input);
|
|
137
123
|
};
|
|
138
124
|
function handleGraphQLErrors(errors) {
|
|
139
|
-
if (!errors || errors.length === 0)
|
|
140
|
-
return;
|
|
125
|
+
if (!errors || errors.length === 0) return;
|
|
141
126
|
const errorInstances = errors.map((error) => new GraphQLResponseError(error));
|
|
142
127
|
if (errorInstances.length === 1) {
|
|
143
128
|
throw errorInstances[0];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/transport.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport type {\n IotaTransport,\n IotaTransportRequestOptions,\n IotaTransportSubscribeOptions,\n} from '@iota/iota-sdk/client';\nimport { IotaHTTPTransport } from '@iota/iota-sdk/client';\nimport type { DocumentNode } from 'graphql';\nimport { print } from 'graphql';\n\nimport { TypedDocumentString } from './generated/queries.js';\nimport { RPC_METHODS, UnsupportedMethodError, UnsupportedParamError } from './methods.js';\n\nexport interface IotaClientGraphQLTransportOptions {\n url: string;\n
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport type {\n IotaTransport,\n IotaTransportRequestOptions,\n IotaTransportSubscribeOptions,\n} from '@iota/iota-sdk/client';\nimport { IotaHTTPTransport } from '@iota/iota-sdk/client';\nimport type { DocumentNode } from 'graphql';\nimport { print } from 'graphql';\n\nimport { TypedDocumentString } from './generated/queries.js';\nimport { RPC_METHODS, UnsupportedMethodError, UnsupportedParamError } from './methods.js';\n\nexport interface IotaClientGraphQLTransportOptions {\n url: string;\n fallbackTransportUrl?: string;\n fallbackMethods?: (keyof typeof RPC_METHODS)[];\n}\n\nexport type GraphQLDocument<\n Result = Record<string, unknown>,\n Variables = Record<string, unknown>,\n> =\n | string\n | DocumentNode\n | TypedDocumentNode<Result, Variables>\n | TypedDocumentString<Result, Variables>;\n\nexport type GraphQLQueryOptions<\n Result = Record<string, unknown>,\n Variables = Record<string, unknown>,\n> = {\n query: GraphQLDocument<Result, Variables>;\n operationName?: string;\n extensions?: Record<string, unknown>;\n} & (Variables extends { [key: string]: never }\n ? { variables?: Variables }\n : {\n variables: Variables;\n });\n\nexport type GraphQLQueryResult<Result = Record<string, unknown>> = {\n data?: Result;\n errors?: GraphQLResponseErrors;\n extensions?: Record<string, unknown>;\n};\n\nexport type GraphQLResponseErrors = Array<{\n message: string;\n locations?: { line: number; column: number }[];\n path?: (string | number)[];\n}>;\n\nexport class IotaClientGraphQLTransport implements IotaTransport {\n #options: IotaClientGraphQLTransportOptions;\n #fallbackTransport?: IotaTransport;\n #fallbackMethods: (keyof typeof RPC_METHODS)[];\n\n constructor(options: IotaClientGraphQLTransportOptions) {\n this.#options = options;\n this.#fallbackMethods = options.fallbackMethods || [\n 'executeTransactionBlock',\n 'dryRunTransactionBlock',\n 'devInspectTransactionBlock',\n ];\n\n if (options.fallbackTransportUrl) {\n this.#fallbackTransport = new IotaHTTPTransport({\n url: options.fallbackTransportUrl,\n });\n }\n }\n\n async graphqlQuery<\n Result = Record<string, unknown>,\n Variables = Record<string, unknown>,\n Data = Result,\n >(\n options: GraphQLQueryOptions<Result, Variables>,\n getData?: (result: Result) => Data,\n ): Promise<NonNullable<Data>> {\n const res = await this.graphqlRequest(options);\n\n if (!res.ok) {\n throw new Error('Failed to fetch');\n }\n\n const { data, errors } = (await res.json()) as GraphQLQueryResult<Result>;\n\n handleGraphQLErrors(errors);\n\n const extractedData = data && (getData ? getData(data) : data);\n\n if (extractedData == null) {\n throw new Error('Missing response data');\n }\n\n return extractedData as NonNullable<Data>;\n }\n\n async graphqlRequest<Result = Record<string, unknown>, Variables = Record<string, unknown>>(\n options: GraphQLQueryOptions<Result, Variables>,\n ): Promise<Response> {\n return fetch(this.#options.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query:\n typeof options.query === 'string' ||\n options.query instanceof TypedDocumentString\n ? options.query.toString()\n : print(options.query),\n variables: options.variables,\n extensions: options.extensions,\n operationName: options.operationName,\n }),\n });\n }\n\n async request<T = unknown>(input: IotaTransportRequestOptions): Promise<T> {\n let clientMethod: keyof typeof RPC_METHODS;\n\n switch (input.method) {\n case 'rpc.discover':\n clientMethod = 'getRpcApiVersion';\n break;\n case 'iotax_getLatestAddressMetrics':\n clientMethod = 'getAddressMetrics';\n break;\n default:\n clientMethod = input.method.split('_')[1] as keyof typeof RPC_METHODS;\n }\n\n const method = RPC_METHODS[clientMethod];\n\n if (!method || this.#fallbackMethods.includes(clientMethod)) {\n return this.#unsupportedMethod(input);\n }\n\n try {\n return method(this, input.params as never) as Promise<T>;\n } catch (error) {\n if (this.#fallbackTransport && error instanceof UnsupportedParamError) {\n return this.#fallbackTransport.request(input);\n }\n\n throw error;\n }\n }\n\n async subscribe<T = unknown>(\n input: IotaTransportSubscribeOptions<T>,\n ): Promise<() => Promise<boolean>> {\n if (!this.#fallbackTransport) {\n throw new UnsupportedMethodError(input.method);\n }\n\n return this.#fallbackTransport.subscribe(input);\n }\n\n async #unsupportedMethod<T = unknown>(input: IotaTransportRequestOptions): Promise<T> {\n if (!this.#fallbackTransport) {\n throw new UnsupportedMethodError(input.method);\n }\n\n return this.#fallbackTransport.request(input);\n }\n}\n\nfunction handleGraphQLErrors(errors: GraphQLResponseErrors | undefined): void {\n if (!errors || errors.length === 0) return;\n\n const errorInstances = errors.map((error) => new GraphQLResponseError(error));\n\n if (errorInstances.length === 1) {\n throw errorInstances[0];\n }\n\n throw new AggregateError(errorInstances);\n}\n\nclass GraphQLResponseError extends Error {\n locations?: Array<{ line: number; column: number }>;\n\n constructor(error: GraphQLResponseErrors[0]) {\n super(error.message);\n this.locations = error.locations;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|