export type EncodeAndDecodeOptions = { encode: (value: T) => string | undefined; decode: (value: string | null) => T | null; defaultValue?: T; equalityFn?: T extends object ? (current: T | null, next: T | null) => boolean : never; }; export type CurriedEncodeAndDecode = ((equalityFn: EncodeAndDecodeOptions['equalityFn']) => EncodeAndDecodeOptions) & EncodeAndDecodeOptions; export type NavigationOptions = { debounceHistory?: number; pushHistory?: boolean; sort?: boolean; showDefaults?: boolean; };