import type { BalenaModel, PineClient } from '..';
import type { StringKeyof } from '../../typings/utils';
import type { ExpandableStringKeyOf, ODataOptionsWithoutCount, OptionsToResponse } from 'pinejs-client-core';
type DependentResourceName = {
    [K in StringKeyof<BalenaModel>]: BalenaModel[K] extends {
        Read: {
            id: number;
            value: string;
        };
        Write: {
            value: string;
        };
    } ? K : never;
}[StringKeyof<BalenaModel>];
export declare function buildDependentResource<T extends DependentResourceName>({ pine }: {
    pine: PineClient;
}, { resourceName, resourceKeyField, parentResourceName, getResourceId, }: {
    resourceName: T;
    resourceKeyField: StringKeyof<BalenaModel[T]['Read']>;
    parentResourceName: ExpandableStringKeyOf<BalenaModel[T]['Read']>;
    getResourceId: (uuidOrIdOrDict: string | number | Record<string, unknown>) => Promise<number>;
}): {
    getAll<O extends ODataOptionsWithoutCount<BalenaModel[T]["Read"]>>(options?: O): Promise<OptionsToResponse<BalenaModel[T]["Read"], O, undefined>>;
    getAllByParent<O extends ODataOptionsWithoutCount<BalenaModel[T]["Read"]>>(parentParam: string | number | Record<string, unknown>, options?: O): Promise<OptionsToResponse<BalenaModel[T]["Read"], O, undefined>>;
    get(parentParam: string | number | Record<string, unknown>, key: string): Promise<string | undefined>;
    set(parentParam: string | number | Record<string, unknown>, key: string, value: string): Promise<void>;
    remove(parentParam: string | number | Record<string, unknown>, key: string): Promise<void>;
};
export {};
