Skip to content

Commit 2fddcef

Browse files
authored
Merge pull request #9139 from BitGo/feat/CECHO-1471-v8-metadata-builders
feat(sdk-coin-polyx): add v8 metadata and base V8 builders
2 parents b8bfe00 + 4c98eee commit 2fddcef

19 files changed

Lines changed: 521 additions & 2 deletions

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ export { NominateBuilder } from './nominateBuilder';
2424
export { BatchUnstakingBuilder } from './batchUnstakingBuilder';
2525
export { UnbondBuilder } from './unbondBuilder';
2626
export { WithdrawUnbondedBuilder } from './withdrawUnbondedBuilder';
27+
export { V8TransferBuilder } from './v8TransferBuilder';
28+
export { V8HexTransferBuilder } from './v8HexTransferBuilder';
29+
export { V8RegisterDidWithCDDBuilder } from './v8RegisterDidWithCDDBuilder';
30+
export { V8TokenTransferBuilder } from './v8TokenTransferBuilder';
31+
export { V8HexTokenTransferBuilder } from './v8HexTokenTransferBuilder';
32+
export { V8PreApproveAssetBuilder } from './v8PreApproveAssetBuilder';
2733
import polyxUtils from './utils';
2834
export { Utils, default as utils } from './utils';
2935
export * from './iface';

