import { ABIDecoder } from "../serializer/Decoder.js";
import { ABIEncoder } from "../serializer/Encoder.js";
import { ABISerializableObject } from "../serializer/Serializable.js";
import { Bytes } from "./Bytes.js";
import { KeyType } from "./KeyType.js";
export type PublicKeyType = PublicKey | string | {
    type: string;
    compressed: Uint8Array;
};
export declare class PublicKey implements ABISerializableObject {
    static abiName: string;
    /** Type, e.g. `K1`, `R1`, `EM`, or `ED` */
    type: KeyType;
    /** Compressed public key point. */
    data: Bytes;
    /** Create PublicKey object from representing types. */
    static from(value: PublicKeyType): PublicKey;
    /** @internal */
    static fromABI(decoder: ABIDecoder): PublicKey;
    /** @internal */
    constructor(type: KeyType, data: Bytes | Uint8Array);
    equals(other: PublicKeyType): boolean;
    /**
     * Return Antelope/SYSIO legacy (`SYS<base58data>`) formatted key.
     * @throws If the key type isn't `K1` or `EM`.
     */
    toLegacyString(prefix?: string): string;
    /** Return key in modern Antelope/SYSIO format (`PUB_<type>_<base58data>`) */
    toString(): string;
    toHexString(): string;
    /** @internal */
    toABI(encoder: ABIEncoder): void;
    /**
     * Return the public key in the native format expected by the
     * signature_provider_manager_plugin's spec.
     *
     * - K1/R1: Legacy SYS-prefixed string
     * - EM (Ethereum): hex address (0x-prefixed, 20-byte keccak hash)
     * - ED (Solana): raw base58 of the 32-byte public key
     * - BLS: PUB_BLS_... encoded string
     */
    toNativeString(): string;
    /** @internal */
    toJSON(): string;
}
//# sourceMappingURL=PublicKey.d.ts.map