import { IBaseWTTPSite } from "@wttp/core";
export interface TestConfig {
    network: string;
    siteAddress: string;
    dpsVersion?: number;
}
export interface ExternalStorageRule {
    minSizeBytes?: number;
    maxSizeBytes?: number;
    mimeTypes?: string[];
    extensions?: string[];
    provider: "arweave" | "ipfs" | "filecoin";
    redirectCode?: number;
}
export interface ManifestConfig {
    gasLimit?: number;
    fileLimit?: number;
    ignorePattern?: string[] | string | "none";
    externalStorageRules?: ExternalStorageRule[];
    testConfig?: TestConfig;
    destination?: string;
    publisher?: string;
}
export interface ChunkData {
    address: string;
    estimate?: number;
    range?: string;
    royalty?: number;
    gas?: number;
    txHash?: string;
    prerequisite?: string;
    publisher?: string;
}
export interface FileData {
    path: string;
    type: string;
    charset?: string;
    encoding?: string;
    language?: string;
    size: number;
    status: string;
    gasCost?: number;
    royaltyCost?: number;
    externalStorage?: string;
    redirect?: {
        code: number;
        location: string;
    };
    chunks: ChunkData[];
    publisher?: string;
}
export interface DirectoryData {
    path: string;
    index: string;
    status?: string;
    txHash?: string;
}
export interface TransactionData {
    txHash?: string;
    method: string;
    path?: string;
    chunkAddress?: string;
    range?: string;
    redirect?: {
        code: number;
        location: string;
    };
    value?: number;
    gasUsed?: number;
    data?: any;
}
export interface Manifest {
    name: string;
    path: string;
    wttpConfig?: ManifestConfig;
    siteData: {
        directories: DirectoryData[];
        files: FileData[];
    };
    chainData?: {
        contractAddress: string;
        chainId: number;
        name: string;
        symbol: string;
        transactions: TransactionData[];
        publisher?: string;
    };
}
export declare function generateManifest(wttpSite: IBaseWTTPSite | null, sourcePath: string, destinationPath: string, config?: ManifestConfig, existingManifest?: Manifest, publisher?: string): Promise<Manifest>;
export declare function loadTestConfig(configPath: string, networkName?: string): TestConfig | null;
export declare function saveManifest(manifest: Manifest, outputPath?: string): string;
export declare function loadManifest(manifestPath: string): Manifest;
//# sourceMappingURL=generateManifest.d.ts.map