import { AddAssetRequirementParams, Context, Identity, ModifyComplianceRequirementParams, Namespace, RemoveAssetRequirementParams, SecurityToken, SetAssetRequirementsParams } from "../../../../internal";
import { Compliance, ComplianceRequirements, NoArgsProcedureMethod, ProcedureMethod, SubCallback, UnsubCallback } from "../../../../types";
/**
 * Handles all Security Token Compliance Requirements related functionality
 */
export declare class Requirements extends Namespace<SecurityToken> {
    /**
     * @hidden
     */
    constructor(parent: SecurityToken, context: Context);
    /**
     * Add a new compliance requirement to the the Security Token. This doesn't modify existing requirements
     */
    add: ProcedureMethod<AddAssetRequirementParams, SecurityToken>;
    /**
     * Remove an existing compliance requirement from the Security Token
     */
    remove: ProcedureMethod<RemoveAssetRequirementParams, SecurityToken>;
    /**
     * Configure asset compliance requirements for the Security Token. 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, SecurityToken>;
    /**
     * Retrieve all of the Security Token's compliance requirements, together with the Default Trusted Claim Issuers
     *
     * @note can be subscribed to
     */
    get(): Promise<ComplianceRequirements>;
    get(callback: SubCallback<ComplianceRequirements>): Promise<UnsubCallback>;
    /**
     * Detele all the current requirements for the Security Token.
     */
    reset: NoArgsProcedureMethod<SecurityToken>;
    /**
     * Pause all the Security Token's requirements. This means that all transfers will be allowed until requirements are unpaused
     */
    pause: NoArgsProcedureMethod<SecurityToken>;
    /**
     * Un-pause all the Security Token's current requirements
     */
    unpause: NoArgsProcedureMethod<SecurityToken>;
    /**
     * 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 Security Token
     */
    modify: ProcedureMethod<ModifyComplianceRequirementParams, void>;
}
//# sourceMappingURL=Requirements.d.ts.map