Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
25c26aa
feat: use wasm-utxo for testnet in backup recovery
lcovar Jan 6, 2026
adae3f8
feat: use wasm dimensions in psbt calculation
lcovar Jan 6, 2026
78a3d35
feat: use wasm-utxo dimensions for crossChainRecovery
lcovar Jan 6, 2026
bd09e98
fix: install @api-ts/openapi-generator
starfy84 Jan 7, 2026
4361b4d
Merge pull request #7858 from BitGo/DX-2708-install-openapi-generator
ericcrosson-bitgo Jan 7, 2026
03d5339
fix: override verify tss txn for xdc token
ArunBala-Bitgo Jan 7, 2026
c965a7d
Merge pull request #7848 from BitGo/coin-7060-2
ArunBala-Bitgo Jan 7, 2026
5982cf4
feat(abstract-utxo): use wasm-utxo address generator for all networks
OttoAllmendinger Jan 7, 2026
9215302
feat(abstract-utxo): simplify testnet coin name type and check
OttoAllmendinger Jan 7, 2026
4f0cd23
feat(abstract-utxo): refine typed interfaces and update naming
OttoAllmendinger Jan 7, 2026
75d85f8
fix(abstract-utxo): improve type checking in isUtxoWalletData
OttoAllmendinger Jan 7, 2026
2a15687
feat(abstract-utxo): define coin name in coin class instead of network
OttoAllmendinger Jan 7, 2026
e321560
feat(abstract-utxo): add explicit testnet coin array and mainnet mapping
OttoAllmendinger Jan 7, 2026
868d070
feat(abstract-utxo): use coin name to get family
OttoAllmendinger Jan 7, 2026
c6afa6b
feat(abstract-utxo): use coin name to determine coin full name
OttoAllmendinger Jan 7, 2026
b7b3a52
Merge pull request #7853 from BitGo/BTC-2909-dims
lcovar Jan 7, 2026
2982b7c
Merge pull request #7857 from BitGo/BTC-2912.generate-address-wasm-ut…
lcovar Jan 7, 2026
f5870b2
chore: remove duplicate PSBT hex from signTransaction response
lcovar Jan 7, 2026
55e446d
feat: use fromOutput to remove utxolib dependency in wasm path
lcovar Jan 7, 2026
9263bc1
Merge pull request #7860 from BitGo/BTC-0-remove-extra-param
lcovar Jan 7, 2026
1e95888
feat: enable multisig stuck tx for all EVM chains
hafeezshaik933 Jan 7, 2026
6dd03fa
feat(sdk-coin-tempo): add transaction serialization
nvrakesh06 Jan 7, 2026
9030613
Merge pull request #7854 from BitGo/feat/COIN-7096
hafeezshaik933 Jan 8, 2026
4379062
Merge pull request #7856 from BitGo/WIN-8479
nvrakesh06 Jan 8, 2026
03f6707
Merge pull request #7855 from BitGo/BTC-2909.aoc-coinname
OttoAllmendinger Jan 8, 2026
0aacdce
Merge pull request #7861 from BitGo/BTC-2909-dims-2
OttoAllmendinger Jan 8, 2026
d346b68
feat(abstract-utxo): refactor signAndVerifyPsbt
OttoAllmendinger Jan 8, 2026
b9ed41a
feat(abstract-utxo): rename signPsbt to signPsbtUtxolib
OttoAllmendinger Jan 8, 2026
b1e6da5
feat(abstract-utxo): add unified signAndVerifyPsbt function
OttoAllmendinger Jan 8, 2026
0cd99bd
feat(abstract-utxo): use coin name instead of network
OttoAllmendinger Jan 7, 2026
6754c34
feat(abstract-utxo): use wasm-utxo for recovery functions
OttoAllmendinger Jan 7, 2026
9d5e4ae
feat: add mantle erc20 token
abhijeet8986 Jan 8, 2026
2784be0
feat: add ofc assets for Mantle and Fluenteth
baltiyal Jan 8, 2026
84c6d7c
feat(scripts): allow configurable version prefix for dependency upgrade
OttoAllmendinger Jan 8, 2026
b57480c
feat(abstract-utxo): bump wasm-utxo dependency to v1.20.0
OttoAllmendinger Jan 8, 2026
ed1b256
Merge pull request #7865 from BitGo/COIN-7145-COIN-7146-ofc-asset
baltiyal Jan 8, 2026
4e53e5a
Merge pull request #7864 from BitGo/BTC-2909-dims.use-coinname
OttoAllmendinger Jan 8, 2026
110d3dc
feat(sdk-core): add updateWallet function and freezeDepositsFromShielded
davidkaplanbitgo Jan 8, 2026
32ae883
chore(statics): update url for zec
davidkaplanbitgo Jan 8, 2026
df8e227
Merge pull request #7868 from BitGo/BTC-2887.update-wallet
davidkaplanbitgo Jan 8, 2026
a24a351
Merge pull request #7869 from BitGo/BTC-0.update-zec-browser
davidkaplanbitgo Jan 8, 2026
a7836cd
Merge pull request #7867 from BitGo/BTC-0.bump-wasm-utxo-wide
lcovar Jan 8, 2026
cc031e5
feat: onboard xlayer and jovayeth tokens
bhuvanr159 Jan 9, 2026
947beee
feat(sdk-core): replace utxo-core with secp256k1 for bip32utils
OttoAllmendinger Jan 8, 2026
9d233a6
Merge pull request #7863 from BitGo/COIN-7153
abhijeet8986 Jan 9, 2026
9bd9b76
Merge pull request #7873 from BitGo/COIN-7154-xlayer-jovayeth-tokens
bhuvanr159 Jan 9, 2026
a54fefe
feat: enable erc20 token optimization for all tokens
ArunBala-Bitgo Jan 9, 2026
66e50ac
feat: go account suppport for mantle erc20 tokens
abhijeet8986 Jan 8, 2026
dfdff66
feat: mon token support
ArunBala-Bitgo Jan 9, 2026
be2e1c7
Merge pull request #7874 from BitGo/WIN-8584
ArunBala-Bitgo Jan 9, 2026
7b4e292
feat: go account support for xlayer and jovayeth erc20 tokens
bhuvanr159 Jan 9, 2026
05897e1
Merge pull request #7866 from BitGo/COIN-7160
abhijeet8986 Jan 9, 2026
258a798
Merge pull request #7872 from BitGo/WIN-8562
ArunBala-Bitgo Jan 9, 2026
7f44b9d
Merge pull request #7875 from BitGo/COIN-7154-go-a-support-new-tokens
bhuvanr159 Jan 9, 2026
b4de483
chore(statics): add missing config for megaeth
nvrakesh06 Jan 9, 2026
db7d638
Merge pull request #7871 from BitGo/WIN-8334
nvrakesh06 Jan 9, 2026
749f1ef
chore(root): bump public types
davidkaplanbitgo Jan 7, 2026
c728c05
fix(sdk-core): update go staking request interface
noel-bitgo Jan 9, 2026
dcab0a3
Merge pull request #7870 from BitGo/BTC-0.sdk-core-no-utxo-core
OttoAllmendinger Jan 9, 2026
6a84b4a
Merge pull request #7878 from BitGo/SC-4862
noel-bitgo Jan 9, 2026
efafdb9
feat: validateAccountId fn in evm utils
rohitsaw115 Jan 10, 2026
01f4bbf
Merge pull request #7879 from BitGo/win-8570
rohitsaw115 Jan 10, 2026
8fc9f1f
chore(statics): onboard prod token
nvrakesh06 Jan 10, 2026
f6a77e9
Merge pull request #7880 from BitGo/WIN-8587
nvrakesh06 Jan 10, 2026
68f2143
refactor(sdk-coin-flrp): update flrp txn builders to use etna support
mohd-kashif Jan 2, 2026
48a0ef4
Merge pull request #7839 from BitGo/WIN-8498
mohd-kashif Jan 12, 2026
48a5dad
build(abstract-utxo): bump wasm-utxo to 1.22.0
OttoAllmendinger Jan 9, 2026
5625b7f
feat(statics): update explorer and address url for iota
parasgarg-bitgo Jan 12, 2026
76b80df
Merge pull request #7877 from BitGo/BTC-2916.bump-wasm-utxo
OttoAllmendinger Jan 12, 2026
c28752a
feat(abstract-utxo): add BIP-322 signature verification with wasm-utxo
OttoAllmendinger Jan 9, 2026
02760aa
feat(abstract-utxo): simplify BIP322 PSBT verification
OttoAllmendinger Jan 9, 2026
76e33bf
feat(abstract-utxo): use wasm-utxo for BIP322 verification
OttoAllmendinger Jan 9, 2026
b85cd65
Merge pull request #7882 from BitGo/WIN-8596
parasgarg-bitgo Jan 12, 2026
5caf606
feat(abstract-utxo): enable wasm-utxo tests for zcash
OttoAllmendinger Jan 12, 2026
cbbc3a1
Merge pull request #7862 from BitGo/BTC-2854.bump-public-types
davidkaplanbitgo Jan 12, 2026
94926f9
chore(statics): ungate zec for frankfurt trust
davidkaplanbitgo Jan 12, 2026
e77ba48
Merge pull request #7886 from BitGo/BTC-2924
davidkaplanbitgo Jan 12, 2026
91bdf7a
feat(sdk-core): add custodial wallet support for consolidate transact…
davidkaplanbitgo Jan 12, 2026
2f4f62a
Merge pull request #7887 from BitGo/BTC-2854.bump-public-types
lcovar Jan 12, 2026
0e63f42
Merge pull request #7885 from BitGo/BTC-0.enable-zcash-tests
OttoAllmendinger Jan 12, 2026
3ca7432
Merge pull request #7884 from BitGo/BTC-2916.use-wasm-utxo-for-bip322
OttoAllmendinger Jan 12, 2026
23b0f15
feat(abstract-utxo): simplify replay protection unspent check
OttoAllmendinger Jan 12, 2026
bd9ace7
feat(abstract-utxo): use coin name instead of network object
OttoAllmendinger Jan 12, 2026
8678f78
feat: address resolution function for hbarevm
rohitsaw115 Dec 15, 2025
bce923f
Merge pull request #7888 from BitGo/win-8570
rohitsaw115 Jan 13, 2026
7899c90
feat(statics): onboard 11 new ungated tokens with OFC equivalents
manojkumar138 Jan 13, 2026
c852982
Merge pull request #7889 from BitGo/feat/onboard-11-new-tokens
manojkumar138 Jan 13, 2026
e7f55be
chore: enable staking feature for og
ashutoshkumar-6 Jan 13, 2026
b32a426
Merge pull request #7892 from BitGo/SC-4900
ashutoshkumar-6 Jan 13, 2026
dc8384e
Merge pull request #7891 from BitGo/BTC-2916.use-coinname
OttoAllmendinger Jan 13, 2026
aa76013
fix(express): allow string for feeRate
davidkaplanbitgo Jan 13, 2026
f41d9d5
Merge pull request #7894 from BitGo/BTC-0.fix-express-typed
davidkaplanbitgo Jan 13, 2026
f701d69
Merge branch 'master' into rel/latest-merge-conflict-2
zahin-mohammad Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 6 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ COPY --from=builder /tmp/bitgo/modules/sdk-opensslbytes /var/modules/sdk-openssl
COPY --from=builder /tmp/bitgo/modules/secp256k1 /var/modules/secp256k1/
COPY --from=builder /tmp/bitgo/modules/sjcl /var/modules/sjcl/
COPY --from=builder /tmp/bitgo/modules/statics /var/modules/statics/
COPY --from=builder /tmp/bitgo/modules/utxo-core /var/modules/utxo-core/
COPY --from=builder /tmp/bitgo/modules/unspents /var/modules/unspents/
COPY --from=builder /tmp/bitgo/modules/utxo-lib /var/modules/utxo-lib/
COPY --from=builder /tmp/bitgo/modules/blake2b /var/modules/blake2b/
COPY --from=builder /tmp/bitgo/modules/blake2b-wasm /var/modules/blake2b-wasm/
Expand All @@ -55,6 +53,8 @@ COPY --from=builder /tmp/bitgo/modules/abstract-utxo /var/modules/abstract-utxo/
COPY --from=builder /tmp/bitgo/modules/blockapis /var/modules/blockapis/
COPY --from=builder /tmp/bitgo/modules/sdk-api /var/modules/sdk-api/
COPY --from=builder /tmp/bitgo/modules/sdk-hmac /var/modules/sdk-hmac/
COPY --from=builder /tmp/bitgo/modules/unspents /var/modules/unspents/
COPY --from=builder /tmp/bitgo/modules/utxo-core /var/modules/utxo-core/
COPY --from=builder /tmp/bitgo/modules/utxo-ord /var/modules/utxo-ord/
COPY --from=builder /tmp/bitgo/modules/account-lib /var/modules/account-lib/
COPY --from=builder /tmp/bitgo/modules/sdk-coin-ada /var/modules/sdk-coin-ada/
Expand Down Expand Up @@ -143,8 +143,6 @@ cd /var/modules/sdk-opensslbytes && yarn link && \
cd /var/modules/secp256k1 && yarn link && \
cd /var/modules/sjcl && yarn link && \
cd /var/modules/statics && yarn link && \
cd /var/modules/utxo-core && yarn link && \
cd /var/modules/unspents && yarn link && \
cd /var/modules/utxo-lib && yarn link && \
cd /var/modules/blake2b && yarn link && \
cd /var/modules/blake2b-wasm && yarn link && \
Expand All @@ -153,6 +151,8 @@ cd /var/modules/abstract-utxo && yarn link && \
cd /var/modules/blockapis && yarn link && \
cd /var/modules/sdk-api && yarn link && \
cd /var/modules/sdk-hmac && yarn link && \
cd /var/modules/unspents && yarn link && \
cd /var/modules/utxo-core && yarn link && \
cd /var/modules/utxo-ord && yarn link && \
cd /var/modules/account-lib && yarn link && \
cd /var/modules/sdk-coin-ada && yarn link && \
Expand Down Expand Up @@ -244,8 +244,6 @@ RUN cd /var/bitgo-express && \
yarn link @bitgo/secp256k1 && \
yarn link @bitgo/sjcl && \
yarn link @bitgo/statics && \
yarn link @bitgo/utxo-core && \
yarn link @bitgo/unspents && \
yarn link @bitgo/utxo-lib && \
yarn link @bitgo/blake2b && \
yarn link @bitgo/blake2b-wasm && \
Expand All @@ -254,6 +252,8 @@ RUN cd /var/bitgo-express && \
yarn link @bitgo/blockapis && \
yarn link @bitgo/sdk-api && \
yarn link @bitgo/sdk-hmac && \
yarn link @bitgo/unspents && \
yarn link @bitgo/utxo-core && \
yarn link @bitgo/utxo-ord && \
yarn link @bitgo/account-lib && \
yarn link @bitgo/sdk-coin-ada && \
Expand Down
2 changes: 1 addition & 1 deletion modules/abstract-lightning/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
]
},
"dependencies": {
"@bitgo/public-types": "5.43.1",
"@bitgo/public-types": "5.63.0",
"@bitgo/sdk-core": "^36.26.0",
"@bitgo/statics": "^58.20.0",
"@bitgo/utxo-lib": "^11.19.0",
Expand Down
2 changes: 1 addition & 1 deletion modules/abstract-utxo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"@bitgo/utxo-core": "^1.29.0",
"@bitgo/utxo-lib": "^11.19.0",
"@bitgo/utxo-ord": "^1.22.21",
"@bitgo/wasm-utxo": "1.19.0",
"@bitgo/wasm-utxo": "^1.22.0",
"@types/lodash": "^4.14.121",
"@types/superagent": "4.1.15",
"bignumber.js": "^9.0.2",
Expand Down
77 changes: 45 additions & 32 deletions modules/abstract-utxo/src/abstractUtxoCoin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { randomBytes } from 'crypto';
import _ from 'lodash';
import * as utxolib from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/secp256k1';
import { bitgo, getMainnet, isMainnet, isTestnet } from '@bitgo/utxo-lib';
import { bitgo, getMainnet, isMainnet } from '@bitgo/utxo-lib';
import {
AddressCoinSpecific,
BaseCoin,
Expand Down Expand Up @@ -76,7 +76,14 @@ import {
ErrorImplicitExternalOutputs,
} from './transaction/descriptor/verifyTransaction';
import { assertDescriptorWalletAddress, getDescriptorMapFromWallet, isDescriptorWallet } from './descriptor';
import { getChainFromNetwork, getFamilyFromNetwork, getFullNameFromNetwork } from './names';
import {
getFullNameFromCoinName,
getMainnetCoinName,
getNetworkFromCoinName,
isTestnetCoin,
UtxoCoinName,
UtxoCoinNameMainnet,
} from './names';
import { assertFixedScriptWalletAddress } from './address/fixedScript';
import { isSdkBackend, ParsedTransaction, SdkBackend } from './transaction/types';
import { decodePsbtWith, encodeTransaction, stringToBufferTryFormats } from './transaction/decode';
Expand Down Expand Up @@ -369,42 +376,40 @@ export abstract class AbstractUtxoCoin
extends BaseCoin
implements Musig2Participant<utxolib.bitgo.UtxoPsbt>, Musig2Participant<fixedScriptWallet.BitGoPsbt>
{
abstract name: UtxoCoinName;

public altScriptHash?: number;
public supportAltScriptDestination?: boolean;
public defaultSdkBackend: SdkBackend = 'utxolib';
public readonly amountType: 'number' | 'bigint';
private readonly _network: utxolib.Network;

protected constructor(bitgo: BitGoBase, network: utxolib.Network, amountType: 'number' | 'bigint' = 'number') {
protected constructor(bitgo: BitGoBase, amountType: 'number' | 'bigint' = 'number') {
super(bitgo);
if (!utxolib.isValidNetwork(network)) {
throw new Error(
'invalid network: please make sure to use the same version of ' +
'@bitgo/utxo-lib as this library when initializing an instance of this class'
);
}
this.amountType = amountType;
this._network = network;
}

get network() {
return this._network;
/**
* @deprecated - will be removed when we drop support for utxolib
* Use `name` property instead.
*/
get network(): utxolib.Network {
return getNetworkFromCoinName(this.name);
}

getChain() {
return getChainFromNetwork(this.network);
getChain(): UtxoCoinName {
return this.name;
}

getFamily() {
return getFamilyFromNetwork(this.network);
getFamily(): UtxoCoinNameMainnet {
return getMainnetCoinName(this.name);
}

getFullName() {
return getFullNameFromNetwork(this.network);
getFullName(): string {
return getFullNameFromCoinName(this.name);
}

/** Indicates whether the coin supports a block target */
supportsBlockTarget() {
supportsBlockTarget(): boolean {
// FIXME: the SDK does not seem to use this anywhere so it is unclear what the purpose of this method is
switch (getMainnet(this.network)) {
case utxolib.networks.bitcoin:
Expand All @@ -428,7 +433,7 @@ export abstract class AbstractUtxoCoin
* Returns the factor between the base unit and its smallest subdivison
* @return {number}
*/
getBaseFactor() {
getBaseFactor(): number {
return 1e8;
}

Expand Down Expand Up @@ -466,7 +471,7 @@ export abstract class AbstractUtxoCoin
* @param {String} pub the pub to be checked
* @returns {Boolean} is it valid?
*/
isValidPub(pub: string) {
isValidPub(pub: string): boolean {
try {
return bip32.fromBase58(pub).isNeutered();
} catch (e) {
Expand Down Expand Up @@ -545,7 +550,7 @@ export abstract class AbstractUtxoCoin
}

if (utxolib.bitgo.isPsbt(input)) {
return decodePsbtWith(input, this.network, decodeWith);
return decodePsbtWith(input, this.name, decodeWith);
} else {
if (decodeWith !== 'utxolib') {
console.error('received decodeWith hint %s, ignoring for legacy transaction', decodeWith);
Expand Down Expand Up @@ -687,7 +692,7 @@ export abstract class AbstractUtxoCoin
throw new Error('keychains must be a triple');
}
assertDescriptorWalletAddress(
this.network,
this.name,
params,
getDescriptorMapFromWallet(wallet, toBip32Triple(keychains), getPolicyForEnv(this.bitgo.env))
);
Expand All @@ -704,7 +709,7 @@ export abstract class AbstractUtxoCoin
throw new Error('missing required param keychains');
}

assertFixedScriptWalletAddress(this.network, {
assertFixedScriptWalletAddress(this.name, {
address,
keychains,
format: params.format ?? 'base58',
Expand Down Expand Up @@ -762,9 +767,9 @@ export abstract class AbstractUtxoCoin
.send({ psbt: buffer.toString('hex') })
.result();
if (psbt instanceof utxolib.bitgo.UtxoPsbt) {
return decodePsbtWith(response.psbt, this.network, 'utxolib') as T;
return decodePsbtWith(response.psbt, this.name, 'utxolib') as T;
} else {
return decodePsbtWith(response.psbt, this.network, 'wasm-utxo') as T;
return decodePsbtWith(response.psbt, this.name, 'wasm-utxo') as T;
}
}

Expand Down Expand Up @@ -861,7 +866,7 @@ export abstract class AbstractUtxoCoin
* @returns {boolean}
*/
isBitGoTaintedUnspent<TNumber extends number | bigint>(unspent: Unspent<TNumber>): boolean {
return isReplayProtectionUnspent<TNumber>(unspent, this.network);
return isReplayProtectionUnspent(unspent, this.name);
}

/**
Expand All @@ -872,7 +877,7 @@ export abstract class AbstractUtxoCoin
override async explainTransaction<TNumber extends number | bigint = number>(
params: ExplainTransactionOptions<TNumber>
): Promise<TransactionExplanation> {
return explainTx(this.decodeTransactionFromPrebuild(params), params, this.network);
return explainTx(this.decodeTransactionFromPrebuild(params), params, this.name);
}

/**
Expand Down Expand Up @@ -967,14 +972,14 @@ export abstract class AbstractUtxoCoin
getDefaultTxFormat(wallet: Wallet, requestedFormat?: TxFormat): TxFormat | undefined {
// If format is explicitly requested, use it
if (requestedFormat !== undefined) {
if (isTestnet(this.network) && requestedFormat === 'legacy') {
if (isTestnetCoin(this.name) && requestedFormat === 'legacy') {
throw new ErrorDeprecatedTxFormat(requestedFormat);
}

return requestedFormat;
}

if (isTestnet(this.network)) {
if (isTestnetCoin(this.name)) {
return 'psbt-lite';
}

Expand Down Expand Up @@ -1056,7 +1061,15 @@ export abstract class AbstractUtxoCoin
}

/** @inheritDoc */
auditDecryptedKey({ multiSigType, publicKey, prv }) {
auditDecryptedKey({
multiSigType,
publicKey,
prv,
}: {
multiSigType: MultisigType;
publicKey: string;
prv: string;
}): void {
if (multiSigType === 'tss') {
throw new Error('tss auditing is not supported for this coin');
}
Expand Down
55 changes: 17 additions & 38 deletions modules/abstract-utxo/src/address/fixedScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import {
isTriple,
Triple,
} from '@bitgo/sdk-core';
import * as utxolib from '@bitgo/utxo-lib';
import { bitgo } from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/secp256k1';
import * as wasmUtxo from '@bitgo/wasm-utxo';

import { getNetworkFromCoinName, UtxoCoinName } from '../names';

type ScriptType2Of3 = bitgo.outputScripts.ScriptType2Of3;

export interface FixedScriptAddressCoinSpecific {
Expand All @@ -38,44 +38,23 @@ interface GenerateFixedScriptAddressOptions extends GenerateAddressOptions {
keychains: { pub: string }[];
}

function canonicalAddress(network: utxolib.Network, address: string, format?: CreateAddressFormat): string {
if (format === 'cashaddr') {
const script = utxolib.addressFormat.toOutputScriptTryFormats(address, network);
return utxolib.addressFormat.fromOutputScriptWithFormat(script, format, network);
}
// Default to canonical format (base58 for most coins)
return utxolib.addressFormat.toCanonicalFormat(address, network);
}

function supportsAddressType(network: utxolib.Network, addressType: ScriptType2Of3): boolean {
return utxolib.bitgo.outputScripts.isSupportedScriptType(network, addressType);
function supportsAddressType(coinName: UtxoCoinName, addressType: ScriptType2Of3): boolean {
const network = getNetworkFromCoinName(coinName);
return bitgo.outputScripts.isSupportedScriptType(network, addressType);
}

export function generateAddressWithChainAndIndex(
network: utxolib.Network,
coinName: UtxoCoinName,
keychains: bitgo.RootWalletKeys | Triple<string>,
chain: bitgo.ChainCode,
index: number,
format: CreateAddressFormat | undefined
): string {
if (utxolib.isTestnet(network)) {
// Convert CreateAddressFormat to AddressFormat for wasm-utxo
// 'base58' -> 'default', 'cashaddr' -> 'cashaddr'
const wasmFormat = format === 'base58' ? 'default' : format;
return wasmUtxo.fixedScriptWallet.address(keychains, chain, index, network, wasmFormat);
}

if (!(keychains instanceof bitgo.RootWalletKeys)) {
const hdNodes = keychains.map((pub) => bip32.fromBase58(pub));
keychains = new bitgo.RootWalletKeys(hdNodes as Triple<utxolib.BIP32Interface>);
}

const addressType = bitgo.scriptTypeForChain(chain);

const derivedKeys = keychains.deriveForChainAndIndex(chain, index).publicKeys;
const { scriptPubKey: outputScript } = utxolib.bitgo.outputScripts.createOutputScript2of3(derivedKeys, addressType);
const address = utxolib.address.fromOutputScript(outputScript, network);
return canonicalAddress(network, address, format);
// Convert CreateAddressFormat to AddressFormat for wasm-utxo
// 'base58' -> 'default', 'cashaddr' -> 'cashaddr'
const wasmFormat = format === 'base58' ? 'default' : format;
const network = getNetworkFromCoinName(coinName);
return wasmUtxo.fixedScriptWallet.address(keychains, chain, index, network, wasmFormat);
}

/**
Expand All @@ -90,7 +69,7 @@ export function generateAddressWithChainAndIndex(
* @param params.bech32 {boolean} Deprecated
* @returns {string} The generated address
*/
export function generateAddress(network: utxolib.Network, params: GenerateFixedScriptAddressOptions): string {
export function generateAddress(coinName: UtxoCoinName, params: GenerateFixedScriptAddressOptions): string {
let derivationIndex = 0;
if (_.isInteger(params.index) && (params.index as number) > 0) {
derivationIndex = params.index as number;
Expand Down Expand Up @@ -118,11 +97,11 @@ export function generateAddress(network: utxolib.Network, params: GenerateFixedS

const addressType = params.addressType || convertFlagsToAddressType();

if (addressType !== utxolib.bitgo.scriptTypeForChain(derivationChain)) {
if (addressType !== bitgo.scriptTypeForChain(derivationChain)) {
throw new AddressTypeChainMismatchError(addressType, derivationChain);
}

if (!supportsAddressType(network, addressType)) {
if (!supportsAddressType(coinName, addressType)) {
switch (addressType) {
case 'p2sh':
throw new Error(`internal error: p2sh should always be supported`);
Expand All @@ -144,7 +123,7 @@ export function generateAddress(network: utxolib.Network, params: GenerateFixedS
}

return generateAddressWithChainAndIndex(
network,
coinName,
keychains.map((k) => k.pub) as Triple<string>,
derivationChain,
derivationIndex,
Expand All @@ -157,7 +136,7 @@ type Keychain = {
};

export function assertFixedScriptWalletAddress(
network: utxolib.Network,
coinName: UtxoCoinName,
{
chain,
index,
Expand All @@ -184,7 +163,7 @@ export function assertFixedScriptWalletAddress(
throw new Error('missing required param keychains');
}

const expectedAddress = generateAddress(network, {
const expectedAddress = generateAddress(coinName, {
format,
addressType: addressType as ScriptType2Of3,
keychains,
Expand Down
Loading
Loading