import { FormEncType, HTMLFormMethod } from "../router/utils.js";
import { RelativeRoutingType } from "../router/router.js";
//#region lib/dom/dom.d.ts
type ParamKeyValuePair = [string, string];
type URLSearchParamsInit = string | ParamKeyValuePair[] | Record | URLSearchParams;
/**
* Creates a URLSearchParams object using the given initializer.
*
* This is identical to `new URLSearchParams(init)` except it also supports
* arrays as values in the object form of the initializer instead of just
* strings. This is convenient when you need multiple values for a given key,
* but don't want to use an array initializer.
*
* @example
* // Instead of:
* let searchParams = new URLSearchParams([
* ["sort", "name"],
* ["sort", "price"],
* ]);
*
* // You can do:
* let searchParams = createSearchParams({
* sort: ["name", "price"],
* });
*
* @public
* @category Utils
* @param init The value used to initialize the URL search parameters.
* @returns A URLSearchParams object containing the initialized search
* parameters.
*/
declare function createSearchParams(init?: URLSearchParamsInit): URLSearchParams;
type JsonObject = { [Key in string]: JsonValue } & { [Key in string]?: JsonValue | undefined };
type JsonArray = JsonValue[] | readonly JsonValue[];
type JsonPrimitive = string | number | boolean | null;
type JsonValue = JsonPrimitive | JsonObject | JsonArray;
type SubmitTarget = HTMLFormElement | HTMLButtonElement | HTMLInputElement | FormData | URLSearchParams | JsonValue | null;
/**
* Submit options shared by both navigations and fetchers
*/
interface SharedSubmitOptions {
/**
* The HTTP method used to submit the form. Overrides `