Skip to content

Commit c9c05e4

Browse files
authored
Merge pull request #7272 from BitGo/COIN-6100
feat(sdk-coin-canton): added from implementation to the builder factory
2 parents 5052b89 + 52a286b commit c9c05e4

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

modules/sdk-coin-canton/src/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export { KeyPair } from './keyPair';
55
export { Transaction } from './transaction/transaction';
66
export { TransactionBuilder } from './transactionBuilder';
77
export { TransactionBuilderFactory } from './transactionBuilderFactory';
8+
export { WalletInitBuilder } from './walletInitBuilder';
89
export { WalletInitTransaction } from './walletInitialization/walletInitTransaction';
910

1011
export { Utils, Interface };

modules/sdk-coin-canton/src/lib/transactionBuilderFactory.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,39 @@
1-
import { BaseTransaction, BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
1+
import {
2+
BaseTransaction,
3+
BaseTransactionBuilderFactory,
4+
InvalidTransactionError,
5+
TransactionType,
6+
} from '@bitgo/sdk-core';
7+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
28
import { TransactionBuilder } from './transactionBuilder';
39
import { TransferBuilder } from './transferBuilder';
10+
import { Transaction } from './transaction/transaction';
411
import { WalletInitBuilder } from './walletInitBuilder';
512
import { WalletInitTransaction } from './walletInitialization/walletInitTransaction';
613

714
export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
15+
constructor(_coinConfig: Readonly<CoinConfig>) {
16+
super(_coinConfig);
17+
}
818
/** @inheritdoc */
9-
from(raw: string): TransactionBuilder {
10-
throw new Error('Method not implemented.');
19+
from(raw: string): TransactionBuilder | WalletInitBuilder {
20+
try {
21+
const tx = new WalletInitTransaction(this._coinConfig);
22+
tx.fromRawTransaction(raw);
23+
return this.getWalletInitializationBuilder(tx);
24+
} catch {
25+
const tx = new Transaction(this._coinConfig);
26+
tx.fromRawTransaction(raw);
27+
if (tx.type === TransactionType.Send) {
28+
return this.getTransferBuilder(tx);
29+
}
30+
throw new InvalidTransactionError('unsupported transaction');
31+
}
1132
}
1233

1334
/** @inheritdoc */
14-
getTransferBuilder(): TransferBuilder {
15-
throw new Error('Method not implemented.');
35+
getTransferBuilder(tx?: Transaction): TransferBuilder {
36+
return TransactionBuilderFactory.initializeBuilder(tx, new TransferBuilder(this._coinConfig));
1637
}
1738

1839
/** @inheritdoc */

0 commit comments

Comments
 (0)