import type { BuilderIntent, C2paReason, Ingredient, Manifest } from "@contentauth/c2pa-types";
import type { BuilderInterface, C2paSettings, CallbackSignerInterface, ClaimVersion, DataHash, DestinationAsset, IdentityAssertionSignerInterface, JsCallbackSignerConfig, LocalSignerInterface, ManifestAssertionKind, ReaderInterface, SourceAsset, NeonBuilderHandle } from "./types.d.ts";
export declare class Builder implements BuilderInterface {
    private builder;
    constructor(builder: NeonBuilderHandle);
    static new(settings?: C2paSettings): Builder;
    static withJson(json: Manifest, settings?: C2paSettings): Builder;
    setIntent(intent: BuilderIntent): void;
    setNoEmbed(noEmbed?: boolean): void;
    setRemoteUrl(remoteUrl: string): void;
    addAction(actionJson: string): void;
    addAssertion(label: string, assertion: unknown, assertionKind?: ManifestAssertionKind): void;
    addResource(uri: string, resource: SourceAsset): Promise<void>;
    addIngredient(ingredientJson: string, ingredient?: SourceAsset): Promise<void>;
    addIngredientFromReader(reader: ReaderInterface): Ingredient;
    toArchive(asset: DestinationAsset): Promise<void>;
    static fromArchive(asset: SourceAsset, settings?: C2paSettings): Promise<Builder>;
    sign(signer: LocalSignerInterface, input: SourceAsset, output: DestinationAsset): Buffer;
    signFile(signer: LocalSignerInterface, filePath: string, output: DestinationAsset): Buffer;
    signConfigAsync(callback: (data: Buffer) => Promise<Buffer>, signerConfig: JsCallbackSignerConfig, input: SourceAsset, output: DestinationAsset): Promise<Buffer>;
    signAsync(signer: CallbackSignerInterface | IdentityAssertionSignerInterface, input: SourceAsset, output: DestinationAsset): Promise<Buffer>;
    signDataHashedEmbeddable(signer: LocalSignerInterface, dataHash: DataHash, format: string): Buffer;
    signDataHashedEmbeddableAsync(signer: CallbackSignerInterface, dataHash: DataHash, format: string): Promise<Buffer>;
    getManifestDefinition(): Manifest;
    updateManifestProperty(property: string, value: ClaimVersion): void;
    addRedaction(uri: string, reason: C2paReason): void;
    getHandle(): NeonBuilderHandle;
}
