import type { PermittedHandlerExport } from "@metamask/permission-controller";
import type { ProviderRequestParams, ProviderRequestResult } from "@metamask/snaps-sdk";
import { type InferMatching } from "@metamask/snaps-utils";
import { type Json } from "@metamask/utils";
type NetworkConfiguration = {
    defaultRpcEndpointIndex: number;
    rpcEndpoints: {
        networkClientId: string;
    }[];
};
export type ProviderRequestMethodHooks = {
    hasPermission: (permissionName: string) => boolean;
    getNetworkConfigurationByChainId: (chainId: string) => NetworkConfiguration | undefined;
    getNetworkClientById: (id: string) => {
        provider: {
            request: (request: Json) => Promise<Json>;
        };
    };
};
export declare const providerRequestHandler: PermittedHandlerExport<ProviderRequestMethodHooks, ProviderRequestParameters, ProviderRequestResult>;
declare const ProviderRequestParametersStruct: import("@metamask/superstruct").Struct<{
    request: {
        method: string;
        params?: Json[] | Record<string, Json> | undefined;
    };
    chainId: `${string}:${string}`;
}, {
    chainId: import("@metamask/superstruct").Struct<`${string}:${string}`, null>;
    request: import("@metamask/superstruct").Struct<{
        method: string;
        params?: Json[] | Record<string, Json> | undefined;
    }, {
        method: import("@metamask/superstruct").Struct<string, null>;
        params: import("@metamask/superstruct").Struct<Json[] | Record<string, Json> | undefined, null>;
    }>;
}>;
export type ProviderRequestParameters = InferMatching<typeof ProviderRequestParametersStruct, ProviderRequestParams>;
export {};
//# sourceMappingURL=experimentalProviderRequest.d.cts.map