///
import { DirEntry, Resource, ResourceDir, ResourceType } from '../Types/Resources';
import { Logger } from '..';
declare type EncodedResource = Resource & {
encodedData: Buffer;
};
export declare function encodeV2Resource(volumeNumber: number, resource: Resource): EncodedResource;
export declare function encodeV3Resource(volumeNumber: number, resource: Resource): EncodedResource;
export declare function writeVolume(volumeNumber: number, resources: EncodedResource[]): [Buffer, DirEntry[]];
export declare function findLastIndex(array: Array, predicate: (value: T, index: number, obj: T[]) => boolean): number;
export declare function buildResourceDir(entries: DirEntry[]): ResourceDir;
export declare function writeV2Dir(entries: (DirEntry | undefined)[]): Buffer;
export declare function writeV2DirFiles(outputPath: string, resourceDir: ResourceDir, logger: Logger): void;
export declare function writeV3DirFile(outputPath: string, gameId: string, resourceDir: ResourceDir, logger: Logger): void;
export declare function writeV2ResourceFiles(outputPath: string, resourceVolumes: (EncodedResource[] | undefined)[], logger: Logger): void;
export declare function writeV3ResourceFiles(outputPath: string, gameId: string, resourceVolumes: (EncodedResource[] | undefined)[], logger: Logger): void;
export declare type ExplicitVolumeSpecification = {
number: number;
resources: {
resourceType: ResourceType;
resourceNumber: number;
}[];
};
export declare function encodeResourceVolumes(resources: Resource[], encode: (volumeNumber: number, resource: Resource) => EncodedResource, explicitVolumes: ExplicitVolumeSpecification[]): (EncodedResource[] | undefined)[];
export {};