import type { Transaction, TransactionObjectArgument, TransactionObjectInput } from '@iota/iota-sdk/transactions';
import type { IotaNamesClient } from './iota-names-client.js';
import type { ReceiptParams, RegistrationParams, RegistrationWithYearsParams, RenewalParams } from './types.js';
export declare class IotaNamesTransaction {
    iotaNamesClient: IotaNamesClient;
    transaction: Transaction;
    constructor(client: IotaNamesClient, transaction: Transaction);
    /**
     * Registers a name.
     */
    register(params: RegistrationParams): Promise<TransactionObjectArgument>;
    /**
     * Registers a name for a given amount of years.
     */
    registerWithYears(params: RegistrationWithYearsParams): Promise<TransactionObjectArgument>;
    /**
     * Renews an NFT for a number of years.
     */
    renew(params: RenewalParams): Promise<void>;
    initRegistration(name: string): TransactionObjectArgument;
    initRegistrationWithYears(name: string, years: number): TransactionObjectArgument;
    initRenewal(nft: TransactionObjectInput, years: number): TransactionObjectArgument;
    handleBasePayment(paymentIntent: TransactionObjectArgument, payment: TransactionObjectArgument, paymentType: string): TransactionObjectArgument;
    finalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument;
    finalizeRenew(receipt: TransactionObjectArgument, nft: TransactionObjectInput): TransactionObjectArgument;
    getBasePrice(paymentIntent: TransactionObjectArgument): TransactionObjectArgument;
    applyCoupon(couponCode: string, paymentIntent: TransactionObjectArgument): import("@iota/iota-sdk/dist/cjs/transactions/Transaction.js").TransactionResult;
    generateReceipt(params: ReceiptParams): TransactionObjectArgument;
    /**
     * Creates a subname.
     */
    createSubname({ parentNft, name, expirationTimestampMs, allowChildCreation, allowTimeExtension, }: {
        parentNft: TransactionObjectInput;
        name: string;
        expirationTimestampMs: number;
        allowChildCreation: boolean;
        allowTimeExtension: boolean;
    }): import("@iota/iota-sdk/dist/cjs/transactions/Transaction.js").TransactionResult;
    /**
     * Builds the PTB to create a leaf subname.
     * Parent can be a `NameRegistration` or a `SubnameRegistration` object.
     * Can be passed in as an ID or a TransactionArgument.
     */
    createLeafSubname({ parentNft, name, targetAddress, }: {
        parentNft: TransactionObjectInput;
        name: string;
        targetAddress: string;
    }): void;
    /**
     * Removes a leaf subname.
     */
    removeLeafSubname({ parentNft, name }: {
        parentNft: TransactionObjectInput;
        name: string;
    }): void;
    /**
     * Sets the target address of an NFT.
     */
    setTargetAddress({ nft, // Can be string or argument
    address, isSubname, }: {
        nft: TransactionObjectInput;
        address?: string;
        isSubname?: boolean;
    }): void;
    /**
     * Sets a public name for the user.
     */
    setPublic(name: string): void;
    /**
     * Unsets a Public name for the user.
     */
    unsetPublic(): void;
    /**
     * Edits the setup of a subname.
     */
    editSetup({ parentNft, name, allowChildCreation, allowTimeExtension, }: {
        parentNft: TransactionObjectInput;
        name: string;
        allowChildCreation: boolean;
        allowTimeExtension: boolean;
    }): void;
    /**
     * Extends the expiration of a subname.
     */
    extendExpiration({ nft, expirationTimestampMs, }: {
        nft: TransactionObjectInput;
        expirationTimestampMs: number;
    }): void;
    /**
     * Sets the user data of an NFT.
     */
    setUserData({ nft, value, key, isSubname, }: {
        nft: TransactionObjectInput;
        value: string;
        key: string;
        isSubname?: boolean;
    }): void;
    /**
     * Unsets the user data of an NFT.
     */
    unsetUserData({ nft, key, isSubname, }: {
        nft: TransactionObjectInput;
        key: string;
        isSubname?: boolean;
    }): void;
    /**
     * Burns an expired NFT to collect storage rebates.
     */
    burnExpired({ nft, isSubname }: {
        nft: TransactionObjectInput;
        isSubname?: boolean;
    }): void;
}
