import type { ReactNode } from 'react'; import React from 'react'; import { StyleProp, ViewStyle } from 'react-native'; import { SliderStyle } from './style'; export type SliderMarks = { [key: number]: React.ReactNode; }; export type SliderValueType = number | [number, number]; export interface SliderRef { onSlide: (changeX: number) => void; } export type BaseSliderProps = { min?: number; max?: number; value?: SliderValue; defaultValue?: SliderValue; step?: number; marks?: SliderMarks; ticks?: boolean; disabled?: boolean; disabledStep?: boolean; icon?: ReactNode; popover?: boolean | ((value: number) => ReactNode); residentPopover?: boolean; tapToSeek?: boolean; onChange?: (value: SliderValue) => void; onAfterChange?: (value: SliderValue, index: number) => void; onSlidingStart?: (value: SliderValue, index: number) => void; onSlidingComplete?: (value: SliderValue, index: number) => void; style?: StyleProp; styles?: Partial; }; type NumberSliderProps = BaseSliderProps & { range?: false; }; type RangeSliderProps = BaseSliderProps<[number, number]> & { range: true; }; export type SliderProps = NumberSliderProps | RangeSliderProps; export {};