import { type IxReturn } from "../utils";
import { AddLockArgs, type AttachPolicyArgs, ChangeCounterLimitsArgs, ChangeCountersArgs, ChangeIssuancePoliciesArgs, ChangeMappingArgs, DetachPolicyArgs, RemoveLockArgs, SetCountersArgs } from "../policy-engine";
import { type RwaClient } from "./Client";
import { type PublicKey } from "@solana/web3.js";
/**
 * Represents the client Policy Engine for an RWA.
 */
export declare class PolicyEngine {
    private readonly rwaClient;
    constructor(rwaClient: RwaClient);
    /**
   * Asynchronously attaches a policy to the policy engine.
   * @param - {@link AttachPolicyArgs}
   * @returns A Promise that resolves to the instructions to attach a policy.
   * */
    attachPolicy(policyArgs: AttachPolicyArgs): Promise<IxReturn>;
    /**
   * Asynchronously detaches a policy to the policy engine.
   * @param - {@link DetachPolicyArgs}
   * @returns A Promise that resolves to the instructions to detach a policy.
   * */
    detachPolicy(policyArgs: DetachPolicyArgs): Promise<IxReturn>;
    changeCounterLimits(policyArgs: ChangeCounterLimitsArgs): Promise<IxReturn>;
    changeCounters(policyArgs: ChangeCountersArgs): Promise<IxReturn>;
    changeMapping(policyArgs: ChangeMappingArgs): Promise<IxReturn>;
    changeIssuancePolicies(policyArgs: ChangeIssuancePoliciesArgs): Promise<IxReturn>;
    setCounters(policyArgs: SetCountersArgs): Promise<IxReturn>;
    addLock(args: AddLockArgs): Promise<IxReturn>;
    removeLock(args: RemoveLockArgs): Promise<IxReturn>;
    /**
   * Retrieves the policy registry pda account for a specific asset mint.
   * @param assetMint - The string representation of the asset's mint address.
   * @returns The policy registry pda as a public key.
   */
    getPolicyEnginePda(assetMint: string): PublicKey;
}
//# sourceMappingURL=PolicyEngine.d.ts.map