import { type ThunkAction, type ThunkDispatch, UnknownAction } from '@reduxjs/toolkit';
import * as APIResources from './modules/api-resources';
import * as LocalizedResourcesMap from './modules/localized-resources-map';
import { type Action } from './actions';
import { APIResourceType, type APIResource, type APIResourceLocale } from '../api';
declare const reducer: import("@reduxjs/toolkit").Reducer<{
    apiResources: APIResources.State;
    localizedResourcesMap: Map<string, Map<string, string | null>>;
}, Action | UnknownAction, Partial<{
    apiResources: APIResources.State | undefined;
    localizedResourcesMap: Map<string, Map<string, string | null>> | undefined;
}>>;
export type State = ReturnType<typeof reducer>;
export type Dispatch = ThunkDispatch<State, unknown, Action>;
export type HttpFetch = (url: string | URL, init?: RequestInit) => Promise<Response>;
export type SerializedState = {
    apiResources: APIResources.SerializedState;
    localizedResourcesMap: LocalizedResourcesMap.SerializedState;
};
export declare function getHasAPIResource<T extends APIResourceType>(state: State, resourceType: APIResourceType, resourceId: string, locale?: APIResourceLocale<T>): boolean;
export declare function getAPIResource<T extends APIResourceType>(state: State, resourceType: T, resourceId: string, locale?: APIResourceLocale<T>): Extract<APIResource, {
    __typename: T;
}> | null;
type Thunk<ReturnType> = ThunkAction<ReturnType, State, unknown, Action>;
export declare function fetchAPIResource<T extends APIResourceType>(resourceType: T, resourceId: string, fetch: HttpFetch, locale?: APIResourceLocale<T>): Thunk<Promise<Extract<APIResource, {
    __typename: T;
}> | null>>;
export declare function configureStore({ defaultLocale, serializedState, }: {
    defaultLocale: string | undefined;
    serializedState?: SerializedState;
}): import("@reduxjs/toolkit").EnhancedStore<{
    apiResources: APIResources.State;
    localizedResourcesMap: Map<string, Map<string, string | null>>;
}, Action | UnknownAction, import("@reduxjs/toolkit").Tuple<[import("@reduxjs/toolkit").StoreEnhancer<{
    dispatch: ThunkDispatch<{
        apiResources: APIResources.State;
        localizedResourcesMap: Map<string, Map<string, string | null>>;
    }, undefined, UnknownAction>;
}>, import("@reduxjs/toolkit").StoreEnhancer]>>;
export type Store = ReturnType<typeof configureStore>;
export {};
//# sourceMappingURL=makeswift-api-client.d.ts.map