import { HubInterfaceType, CommitStrategyType } from '..';
import { Operation } from '../hubInterfaces/HubInterface';
/**
 * Fields that can be specified when creating a new commit.
 */
export interface ICommitFields {
    /**
     * Gets or sets the time stamp of the commit
     */
    committed_at: string;
    /**
     * Gets or sets the issuer of the commit, the DID of the persona.
     */
    iss: string;
    /**
     * Gets or sets the identifier of the hub owner of the commit
     */
    sub: string;
    /**
     * Gets or sets the hub interface type for the commit
     */
    interface: HubInterfaceType;
    /**
     * Gets or sets the context for the commit
     */
    context: string;
    /**
     * Gets or sets the commit type
     */
    type: string;
    /**
     * Gets or sets the commit operation
     */
    operation: Operation;
    /**
     * Gets or sets the commit strategy type
     */
    commit_strategy: CommitStrategyType;
    /**
     * The application-specific commit payload.
     */
    payload: object | string;
    /**
     * Identifier for the object
     */
    object_id: string | undefined;
    [key: string]: any;
}
/**
 * Represents a new (i.e pending, unsigned) commit which will create, update, or delete an object in
 * a user's Identity Hub.
 */
export default class Commit {
    private fields;
    constructor(fields: ICommitFields);
    /**
     * Verifies whether the currently set fields constitute a valid commit which can be
     * signed/encrypted and stored in an Identity Hub.
     *
     * Throws an error if the commit is not valid.
     *
     * need: Move validation logic to hub-common-js repository to be shared with hub-node-core.
     */
    validate(): void;
    /**
     * Returns true if the validate() method would pass without error.
     */
    isValid(): boolean;
    /**
     * Returns the fields of the commit.
     */
    getCommitFields(): Partial<ICommitFields>;
    /**
     * Returns the application-specific payload for this commit.
     */
    getPayload(): any;
}
