@btc-stamps/tx-builder - v0.1.7
    Preparing search index...

    Class SRC20TokenBuilder

    High-level builder for creating SRC-20 token transactions

    SRC20TokenBuilder simplifies the creation of SRC-20 token transactions by handling:

    • Token deployment, minting, and transfer operations
    • Automatic encoding of SRC-20 protocol data
    • Multi-signature output creation for data storage
    • UTXO selection with asset protection
    • Optimized fee calculation for token transactions

    Features:

    • Support for all SRC-20 operations (DEPLOY, MINT, TRANSFER)
    • Automatic data validation and encoding
    • Built-in UTXO protection for special assets
    • Configurable fee rates and selection algorithms
    • Compatible with Stampchain protocol standards
    const builder = new SRC20TokenBuilder({
    network: networks.bitcoin,
    feeRate: 15
    });

    // Deploy a new token
    const deployResult = await builder.buildSRC20Transaction({
    encodedData: await encoder.encode({
    p: 'SRC-20',
    op: 'DEPLOY',
    tick: 'MYTOKEN',
    max: '1000000',
    lim: '1000'
    }),
    utxos: availableUTXOs,
    changeAddress: 'bc1q...',
    feeRate: 20
    });

    Hierarchy (View Summary)

    Implements

    • ISRC20TokenBuilder
    Index

    Constructors

    Properties

    dustThreshold: number
    enableCPFP: boolean
    enableRBF: boolean
    feeRate: number
    maxInputs: number
    network: Network

    Methods

    • Build a DEPLOY transaction for creating a new SRC-20 token

      Parameters

      • deployData: SRC20DeployData

      Returns Promise<Transaction>

    • Build complete transaction from UTXOs

      Parameters

      • utxos: UTXO[]
      • outputs: TransactionOutput[]
      • changeAddress: string
      • Optionaloptions: Partial<BuildOptions>

      Returns Psbt & { outputCount: number }

    • Build a MINT transaction for minting SRC-20 tokens

      Parameters

      • mintData: SRC20MintData

      Returns Promise<Transaction>

    • Build a token deploy transaction

      Parameters

      • utxos: UTXO[]
      • options: TokenDeployOptions

      Returns Promise<SRC20BuildResult>

    • Build a token mint transaction

      Parameters

      • utxos: UTXO[]
      • options: TokenMintOptions

      Returns Promise<SRC20BuildResult>

    • Build a token transfer transaction

      Parameters

      • utxos: UTXO[]
      • options: TokenTransferOptions

      Returns Promise<SRC20BuildResult>

    • Build a TRANSFER transaction for sending SRC-20 tokens

      Parameters

      • transferData: SRC20TransferData

      Returns Promise<Transaction>

    • Calculate optimal change for stamp transactions

      Parameters

      • inputValue: number
      • outputValue: number
      • estimatedFee: number

      Returns { changeValue: number; shouldCreateChange: boolean }

    • Calculate fee for stamp transaction using SRC-20 calculator

      Parameters

      • params: Src20TransactionParams
      • inputs: { type: InputType; witnessScript?: Buffer<ArrayBufferLike> }[]
      • outputs: { size?: number; type: OutputType }[]
      • priority: "low" | "medium" | "high" | "urgent" = 'medium'

      Returns Promise<
          Promise<
              FeeEstimate & {
                  normalizedFee: NormalizedFeeRate;
                  sizeBreakdown: {
                      inputSize: number;
                      outputSize: number;
                      virtualSize: number;
                      witnessSize: number;
                  };
                  src20Rules: {
                      appliedMultiplier: number;
                      dataOutputCount: number;
                      recommendedFeeRateSatsPerVB: number;
                  };
              },
          >,
      >

    • Estimate optimal fee for different input/output combinations

      Parameters

      • inputs: { type: InputType }[]
      • outputs: { type: OutputType }[]
      • priority: "low" | "medium" | "high" | "urgent" = 'medium'

      Returns Promise<{ feeRate: number; totalFee: number; virtualSize: number }>

    • Estimate transaction size in bytes Basic formula: ~180 bytes per input + ~34 bytes per output + ~10 bytes overhead

      Parameters

      • inputCount: number
      • outputCount: number
      • OptionalhasWitness: boolean

      Returns number

    • Estimate transaction size with different input/output types

      Parameters

      • inputs: { type: InputType }[]
      • outputs: { type: OutputType }[]

      Returns number

    • Estimate total cost of stamp transaction including stamp value

      Parameters

      • params: Src20TransactionParams
      • inputs: { type: InputType; witnessScript?: Buffer<ArrayBufferLike> }[]
      • outputs: { size?: number; type: OutputType }[]
      • priority: "low" | "medium" | "high" | "urgent" = 'medium'

      Returns Promise<
          Promise<
              {
                  breakdown: {
                      baseTransactionFee: number;
                      dataPremium: number;
                      priorityMultiplier: number;
                      stampPremium: number;
                  };
                  networkFee: number;
                  stampValue: number;
                  totalCost: number;
              },
          >,
      >

    • Estimate transaction cost

      Parameters

      • numInputs: number
      • numDataOutputs: number
      • includeRecipient: boolean
      • feeRate: number

      Returns number

    • Estimate transaction size for fee calculation

      Parameters

      • numInputs: number
      • numOutputs: number

      Returns number

    • Get stamp fee rates for different transaction types

      Returns {
          regularWithStamp: {
              high: number;
              low: number;
              medium: number;
              urgent: number;
          };
          stampCreation: {
              high: number;
              low: number;
              medium: number;
              urgent: number;
          };
          stampTransfer: {
              high: number;
              low: number;
              medium: number;
              urgent: number;
          };
      }

    • Check if transaction meets stamp criteria

      Parameters

      • params: { dataOutputCount: number; isStampCreation: boolean; stampValue: number }

      Returns boolean

    • Select UTXOs for a transaction using the configured selector

      Parameters

      • utxos: UTXO[]
      • targetValue: number
      • feeRate: number
      • dustThreshold: number

      Returns EnhancedSelectionResult

    • Validate tick symbol - SRC-20 protocol enforces 5 character maximum

      Parameters

      • tick: string

      Returns boolean