import { DocumentPositionType, DocumentWithPositionsMetaType, MetaType, RemapApiHref } from 'moysklad-api-model';
import { EntityRef, HrefMetaType, Meta } from '../types';
export declare function getHelpers(ms: {
    buildUrl: (path: string) => string;
}): {
    href: {
        (ref: null | undefined): undefined;
        <T extends `https://${string}` | null | undefined>(ref: T): T;
        <T_1 extends string | null | undefined>(ref: T_1): T_1 extends string ? `https://api.moysklad.ru/api/remap/${string}/${T_1}` : T_1;
        <T_2 extends EntityRef<M> | null | undefined, M extends MetaType>(entityRef: T_2): T_2 extends EntityRef<M> ? string : T_2;
    };
    attr: <T_3>(path: string, value: T_3) => {
        meta: {
            type: "attributemetadata";
            href: `https://api.moysklad.ru/api/remap/${string}/${string}`;
        };
        value: T_3;
    };
    fileAttr: <T_4>(path: string, file: T_4) => {
        meta: {
            type: "attributemetadata";
            href: `https://api.moysklad.ru/api/remap/${string}/${string}`;
        };
        file: T_4;
    };
    meta: {
        <T_5 extends string>(path: T_5): Meta<HrefMetaType<T_5>>;
        <M_1 extends MetaType>(entityRef?: EntityRef<M_1> | undefined): Meta<M_1>;
    };
    ref: {
        <T_6 extends string>(path: T_6): EntityRef<HrefMetaType<T_6>>;
        <T_7 extends string>(path: T_7 | undefined): EntityRef<HrefMetaType<T_7>> | undefined;
        <M_2 extends MetaType>(entityRef: EntityRef<M_2>): EntityRef<M_2>;
        <M_3 extends MetaType>(entityRef: EntityRef<M_3> | undefined): EntityRef<M_3> | undefined;
    };
    positionRef: {
        <T_8 extends string>(documentRef: T_8, positionId: string): HrefMetaType<T_8> extends keyof DocumentPositionType ? EntityRef<DocumentPositionType[HrefMetaType<T_8>]> : never;
        <M_4 extends keyof DocumentPositionType>(documentRef: EntityRef<M_4>, positionId: string): EntityRef<DocumentPositionType[M_4]>;
    };
    refEqual: (entityRef1: string | EntityRef | null | undefined, entityRef2: string | EntityRef | null | undefined) => boolean;
    copyFields: <T_9, K extends keyof T_9>(srcEntity: T_9, fieldNames: K[]) => { [P in K]: T_9[P]; };
    copyFieldsRefs: <T_10, K_1 extends keyof T_10>(srcEntity: T_10, fieldNames: K_1[]) => { [P_1 in K_1]: T_10[P_1] extends EntityRef<infer M_5 extends string> ? EntityRef<M_5> : T_10[P_1]; };
};
