Skip to content

Commit d5af5c8

Browse files
committed
feat(sdk-core): add simple message builder for sol
TICKET: COIN-4737
1 parent e6814dc commit d5af5c8

File tree

15 files changed

+116
-102
lines changed

15 files changed

+116
-102
lines changed

modules/abstract-eth/src/lib/messages/eip191/eip191MessageBuilder.ts

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import { EIP191Message } from './eip191Message';
22
import { BaseCoin as CoinConfig } from '@bitgo/statics';
3-
import {
4-
BaseMessageBuilder,
5-
BroadcastableMessage,
6-
deserializeSignatures,
7-
IMessage,
8-
MessageStandardType,
9-
} from '@bitgo/sdk-core';
3+
import { BaseMessageBuilder, IMessage, MessageStandardType } from '@bitgo/sdk-core';
104

115
/**
126
* Builder for EIP-191 messages
@@ -47,26 +41,4 @@ export class Eip191MessageBuilder extends BaseMessageBuilder {
4741
throw new Error('Failed to build EIP-191 message');
4842
}
4943
}
50-
51-
/**
52-
* Parse a broadcastable message back into a message
53-
* @param broadcastMessage The broadcastable message to parse
54-
* @returns The parsed message
55-
*/
56-
public async fromBroadcastFormat(broadcastMessage: BroadcastableMessage): Promise<IMessage> {
57-
const { type, payload, serializedSignatures, signers, metadata } = broadcastMessage;
58-
if (type !== MessageStandardType.EIP191) {
59-
throw new Error(`Invalid message type, expected ${MessageStandardType.EIP191}`);
60-
}
61-
return new EIP191Message({
62-
coinConfig: this.coinConfig,
63-
payload,
64-
signatures: deserializeSignatures(serializedSignatures),
65-
signers,
66-
metadata: {
67-
...metadata,
68-
encoding: 'utf8',
69-
},
70-
});
71-
}
7244
}

modules/sdk-coin-ada/src/lib/messages/cip8/cip8MessageBuilder.ts

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import { Cip8Message } from './cip8Message';
22
import { BaseCoin as CoinConfig } from '@bitgo/statics';
3-
import {
4-
BaseMessageBuilder,
5-
BroadcastableMessage,
6-
deserializeSignatures,
7-
IMessage,
8-
MessageStandardType,
9-
} from '@bitgo/sdk-core';
3+
import { BaseMessageBuilder, IMessage, MessageStandardType } from '@bitgo/sdk-core';
104

115
/**
126
* Builder for CIP-8 messages
@@ -47,26 +41,4 @@ export class Cip8MessageBuilder extends BaseMessageBuilder {
4741
throw new Error('Failed to build CIP-8 message');
4842
}
4943
}
50-
51-
/**
52-
* Parse a broadcastable message back into a message
53-
* @param broadcastMessage The broadcastable message to parse
54-
* @returns The parsed message
55-
*/
56-
public async fromBroadcastFormat(broadcastMessage: BroadcastableMessage): Promise<IMessage> {
57-
const { type, payload, serializedSignatures, signers, metadata } = broadcastMessage;
58-
if (type !== MessageStandardType.CIP8) {
59-
throw new Error(`Invalid message type, expected ${MessageStandardType.CIP8}`);
60-
}
61-
return new Cip8Message({
62-
coinConfig: this.coinConfig,
63-
payload,
64-
signatures: deserializeSignatures(serializedSignatures),
65-
signers,
66-
metadata: {
67-
...metadata,
68-
encoding: 'utf8',
69-
},
70-
});
71-
}
7244
}

modules/sdk-coin-ada/test/unit/messages/cip8/index.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

modules/sdk-coin-ada/test/unit/messages/cip8/messageBuilderFactory.ts

Lines changed: 0 additions & 36 deletions
This file was deleted.

modules/sdk-coin-ada/test/unit/messages/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ export { TransferBuilder } from './transferBuilder';
1818
export { TransferBuilderV2 } from './transferBuilderV2';
1919
export { WalletInitializationBuilder } from './walletInitializationBuilder';
2020
export { Interface, Utils };
21+
export { MessageBuilderFactory } from './messages';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './messageBuilderFactory';
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
2+
import { BaseMessageBuilderFactory, IMessageBuilder, MessageStandardType, SimpleMessageBuilder } from '@bitgo/sdk-core';
3+
4+
export class MessageBuilderFactory extends BaseMessageBuilderFactory {
5+
constructor(coinConfig: Readonly<CoinConfig>) {
6+
super(coinConfig);
7+
}
8+
9+
public getMessageBuilder(type: MessageStandardType): IMessageBuilder {
10+
switch (type) {
11+
case MessageStandardType.SIMPLE:
12+
return new SimpleMessageBuilder(this.coinConfig);
13+
default:
14+
throw new Error(`Invalid message standard ${type}`);
15+
}
16+
}
17+
}

modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilder.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { BroadcastableMessage, MessagePayload, MessageStandardType } from '../../../bitgo';
22
import { BaseCoin as CoinConfig } from '@bitgo/statics';
33
import { IMessage, IMessageBuilder } from './iface';
4-
import { Signature } from '../iface';
4+
import { deserializeSignatures, Signature } from '../iface';
55

66
/**
77
* Base Message Builder
@@ -130,5 +130,18 @@ export abstract class BaseMessageBuilder implements IMessageBuilder {
130130
* @param broadcastMessage The broadcastable message to parse
131131
* @returns The parsed message
132132
*/
133-
abstract fromBroadcastFormat(broadcastMessage: BroadcastableMessage): Promise<IMessage>;
133+
public async fromBroadcastFormat(broadcastMessage: BroadcastableMessage): Promise<IMessage> {
134+
const { type, payload, serializedSignatures, signers, metadata } = broadcastMessage;
135+
if (type !== this.type) {
136+
throw new Error(`Invalid message type, expected ${this.type}`);
137+
}
138+
this.payload = payload;
139+
this.signatures = deserializeSignatures(serializedSignatures);
140+
this.signers = signers;
141+
this.metadata = {
142+
...metadata,
143+
encoding: 'utf8',
144+
};
145+
return this.build();
146+
}
134147
}

modules/sdk-core/src/account-lib/baseCoin/messages/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export * from './baseMessage';
22
export * from './baseMessageBuilder';
33
export * from './baseMessageBuilderFactory';
44
export * from './iface';
5+
export * from './simple';

0 commit comments

Comments
 (0)