Skip to content

Commit a3a35e9

Browse files
committed
feat: Add MPToken API support for dApps
- Add authorizeMPToken API function for token authorization - Add createMPTokenIssuance API function to create token issuances - Add destroyMPTokenIssuance API function to destroy issuances - Add setMPTokenIssuance API function to lock/unlock holder tokens Added types: - AuthorizeMPTokenRequest/Response - CreateMPTokenIssuanceRequest/Response - DestroyMPTokenIssuanceRequest/Response - SetMPTokenIssuanceRequest/Response Message types updated for all MPToken operations.
1 parent fe27ea9 commit a3a35e9

File tree

11 files changed

+401
-4
lines changed

11 files changed

+401
-4
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import {
2+
AuthorizeMPTokenRequest,
3+
AuthorizeMPTokenResponse,
4+
GEM_WALLET,
5+
RequestAuthorizeMPTokenMessage,
6+
ResponseType
7+
} from '@gemwallet/constants';
8+
9+
import { deserializeError } from '../helpers/errors';
10+
import { sendMessageToContentScript } from '../helpers/extensionMessaging';
11+
12+
export const authorizeMPToken = async (
13+
payload: AuthorizeMPTokenRequest
14+
): Promise<AuthorizeMPTokenResponse> => {
15+
/* response:
16+
* if the transaction succeeds:
17+
* - type: 'response'
18+
* - result:
19+
* - hash: hash of the transaction
20+
*
21+
* if the user rejects the transaction:
22+
* - type: 'reject'
23+
* - result: undefined
24+
*
25+
* if the transaction fails:
26+
* - throw an error
27+
*/
28+
let response: AuthorizeMPTokenResponse = {
29+
type: ResponseType.Reject,
30+
result: undefined
31+
};
32+
33+
try {
34+
const message: RequestAuthorizeMPTokenMessage = {
35+
app: GEM_WALLET,
36+
type: 'REQUEST_AUTHORIZE_MPTOKEN/V3',
37+
payload
38+
};
39+
const { result, error } = await sendMessageToContentScript(message);
40+
const parsedError = error ? deserializeError(error) : undefined;
41+
if (parsedError) {
42+
throw parsedError;
43+
}
44+
45+
if (result) {
46+
response.type = ResponseType.Response;
47+
response.result = result;
48+
}
49+
} catch (e) {
50+
throw e;
51+
}
52+
return response;
53+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './authorizeMPToken';
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import {
2+
CreateMPTokenIssuanceRequest,
3+
CreateMPTokenIssuanceResponse,
4+
GEM_WALLET,
5+
RequestCreateMPTokenIssuanceMessage,
6+
ResponseType
7+
} from '@gemwallet/constants';
8+
9+
import { deserializeError } from '../helpers/errors';
10+
import { sendMessageToContentScript } from '../helpers/extensionMessaging';
11+
12+
export const createMPTokenIssuance = async (
13+
payload: CreateMPTokenIssuanceRequest
14+
): Promise<CreateMPTokenIssuanceResponse> => {
15+
/* response:
16+
* if the transaction succeeds:
17+
* - type: 'response'
18+
* - result:
19+
* - hash: hash of the transaction
20+
*
21+
* if the user rejects the transaction:
22+
* - type: 'reject'
23+
* - result: undefined
24+
*
25+
* if the transaction fails:
26+
* - throw an error
27+
*/
28+
let response: CreateMPTokenIssuanceResponse = {
29+
type: ResponseType.Reject,
30+
result: undefined
31+
};
32+
33+
try {
34+
const message: RequestCreateMPTokenIssuanceMessage = {
35+
app: GEM_WALLET,
36+
type: 'REQUEST_CREATE_MPTOKEN_ISSUANCE/V3',
37+
payload
38+
};
39+
const { result, error } = await sendMessageToContentScript(message);
40+
const parsedError = error ? deserializeError(error) : undefined;
41+
if (parsedError) {
42+
throw parsedError;
43+
}
44+
45+
if (result) {
46+
response.type = ResponseType.Response;
47+
response.result = result;
48+
}
49+
} catch (e) {
50+
throw e;
51+
}
52+
return response;
53+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './createMPTokenIssuance';
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import {
2+
DestroyMPTokenIssuanceRequest,
3+
DestroyMPTokenIssuanceResponse,
4+
GEM_WALLET,
5+
RequestDestroyMPTokenIssuanceMessage,
6+
ResponseType
7+
} from '@gemwallet/constants';
8+
9+
import { deserializeError } from '../helpers/errors';
10+
import { sendMessageToContentScript } from '../helpers/extensionMessaging';
11+
12+
export const destroyMPTokenIssuance = async (
13+
payload: DestroyMPTokenIssuanceRequest
14+
): Promise<DestroyMPTokenIssuanceResponse> => {
15+
/* response:
16+
* if the transaction succeeds:
17+
* - type: 'response'
18+
* - result:
19+
* - hash: hash of the transaction
20+
*
21+
* if the user rejects the transaction:
22+
* - type: 'reject'
23+
* - result: undefined
24+
*
25+
* if the transaction fails:
26+
* - throw an error
27+
*/
28+
let response: DestroyMPTokenIssuanceResponse = {
29+
type: ResponseType.Reject,
30+
result: undefined
31+
};
32+
33+
try {
34+
const message: RequestDestroyMPTokenIssuanceMessage = {
35+
app: GEM_WALLET,
36+
type: 'REQUEST_DESTROY_MPTOKEN_ISSUANCE/V3',
37+
payload
38+
};
39+
const { result, error } = await sendMessageToContentScript(message);
40+
const parsedError = error ? deserializeError(error) : undefined;
41+
if (parsedError) {
42+
throw parsedError;
43+
}
44+
45+
if (result) {
46+
response.type = ResponseType.Response;
47+
response.result = result;
48+
}
49+
} catch (e) {
50+
throw e;
51+
}
52+
return response;
53+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './destroyMPTokenIssuance';

packages/api/src/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
export * from './acceptNFTOffer';
2+
export * from './authorizeMPToken';
23
export * from './burnNFT';
34
export * from './cancelNFTOffer';
45
export * from './cancelOffer';
6+
export * from './createMPTokenIssuance';
57
export * from './createNFTOffer';
68
export * from './createOffer';
9+
export * from './destroyMPTokenIssuance';
710
export * from './on';
811
export * from './getAddress';
912
export * from './getNetwork';
@@ -14,6 +17,7 @@ export * from './mintNFT';
1417
export * from './sendPayment';
1518
export * from './setAccount';
1619
export * from './setHook';
20+
export * from './setMPTokenIssuance';
1721
export * from './setRegularKey';
1822
export * from './setTrustline';
1923
export * from './signMessage';
@@ -36,17 +40,21 @@ export type {
3640
// API request types
3741
export type {
3842
AcceptNFTOfferRequest,
43+
AuthorizeMPTokenRequest,
3944
BurnNFTRequest,
4045
CancelNFTOfferRequest,
4146
CancelOfferRequest,
47+
CreateMPTokenIssuanceRequest,
4248
CreateNFTOfferRequest,
4349
CreateOfferRequest,
50+
DestroyMPTokenIssuanceRequest,
4451
GetNetworkRequest,
4552
GetNFTRequest,
4653
MintNFTRequest,
4754
SendPaymentRequest,
4855
SetAccountRequest,
4956
SetHookRequest,
57+
SetMPTokenIssuanceRequest,
5058
SetRegularKeyRequest,
5159
SetTrustlineRequest,
5260
SignMessageRequest,
@@ -58,11 +66,14 @@ export type {
5866
// API response types
5967
export type {
6068
AcceptNFTOfferResponse,
69+
AuthorizeMPTokenResponse,
6170
BurnNFTResponse,
6271
CancelNFTOfferResponse,
6372
CancelOfferResponse,
73+
CreateMPTokenIssuanceResponse,
6474
CreateNFTOfferResponse,
6575
CreateOfferResponse,
76+
DestroyMPTokenIssuanceResponse,
6677
GetAddressResponse,
6778
GetNetworkResponse,
6879
GetNFTResponse,
@@ -72,6 +83,7 @@ export type {
7283
SendPaymentResponse,
7384
SetAccountResponse,
7485
SetHookResponse,
86+
SetMPTokenIssuanceResponse,
7587
SetRegularKeyResponse,
7688
SetTrustlineResponse,
7789
SignMessageResponse,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './setMPTokenIssuance';
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import {
2+
GEM_WALLET,
3+
RequestSetMPTokenIssuanceMessage,
4+
ResponseType,
5+
SetMPTokenIssuanceRequest,
6+
SetMPTokenIssuanceResponse
7+
} from '@gemwallet/constants';
8+
9+
import { deserializeError } from '../helpers/errors';
10+
import { sendMessageToContentScript } from '../helpers/extensionMessaging';
11+
12+
export const setMPTokenIssuance = async (
13+
payload: SetMPTokenIssuanceRequest
14+
): Promise<SetMPTokenIssuanceResponse> => {
15+
/* response:
16+
* if the transaction succeeds:
17+
* - type: 'response'
18+
* - result:
19+
* - hash: hash of the transaction
20+
*
21+
* if the user rejects the transaction:
22+
* - type: 'reject'
23+
* - result: undefined
24+
*
25+
* if the transaction fails:
26+
* - throw an error
27+
*/
28+
let response: SetMPTokenIssuanceResponse = {
29+
type: ResponseType.Reject,
30+
result: undefined
31+
};
32+
33+
try {
34+
const message: RequestSetMPTokenIssuanceMessage = {
35+
app: GEM_WALLET,
36+
type: 'REQUEST_SET_MPTOKEN_ISSUANCE/V3',
37+
payload
38+
};
39+
const { result, error } = await sendMessageToContentScript(message);
40+
const parsedError = error ? deserializeError(error) : undefined;
41+
if (parsedError) {
42+
throw parsedError;
43+
}
44+
45+
if (result) {
46+
response.type = ResponseType.Response;
47+
response.result = result;
48+
}
49+
} catch (e) {
50+
throw e;
51+
}
52+
return response;
53+
};

0 commit comments

Comments
 (0)