import { AxiosRequestConfig } from 'axios';
import { Messages, Option } from '@foxpage/foxpage-shared';
import { PackageSource } from '@foxpage/foxpage-types';
/**
 * fetch result
 *
 * @export
 * @interface FetchResult
 */
export interface FetchResult {
    content: string;
}
/**
 * package fetch option
 *
 * @export
 * @interface PackageFetcherOption
 */
export interface PackageFetcherOption {
    maxRetryTime?: number;
    downloadTimeout?: number;
    requestOpt?: Partial<AxiosRequestConfig>;
}
/**
 * package fetcher
 *
 * @export
 * @class PackageFetcher
 */
export declare class PackageFetcher {
    /**
     * retry times
     *
     * @type {number}
     */
    retryCount: number;
    /**
     * fetch result
     *
     * @type {FetchResult}
     */
    result?: FetchResult | undefined;
    /**
     * package resource
     *
     * @type {PackageSource}
     */
    readonly resource: PackageSource;
    /**
     * messages for package fetcher
     *
     * @type {Messages}
     */
    readonly messages: Messages;
    readonly option: PackageFetcherOption & Required<Pick<PackageFetcherOption, 'maxRetryTime'>>;
    constructor(source: PackageSource, option?: PackageFetcherOption);
    /**
     * fetch package code
     *
     * @return {*}  {Promise<Option<FetchResult>>}
     */
    fetch(): Promise<Option<FetchResult>>;
}
