import { PrimitiveArg , StoreObjectArg } from './api' ; export type LocationMethods = keyof LocationAdapter ; export interface LocationState { hash : string ; hostname : string ; href : string ; pathname : string ; port : string ; protocol : string ; search : string ; } export abstract class LocationAdapter { abstract back ( ) ; abstract forward ( ) ; abstract getBaseHrefFromDOM ( baseHrefArg ) ; abstract getState ( stateArg ) ; abstract getLocation ( locationArg ) ; abstract onHashChange ( handlerArg ) ; abstract hashChange ( handlerArg , eventArg ) ; abstract onPopState ( handlerArg ) ; abstract popState ( handlerArg , eventArg ) ; abstract pushState ( stateArg , titleArg , urlArg ) ; abstract replaceState ( stateArg , titleArg , urlArg ) ; }