import { Ed25519Signature } from '../../signature';
/**
 * All of the unlock types.
 */
declare enum UnlockType {
    /**
     * A signature unlock.
     */
    Signature = 0,
    /**
     * A reference unlock.
     */
    Reference = 1,
    /**
     *  An account unlock.
     */
    Account = 2,
    /**
     *  An Anchor unlock.
     */
    Anchor = 3,
    /**
     *  An NFT unlock.
     */
    Nft = 4,
    /**
     *  A multi unlock.
     */
    Multi = 5,
    /**
     *  An empty unlock.
     */
    Empty = 6
}
/**
 * The base class for unlocks.
 */
declare abstract class Unlock {
    /**
     * The type of unlock.
     */
    readonly type: UnlockType;
    /**
     * @param type The type of unlock.
     */
    constructor(type: UnlockType);
}
/**
 * An unlock holding one or more signatures unlocking one or more inputs..
 */
declare class SignatureUnlock extends Unlock {
    /**
     * The signature.
     */
    readonly signature: Ed25519Signature;
    /**
     * @param signature An Ed25519 signature.
     */
    constructor(signature: Ed25519Signature);
}
/**
 * An unlock which must reference a previous unlock which unlocks
 * also the input at the same index as this Reference Unlock.
 */
declare class ReferenceUnlock extends Unlock {
    /**
     * The reference.
     */
    readonly reference: number;
    /**
     * @param reference An index referencing a previous unlock.
     */
    constructor(reference: number);
}
/**
 * An unlock which must reference a previous unlock which unlocks the account that the input is locked to.
 */
declare class AccountUnlock extends Unlock {
    /**
     * The reference.
     */
    readonly reference: number;
    /**
     * @param reference An index referencing a previous unlock.
     */
    constructor(reference: number);
}
/**
 * An unlock which must reference a previous unlock which unlocks the anchor that the input is locked to.
 */
declare class AnchorUnlock extends Unlock {
    /**
     * The reference.
     */
    readonly reference: number;
    /**
     * @param reference An index referencing a previous unlock.
     */
    constructor(reference: number);
}
/**
 * An unlock which must reference a previous unlock which unlocks the NFT that the input is locked to.
 */
declare class NftUnlock extends Unlock {
    /**
     * The reference.
     */
    readonly reference: number;
    /**
     * @param reference An index referencing a previous unlock.
     */
    constructor(reference: number);
}
/**
 * Used to maintain correct index relationship between addresses and signatures when unlocking a MultiUnlock where not all addresses are unlocked.
 */
declare class EmptyUnlock extends Unlock {
    constructor();
}
/**
 * Unlocks a MultiAddress with a list of other unlocks.
 */
declare class MultiUnlock extends Unlock {
    /**
     * The inner unlocks.
     */
    readonly unlocks: Unlock[];
    /**
     * @param unlocks The inner unlocks.
     */
    constructor(unlocks: Unlock[]);
}
declare const UnlockDiscriminator: {
    property: string;
    subTypes: ({
        value: typeof SignatureUnlock;
        name: any;
    } | {
        value: typeof ReferenceUnlock;
        name: any;
    } | {
        value: typeof MultiUnlock;
        name: any;
    } | {
        value: typeof EmptyUnlock;
        name: any;
    })[];
};
export { UnlockType, Unlock, SignatureUnlock, ReferenceUnlock, AccountUnlock, AnchorUnlock, NftUnlock, MultiUnlock, EmptyUnlock, UnlockDiscriminator, };
