import { BaseServiceBuilder, HederaAgentKit, AgentOperationalMode } from 'hedera-agent-kit';
import { InscriptionInput, InscriptionOptions, InscriptionResponse, RetrievedInscriptionResult } from '@hashgraphonline/standards-sdk';
import { InscriptionSDK, InscriptionResult } from '@kiloscribe/inscription-sdk';
/**
 * Type definition for DAppSigner interface compatible with inscription SDK
 */
interface DAppSigner {
    getAccountId(): {
        toString(): string;
    };
    [key: string]: unknown;
}
export interface PendingInscriptionResponse {
    transactionBytes: string;
    tx_id?: string;
    topic_id?: string;
    status?: string;
    completed?: boolean;
}
export interface CompletedInscriptionResponse {
    confirmed?: boolean;
    result?: InscriptionResult;
    inscription?: RetrievedInscriptionResult;
    jsonTopicId?: string;
    network?: string;
}
/**
 * Builder for Inscription operations
 */
type InscriptionSDKInstance = InscriptionSDK;
export declare const toDashedTransactionId: (transactionId: string) => string;
export declare class InscriberBuilder extends BaseServiceBuilder {
    protected inscriptionSDK?: InscriptionSDKInstance;
    private static signerProvider?;
    private static walletInfoResolver?;
    private static startInscriptionDelegate?;
    private static walletExecutor?;
    /** When true, do not allow server fallback; require a wallet path in Provide Bytes */
    private static preferWalletOnly;
    constructor(hederaKit: HederaAgentKit);
    getOperationalMode(): AgentOperationalMode;
    static setSignerProvider(provider: () => Promise<DAppSigner | null> | DAppSigner | null): void;
    static setWalletInfoResolver(resolver: () => Promise<{
        accountId: string;
        network: 'mainnet' | 'testnet';
    } | null> | {
        accountId: string;
        network: 'mainnet' | 'testnet';
    } | null): void;
    static setStartInscriptionDelegate(delegate: (request: Record<string, unknown>, network: 'mainnet' | 'testnet') => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>): void;
    static setWalletExecutor(executor: (base64: string, network: 'mainnet' | 'testnet') => Promise<{
        transactionId: string;
    }>): void;
    /**
     * Control fallback behavior. When true, wallet must be available for execution paths.
     */
    static setPreferWalletOnly(flag: boolean): void;
    getSigner(): Promise<DAppSigner | null>;
    /**
     * Get or create Inscription SDK
     */
    protected getInscriptionSDK(options: InscriptionOptions): Promise<InscriptionSDKInstance | null>;
    /**
     * Inscribe content using server-side authentication
     */
    inscribe(input: InscriptionInput, options: InscriptionOptions): Promise<InscriptionResponse>;
    /**
     * Inscribe content using a DApp signer
     */
    inscribeWithSigner(input: InscriptionInput, signer: DAppSigner, options: InscriptionOptions): Promise<InscriptionResponse>;
    inscribeAuto(input: InscriptionInput, options: InscriptionOptions): Promise<InscriptionResponse>;
    /**
     * Retrieve an existing inscription
     */
    retrieveInscription(transactionId: string, options: InscriptionOptions): Promise<RetrievedInscriptionResult>;
    /**
     * Close the inscription SDK
     */
    close(): Promise<void>;
}
export {};
