import { ModuleWrapper, DataStream } from '@terra-js/common';
import { Result } from '@terra-js/common/dist';
import { BaseModule } from '../BaseModule';
import { PrintConfig, PrintRequest, PrintResult, GetPhotoOptions, GetPhotoResult, DownloadBarCodeRequest, DownloadBarCodeResult } from './types';
export declare enum ScanningType {
    PRODUCT_SERIAL = "serial",
    PRODUCT_BARCODE = "barcode",
    PRODUCT_QR = "qr",
    PRODUCT_ALL_TYPE = "allType"
}
export declare enum SourceGetPhotoType {
    CAMERA = "camera",
    LIBRARY = "library",
    BOTH = "both"
}
export declare enum ScanResultCode {
    ERROR = 0,
    SUCCESS = 1
}
export declare enum ScanResultAction {
    FORCE_CLOSE_SCAN = "forceCloseScan"
}
export declare enum CartType {
    BUY_NOW = "buyNow",
    GIFT_BASKET = "giftBasket"
}
export declare type OpenBuyNowRequest = {
    token: string;
    cartType: CartType;
    note?: string;
};
export declare type ProcessScanResultFinish = {
    message: string;
    resultCode?: ScanResultCode;
    resultAction?: ScanResultAction;
};
export declare type ObserveScanResultRequest = {
    continuous?: boolean;
    scanningTypes?: ScanningType[];
};
export default class CommonKitModule implements BaseModule {
    wrappedModule: ModuleWrapper;
    deviceID: string;
    accessToken: any;
    user: any;
    constructor();
    getPrintConfig: () => Promise<Result<PrintConfig>>;
    printImage: (request: PrintRequest) => Promise<Result<PrintResult>>;
    getPhoto: (request: GetPhotoOptions) => Promise<Result<GetPhotoResult>>;
    scan(): {
        observeScanResult: (request: ObserveScanResultRequest) => DataStream<string>;
        processScanResult: (request: ProcessScanResultFinish) => Promise<void>;
    };
    printDocument: (documentUrl: String) => Promise<Result<void>>;
    openBuyNow: (request: OpenBuyNowRequest) => DataStream<boolean>;
    downloadBarCode: (request: DownloadBarCodeRequest) => Promise<Result<DownloadBarCodeResult>>;
    private observeScanResult;
    private processScanResult;
}
