import { AddAssetRequirementParams, Asset, Context, Identity, ModifyComplianceRequirementParams, Namespace, RemoveAssetRequirementParams, SetAssetRequirementsParams } from "../../../../internal";
import { Compliance, ComplianceRequirements, NoArgsProcedureMethod, ProcedureMethod, SubCallback, UnsubCallback } from "../../../../types";
/**
 * Handles all Asset Compliance Requirements related functionality
 */
export declare class Requirements extends Namespace<Asset> {
    /**
     * @hidden
     */
    constructor(parent: Asset, context: Context);
    /**
     * Add a new compliance requirement to the the Asset. This doesn't modify existing requirements
     */
    add: ProcedureMethod<AddAssetRequirementParams, Asset>;
    /**
     * Remove an existing compliance requirement from the Asset
     */
    remove: ProcedureMethod<RemoveAssetRequirementParams, Asset>;
    /**
     * Configure compliance requirements for the Asset. This operation will replace all existing requirements with a new requirement set
     *
     * @example Say A, B, C, D and E are requirements and we arrange them as `[[A, B], [C, D], [E]]`.
     * For a transfer to succeed, it must either comply with A AND B, C AND D, OR E.
     */
    set: ProcedureMethod<SetAssetRequirementsParams, Asset>;
    /**
     * Retrieve all of the Asset's compliance requirements, together with the Default Trusted Claim Issuers
     *
     * @note can be subscribed to
     */
    get(): Promise<ComplianceRequirements>;
    get(callback: SubCallback<ComplianceRequirements>): Promise<UnsubCallback>;
    /**
     * Delete all the current requirements for the Asset.
     */
    reset: NoArgsProcedureMethod<Asset>;
    /**
     * Pause all the Asset's requirements. This means that all transfers will be allowed until requirements are unpaused
     */
    pause: NoArgsProcedureMethod<Asset>;
    /**
     * Un-pause all the Asset's current requirements
     */
    unpause: NoArgsProcedureMethod<Asset>;
    /**
     * Check whether the sender and receiver Identities in a transfer comply with all the requirements of this Asset
     *
     * @note this does not take balances into account
     *
     * @param args.from - sender Identity (optional, defaults to the current Identity)
     * @param args.to - receiver Identity
     *
     * @deprecated in favor of `settlements.canTransfer`
     */
    checkSettle(args: {
        from?: string | Identity;
        to: string | Identity;
    }): Promise<Compliance>;
    /**
     * Check whether Asset compliance requirements are paused or not
     */
    arePaused(): Promise<boolean>;
    /**
     * Modify a compliance requirement for the Asset
     */
    modify: ProcedureMethod<ModifyComplianceRequirementParams, void>;
}
//# sourceMappingURL=Requirements.d.ts.map