modules/sdk-coin-polyx/src/lib/preApproveAssetBuilder.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ export class PreApproveAssetBuilder extends PolyxBaseBuilder<TxMethod, Transacti
7474
* @returns {UnsignedTransaction} an unsigned transaction for asset pre-approval
7575
*/
7676
private preApproveAsset(args: PreApproveAssetArgs, info: Interface.CreateBaseTxInfo): UnsignedTransaction {
77-
console.log(`PreApproveAssetBuilder: preApproveAsset called with args: ${JSON.stringify(args)}`);
7877
return defineMethod(
7978
{
8079
method: {

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ import { TokenTransferBuilder } from './tokenTransferBuilder';
1919
import { HexTokenTransferBuilder } from './hexTokenTransferBuilder';
2020
import { RejectInstructionBuilder } from './rejectInstructionBuilder';
2121
import { NominateBuilder } from './nominateBuilder';
22+
import { V8TransferBuilder } from './v8TransferBuilder';
23+
import { V8HexTransferBuilder } from './v8HexTransferBuilder';
24+
import { V8RegisterDidWithCDDBuilder } from './v8RegisterDidWithCDDBuilder';
25+
import { V8TokenTransferBuilder } from './v8TokenTransferBuilder';
26+
import { V8HexTokenTransferBuilder } from './v8HexTokenTransferBuilder';
27+
import { V8PreApproveAssetBuilder } from './v8PreApproveAssetBuilder';
2228

2329
export type SupportedTransaction = BaseTransaction | PolyxTransaction;
2430

@@ -82,6 +88,30 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
8288
return new NominateBuilder(this._coinConfig).material(this._material);
8389
}
8490

91+
getV8TransferBuilder(): V8TransferBuilder {
92+
return new V8TransferBuilder(this._coinConfig);
93+
}
94+
95+
getV8HexTransferBuilder(): V8HexTransferBuilder {
96+
return new V8HexTransferBuilder(this._coinConfig);
97+
}
98+
99+
getV8RegisterDidWithCDDBuilder(): V8RegisterDidWithCDDBuilder {
100+
return new V8RegisterDidWithCDDBuilder(this._coinConfig);
101+
}
102+
103+
getV8TokenTransferBuilder(): V8TokenTransferBuilder {
104+
return new V8TokenTransferBuilder(this._coinConfig);
105+
}
106+
107+
getV8HexTokenTransferBuilder(): V8HexTokenTransferBuilder {
108+
return new V8HexTokenTransferBuilder(this._coinConfig);
109+
}
110+
111+
getV8PreApproveAssetBuilder(): V8PreApproveAssetBuilder {
112+
return new V8PreApproveAssetBuilder(this._coinConfig);
113+
}
114+
85115
getWalletInitializationBuilder(): void {
86116
throw new NotImplementedError(`walletInitialization for ${this._coinConfig.name} not implemented`);
87117
}

modules/sdk-coin-polyx/src/lib/utils.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Utils as SubstrateUtils, Interface } from '@bitgo/abstract-substrate';
22
import { NetworkType } from '@bitgo/statics';
33
import { TypeRegistry } from '@substrate/txwrapper-core/lib/types';
4-
import { mainnetMaterial, testnetMaterial } from '../resources';
4+
import { mainnetMaterial, testnetMaterial, mainnetV8Material, testnetV8Material } from '../resources';
55
import { BatchCallObject } from './iface';
66
import { MEMO_HEX_REGEX, MEMO_MAX_BYTES, POLYX_DID_REGEX } from './constants';
77

@@ -77,6 +77,12 @@ export class Utils extends SubstrateUtils {
7777
return (networkType === NetworkType.MAINNET ? mainnetMaterial : testnetMaterial) as unknown as Interface.Material;
7878
}
7979

80+
getV8Material(networkType: NetworkType): Interface.Material {
81+
return (networkType === NetworkType.MAINNET
82+
? mainnetV8Material
83+
: testnetV8Material) as unknown as Interface.Material;
84+
}
85+
8086
decodeMethodName(call: BatchCallObject, registry: TypeRegistry): string {
8187
// Handle both callIndex and method formats
8288
const callWithIndex = call as BatchCallObject & { callIndex?: string };
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { HexTokenTransferBuilder } from './hexTokenTransferBuilder';
3+
import utils from './utils';
4+
5+
/**
6+
* Builds a Polymesh settlement.addAndAffirmWithMediators transaction using
7+
* the hex (NEW) memo encoding against Polymesh v8 chain metadata. Identical
8+
* behaviour to HexTokenTransferBuilder; only the material differs.
9+
*/
10+
export class V8HexTokenTransferBuilder extends HexTokenTransferBuilder {
11+
constructor(_coinConfig: Readonly<CoinConfig>) {
12+
super(_coinConfig);
13+
this.material(utils.getV8Material(_coinConfig.network.type));
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { HexTransferBuilder } from './hexTransferBuilder';
3+
import utils from './utils';
4+
5+
/**
6+
* Builds a POLYX balances.transferWithMemo transaction using the hex
7+
* (NEW) memo encoding against Polymesh v8 chain metadata. Identical
8+
* behaviour to HexTransferBuilder; only the material differs.
9+
*/
10+
export class V8HexTransferBuilder extends HexTransferBuilder {
11+
constructor(_coinConfig: Readonly<CoinConfig>) {
12+
super(_coinConfig);
13+
this.material(utils.getV8Material(_coinConfig.network.type));
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { PreApproveAssetBuilder } from './preApproveAssetBuilder';
3+
import utils from './utils';
4+
5+
/**
6+
* Builds a Polymesh asset.preApproveAsset transaction against Polymesh v8
7+
* chain metadata. Identical behaviour to PreApproveAssetBuilder; only the
8+
* material differs.
9+
*/
10+
export class V8PreApproveAssetBuilder extends PreApproveAssetBuilder {
11+
constructor(_coinConfig: Readonly<CoinConfig>) {
12+
super(_coinConfig);
13+
this.material(utils.getV8Material(_coinConfig.network.type));
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { RegisterDidWithCDDBuilder } from './registerDidWithCDDBuilder';
3+
import utils from './utils';
4+
5+
/**
6+
* Builds a Polymesh identity.cddRegisterDidWithCdd transaction against
7+
* Polymesh v8 chain metadata. Identical behaviour to
8+
* RegisterDidWithCDDBuilder; only the material differs.
9+
*/
10+
export class V8RegisterDidWithCDDBuilder extends RegisterDidWithCDDBuilder {
11+
constructor(_coinConfig: Readonly<CoinConfig>) {
12+
super(_coinConfig);
13+
this.material(utils.getV8Material(_coinConfig.network.type));
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { TokenTransferBuilder } from './tokenTransferBuilder';
3+
import utils from './utils';
4+
5+
/**
6+
* Builds a Polymesh settlement.addAndAffirmWithMediators transaction against
7+
* Polymesh v8 chain metadata. Identical behaviour to TokenTransferBuilder;
8+
* only the material differs.
9+
*/
10+
export class V8TokenTransferBuilder extends TokenTransferBuilder {
11+
constructor(_coinConfig: Readonly<CoinConfig>) {
12+
super(_coinConfig);
13+
this.material(utils.getV8Material(_coinConfig.network.type));
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { TransferBuilder } from './transferBuilder';
3+
import utils from './utils';
4+
5+
/**
6+
* Builds a POLYX balances.transferWithMemo transaction against Polymesh v8
7+
* chain metadata. Identical behaviour to TransferBuilder; only the material
8+
* (specVersion / txVersion) differs.
9+
*/
10+
export class V8TransferBuilder extends TransferBuilder {
11+
constructor(_coinConfig: Readonly<CoinConfig>) {
12+
super(_coinConfig);
13+
this.material(utils.getV8Material(_coinConfig.network.type));
14+
}
15+
}

0 commit comments

Comments
 (0)