import { AptlyCurrency, AptlyQuantityUnitCode } from '../enums/index.js';
import { AptlyAlgorithmPipelineDataItemSchema, AptlyPrice } from './algorithm.js';
import { AptlyCategorySchema } from './category.js';
import { AptlyDocumentSchema } from './document';
import { AptlyBaseSchema } from './extends.js';
import { AptlyItemSchema } from './item.js';
import { AptlyOfferSchema } from './offer.js';
import { AptlyOptionSchema } from './option.js';
import { AptlyOrderSchema } from './order.js';
import { AptlyOrganizationSchema } from './organization.js';
import { AptlyProducerSchema } from './producer.js';
import { AptlyProductSchema } from './product.js';
import { AptlyProjectSchema } from './project.js';
import { AptlyUnitSchema } from './unit.js';
export type AptlyPick = AptlyPickSchema<string, string>;
export interface AptlyPickSchema<ID, DATE> extends Pick<AptlyBaseSchema<ID, DATE>, '_id' | 'archived' | 'createdAt' | 'updatedAt'> {
    organization: ID | AptlyOrganizationSchema<ID, DATE>;
    project: ID | AptlyProjectSchema<ID, DATE> | null;
    unit: ID | AptlyUnitSchema<ID, DATE> | null;
    option: ID | AptlyOptionSchema<ID, DATE> | null;
    product: ID | AptlyProductSchema<ID, DATE> | null;
    category: ID | AptlyCategorySchema<ID, DATE> | null;
    producer: ID | AptlyProducerSchema<ID, DATE> | null;
    offer: ID | AptlyOfferSchema<ID, DATE> | null;
    package: ID | null;
    offerItem: ID | null;
    order: ID | AptlyOrderSchema<ID, DATE> | null;
    period: ID | null;
    index: number;
    quantity?: number;
    note: string;
    invoicedQuantity?: number | null;
    quantityUnitCode?: AptlyQuantityUnitCode | null;
    extensionAmount?: number | null;
    extensionVatAmount?: number | null;
    currency?: AptlyCurrency | null;
    item: AptlyItemSchema<ID, DATE> | null;
    price: AptlyPrice | null;
    algorithm: ID | null;
    documents: (ID | AptlyDocumentSchema<ID, DATE>)[];
    pipeline?: AptlyAlgorithmPipelineDataItemSchema<ID>[];
    confirmedAt: DATE | null;
}
export type AptlyPickConfirmed = AptlyPickConfirmedSchema<string, string>;
export type AptlyPickConfirmedSchema<ID, DATE> = AptlyPickSchema<ID, DATE> & AptlyPickConfirmedFieldsSchema<ID, DATE>;
export interface AptlyPickConfirmedFieldsSchema<ID, DATE> {
    item: AptlyItemSchema<ID, DATE>;
    confirmedAt: DATE;
    order: ID | AptlyOrderSchema<ID, DATE>;
    invoicedQuantity: number;
    quantityUnitCode: AptlyQuantityUnitCode;
    price: AptlyPrice;
    extensionAmount: number;
    extensionVatAmount: number;
    currency: AptlyCurrency;
    pipeline: AptlyAlgorithmPipelineDataItemSchema<ID>[];
}
