amocrm-client
Version:
JS Library for AmoCRM
37 lines (34 loc) • 1.72 kB
text/typescript
import { TConstructor } from "../../types";
import { IRequestOptions } from "../../interfaces/common";
import { IResourceCollection, IResourceEntity } from "../../interfaces/api";
import { applyMixins } from "../../util";
import { hasUpdate, hasCreate, hasSave, hasFetch, hasContacts, hasCompanies, hasResoinsibleUser, hasCustomFields } from "./mixins";
import { UserCriteria } from "../../interfaces/user";
import { IUser } from "./User";
import { ILeadFactory } from "../factories/LeadFactory";
import { LeadDTO } from "../../dto/lead.dto";
import { ContactCriteria } from "../../interfaces/contact";
import { ILeadAttributes, LeadCriteria } from "../../interfaces/lead";
import { IContact } from "./Contact";
import { ICustomFieldValue } from "../../interfaces/custom_field";
export interface ILead extends IResourceEntity<ILeadFactory>, ILeadAttributes {
create(options?: IRequestOptions): Promise<ILead>;
update(options?: IRequestOptions): Promise<ILead>;
save(options?: IRequestOptions): Promise<ILead>;
fetch(criteria?: LeadCriteria, options?: IRequestOptions): Promise<ILead>;
cf(): IResourceCollection<ICustomFieldValue>;
cf(identity: number): ICustomFieldValue;
cf(identity: number, value: any): ICustomFieldValue;
contacts(criteria?: Pick<ContactCriteria, "with">, options?: IRequestOptions): Promise<IContact | false>;
responsibleUser(criteria?: Pick<UserCriteria, "with">, options?: IRequestOptions): Promise<IUser | false>;
}
export const Lead: TConstructor<ILead> = applyMixins(LeadDTO, [
hasCustomFields,
hasContacts,
hasCompanies,
hasResoinsibleUser,
hasCreate,
hasUpdate,
hasSave,
hasFetch
]);