diff --git a/modules/sdk-coin-polyx/src/lib/transactionBuilderFactory.ts b/modules/sdk-coin-polyx/src/lib/transactionBuilderFactory.ts index 5cb2bb1241..d467ad4fd4 100644 --- a/modules/sdk-coin-polyx/src/lib/transactionBuilderFactory.ts +++ b/modules/sdk-coin-polyx/src/lib/transactionBuilderFactory.ts @@ -1,4 +1,4 @@ -import { BaseTransactionBuilderFactory, NotImplementedError } from '@bitgo/sdk-core'; +import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core'; import { BaseCoin as CoinConfig } from '@bitgo/statics'; import { decode } from '@substrate/txwrapper-polkadot'; import { TransferBuilder } from './transferBuilder'; @@ -67,8 +67,8 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory { return new WithdrawUnbondedBuilder(this._coinConfig).material(this._material); } - getWalletInitializationBuilder(): void { - throw new NotImplementedError(`walletInitialization for ${this._coinConfig.name} not implemented`); + getWalletInitializationBuilder(): RegisterDidWithCDDBuilder { + return this.getRegisterDidWithCDDBuilder(); } from(rawTxn: string): TransactionBuilder { diff --git a/modules/sdk-coin-polyx/src/polyx.ts b/modules/sdk-coin-polyx/src/polyx.ts index e0b5d40dad..8373a4f9dc 100644 --- a/modules/sdk-coin-polyx/src/polyx.ts +++ b/modules/sdk-coin-polyx/src/polyx.ts @@ -345,6 +345,14 @@ export class Polyx extends SubstrateCoin { return { transactions: broadcastableTransactions, lastScanIndex }; } + /** + * Polyx requires a wallet initialization transaction (RegisterDidWithCDD) + * to create an on-chain identity before the address can receive funds. + */ + requiresWalletInitializationTransaction(): boolean { + return true; + } + /** * Gets config for how token enablements work for this coin * @returns diff --git a/modules/sdk-coin-polyx/test/unit/polyx.ts b/modules/sdk-coin-polyx/test/unit/polyx.ts index a8a6c6f4d4..d2e9a9de1e 100644 --- a/modules/sdk-coin-polyx/test/unit/polyx.ts +++ b/modules/sdk-coin-polyx/test/unit/polyx.ts @@ -180,6 +180,20 @@ describe('Polyx:', function () { }); }); + describe('Address Creation Flow:', function () { + it('should require wallet initialization transaction', function () { + const mainCoin = bitgo.coin('polyx') as Polyx; + mainCoin.requiresWalletInitializationTransaction().should.equal(true); + baseCoin.requiresWalletInitializationTransaction().should.equal(true); + }); + + it('should return a RegisterDidWithCDDBuilder from getWalletInitializationBuilder', function () { + const { RegisterDidWithCDDBuilder } = require('../../src/lib'); + const builder = baseCoin.getBuilder().getWalletInitializationBuilder(); + builder.should.be.instanceOf(RegisterDidWithCDDBuilder); + }); + }); + describe('Token Enablement:', function () { it('should have correct token enablement config', function () { const config = baseCoin.getTokenEnablementConfig();