PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@aptos-labs/ts-sdk/src/api
Просмотр файла: general.ts
// Copyright © Aptos Foundation
// SPDX-License-Identifier: Apache-2.0
import { AptosConfig } from "./aptosConfig";
import {
getChainTopUserTransactions,
getIndexerLastSuccessVersion,
getLedgerInfo,
getProcessorStatus,
queryIndexer,
} from "../internal/general";
import { getBlockByHeight, getBlockByVersion } from "../internal/transaction";
import { view, viewJson } from "../internal/view";
import {
AnyNumber,
Block,
GetChainTopUserTransactionsResponse,
GetProcessorStatusResponse,
GraphqlQuery,
LedgerInfo,
LedgerVersionArg,
MoveValue,
} from "../types";
import { ProcessorType } from "../utils/const";
import { InputViewFunctionData, InputViewFunctionJsonData } from "../transactions";
/**
* A class to query various Aptos-related information and perform operations on the Aptos blockchain.
*/
export class General {
readonly config: AptosConfig;
/**
* Initializes a new instance of the Aptos client with the specified configuration.
* This allows users to interact with the Aptos blockchain using the provided settings.
*
* @param config - The configuration settings for the Aptos client.
* @param config.network - The network to connect to (e.g., TESTNET, MAINNET).
* @param config.nodeUrl - The URL of the Aptos node to connect to.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* async function runExample() {
* // Create a configuration for the Aptos client
* const config = new AptosConfig({
* network: Network.TESTNET, // specify the network
* nodeUrl: "https://testnet.aptos.dev" // specify the node URL
* });
*
* // Initialize the Aptos client with the configuration
* const aptos = new Aptos(config);
*
* console.log("Aptos client initialized:", aptos);
* }
* runExample().catch(console.error);
* ```
*/
constructor(config: AptosConfig) {
this.config = config;
}
/**
* Queries for the Aptos ledger information.
*
* @returns The Aptos Ledger Info, which includes details such as chain ID, epoch, and ledger version.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Fetching the ledger information
* const ledgerInfo = await aptos.getLedgerInfo();
*
* console.log(ledgerInfo);
* }
* runExample().catch(console.error);
* ```
*/
async getLedgerInfo(): Promise<LedgerInfo> {
return getLedgerInfo({ aptosConfig: this.config });
}
/**
* Retrieves the chain ID of the Aptos blockchain.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Fetching the chain ID
* const chainId = await aptos.getChainId();
* console.log("Chain ID:", chainId);
* }
* runExample().catch(console.error);
*
* @returns The chain ID of the Aptos blockchain.
* ```
*/
async getChainId(): Promise<number> {
const result = await this.getLedgerInfo();
return result.chain_id;
}
/**
* Retrieves block information by the specified ledger version.
*
* @param args - The arguments for retrieving the block.
* @param args.ledgerVersion - The ledger version to lookup block information for.
* @param args.options - Optional parameters for the request.
* @param args.options.withTransactions - If set to true, include all transactions in the block.
*
* @returns Block information with optional transactions.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Retrieve block information for a specific ledger version
* const block = await aptos.getBlockByVersion({ ledgerVersion: 5 });
* console.log(block);
* }
* runExample().catch(console.error);
* ```
*/
async getBlockByVersion(args: {
ledgerVersion: AnyNumber;
options?: { withTransactions?: boolean };
}): Promise<Block> {
return getBlockByVersion({
aptosConfig: this.config,
...args,
});
}
/**
* Retrieve a block by its height, allowing for the inclusion of transactions if specified.
*
* @param args - The parameters for the block retrieval.
* @param args.blockHeight - The block height to look up, starting at 0.
* @param args.options - Optional settings for the retrieval.
* @param args.options.withTransactions - If set to true, includes all transactions in the block.
*
* @returns The block with optional transactions included.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Retrieve the block at height 5, including transactions
* const block = await aptos.getBlockByHeight({ blockHeight: 5, options: { withTransactions: true } });
* console.log(block);
* }
* runExample().catch(console.error);
* ```
*/
async getBlockByHeight(args: { blockHeight: AnyNumber; options?: { withTransactions?: boolean } }): Promise<Block> {
return getBlockByHeight({ aptosConfig: this.config, ...args });
}
/**
* Queries for a Move view function
* @param args.payload Payload for the view function
* @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version
*
* @example
* const data = await aptos.view({
* payload: {
* function: "0x1::coin::balance",
* typeArguments: ["0x1::aptos_coin::AptosCoin"],
* functionArguments: [accountAddress],
* }
* })
*
* @returns an array of Move values
*/
async view<T extends Array<MoveValue>>(args: {
payload: InputViewFunctionData;
options?: LedgerVersionArg;
}): Promise<T> {
return view<T>({ aptosConfig: this.config, ...args });
}
/**
* Queries for a Move view function with JSON, this provides compatability with the old `aptos` package
* @param args.payload Payload for the view function
* @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version
*
* @example
* const data = await aptos.view({
* payload: {
* function: "0x1::coin::balance",
* typeArguments: ["0x1::aptos_coin::AptosCoin"],
* functionArguments: [accountAddress.toString()],
* }
* })
*
* @returns an array of Move values
*/
async viewJson<T extends Array<MoveValue>>(args: {
payload: InputViewFunctionJsonData;
options?: LedgerVersionArg;
}): Promise<T> {
return viewJson<T>({ aptosConfig: this.config, ...args });
}
/**
* Queries the top user transactions based on the specified limit.
*
* @param args - The arguments for querying top user transactions.
* @param args.limit - The number of transactions to return.
* @returns GetChainTopUserTransactionsResponse
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Fetch the top user transactions with a limit of 5
* const topUserTransactions = await aptos.getChainTopUserTransactions({ limit: 5 });
*
* console.log(topUserTransactions);
* }
* runExample().catch(console.error);
* ```
*/
async getChainTopUserTransactions(args: { limit: number }): Promise<GetChainTopUserTransactionsResponse> {
return getChainTopUserTransactions({
aptosConfig: this.config,
...args,
});
}
/**
* Retrieves data from the Aptos Indexer using a GraphQL query.
* This function allows you to execute complex queries to fetch specific data from the Aptos blockchain.
*
* @param args.query.query - A GraphQL query string.
* @param args.query.variables - The variables for the query (optional).
*
* @return The provided T type.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Querying the Aptos Indexer for ledger information
* const topUserTransactions = await aptos.queryIndexer({
* query: `query MyQuery {
* ledger_infos {
* chain_id
* }
* }`
* });
*
* console.log(topUserTransactions);
* }
* runExample().catch(console.error);
* ```
*/
async queryIndexer<T extends {}>(args: { query: GraphqlQuery }): Promise<T> {
return queryIndexer<T>({
aptosConfig: this.config,
...args,
});
}
/**
* Queries for the last successful indexer version, providing insight into the ledger version the indexer is updated to, which
* may lag behind the full nodes.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Get the last successful indexer version
* const version = await aptos.getIndexerLastSuccessVersion();
* console.log(`Last successful indexer version: ${version}`);
* }
* runExample().catch(console.error);
* ```
*/
async getIndexerLastSuccessVersion(): Promise<bigint> {
return getIndexerLastSuccessVersion({ aptosConfig: this.config });
}
/**
* Query the processor status for a specific processor type.
*
* @param processorType The processor type to query.
* @returns The status of the specified processor type.
*
* @example
* ```typescript
* import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
*
* const config = new AptosConfig({ network: Network.TESTNET });
* const aptos = new Aptos(config);
*
* async function runExample() {
* // Get the processor status for the account transactions processor
* const status = await aptos.getProcessorStatus("account_transactions_processor");
* console.log(status);
* }
* runExample().catch(console.error);
* ```
*/
async getProcessorStatus(processorType: ProcessorType): Promise<GetProcessorStatusResponse[0]> {
return getProcessorStatus({ aptosConfig: this.config, processorType });
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!