cyb/src/containers/mint/utils.ts

import { QueryParamsResponse as QueryParamsResponseResources } from '@cybercongress/cyber-js/build/codec/cyber/resources/v1beta1/query';
import BigNumber from 'bignumber.js';
import { SelectedState } from './types';

const BASE_VESTING_TIME = 86401;
const BASE_MAX_MINT_TIME = 41;
export const SLOTS_MAX = 16;

export const getERatio = (liquidH: number, balanceHydrogen: number) => {
  if (liquidH <= 0 || balanceHydrogen <= 0) {
    return 0;
  }

  return new BigNumber(liquidH)
    .dividedBy(balanceHydrogen)
    .shiftedBy(2)
    .dp(2, BigNumber.ROUND_FLOOR)
    .toNumber();
};

export const getMaxTimeMint = (
  resourcesParams: QueryParamsResponseResources['params'],
  selected: SelectedState,
  height: number
) => {
  if (!resourcesParams || height <= 0) {
    return BASE_MAX_MINT_TIME;
  }

  const { halvingPeriodAmpereBlocks, halvingPeriodVoltBlocks } = resourcesParams;

  const halvingPeriod =
    selected === SelectedState.millivolt ? halvingPeriodVoltBlocks : halvingPeriodAmpereBlocks;

  const halving = new BigNumber(2).pow(
    new BigNumber(height).dividedBy(halvingPeriod).dp(0, BigNumber.ROUND_FLOOR)
  );

  return new BigNumber(new BigNumber(halvingPeriod).multipliedBy(5).multipliedBy(halving))
    .dividedBy(BASE_VESTING_TIME)
    .dp(0, BigNumber.ROUND_FLOOR)
    .toNumber();
};

export const getAmountResource = (
  params: QueryParamsResponseResources['params'],
  selected: SelectedState,
  height: number,
  value: { valueH: number; valueDays: number }
) => {
  const { valueH, valueDays } = value;
  if (!params || valueDays <= 0 || valueH <= 0) {
    return 0;
  }

  const baseLength =
    selected === SelectedState.millivolt
      ? params.baseInvestmintPeriodVolt
      : params.baseInvestmintPeriodAmpere;
  const baseAmount =
    selected === SelectedState.millivolt
      ? params.baseInvestmintAmountVolt?.amount || 0
      : params.baseInvestmintAmountAmpere?.amount || 0;
  const halvingPeriod =
    selected === SelectedState.millivolt
      ? params.halvingPeriodVoltBlocks
      : params.halvingPeriodAmpereBlocks;

  const cycles = new BigNumber(new BigNumber(valueDays).multipliedBy(BASE_VESTING_TIME)).dividedBy(
    baseLength
  );
  const base = new BigNumber(valueH).dividedBy(baseAmount);
  const halving = new BigNumber(0.5).pow(
    new BigNumber(height).dividedBy(halvingPeriod).dp(0, BigNumber.ROUND_FLOOR)
  );

  return new BigNumber(cycles)
    .multipliedBy(base)
    .multipliedBy(halving)
    .dp(0, BigNumber.ROUND_FLOOR)
    .toNumber();
};

Synonyms

soft3.js/examples/utils.ts
cyb/src/utils/utils.ts
pussy-ts/src/utils/utils.ts
bostrom.network/src/lib/utils.ts
pussy-ts/src/services/ibc-history/utils.ts
cyb/src/services/CozoDb/utils.ts
cyb/src/features/ibc-history/utils.ts
cyb/src/containers/portal/utils.ts
pussy-ts/src/containers/portal/utils.ts
cyb/src/utils/search/utils.ts
pussy-ts/src/services/CozoDb/utils.ts
pussy-ts/src/utils/search/utils.ts
cyb/src/containers/warp/utils.ts
cyb/src/components/time/utils.ts
pussy-ts/src/containers/warp/utils.ts
cyb/src/pages/teleport/swap/utils.ts
pussy-ts/src/pages/teleport/swap/utils.ts
cyb/src/features/studio/utils/utils.ts
cyb/src/containers/sigma/hooks/utils.ts
cyb/src/pages/robot/Brain/utils.ts
cyb/src/services/backend/services/sync/utils.ts
pussy-ts/src/services/backend/services/sync/utils.ts
cyb/src/pages/teleport/components/Inputs/utils.ts
pussy-ts/src/services/backend/services/indexer/utils.ts
pussy-ts/src/services/backend/services/lcd/utils.ts
pussy-ts/src/pages/teleport/components/Inputs/utils.ts
cyb/src/features/studio/components/Editor/utils/utils.ts
cyb/src/pages/robot/_refactor/account/tabs/feeds/utils.ts

Neighbours