import { UInt16, UInt16Type, UInt32, UInt32Type } from "./Integer.js";
import { PermissionLevel, PermissionLevelType } from "./PermissionLevel.js";
import { PublicKey, PublicKeyType } from "./PublicKey.js";
import { Struct } from "./Struct.js";
export declare class Weight extends UInt16 {
}
export declare class KeyWeight extends Struct {
    key: PublicKey;
    weight: Weight;
}
export declare class PermissionLevelWeight extends Struct {
    permission: PermissionLevel;
    weight: Weight;
}
export type AuthorityType = Authority | {
    threshold: UInt32Type;
    keys?: {
        key: PublicKeyType;
        weight: UInt16Type;
    }[];
    accounts?: {
        permission: PermissionLevelType;
        weight: UInt16Type;
    }[];
};
export declare class Authority extends Struct {
    threshold: UInt32;
    keys: KeyWeight[];
    accounts: PermissionLevelWeight[];
    static from(value: AuthorityType): Authority;
    /** Weight a key needs to sign for this authority. */
    get keyThreshold(): number;
    /** Return the weight for given public key, or zero if it is not included in this authority. */
    keyWeight(publicKey: PublicKeyType): number;
    /**
     * Check if given public key has permission in this authority,
     * @attention Does not take indirect permissions for the key via account weights into account.
     * @param publicKey The key to check.
     * @param includePartial Whether to consider auths where the key is included but can't be reached alone (e.g. multisig).
     */
    hasPermission(publicKey: PublicKeyType, includePartial?: boolean): boolean;
    /**
     * Sorts the authority weights in place, should be called before including the authority in a `updateauth` action or it might be rejected.
     */
    sort(): void;
}
//# sourceMappingURL=Authority.d.ts.map