import { CatalogCollection, OrderDetails, Product, ProductCreate, ProductUpdate, WAMediaUpload, WAMediaUploadFunction } from '../Types'
import { BinaryNode } from '../WABinary'

export declare const parseCatalogNode: (node: BinaryNode) => {
    products: Product[]
    nextPageCursor: string | undefined
}

export declare const parseCollectionsNode: (node: BinaryNode) => {
    collections: CatalogCollection[]
}

export declare const parseOrderDetailsNode: (node: BinaryNode) => OrderDetails

export declare const toProductNode: (productId: string | undefined, product: ProductCreate | ProductUpdate) => BinaryNode

export declare const parseProductNode: (productNode: BinaryNode) => Product

/**
 * Uploads images not already uploaded to WA's servers
 */
export declare function uploadingNecessaryImagesOfProduct<T extends ProductUpdate | ProductCreate>(product: T, waUploadToServer: WAMediaUploadFunction, timeoutMs?: number): Promise<T>

/**
 * Uploads images not already uploaded to WA's servers
 */
export declare const uploadingNecessaryImages: (images: WAMediaUpload[], waUploadToServer: WAMediaUploadFunction, timeoutMs?: number) => Promise<{
    url: string
}[]>