"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MockPrintProvider = void 0;
class MockPrintProvider {
    name = 'MockPrintProvider';
    async validateFiles(input) {
        if (input.pageCount <= 0) {
            return {
                isValid: false,
                errors: ['Page count must be greater than 0.'],
                warnings: [],
            };
        }
        return {
            isValid: true,
            errors: [],
            warnings: [],
        };
    }
    async getQuote(input) {
        // Standard mock pricing calculation
        const baseMfgCost = input.binding === 'hardcover' ? 1250 : 650; // cents ($12.50 vs $6.50)
        const perPageCost = 3; // 3 cents / page
        const mfgTotal = baseMfgCost + input.pageCount * perPageCost;
        const serviceFee = 400; // $4.00 service fee
        return {
            quoteId: `mock-quote-${Date.now()}`,
            projectId: input.projectId,
            binding: input.binding,
            quantity: input.quantity,
            manufacturingCostCents: mfgTotal * input.quantity,
            selectedShipping: {
                id: 'standard-mail',
                name: 'Standard Postal Shipping',
                estimatedDays: '5-7 Business Days',
                costCents: 550,
                currency: 'USD',
            },
            availableShippingOptions: [
                {
                    id: 'standard-mail',
                    name: 'Standard Postal Shipping',
                    estimatedDays: '5-7 Business Days',
                    costCents: 550,
                    currency: 'USD',
                },
                {
                    id: 'express-mail',
                    name: 'Express Courier Shipping',
                    estimatedDays: '2-3 Business Days',
                    costCents: 1400,
                    currency: 'USD',
                },
            ],
            serviceFeeCents: serviceFee,
            totalCostCents: (mfgTotal * input.quantity) + 550 + serviceFee,
            currency: 'USD',
            expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),
        };
    }
    async createOrder(input) {
        const orderId = `mock-order-${Date.now()}`;
        return {
            id: orderId,
            projectId: input.projectId,
            status: 'printer_accepted',
            printerOrderId: `lulu-mock-${Date.now()}`,
            quote: {
                quoteId: input.quoteId,
                projectId: input.projectId,
                binding: 'paperback',
                quantity: 1,
                manufacturingCostCents: 850,
                selectedShipping: {
                    id: 'standard-mail',
                    name: 'Standard Postal Shipping',
                    estimatedDays: '5-7 Business Days',
                    costCents: 550,
                    currency: 'USD',
                },
                availableShippingOptions: [],
                serviceFeeCents: 400,
                totalCostCents: 1800,
                currency: 'USD',
                expiresAt: new Date().toISOString(),
            },
            shippingAddress: input.shippingAddress,
            createdAt: new Date().toISOString(),
            updatedAt: new Date().toISOString(),
        };
    }
    async getOrderStatus(orderId) {
        return {
            status: 'in_production',
            trackingNumber: `TRACK-MOCK-${orderId.substring(orderId.length - 6)}`,
            trackingUrl: 'https://example.com/tracking/mock',
        };
    }
}
exports.MockPrintProvider = MockPrintProvider;
//# sourceMappingURL=mock-provider.js.map