import { BIP32API, BIP32Interface } from 'bip32';
import type { Network, TinySecp256k1Interface, AddressType } from './types.js';
export declare class PaymentCodePublic {
    protected readonly ecc: TinySecp256k1Interface;
    protected readonly bip32: BIP32API;
    protected readonly buf: Uint8Array;
    protected readonly network: Network;
    root: BIP32Interface;
    hasPrivKeys: boolean;
    segwit: boolean;
    constructor(ecc: TinySecp256k1Interface, bip32: BIP32API, buf: Uint8Array, network?: Network);
    get features(): Uint8Array;
    get pubKey(): Uint8Array;
    get chainCode(): Uint8Array;
    get paymentCode(): Uint8Array;
    clone(): PaymentCodePublic;
    toBase58(): string;
    derive(index: number): BIP32Interface;
    getNotificationPublicKey(): Uint8Array;
    getNotificationAddress(): string;
    protected derivePublicKeyFromSharedSecret(B: Uint8Array, S: Uint8Array | null): Uint8Array;
    derivePaymentPublicKey(paymentCode: PaymentCodePrivate, idx: number): Uint8Array;
    protected getAddressFromPubkey(pubKey: Uint8Array, type: AddressType): string;
    getPaymentAddress(paymentCode: PaymentCodePrivate, idx: number, type?: AddressType): string;
    getBlindedPaymentCode(destinationPaymentCode: PaymentCodePublic, outpoint: Uint8Array, privateKey: Uint8Array): string;
}
export declare class PaymentCodePrivate extends PaymentCodePublic {
    constructor(root: BIP32Interface, ecc: TinySecp256k1Interface, bip32: BIP32API, buf: Uint8Array, network?: Network);
    toPaymentCodePublic(): PaymentCodePublic;
    clone(): PaymentCodePrivate;
    deriveHardened(index: number): BIP32Interface;
    derivePaymentPublicKey(paymentCode: PaymentCodePublic, idx: number): Uint8Array;
    getPaymentAddress(paymentCode: PaymentCodePublic, idx: number, type?: AddressType): string;
    derivePaymentPrivateKey(paymentCodePublic: PaymentCodePublic, idx: number): Uint8Array;
    getNotificationPrivateKey(): Uint8Array;
    getPaymentCodeFromNotificationTransactionData(scriptPubKey: Uint8Array, outpoint: Uint8Array, pubKey: Uint8Array): PaymentCodePublic;
}
export declare const BIP47Factory: (ecc: TinySecp256k1Interface) => {
    fromSeed: (bSeed: Uint8Array, segwit?: boolean, network?: Network) => PaymentCodePrivate;
    fromBase58: (inString: string, network?: Network) => PaymentCodePublic;
    fromBuffer: (buf: Uint8Array, network?: Network) => PaymentCodePublic;
};
//# sourceMappingURL=payment-code.d.ts.map