import { type SortOption } from '@unchainedshop/utils'; import { type Quotation, QuotationStatus } from '../db/QuotationsCollection.ts'; import { mongodb, type ModuleInput } from '@unchainedshop/mongodb'; import { type QuotationsSettingsOptions } from '../quotations-settings.ts'; export interface QuotationQuery { userId?: string; queryString?: string; quotationIds?: string[]; } export interface QuotationData { configuration?: { key: string; value: string; }[]; countryCode?: string; productId: string; userId: string; } export declare const buildFindSelector: ({ userId, queryString, quotationIds }?: QuotationQuery) => mongodb.Filter; export declare const configureQuotationsModule: ({ db, migrationRepository, options: quotationsOptions, }: ModuleInput) => Promise<{ count: (query: QuotationQuery) => Promise; openQuotationWithProduct: ({ productId }: { productId: string; }) => Promise | null>; findQuotation: ({ quotationId }: { quotationId: string; }, options?: mongodb.FindOptions) => Promise; findQuotations: ({ limit, offset, sort, ...query }: QuotationQuery & { limit?: number; offset?: number; sort?: SortOption[]; }, options?: mongodb.FindOptions) => Promise; normalizedStatus: (quotation: Quotation) => QuotationStatus; isExpired(quotation: Quotation, { referenceDate }?: { referenceDate?: Date; }): boolean; isProposalValid(quotation: Quotation): boolean; create: ({ countryCode, currencyCode, ...quotationData }: QuotationData & { currencyCode: string; }) => Promise; deleteRequestedUserQuotations: (userId: string) => Promise; updateContext: (quotationId: string, values: any) => Promise | null>; updateProposal: (quotationId: string, values: any) => Promise | null>; updateStatus: (quotationId: string, { status, info }: { status: QuotationStatus; info?: string; }) => Promise | null>; }>; export type QuotationsModule = Awaited>;