import { DatumValue } from '@nivo/core' import { Point, ResponsiveLine } from '@nivo/line' import { NUMERIC_GRAPH_COLOR } from 'common/numeric-constants' import { memo } from 'react' import { range } from 'lodash' import { getDpmOutcomeProbabilities } from '../../../common/calculate-dpm' import { NumericContract } from '../../../common/contract' import { useWindowSize } from '../../hooks/use-window-size' import { Col } from '../layout/col' import { formatLargeNumber, formatPercent } from 'common/util/format' export type GraphPoint = { // A probability between 0 and 1 x: number // Amount of liquidity y: number } export const LiquidityGraph = memo(function NumericGraph(props: { min?: 0 max?: 1 points: GraphPoint[] height?: number marker?: number // Value between min and max to highlight on x-axis }) { const { height, min, max, points, marker } = props // Really maxLiquidity const maxLiquidity = 500 const data = [{ id: 'Probability', data: points, color: NUMERIC_GRAPH_COLOR }] const yTickValues = [ 0, 0.25 * maxLiquidity, 0.5 * maxLiquidity, 0.75 * maxLiquidity, maxLiquidity, ] const { width } = useWindowSize() const numXTickValues = !width || width < 800 ? 2 : 5 return (