Skip to content

Commit 5901f04

Browse files
committed
add stablecoin issuance template
1 parent 1e08e95 commit 5901f04

File tree

13 files changed

+209
-36
lines changed

13 files changed

+209
-36
lines changed

packages/core/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { Token } from './issuance';

packages/core/src/issuance/index.ts

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ import {
2525
export class Token {
2626
private extensions: Extension[] = [];
2727

28-
getExtensions(): Extension[] {
29-
return this.extensions;
30-
}
31-
3228
withMetadata({
3329
mintAddress,
3430
authority,
@@ -124,19 +120,15 @@ export class Token {
124120

125121
// TODO: Add other post-initialize instructions as needed like for transfer hooks
126122
const postInitializeInstructions = this.extensions.flatMap(ext =>
127-
ext.__kind === 'TokenMetadata'
128-
? [
129-
getInitializeTokenMetadataInstruction({
130-
metadata: mint.address,
131-
mint: mint.address,
132-
mintAuthority: feePayer,
133-
name: ext.name,
134-
symbol: ext.symbol,
135-
uri: ext.uri,
136-
updateAuthority: authority,
137-
}),
138-
]
139-
: []
123+
ext.__kind === 'TokenMetadata' ? [getInitializeTokenMetadataInstruction({
124+
metadata: mint.address,
125+
mint: mint.address,
126+
mintAuthority: feePayer,
127+
name: ext.name,
128+
symbol: ext.symbol,
129+
uri: ext.uri,
130+
updateAuthority: authority,
131+
})] : []
140132
);
141133

142134
return [
@@ -159,9 +151,7 @@ export class Token {
159151
authority: Address;
160152
mint: TransactionSigner<string>;
161153
feePayer: TransactionSigner<string>;
162-
}): Promise<
163-
FullTransaction<TransactionVersion, TransactionMessageWithFeePayer>
164-
> {
154+
}): Promise<FullTransaction<TransactionVersion, TransactionMessageWithFeePayer>> {
165155
const instructions = await this.buildInstructions({
166156
rpc,
167157
decimals,
@@ -211,9 +201,7 @@ export const getCreateMintInstructions = async (input: {
211201

212202
// Get minimum rent-exempt balance
213203
const rent = await input.rpc
214-
.getMinimumBalanceForRentExemption(
215-
BigInt(spaceWithoutPostInitializeExtensions)
216-
)
204+
.getMinimumBalanceForRentExemption(BigInt(space))
217205
.send();
218206

219207
// Return create account and initialize mint instructions

packages/core/tsconfig.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4-
"outDir": "./dist",
5-
"rootDir": "./src"
4+
"outDir": "./dist"
65
},
76
"include": ["src/**/*"],
87
"exclude": ["node_modules", "dist"],

packages/sdk/jest.config.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/** @type {import('jest').Config} */
2+
export default {
3+
preset: 'ts-jest/presets/default-esm',
4+
extensionsToTreatAsEsm: ['.ts'],
5+
testEnvironment: 'node',
6+
roots: ['<rootDir>/src'],
7+
testMatch: ['**/__tests__/**/*.test.ts', '**/?(*.)+(spec|test).ts'],
8+
transform: {
9+
'^.+\\.ts$': [
10+
'ts-jest',
11+
{
12+
useESM: true,
13+
},
14+
],
15+
},
16+
collectCoverageFrom: [
17+
'src/**/*.ts',
18+
'!src/**/*.d.ts',
19+
'!src/**/__tests__/**/*.test.ts',
20+
'!src/**/*.test.ts',
21+
'!src/**/__tests__/setup.ts',
22+
'!src/**/__tests__/test-utils.ts',
23+
],
24+
moduleNameMapper: {
25+
'^@/(.*)$': '<rootDir>/src/$1',
26+
},
27+
moduleFileExtensions: ['ts', 'js', 'json'],
28+
setupFilesAfterEnv: ['<rootDir>/src/__tests__/setup.ts'],
29+
};

packages/sdk/package.json

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{
2+
"name": "@mosaic/sdk",
3+
"version": "0.1.0",
4+
"description": "SDK for Mosaic with helper functions for issuance and management of any token",
5+
"type": "module",
6+
"main": "./dist/index.js",
7+
"types": "./dist/index.d.ts",
8+
"exports": {
9+
".": {
10+
"types": "./dist/index.d.ts",
11+
"import": "./dist/index.js"
12+
}
13+
},
14+
"files": [
15+
"dist"
16+
],
17+
"scripts": {
18+
"build": "echo 'Build will be implemented'",
19+
"dev": "echo 'Dev will be implemented'",
20+
"test": "jest",
21+
"test:watch": "jest --watch",
22+
"test:coverage": "jest --coverage",
23+
"lint": "eslint src --ext .ts",
24+
"lint:fix": "eslint src --ext .ts --fix",
25+
"type-check": "tsc --noEmit",
26+
"clean": "rm -rf dist"
27+
},
28+
"dependencies": {
29+
"@mosaic/core": "workspace:*",
30+
"gill": "^0.10.2"
31+
},
32+
"devDependencies": {
33+
"@types/jest": "^29.5.0",
34+
"@typescript-eslint/eslint-plugin": "^8.34.0",
35+
"@typescript-eslint/parser": "^8.34.0",
36+
"eslint": "^8.0.0",
37+
"jest": "^29.5.0",
38+
"ts-jest": "^29.1.0"
39+
},
40+
"peerDependencies": {
41+
"typescript": "^5.0.0"
42+
},
43+
"keywords": [
44+
"solana",
45+
"token-2022",
46+
"extensions",
47+
"core",
48+
"hooks"
49+
]
50+
}

packages/sdk/src/factories/.gitkeep

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

packages/sdk/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './issuanceTemplates';
File renamed without changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './stablecoin';

0 commit comments

Comments
 (0)