@fewcha/aptos
Version:
308 lines (294 loc) • 13 kB
text/typescript
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { Address } from '../models/Address';
import type { EncodeSubmissionRequest } from '../models/EncodeSubmissionRequest';
import type { GasEstimation } from '../models/GasEstimation';
import type { HashValue } from '../models/HashValue';
import type { HexEncodedBytes } from '../models/HexEncodedBytes';
import type { PendingTransaction } from '../models/PendingTransaction';
import type { SubmitTransactionRequest } from '../models/SubmitTransactionRequest';
import type { Transaction } from '../models/Transaction';
import type { TransactionsBatchSubmissionResult } from '../models/TransactionsBatchSubmissionResult';
import type { U64 } from '../models/U64';
import type { UserTransaction } from '../models/UserTransaction';
import type { CancelablePromise } from '../core/CancelablePromise';
import type { BaseHttpRequest } from '../core/BaseHttpRequest';
export class TransactionsService {
constructor(public readonly httpRequest: BaseHttpRequest) {}
/**
* Get transactions
* Retrieve on-chain committed transactions. The page size and start ledger version
* can be provided to get a specific sequence of transactions.
*
* If the version has been pruned, then a 410 will be returned.
*
* To retrieve a pending transaction, use /transactions/by_hash.
* @param start Ledger version to start list of transactions
*
* If not provided, defaults to showing the latest transactions
* @param limit Max number of transactions to retrieve.
*
* If not provided, defaults to default page size
* @returns Transaction
* @throws ApiError
*/
public getTransactions(
start?: U64,
limit?: number,
): CancelablePromise<Array<Transaction>> {
return this.httpRequest.request({
method: 'GET',
url: '/transactions',
query: {
'start': start,
'limit': limit,
},
});
}
/**
* Submit transaction
* This endpoint accepts transaction submissions in two formats.
*
* To submit a transaction as JSON, you must submit a SubmitTransactionRequest.
* To build this request, do the following:
*
* 1. Encode the transaction as BCS. If you are using a language that has
* native BCS support, make sure of that library. If not, you may take
* advantage of /transactions/encode_submission. When using this
* endpoint, make sure you trust the node you're talking to, as it is
* possible they could manipulate your request.
* 2. Sign the encoded transaction and use it to create a TransactionSignature.
* 3. Submit the request. Make sure to use the "application/json" Content-Type.
*
* To submit a transaction as BCS, you must submit a SignedTransaction
* encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.
* Make sure to use the `application/x.aptos.signed_transaction+bcs` Content-Type.
* @param requestBody
* @returns PendingTransaction
* @throws ApiError
*/
public submitTransaction(
requestBody: SubmitTransactionRequest,
): CancelablePromise<PendingTransaction> {
return this.httpRequest.request({
method: 'POST',
url: '/transactions',
body: requestBody,
mediaType: 'application/json',
});
}
/**
* Get transaction by hash
* Look up a transaction by its hash. This is the same hash that is returned
* by the API when submitting a transaction (see PendingTransaction).
*
* When given a transaction hash, the server first looks for the transaction
* in storage (on-chain, committed). If no on-chain transaction is found, it
* looks the transaction up by hash in the mempool (pending, not yet committed).
*
* To create a transaction hash by yourself, do the following:
* 1. Hash message bytes: "RawTransaction" bytes + BCS bytes of [Transaction](https://aptos-labs.github.io/aptos-core/aptos_types/transaction/enum.Transaction.html).
* 2. Apply hash algorithm `SHA3-256` to the hash message bytes.
* 3. Hex-encode the hash bytes with `0x` prefix.
* @param txnHash Hash of transaction to retrieve
* @returns Transaction
* @throws ApiError
*/
public getTransactionByHash(
txnHash: HashValue,
): CancelablePromise<Transaction> {
return this.httpRequest.request({
method: 'GET',
url: '/transactions/by_hash/{txn_hash}',
path: {
'txn_hash': txnHash,
},
});
}
/**
* Get transaction by version
* Retrieves a transaction by a given version. If the version has been
* pruned, a 410 will be returned.
* @param txnVersion Version of transaction to retrieve
* @returns Transaction
* @throws ApiError
*/
public getTransactionByVersion(
txnVersion: U64,
): CancelablePromise<Transaction> {
return this.httpRequest.request({
method: 'GET',
url: '/transactions/by_version/{txn_version}',
path: {
'txn_version': txnVersion,
},
});
}
/**
* Get account transactions
* Retrieves on-chain committed transactions from an account. If the start
* version is too far in the past, a 410 will be returned.
*
* If no start version is given, it will start at version 0.
*
* To retrieve a pending transaction, use /transactions/by_hash.
* @param address Address of account with or without a `0x` prefix
* @param start Account sequence number to start list of transactions
*
* If not provided, defaults to showing the latest transactions
* @param limit Max number of transactions to retrieve.
*
* If not provided, defaults to default page size
* @returns Transaction
* @throws ApiError
*/
public getAccountTransactions(
address: Address,
start?: U64,
limit?: number,
): CancelablePromise<Array<Transaction>> {
return this.httpRequest.request({
method: 'GET',
url: '/accounts/{address}/transactions',
path: {
'address': address,
},
query: {
'start': start,
'limit': limit,
},
});
}
/**
* Submit batch transactions
* This allows you to submit multiple transactions. The response has three outcomes:
*
* 1. All transactions succeed, and it will return a 202
* 2. Some transactions succeed, and it will return the failed transactions and a 206
* 3. No transactions succeed, and it will also return the failed transactions and a 206
*
* To submit a transaction as JSON, you must submit a SubmitTransactionRequest.
* To build this request, do the following:
*
* 1. Encode the transaction as BCS. If you are using a language that has
* native BCS support, make sure to use that library. If not, you may take
* advantage of /transactions/encode_submission. When using this
* endpoint, make sure you trust the node you're talking to, as it is
* possible they could manipulate your request.
* 2. Sign the encoded transaction and use it to create a TransactionSignature.
* 3. Submit the request. Make sure to use the "application/json" Content-Type.
*
* To submit a transaction as BCS, you must submit a SignedTransaction
* encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.
* Make sure to use the `application/x.aptos.signed_transaction+bcs` Content-Type.
* @param requestBody
* @returns TransactionsBatchSubmissionResult
* @throws ApiError
*/
public submitBatchTransactions(
requestBody: Array<SubmitTransactionRequest>,
): CancelablePromise<TransactionsBatchSubmissionResult> {
return this.httpRequest.request({
method: 'POST',
url: '/transactions/batch',
body: requestBody,
mediaType: 'application/json',
});
}
/**
* Simulate transaction
* The output of the transaction will have the exact transaction outputs and events that running
* an actual signed transaction would have. However, it will not have the associated state
* hashes, as they are not updated in storage. This can be used to estimate the maximum gas
* units for a submitted transaction.
*
* To use this, you must:
* - Create a SignedTransaction with a zero-padded signature.
* - Submit a SubmitTransactionRequest containing a UserTransactionRequest containing that signature.
*
* To use this endpoint with BCS, you must submit a SignedTransaction
* encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.
* @param requestBody
* @param estimateMaxGasAmount If set to true, the max gas value in the transaction will be ignored
* and the maximum possible gas will be used
* @param estimateGasUnitPrice If set to true, the gas unit price in the transaction will be ignored
* and the estimated value will be used
* @param estimatePrioritizedGasUnitPrice If set to true, the transaction will use a higher price than the original
* estimate.
* @returns UserTransaction
* @throws ApiError
*/
public simulateTransaction(
requestBody: SubmitTransactionRequest,
estimateMaxGasAmount?: boolean,
estimateGasUnitPrice?: boolean,
estimatePrioritizedGasUnitPrice?: boolean,
): CancelablePromise<Array<UserTransaction>> {
return this.httpRequest.request({
method: 'POST',
url: '/transactions/simulate',
query: {
'estimate_max_gas_amount': estimateMaxGasAmount,
'estimate_gas_unit_price': estimateGasUnitPrice,
'estimate_prioritized_gas_unit_price': estimatePrioritizedGasUnitPrice,
},
body: requestBody,
mediaType: 'application/json',
});
}
/**
* Encode submission
* This endpoint accepts an EncodeSubmissionRequest, which internally is a
* UserTransactionRequestInner (and optionally secondary signers) encoded
* as JSON, validates the request format, and then returns that request
* encoded in BCS. The client can then use this to create a transaction
* signature to be used in a SubmitTransactionRequest, which it then
* passes to the /transactions POST endpoint.
*
* To be clear, this endpoint makes it possible to submit transaction
* requests to the API from languages that do not have library support for
* BCS. If you are using an SDK that has BCS support, such as the official
* Rust, TypeScript, or Python SDKs, you do not need to use this endpoint.
*
* To sign a message using the response from this endpoint:
* - Decode the hex encoded string in the response to bytes.
* - Sign the bytes to create the signature.
* - Use that as the signature field in something like Ed25519Signature, which you then use to build a TransactionSignature.
* @param requestBody
* @returns HexEncodedBytes
* @throws ApiError
*/
public encodeSubmission(
requestBody: EncodeSubmissionRequest,
): CancelablePromise<HexEncodedBytes> {
return this.httpRequest.request({
method: 'POST',
url: '/transactions/encode_submission',
body: requestBody,
mediaType: 'application/json',
});
}
/**
* Estimate gas price
* Gives an estimate of the gas unit price required to get a transaction on chain in a
* reasonable amount of time. The gas unit price is the amount that each transaction commits to
* pay for each unit of gas consumed in executing the transaction. The estimate is based on
* recent history: it gives the minimum gas that would have been required to get into recent
* blocks, for blocks that were full. (When blocks are not full, the estimate will match the
* minimum gas unit price.)
*
* The estimation is given in three values: de-prioritized (low), regular, and prioritized
* (aggressive). Using a more aggressive value increases the likelihood that the transaction
* will make it into the next block; more aggressive values are computed with a larger history
* and higher percentile statistics. More details are in AIP-34.
* @returns GasEstimation
* @throws ApiError
*/
public estimateGasPrice(): CancelablePromise<GasEstimation> {
return this.httpRequest.request({
method: 'GET',
url: '/estimate_gas_price',
});
}
}