import type { MakeRequest, MRActions, MRReturn } from '../../common-types';
export type PlainClientDefaultParams = {
    spaceId?: string;
    environmentId?: string;
    organizationId?: string;
    releaseSchemaVersion?: 'Release.v1' | 'Release.v2';
    releaseId?: string;
};
/**
 * @internal
 */
type UnionOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
/**
 * Makes {@link PlainClientDefaultParams} fields optional in API method parameter types.
 * When default params (spaceId, environmentId, etc.) are set on the plain client,
 * those fields become optional in individual method calls.
 */
export type OptionalDefaults<T> = UnionOmit<T, keyof PlainClientDefaultParams> & Partial<Pick<T, Extract<keyof T, keyof PlainClientDefaultParams>>>;
/**
 * @internal
 */
export type WrapParams = {
    makeRequest: MakeRequest;
    defaults?: PlainClientDefaultParams;
};
/**
 * @internal
 */
export type WrapFn<ET extends keyof MRActions, Action extends keyof MRActions[ET], Params = 'params' extends keyof MRActions[ET][Action] ? MRActions[ET][Action]['params'] : undefined, Payload = 'payload' extends keyof MRActions[ET][Action] ? MRActions[ET][Action]['payload'] : undefined, Headers = 'headers' extends keyof MRActions[ET][Action] ? MRActions[ET][Action]['headers'] : undefined, Return = MRReturn<ET, Action>> = Params extends undefined ? () => Return : Payload extends undefined ? (params: Params) => Return : Headers extends undefined ? (params: Params, payload: Payload) => Return : (params: Params, payload: Payload, headers: Headers) => Return;
/**
 * @internal
 */
export declare const wrap: <ET extends keyof MRActions, Action extends keyof MRActions[ET]>({ makeRequest, defaults }: WrapParams, entityType: ET, action: Action) => WrapFn<ET, Action>;
export {};
