Untitled

mail@pastecode.io avatar
unknown
typescript
2 months ago
2.1 kB
3
Indexable
Never
import Wallet, { BitcoinNetworkType } from "sats-connect";

interface RunesEtchOptions {
  runeName: string;
  divisibility?: number;
  isMintable: boolean;
  destinationAddress: string;
  feeRate: number;
  refundAddress: string;
  network: BitcoinNetworkType;
  premine?: string;
  symbol?: string;
  terms?: {
    amount?: string;
    cap?: string;
    heightStart?: string;
    heightEnd?: string; 
    offsetStart?: string; 
    offsetEnd?: string; 
  };
  inscriptionDetails?: {
    contentType: string;
    contentBase64: string;
    delegateInscriptionId?: string;
  };
  appServiceFee?: number;
  appServiceFeeAddress?: string;
}

const etchRunes = async (
  options: RunesEtchOptions,
  callback: (result: {
    state: string;
    message: string;
    orderId?: string;
    fundTransactionId?: string;
  }) => void
) => {
  try {
    // Prepare the payload for the runes etch method
    const payload = {
      runeName: options.runeName,
      divisibility: options.divisibility,
      isMintable: options.isMintable,
      destinationAddress: options.destinationAddress,
      feeRate: options.feeRate,
      refundAddress: options.refundAddress,
      network: options.network,
      premine: options.premine,
      symbol: options.symbol,
      terms: options.terms,
      inscriptionDetails: options.inscriptionDetails,
      appServiceFee: options.appServiceFee,
      appServiceFeeAddress: options.appServiceFeeAddress,
    };

    const response = await Wallet.request("runes_etch", payload);

    if (response.status === "success") {
      callback({
        state: "success",
        message: "Runes etching initiated successfully.",
        orderId: response.result.orderId,
        fundTransactionId: response.result.fundTransactionId,
      });
    } else {
      callback({
        state: "error",
        message: "Error etching runes. " + response.error,
      });
    }
  } catch (error: any) {
    callback({
      state: "error",
      message: "Exception in etching runes: " + error.message,
    });
  }
};

export default etchRunes;
Leave a Comment