import { type MagentoClient } from './client.js';
import { type SearchCriteria } from './search-criteria.js';
import type { AttributeSet, Category, Invoice, Order, Product, ProductAttribute, SearchResult, Shipment, SourceItem, StoreConfig, StoreView, Website } from './types.js';
/** Typed, read-only endpoints used by sync and the MCP server. */
export declare class MagentoApi {
    readonly client: MagentoClient;
    constructor(client: MagentoClient);
    storeViews(): Promise<StoreView[]>;
    storeConfigs(): Promise<StoreConfig[]>;
    websites(): Promise<Website[]>;
    productAttributes(): AsyncGenerator<ProductAttribute[], any, any>;
    attributeSets(): AsyncGenerator<AttributeSet[], any, any>;
    attributeSetMembers(attributeSetId: number): Promise<{
        attribute_code: string;
        is_required: boolean;
    }[]>;
    categories(store: string): AsyncGenerator<Category[], any, any>;
    products(store: string, criteria: SearchCriteria): AsyncGenerator<Product[], any, any>;
    productsUpdatedSince(store: string, since: string | null, pageSize?: number): AsyncGenerator<Product[], any, any>;
    /** Every product id + sku (cheap; used for delete reconciliation). */
    productIds(pageSize?: number): AsyncGenerator<{
        id: number;
        sku: string;
    }[], any, any>;
    product(sku: string, store?: string): Promise<Product | null>;
    /** MSI source items. Returns null when MSI is disabled/absent (404). */
    sourceItems(pageSize?: number): AsyncGenerator<SourceItem[]>;
    salableQty(sku: string, stockId: number): Promise<number | null>;
    isSalable(sku: string, stockId: number): Promise<boolean | null>;
    /** Shopper-facing price incl. catalog price rules, via storefront GraphQL. */
    storefrontPrice(sku: string, store: string): Promise<{
        sku: string;
        price_range: {
            minimum_price: StorefrontPrice;
            maximum_price: StorefrontPrice;
        };
    } | null>;
    /**
     * Check Magento admin credentials. Uses the Google Authenticator 2FA endpoint when an OTP is
     * given (Magento 2.4 enforces admin 2FA by default), otherwise the plain admin-token endpoint.
     * Returns true/false; the admin token Magento issues is discarded (it expires on its own).
     */
    verifyAdminLogin(username: string, password: string, otp?: string): Promise<{
        ok: boolean;
        reason?: string;
    }>;
    searchOrders(criteria: SearchCriteria): Promise<SearchResult<Order>>;
    orderByIncrementId(incrementId: string): Promise<Order | null>;
    invoicesForOrder(orderId: number): Promise<SearchResult<Invoice>>;
    shipmentsForOrder(orderId: number): Promise<SearchResult<Shipment>>;
}
export interface StorefrontPrice {
    regular_price: {
        value: number;
        currency: string;
    };
    final_price: {
        value: number;
        currency: string;
    };
    discount: {
        amount_off: number;
        percent_off: number;
    };
}
export type { SearchResult };
//# sourceMappingURL=api.d.ts.map