PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo-forks/avalanchejs/src/utils

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

import { getPVMManager } from '../serializable/pvm/codec';
import type { TransferableOutput } from '../serializable/avax';
import { getAVMManager } from '../serializable/avm/codec';
import type { Output } from '../serializable/evm';
import { Id } from '../serializable/fxs/common';
import { bytesCompare } from './bytesCompare';
import { isStakeableLockOut } from './typeGuards';

export const compareTransferableOutputs = (
  output1: TransferableOutput,
  output2: TransferableOutput,
): number => {
  const assetIdRes = Id.compare(output1.assetId, output2.assetId);
  if (assetIdRes !== 0) {
    return assetIdRes;
  }

  const pvmOutputTypes = [isStakeableLockOut];
  const avmCodec = getAVMManager().getDefaultCodec();
  const pvmCodec = getPVMManager().getDefaultCodec();

  const codec1 = pvmOutputTypes.some((checker) => checker(output1.output))
    ? pvmCodec
    : avmCodec;
  const codec2 = pvmOutputTypes.some((checker) => checker(output2.output))
    ? pvmCodec
    : avmCodec;

  return bytesCompare(output1.toBytes(codec1), output2.toBytes(codec2));
};

export const compareEVMOutputs = (a: Output, b: Output) => {
  if (a.address.value() === b.address.value()) {
    return bytesCompare(a.assetId.toBytes(), b.assetId.toBytes());
  }
  return a.address.value().localeCompare(b.address.value());
};

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


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