import { FixedScriptWalletNamespace } from "../wasm/wasm_utxo.js";
export { RootWalletKeys } from "./RootWalletKeys.js";
export { ReplayProtection } from "./ReplayProtection.js";
export { outputScript, address } from "./address.js";
export { Dimensions } from "./Dimensions.js";
export { outputScriptTypes, inputScriptTypes, } from "./scriptType.js";
export { ChainCode, chainCodes, assertChainCode } from "./chains.js";
// Bitcoin-like PSBT (for all non-Zcash networks)
export { BitGoPsbt, getWalletKeysFromPsbt, } from "./BitGoPsbt.js";
// Zcash-specific PSBT subclass
export { ZcashBitGoPsbt, } from "./ZcashBitGoPsbt.js";
/**
 * Check if a network supports a given fixed-script wallet script type
 *
 * @param coin - Coin name (e.g., "btc", "ltc", "doge")
 * @param scriptType - Output script type or input script type to check
 * @returns `true` if the network supports the script type, `false` otherwise
 *
 * @example
 * ```typescript
 * // Bitcoin supports all script types
 * supportsScriptType("btc", "p2tr"); // true
 *
 * // Litecoin supports segwit but not taproot
 * supportsScriptType("ltc", "p2wsh"); // true
 * supportsScriptType("ltc", "p2tr"); // false
 *
 * // Dogecoin only supports legacy scripts
 * supportsScriptType("doge", "p2sh"); // true
 * supportsScriptType("doge", "p2wsh"); // false
 *
 * // Also works with input script types
 * supportsScriptType("btc", "p2trMusig2KeyPath"); // true
 * supportsScriptType("doge", "p2trLegacy"); // false
 * ```
 */
export function supportsScriptType(coin, scriptType) {
    return FixedScriptWalletNamespace.supports_script_type(coin, scriptType);
}
/**
 * Create an OP_RETURN output script with optional data
 *
 * @param data - Optional data bytes to include in the OP_RETURN script
 * @returns The OP_RETURN script as a Uint8Array
 *
 * @example
 * ```typescript
 * // Empty OP_RETURN
 * const script = createOpReturnScript();
 *
 * // OP_RETURN with data
 * const data = new Uint8Array([1, 2, 3, 4]);
 * const script = createOpReturnScript(data);
 * ```
 */
export function createOpReturnScript(data) {
    return FixedScriptWalletNamespace.create_op_return_script(data);
}
/**
 * Get the P2SH-P2PK output script for a compressed public key
 *
 * @param pubkey - The compressed public key bytes (33 bytes)
 * @returns The P2SH-P2PK output script as a Uint8Array
 */
export function p2shP2pkOutputScript(pubkey) {
    return FixedScriptWalletNamespace.p2sh_p2pk_output_script(pubkey);
}
