declare type Optional<T> = {

[P in keyof T]?: T[P] | null;

}; declare type Collection<T> = Record<string, T>; declare type BaseRouteParameter = string | boolean | Date | number | bigint; declare type MethodRouteParameter = BaseRouteParameter | (() => BaseRouteParameter); declare type ModelRouteParameter = {

id: MethodRouteParameter;

} | {

to_param: MethodRouteParameter;

} | {

toParam: MethodRouteParameter;

}; declare type RequiredRouteParameter = BaseRouteParameter | ModelRouteParameter; declare type OptionalRouteParameter = undefined | null | RequiredRouteParameter; declare type QueryRouteParameter = OptionalRouteParameter | QueryRouteParameter[] | {

[k: string]: QueryRouteParameter;

}; declare type RouteParameters = Collection<QueryRouteParameter>; declare type Serializable = Collection<unknown>; declare type Serializer = (value: Serializable) => string; declare type RouteHelperExtras = {

requiredParams(): string[];
toString(): string;

}; declare type RequiredParameters<T extends number> = T extends 1 ? [RequiredRouteParameter] : T extends 2 ? [RequiredRouteParameter, RequiredRouteParameter] : T extends 3 ? [RequiredRouteParameter, RequiredRouteParameter, RequiredRouteParameter] : T extends 4 ? [

RequiredRouteParameter,
RequiredRouteParameter,
RequiredRouteParameter,
RequiredRouteParameter

] : RequiredRouteParameter[]; declare type RouteHelperOptions = RouteOptions & Collection<OptionalRouteParameter>; declare type RouteHelper<T extends number = number> = ((…args: […RequiredParameters<T>, RouteHelperOptions]) => string) & RouteHelperExtras; declare type RouteHelpers = Collection<RouteHelper>; declare type Configuration = {

prefix: string;
default_url_options: RouteParameters;
special_options_key: string;
serializer: Serializer;

}; interface RouterExposedMethods {

config(): Configuration;
configure(arg: Partial<Configuration>): Configuration;
serialize: Serializer;

} declare type KeywordUrlOptions = Optional<{

host: string;
protocol: string;
subdomain: string;
port: string | number;
anchor: string;
trailing_slash: boolean;
script_name: string;
params: RouteParameters;

}>; declare type RouteOptions = KeywordUrlOptions & RouteParameters; declare type PartsTable = Collection<{

r?: boolean;
d?: OptionalRouteParameter;

}>; declare type ModuleType = “CJS” | “AMD” | “UMD” | “ESM” | “DTS” | “NIL”; declare const RubyVariables: {

PREFIX: string;
DEPRECATED_FALSE_PARAMETER_BEHAVIOR: boolean;
SPECIAL_OPTIONS_KEY: string;
DEFAULT_URL_OPTIONS: RouteParameters;
SERIALIZER: Serializer;
ROUTES_OBJECT: RouteHelpers;
MODULE_TYPE: ModuleType;
WRAPPER: <T>(callback: T) => T;

}; declare const define: undefined | (((arg: unknown[], callback: () => unknown) => void) & {

amd?: unknown;

}); declare const module: {

exports: unknown;

} | undefined;