Skip to content

Commit 16608ed

Browse files
feng-bitgoclaude
andcommitted
feat(sdk-core): add coin implementations for new fiat currencies
TICKET: SC-6398 Add BaseCoin implementations for 14 new fiat currencies (main + testnet), register them in coinFactory, and export from sdk-core and bitgo modules: KRW, CAD, ZAR, AUD, CNY, TRY, ARS, CLP, COP, UYU, NOK, SEK, DKK, JPY Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent de13519 commit 16608ed

31 files changed

Lines changed: 1612 additions & 2 deletions

modules/bitgo/src/v2/coinFactory.ts

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,25 @@ import {
9292
MonToken,
9393
TethLikeCoin,
9494
FiatAED,
95+
FiatARS,
96+
FiatAUD,
97+
FiatCAD,
98+
FiatCLP,
99+
FiatCNY,
100+
FiatCOP,
101+
FiatDKK,
95102
FiatEur,
96103
FiatGBP,
97104
FiatINR,
105+
FiatJPY,
106+
FiatKRW,
107+
FiatNOK,
108+
FiatSEK,
98109
FiatSGD,
110+
FiatTRY,
99111
FiatUsd,
112+
FiatUYU,
113+
FiatZAR,
100114
Gteth,
101115
Hash,
102116
Hbar,
@@ -172,11 +186,25 @@ import {
172186
Tflr,
173187
Tmon,
174188
TfiatAED,
189+
TfiatARS,
190+
TfiatAUD,
191+
TfiatCAD,
192+
TfiatCLP,
193+
TfiatCNY,
194+
TfiatCOP,
195+
TfiatDKK,
175196
TfiatEur,
176197
TfiatGBP,
177198
TfiatINR,
199+
TfiatJPY,
200+
TfiatKRW,
201+
TfiatNOK,
202+
TfiatSEK,
178203
TfiatSGD,
204+
TfiatTRY,
179205
TfiatUsd,
206+
TfiatUYU,
207+
TfiatZAR,
180208
Thash,
181209
Thbar,
182210
Tia,
@@ -275,11 +303,25 @@ export function registerCoinConstructors(coinFactory: CoinFactory, coinMap: Coin
275303
coinFactory.register('tfantom', TethLikeCoin.createInstance);
276304
coinFactory.register('tbaseeth', TethLikeCoin.createInstance);
277305
coinFactory.register('fiataed', FiatAED.createInstance);
306+
coinFactory.register('fiatars', FiatARS.createInstance);
307+
coinFactory.register('fiataud', FiatAUD.createInstance);
308+
coinFactory.register('fiatcad', FiatCAD.createInstance);
309+
coinFactory.register('fiatclp', FiatCLP.createInstance);
310+
coinFactory.register('fiatcny', FiatCNY.createInstance);
311+
coinFactory.register('fiatcop', FiatCOP.createInstance);
312+
coinFactory.register('fiatdkk', FiatDKK.createInstance);
278313
coinFactory.register('fiateur', FiatEur.createInstance);
279314
coinFactory.register('fiatgbp', FiatGBP.createInstance);
280315
coinFactory.register('fiatinr', FiatINR.createInstance);
316+
coinFactory.register('fiatjpy', FiatJPY.createInstance);
317+
coinFactory.register('fiatkrw', FiatKRW.createInstance);
318+
coinFactory.register('fiatnok', FiatNOK.createInstance);
319+
coinFactory.register('fiatsek', FiatSEK.createInstance);
281320
coinFactory.register('fiatsgd', FiatSGD.createInstance);
321+
coinFactory.register('fiattry', FiatTRY.createInstance);
282322
coinFactory.register('fiatusd', FiatUsd.createInstance);
323+
coinFactory.register('fiatuyu', FiatUYU.createInstance);
324+
coinFactory.register('fiatzar', FiatZAR.createInstance);
283325
coinFactory.register('flr', Flr.createInstance);
284326
coinFactory.register('flrp', Flrp.createInstance);
285327
coinFactory.register('gteth', Gteth.createInstance);
@@ -347,11 +389,25 @@ export function registerCoinConstructors(coinFactory: CoinFactory, coinMap: Coin
347389
coinFactory.register('tetc', Tetc.createInstance);
348390
coinFactory.register('teth', Teth.createInstance);
349391
coinFactory.register('tfiataed', TfiatAED.createInstance);
392+
coinFactory.register('tfiatars', TfiatARS.createInstance);
393+
coinFactory.register('tfiataud', TfiatAUD.createInstance);
394+
coinFactory.register('tfiatcad', TfiatCAD.createInstance);
395+
coinFactory.register('tfiatclp', TfiatCLP.createInstance);
396+
coinFactory.register('tfiatcny', TfiatCNY.createInstance);
397+
coinFactory.register('tfiatcop', TfiatCOP.createInstance);
398+
coinFactory.register('tfiatdkk', TfiatDKK.createInstance);
350399
coinFactory.register('tfiateur', TfiatEur.createInstance);
351400
coinFactory.register('tfiatgbp', TfiatGBP.createInstance);
352401
coinFactory.register('tfiatinr', TfiatINR.createInstance);
402+
coinFactory.register('tfiatjpy', TfiatJPY.createInstance);
403+
coinFactory.register('tfiatkrw', TfiatKRW.createInstance);
404+
coinFactory.register('tfiatnok', TfiatNOK.createInstance);
405+
coinFactory.register('tfiatsek', TfiatSEK.createInstance);
353406
coinFactory.register('tfiatsgd', TfiatSGD.createInstance);
407+
coinFactory.register('tfiattry', TfiatTRY.createInstance);
354408
coinFactory.register('tfiatusd', TfiatUsd.createInstance);
409+
coinFactory.register('tfiatuyu', TfiatUYU.createInstance);
410+
coinFactory.register('tfiatzar', TfiatZAR.createInstance);
355411
coinFactory.register('tflr', Tflr.createInstance);
356412
coinFactory.register('tflrp', Flrp.createInstance);
357413
coinFactory.register('tmon', Tmon.createInstance);
@@ -695,16 +751,44 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine
695751
return TethLikeCoin.createInstance;
696752
case 'fiataed':
697753
return FiatAED.createInstance;
754+
case 'fiatars':
755+
return FiatARS.createInstance;
756+
case 'fiataud':
757+
return FiatAUD.createInstance;
758+
case 'fiatcad':
759+
return FiatCAD.createInstance;
760+
case 'fiatclp':
761+
return FiatCLP.createInstance;
762+
case 'fiatcny':
763+
return FiatCNY.createInstance;
764+
case 'fiatcop':
765+
return FiatCOP.createInstance;
766+
case 'fiatdkk':
767+
return FiatDKK.createInstance;
698768
case 'fiateur':
699769
return FiatEur.createInstance;
700770
case 'fiatgbp':
701771
return FiatGBP.createInstance;
702772
case 'fiatinr':
703773
return FiatINR.createInstance;
774+
case 'fiatjpy':
775+
return FiatJPY.createInstance;
776+
case 'fiatkrw':
777+
return FiatKRW.createInstance;
778+
case 'fiatnok':
779+
return FiatNOK.createInstance;
780+
case 'fiatsek':
781+
return FiatSEK.createInstance;
704782
case 'fiatsgd':
705783
return FiatSGD.createInstance;
784+
case 'fiattry':
785+
return FiatTRY.createInstance;
706786
case 'fiatusd':
707787
return FiatUsd.createInstance;
788+
case 'fiatuyu':
789+
return FiatUYU.createInstance;
790+
case 'fiatzar':
791+
return FiatZAR.createInstance;
708792
case 'flr':
709793
return Flr.createInstance;
710794
case 'flrp':
@@ -839,16 +923,44 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine
839923
return Teth.createInstance;
840924
case 'tfiataed':
841925
return TfiatAED.createInstance;
926+
case 'tfiatars':
927+
return TfiatARS.createInstance;
928+
case 'tfiataud':
929+
return TfiatAUD.createInstance;
930+
case 'tfiatcad':
931+
return TfiatCAD.createInstance;
932+
case 'tfiatclp':
933+
return TfiatCLP.createInstance;
934+
case 'tfiatcny':
935+
return TfiatCNY.createInstance;
936+
case 'tfiatcop':
937+
return TfiatCOP.createInstance;
938+
case 'tfiatdkk':
939+
return TfiatDKK.createInstance;
842940
case 'tfiateur':
843941
return TfiatEur.createInstance;
844942
case 'tfiatgbp':
845943
return TfiatGBP.createInstance;
846944
case 'tfiatinr':
847945
return TfiatINR.createInstance;
946+
case 'tfiatjpy':
947+
return TfiatJPY.createInstance;
948+
case 'tfiatkrw':
949+
return TfiatKRW.createInstance;
950+
case 'tfiatnok':
951+
return TfiatNOK.createInstance;
952+
case 'tfiatsek':
953+
return TfiatSEK.createInstance;
848954
case 'tfiatsgd':
849955
return TfiatSGD.createInstance;
956+
case 'tfiattry':
957+
return TfiatTRY.createInstance;
850958
case 'tfiatusd':
851959
return TfiatUsd.createInstance;
960+
case 'tfiatuyu':
961+
return TfiatUYU.createInstance;
962+
case 'tfiatzar':
963+
return TfiatZAR.createInstance;
852964
case 'tflr':
853965
return Tflr.createInstance;
854966
case 'tflrp':

modules/bitgo/src/v2/coins/index.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,29 +165,85 @@ const {
165165
FiatINR,
166166
FiatAED,
167167
FiatSGD,
168+
FiatARS,
169+
FiatAUD,
170+
FiatCAD,
171+
FiatCLP,
172+
FiatCNY,
173+
FiatCOP,
174+
FiatDKK,
175+
FiatJPY,
176+
FiatKRW,
177+
FiatNOK,
178+
FiatSEK,
179+
FiatTRY,
180+
FiatUYU,
181+
FiatZAR,
168182
Tsusd,
169183
TfiatUsd,
170184
TfiatEur,
171185
TfiatGBP,
172186
TfiatINR,
173187
TfiatAED,
174188
TfiatSGD,
189+
TfiatARS,
190+
TfiatAUD,
191+
TfiatCAD,
192+
TfiatCLP,
193+
TfiatCNY,
194+
TfiatCOP,
195+
TfiatDKK,
196+
TfiatJPY,
197+
TfiatKRW,
198+
TfiatNOK,
199+
TfiatSEK,
200+
TfiatTRY,
201+
TfiatUYU,
202+
TfiatZAR,
175203
} = coins;
176204
export {
177205
FiatAED,
206+
FiatARS,
207+
FiatAUD,
208+
FiatCAD,
209+
FiatCLP,
210+
FiatCNY,
211+
FiatCOP,
212+
FiatDKK,
178213
FiatEur,
179214
FiatGBP,
180215
FiatINR,
216+
FiatJPY,
217+
FiatKRW,
218+
FiatNOK,
219+
FiatSEK,
181220
FiatSGD,
221+
FiatTRY,
182222
FiatUsd,
223+
FiatUYU,
224+
FiatZAR,
183225
Ofc,
184226
OfcToken,
185227
Susd,
186228
TfiatAED,
229+
TfiatARS,
230+
TfiatAUD,
231+
TfiatCAD,
232+
TfiatCLP,
233+
TfiatCNY,
234+
TfiatCOP,
235+
TfiatDKK,
187236
TfiatEur,
188237
TfiatGBP,
189238
TfiatINR,
239+
TfiatJPY,
240+
TfiatKRW,
241+
TfiatNOK,
242+
TfiatSEK,
190243
TfiatSGD,
244+
TfiatTRY,
191245
TfiatUsd,
246+
TfiatUYU,
247+
TfiatZAR,
192248
Tsusd,
193249
};
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/**
2+
* @prettier
3+
*/
4+
import {
5+
AuditDecryptedKeyParams,
6+
BaseCoin,
7+
BitGoBase,
8+
KeyPair,
9+
MethodNotImplementedError,
10+
ParsedTransaction,
11+
ParseTransactionOptions,
12+
SignedTransaction,
13+
SignTransactionOptions,
14+
VerifyAddressOptions,
15+
VerifyTransactionOptions,
16+
} from '../';
17+
18+
export class FiatARS extends BaseCoin {
19+
static createInstance(bitgo: BitGoBase): BaseCoin {
20+
return new FiatARS(bitgo);
21+
}
22+
23+
/**
24+
* Returns the factor between the base unit and its smallest subdivison
25+
* @return {number}
26+
*/
27+
getBaseFactor() {
28+
return 1e2;
29+
}
30+
31+
getChain() {
32+
return 'fiatars';
33+
}
34+
35+
getFamily() {
36+
return 'fiat';
37+
}
38+
39+
getFullName() {
40+
return 'Argentine Peso';
41+
}
42+
43+
/**
44+
* Return whether the given m of n wallet signers/ key amounts are valid for the coin
45+
*/
46+
isValidMofNSetup({ m, n }: { m: number; n: number }) {
47+
return m === 0 && n === 0;
48+
}
49+
50+
isValidAddress(address: string): boolean {
51+
throw new MethodNotImplementedError();
52+
}
53+
54+
generateKeyPair(seed?: Buffer): KeyPair {
55+
throw new MethodNotImplementedError();
56+
}
57+
58+
isValidPub(pub: string): boolean {
59+
throw new MethodNotImplementedError();
60+
}
61+
62+
async parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction> {
63+
return {};
64+
}
65+
66+
async isWalletAddress(params: VerifyAddressOptions): Promise<boolean> {
67+
throw new MethodNotImplementedError();
68+
}
69+
70+
async verifyTransaction(params: VerifyTransactionOptions): Promise<boolean> {
71+
return true;
72+
}
73+
74+
async signTransaction(params: SignTransactionOptions = {}): Promise<SignedTransaction> {
75+
throw new MethodNotImplementedError();
76+
}
77+
78+
/** @inheritDoc */
79+
auditDecryptedKey(params: AuditDecryptedKeyParams): void {
80+
throw new MethodNotImplementedError();
81+
}
82+
}

0 commit comments

Comments
 (0)