PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@bitgo-forks/avalanchejs/src/vms/pvm

Просмотр файла: api.ts

import { TransferableOutput } from '../../serializable/avax';
import { Utxo } from '../../serializable/avax/utxo';
import { getPVMManager } from '../../serializable/pvm/codec';
import { hexToBuffer } from '../../utils';
import type { GetAssetDescriptionResponse } from '../common/apiModels';
import { AvaxApi } from '../common/avaxApi';
import type {
  GetBalanceParams,
  GetBalanceResponse,
  GetBlockchainsResponse,
  GetBlockchainStatusResponse,
  GetCurrentSupplyResponse,
  GetCurrentValidatorsParams,
  GetCurrentValidatorsResponse,
  GetHeightResponse,
  GetMaxStakeAmountParams,
  GetMinStakeResponse,
  GetPendingValidatorsParams,
  GetPendingValidatorsResponse,
  GetRewardUTXOsParams,
  GetRewardUTXOsResponse,
  GetStakeParams,
  GetStakeResponse,
  GetStakingAssetIDParams,
  GetStakingAssetIDResponse,
  GetSubnetsParams,
  GetSubnetsResponse,
  GetTimestampResponse,
  GetTotalStakeResponse,
  GetTxStatusParams,
  GetTxStatusResponse,
  GetValidatorsAtParams,
  GetValidatorsAtResponse,
  SampleValidatorsParams,
  SampleValidatorsResponse,
  ValidatedByParams,
  ValidatedByResponse,
  ValidatesParams,
  ValidatesResponse,
} from './models';
import type {
  GetRewardUTXOsServerResponse,
  GetStakeServerResponse,
} from './privateModels';

export class PVMApi extends AvaxApi {
  constructor(baseURL?: string) {
    super(baseURL, '/ext/bc/P', 'platform', getPVMManager());
  }

  getAssetDescription(assetID: string): Promise<GetAssetDescriptionResponse> {
    return this.callRpc<GetAssetDescriptionResponse>('getAssetDescription', {
      assetID,
    });
  }

  getCurrentValidators(
    getCurrentValidatorsParams?: GetCurrentValidatorsParams,
  ): Promise<GetCurrentValidatorsResponse> {
    return this.callRpc<GetCurrentValidatorsResponse>(
      'getCurrentValidators',
      getCurrentValidatorsParams,
    );
  }
  getPendingValidators(
    getPendingValidatorsParams?: GetPendingValidatorsParams,
  ): Promise<GetPendingValidatorsResponse> {
    return this.callRpc<GetPendingValidatorsResponse>(
      'getPendingValidators',
      getPendingValidatorsParams,
    );
  }

  async getRewardUTXOs(
    getRewardUTXOsParams: GetRewardUTXOsParams,
  ): Promise<GetRewardUTXOsResponse> {
    const resp = await this.callRpc<GetRewardUTXOsServerResponse>(
      'getRewardUTXOs',
      getRewardUTXOsParams,
    );
    return {
      ...resp,
      utxos: resp.utxos.map((bytes) =>
        getPVMManager().unpack(hexToBuffer(bytes), Utxo),
      ),
    };
  }

  async getStake(getStakeParams: GetStakeParams): Promise<GetStakeResponse> {
    const resp = await this.callRpc<GetStakeServerResponse>(
      'getStake',
      getStakeParams,
    );
    return {
      ...resp,
      stakedOutputs: resp.stakedOutputs.map((bytes) =>
        getPVMManager().unpack(hexToBuffer(bytes), TransferableOutput),
      ),
    };
  }

  getValidatorsAt(
    getValidatorsAtParams: GetValidatorsAtParams,
  ): Promise<GetValidatorsAtResponse> {
    return this.callRpc<GetValidatorsAtResponse>(
      'getValidatorsAt',
      getValidatorsAtParams,
    );
  }

  getCurrentSupply(): Promise<GetCurrentSupplyResponse> {
    return this.callRpc<GetCurrentSupplyResponse>('getCurrentSupply');
  }

  getMaxStakeAmount(
    getMaxStakeAmountParams: GetMaxStakeAmountParams,
  ): Promise<GetMaxStakeAmountParams> {
    return this.callRpc<GetMaxStakeAmountParams>(
      'getMaxStakeAmount',
      getMaxStakeAmountParams,
    );
  }

  /**
   * @link https://docs.avax.network/apis/avalanchego/apis/p-chain#platformgetbalance
   *
   * @param GetBalanceParams
   * @returns GetBalanceResponse
   */
  async getBalance(
    GetBalanceParams: GetBalanceParams,
  ): Promise<GetBalanceResponse> {
    const resp = await this.callRpc<{
      balance: string;
      unlocked: string;
      lockedStakeable: string;
      lockedNotStakeable: string;
      utxoIDs: {
        txID: string;
        outputIndex: number;
      }[];
    }>('getBalance', GetBalanceParams);

    return {
      balance: BigInt(resp.balance),
      unlocked: BigInt(resp.unlocked),
      lockedStakeable: BigInt(resp.lockedStakeable),
      lockedNotStakeable: BigInt(resp.lockedNotStakeable),
      utxoIDs: resp.utxoIDs,
    };
  }

  getBlockchains(): Promise<GetBlockchainsResponse> {
    return this.callRpc<GetBlockchainsResponse>('getBlockchains');
  }

  getBlockchainStatus(
    blockchainID: string,
  ): Promise<GetBlockchainStatusResponse> {
    return this.callRpc<GetBlockchainStatusResponse>('getBlockchainStatus', {
      blockchainID,
    });
  }

  getHeight(): Promise<GetHeightResponse> {
    return this.callRpc<GetHeightResponse>('getHeight');
  }

  getMinStake(): Promise<GetMinStakeResponse> {
    return this.callRpc<GetMinStakeResponse>('getMinStake');
  }

  getStakingAssetID(
    getStakingAssetIDParams: GetStakingAssetIDParams,
  ): Promise<GetStakingAssetIDResponse> {
    return this.callRpc<GetStakingAssetIDResponse>(
      'getStakingAssetID',
      getStakingAssetIDParams,
    );
  }

  getSubnets(getSubnetsParams: GetSubnetsParams): Promise<GetSubnetsResponse> {
    return this.callRpc<GetSubnetsResponse>('getSubnets', getSubnetsParams);
  }

  getTimestamp(): Promise<GetTimestampResponse> {
    return this.callRpc<GetTimestampResponse>('getTimestamp');
  }

  getTotalStake(subnetID: string): Promise<GetTotalStakeResponse> {
    return this.callRpc<GetTotalStakeResponse>('getTotalStake', { subnetID });
  }

  getTxStatus(
    getTxStatusParams: GetTxStatusParams,
  ): Promise<GetTxStatusResponse> {
    return this.callRpc<GetTxStatusResponse>('getTxStatus', getTxStatusParams);
  }

  sampleValidators(
    sampleValidatorsParams: SampleValidatorsParams,
  ): Promise<SampleValidatorsResponse> {
    return this.callRpc<SampleValidatorsResponse>(
      'sampleValidators',
      sampleValidatorsParams,
    );
  }

  validatedBy(
    validatedByParams: ValidatedByParams,
  ): Promise<ValidatedByResponse> {
    return this.callRpc<ValidatedByResponse>('validatedBy', validatedByParams);
  }

  validates(validatesParams: ValidatesParams): Promise<ValidatesResponse> {
    return this.callRpc<ValidatesResponse>('validates', validatesParams);
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!