@fuul/sdk-solana 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +145 -0
  2. package/dist/cjs/accounts.js +84 -0
  3. package/dist/cjs/accounts.js.map +1 -0
  4. package/dist/cjs/common/contract.js +68 -0
  5. package/dist/cjs/common/contract.js.map +1 -0
  6. package/dist/cjs/common/errors.js +11 -0
  7. package/dist/cjs/common/errors.js.map +1 -0
  8. package/dist/cjs/common/index.js +20 -0
  9. package/dist/cjs/common/index.js.map +1 -0
  10. package/dist/cjs/common/messages.js +122 -0
  11. package/dist/cjs/common/messages.js.map +1 -0
  12. package/dist/cjs/constants.js +20 -0
  13. package/dist/cjs/constants.js.map +1 -0
  14. package/dist/cjs/idls/fuul.js +3 -0
  15. package/dist/cjs/idls/fuul.js.map +1 -0
  16. package/dist/cjs/idls/fuul.json +4714 -0
  17. package/dist/cjs/index.js +23 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/instructions/admin-roles.js +39 -0
  20. package/dist/cjs/instructions/admin-roles.js.map +1 -0
  21. package/dist/cjs/instructions/admin-token-management.js +39 -0
  22. package/dist/cjs/instructions/admin-token-management.js.map +1 -0
  23. package/dist/cjs/instructions/admin.js +65 -0
  24. package/dist/cjs/instructions/admin.js.map +1 -0
  25. package/dist/cjs/instructions/create-global-config.js +16 -0
  26. package/dist/cjs/instructions/create-global-config.js.map +1 -0
  27. package/dist/cjs/instructions/create-project.js +26 -0
  28. package/dist/cjs/instructions/create-project.js.map +1 -0
  29. package/dist/cjs/instructions/index.js +25 -0
  30. package/dist/cjs/instructions/index.js.map +1 -0
  31. package/dist/cjs/instructions/project-budget.js +192 -0
  32. package/dist/cjs/instructions/project-budget.js.map +1 -0
  33. package/dist/cjs/instructions/project-roles.js +39 -0
  34. package/dist/cjs/instructions/project-roles.js.map +1 -0
  35. package/dist/cjs/instructions/project.js +16 -0
  36. package/dist/cjs/instructions/project.js.map +1 -0
  37. package/dist/cjs/pdas.js +38 -0
  38. package/dist/cjs/pdas.js.map +1 -0
  39. package/dist/cjs/sdks/fuul.js +244 -0
  40. package/dist/cjs/sdks/fuul.js.map +1 -0
  41. package/dist/cjs/sdks/index.js +18 -0
  42. package/dist/cjs/sdks/index.js.map +1 -0
  43. package/dist/cjs/types.js +92 -0
  44. package/dist/cjs/types.js.map +1 -0
  45. package/dist/cjs/utils/ed25519.js +71 -0
  46. package/dist/cjs/utils/ed25519.js.map +1 -0
  47. package/dist/cjs/utils/helpers.js +71 -0
  48. package/dist/cjs/utils/helpers.js.map +1 -0
  49. package/dist/cjs/utils/index.js +18 -0
  50. package/dist/cjs/utils/index.js.map +1 -0
  51. package/dist/esm/accounts.js +76 -0
  52. package/dist/esm/accounts.js.map +1 -0
  53. package/dist/esm/common/contract.js +31 -0
  54. package/dist/esm/common/contract.js.map +1 -0
  55. package/dist/esm/common/errors.js +7 -0
  56. package/dist/esm/common/errors.js.map +1 -0
  57. package/dist/esm/common/index.js +4 -0
  58. package/dist/esm/common/index.js.map +1 -0
  59. package/dist/esm/common/messages.js +83 -0
  60. package/dist/esm/common/messages.js.map +1 -0
  61. package/dist/esm/constants.js +17 -0
  62. package/dist/esm/constants.js.map +1 -0
  63. package/dist/esm/idls/fuul.js +2 -0
  64. package/dist/esm/idls/fuul.js.map +1 -0
  65. package/dist/esm/idls/fuul.json +4714 -0
  66. package/dist/esm/index.js +7 -0
  67. package/dist/esm/index.js.map +1 -0
  68. package/dist/esm/instructions/admin-roles.js +33 -0
  69. package/dist/esm/instructions/admin-roles.js.map +1 -0
  70. package/dist/esm/instructions/admin-token-management.js +33 -0
  71. package/dist/esm/instructions/admin-token-management.js.map +1 -0
  72. package/dist/esm/instructions/admin.js +56 -0
  73. package/dist/esm/instructions/admin.js.map +1 -0
  74. package/dist/esm/instructions/create-global-config.js +12 -0
  75. package/dist/esm/instructions/create-global-config.js.map +1 -0
  76. package/dist/esm/instructions/create-project.js +22 -0
  77. package/dist/esm/instructions/create-project.js.map +1 -0
  78. package/dist/esm/instructions/index.js +9 -0
  79. package/dist/esm/instructions/index.js.map +1 -0
  80. package/dist/esm/instructions/project-budget.js +184 -0
  81. package/dist/esm/instructions/project-budget.js.map +1 -0
  82. package/dist/esm/instructions/project-roles.js +33 -0
  83. package/dist/esm/instructions/project-roles.js.map +1 -0
  84. package/dist/esm/instructions/project.js +12 -0
  85. package/dist/esm/instructions/project.js.map +1 -0
  86. package/dist/esm/pdas.js +29 -0
  87. package/dist/esm/pdas.js.map +1 -0
  88. package/dist/esm/sdks/fuul.js +237 -0
  89. package/dist/esm/sdks/fuul.js.map +1 -0
  90. package/dist/esm/sdks/index.js +2 -0
  91. package/dist/esm/sdks/index.js.map +1 -0
  92. package/dist/esm/types.js +53 -0
  93. package/dist/esm/types.js.map +1 -0
  94. package/dist/esm/utils/ed25519.js +67 -0
  95. package/dist/esm/utils/ed25519.js.map +1 -0
  96. package/dist/esm/utils/helpers.js +30 -0
  97. package/dist/esm/utils/helpers.js.map +1 -0
  98. package/dist/esm/utils/index.js +2 -0
  99. package/dist/esm/utils/index.js.map +1 -0
  100. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  101. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  102. package/dist/types/accounts.d.ts +34 -0
  103. package/dist/types/common/contract.d.ts +14 -0
  104. package/dist/types/common/errors.d.ts +3 -0
  105. package/dist/types/common/index.d.ts +3 -0
  106. package/dist/types/common/messages.d.ts +55 -0
  107. package/dist/types/constants.d.ts +9 -0
  108. package/dist/types/idls/fuul.d.ts +3823 -0
  109. package/dist/types/index.d.ts +6 -0
  110. package/dist/types/instructions/admin-roles.d.ts +26 -0
  111. package/dist/types/instructions/admin-token-management.d.ts +28 -0
  112. package/dist/types/instructions/admin.d.ts +47 -0
  113. package/dist/types/instructions/create-global-config.d.ts +10 -0
  114. package/dist/types/instructions/create-project.d.ts +11 -0
  115. package/dist/types/instructions/index.d.ts +8 -0
  116. package/dist/types/instructions/project-budget.d.ts +47 -0
  117. package/dist/types/instructions/project-roles.d.ts +29 -0
  118. package/dist/types/instructions/project.d.ts +13 -0
  119. package/dist/types/pdas.d.ts +8 -0
  120. package/dist/types/sdks/fuul.d.ts +130 -0
  121. package/dist/types/sdks/index.d.ts +1 -0
  122. package/dist/types/types.d.ts +40 -0
  123. package/dist/types/utils/ed25519.d.ts +7 -0
  124. package/dist/types/utils/helpers.d.ts +13 -0
  125. package/dist/types/utils/index.d.ts +1 -0
  126. package/package.json +59 -0
package/README.md ADDED
@@ -0,0 +1,145 @@
1
+ # Fuul SDK
2
+
3
+ ### Install
4
+
5
+ ```bash
6
+ nvm use && yarn install
7
+ ```
8
+
9
+ ### Build
10
+
11
+ ```bash
12
+ # build all
13
+ yarn build
14
+
15
+ # Build all
16
+ yarn build:esm
17
+ yarn build:cjs
18
+ ```
19
+
20
+ ### Docs
21
+
22
+ Generate
23
+
24
+ ```bash
25
+ yarn docs
26
+ ```
27
+
28
+ Serve locally
29
+
30
+ ```bash
31
+ yarn docs:serve
32
+ ```
33
+
34
+ ### Testing
35
+
36
+ Tests for this SDK are run at the workspace level from the repository root. Use `yarn build:docs && yarn test:all` to execute all tests across packages, including the SDK.
37
+
38
+ ## Usage
39
+
40
+ The sdk has some read and some write operations. Find details about each method with `yarn docs && yarn docs:serve`
41
+
42
+ #### Reading Data
43
+
44
+ To read data from the blockchain, use the getter methods. For example, to read the global config:
45
+
46
+ ```typescript
47
+ import { Connection } from '@solana/web3.js';
48
+ import { FuulSdk, Network } from '@wakeuplabs/fuul-solana';
49
+
50
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
51
+ const sdk = new FuulSdk(connection, Network.MAINNET);
52
+
53
+ // Read global config
54
+ const globalConfig = await sdk.getGlobalConfig();
55
+
56
+ if (globalConfig) {
57
+ console.log('Paused:', globalConfig.paused);
58
+ console.log('Project Nonce:', globalConfig.projectNonce.toString());
59
+ console.log('Claim Cool Down:', globalConfig.claimCoolDown.toString());
60
+ console.log('Fee Collector:', globalConfig.feeManagement.feeCollector.toString());
61
+ console.log('User Native Claim Fee:', globalConfig.feeManagement.userNativeClaimFee.toString());
62
+ console.log('Project Claim Fee:', globalConfig.feeManagement.projectClaimFee.toString());
63
+ console.log('Remove Fee:', globalConfig.feeManagement.removeFee.toString());
64
+ }
65
+ ```
66
+
67
+ #### Sending Transactions
68
+
69
+ To send a transaction, create instructions using the SDK methods, add them to a transaction, and send it. For example, to update global fees:
70
+
71
+ ```typescript
72
+ import { Connection, Keypair, PublicKey, sendAndConfirmTransaction, Transaction } from '@solana/web3.js';
73
+ import { FuulSdk, Network } from '@wakeuplabs/fuul-solana';
74
+ import * as anchor from '@coral-xyz/anchor';
75
+
76
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
77
+ const sdk = new FuulSdk(connection, Network.MAINNET);
78
+ const wallet = Keypair.fromSecretKey(/* your secret key */);
79
+
80
+ // Create instructions to update global fees
81
+ const updateFeesInstructions = await sdk.updateGlobalConfigFees({
82
+ authority: wallet.publicKey,
83
+ userNativeClaimFee: new anchor.BN(1000000), // 0.001 SOL in lamports
84
+ projectClaimFee: new anchor.BN(100), // 1% in basis points (100/10000)
85
+ removeFee: new anchor.BN(50), // 0.5% in basis points (50/10000)
86
+ // feeCollector is optional - only include if you want to update it
87
+ });
88
+
89
+ // Build and send the transaction
90
+ const transaction = new Transaction().add(...updateFeesInstructions);
91
+ const signature = await sendAndConfirmTransaction(
92
+ connection,
93
+ transaction,
94
+ [wallet],
95
+ { commitment: 'confirmed' }
96
+ );
97
+
98
+ console.log(`Transaction confirmed: ${signature}`);
99
+ ```
100
+
101
+ #### Batching Transactions
102
+
103
+ You can batch multiple operations into a single transaction by combining multiple instruction arrays:
104
+
105
+ ```typescript
106
+ import { Connection, Keypair, PublicKey, sendAndConfirmTransaction, Transaction } from '@solana/web3.js';
107
+ import { FuulSdk, Network } from '@wakeuplabs/fuul-solana';
108
+ import * as anchor from '@coral-xyz/anchor';
109
+
110
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
111
+ const sdk = new FuulSdk(connection, Network.MAINNET);
112
+ const wallet = Keypair.fromSecretKey(/* your secret key */);
113
+
114
+ // Create multiple instruction sets
115
+ const updateFeesInstructions = await sdk.updateGlobalConfigFees({
116
+ authority: wallet.publicKey,
117
+ userNativeClaimFee: new anchor.BN(1000000),
118
+ projectClaimFee: new anchor.BN(100),
119
+ });
120
+
121
+ const updateConfigInstructions = await sdk.updateGlobalConfig({
122
+ authority: wallet.publicKey,
123
+ claimCoolDown: new anchor.BN(86400), // 1 day in seconds
124
+ requiredSignersForClaim: 2,
125
+ });
126
+
127
+ // Batch all instructions into a single transaction
128
+ const transaction = new Transaction().add(
129
+ ...updateFeesInstructions,
130
+ ...updateConfigInstructions
131
+ );
132
+
133
+ // Send the batched transaction
134
+ const signature = await sendAndConfirmTransaction(
135
+ connection,
136
+ transaction,
137
+ [wallet],
138
+ { commitment: 'confirmed' }
139
+ );
140
+
141
+ console.log(`Batched transaction confirmed: ${signature}`);
142
+ ```
143
+
144
+ Note: When batching transactions, make sure all instructions are compatible and can be executed in the same transaction. Some operations may have dependencies or constraints that prevent them from being batched together.
145
+
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProjectUser = exports.getProjectCurrencyBudget = exports.getProject = exports.getCurrencyToken = exports.getGlobalConfig = void 0;
4
+ const pdas_1 = require("./pdas");
5
+ const utils_1 = require("./utils");
6
+ const getGlobalConfig = async (opts) => {
7
+ const program = (0, utils_1.getProgram)(opts);
8
+ const [globalConfigPda] = (0, pdas_1.getGlobalConfigPda)(program.programId);
9
+ try {
10
+ const globalConfig = await program.account.globalConfig.fetch(globalConfigPda);
11
+ return globalConfig;
12
+ }
13
+ catch (err) {
14
+ if (typeof err.message === 'string' && err.message.includes('Could not find')) {
15
+ throw new Error('Global config not found');
16
+ }
17
+ throw err;
18
+ }
19
+ };
20
+ exports.getGlobalConfig = getGlobalConfig;
21
+ const getCurrencyToken = async (opts) => {
22
+ const program = (0, utils_1.getProgram)(opts);
23
+ const [currencyTokenPda] = (0, pdas_1.getCurrencyTokenPda)(program.programId, opts.tokenAccount);
24
+ try {
25
+ const currencyToken = await program.account.currencyToken.fetch(currencyTokenPda);
26
+ return currencyToken;
27
+ }
28
+ catch (err) {
29
+ if (typeof err.message === 'string' && err.message.includes('Could not find')) {
30
+ throw new Error('Currency token not found');
31
+ }
32
+ throw err;
33
+ }
34
+ };
35
+ exports.getCurrencyToken = getCurrencyToken;
36
+ const getProject = async (opts) => {
37
+ const program = (0, utils_1.getProgram)(opts);
38
+ const [fuulProjectPda] = (0, pdas_1.getProjectPda)(program.programId, opts.nonce);
39
+ try {
40
+ const fuulProject = await program.account.project.fetch(fuulProjectPda);
41
+ return fuulProject;
42
+ }
43
+ catch (err) {
44
+ if (typeof err.message === 'string' && err.message.includes('Could not find')) {
45
+ throw new Error('Project not found');
46
+ }
47
+ throw err;
48
+ }
49
+ };
50
+ exports.getProject = getProject;
51
+ const getProjectCurrencyBudget = async (opts) => {
52
+ const program = (0, utils_1.getProgram)(opts);
53
+ const [projectPda] = (0, pdas_1.getProjectPda)(program.programId, opts.projectNonce);
54
+ const [currencyTokenPda] = (0, pdas_1.getCurrencyTokenPda)(program.programId, opts.currencyTokenMint);
55
+ const [projectCurrencyBudgetPda] = (0, pdas_1.getProjectCurrencyBudgetPda)(program.programId, projectPda, currencyTokenPda);
56
+ try {
57
+ const projectCurrencyBudget = await program.account.projectCurrencyBudget.fetch(projectCurrencyBudgetPda);
58
+ return projectCurrencyBudget;
59
+ }
60
+ catch (err) {
61
+ if (typeof err.message === 'string' && err.message.includes('Could not find')) {
62
+ throw new Error('Project currency budget not found');
63
+ }
64
+ throw err;
65
+ }
66
+ };
67
+ exports.getProjectCurrencyBudget = getProjectCurrencyBudget;
68
+ const getProjectUser = async (opts) => {
69
+ const program = (0, utils_1.getProgram)(opts);
70
+ const [projectPda] = (0, pdas_1.getProjectPda)(program.programId, opts.projectNonce);
71
+ const [projectUserPda] = (0, pdas_1.getProjectUserPda)(program.programId, projectPda, opts.user);
72
+ try {
73
+ const projectUser = await program.account.projectUser.fetch(projectUserPda);
74
+ return projectUser;
75
+ }
76
+ catch (err) {
77
+ if (typeof err.message === 'string' && err.message.includes('Could not find')) {
78
+ throw new Error('Project user not found');
79
+ }
80
+ throw err;
81
+ }
82
+ };
83
+ exports.getProjectUser = getProjectUser;
84
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ContractSdk = void 0;
37
+ const anchor = __importStar(require("@coral-xyz/anchor"));
38
+ class ContractSdk {
39
+ constructor(connection, network, idl, programId) {
40
+ this.connection = connection;
41
+ this.program = new anchor.Program(programId ? { ...idl, address: programId.toBase58() } : idl, {
42
+ connection: this.connection,
43
+ });
44
+ this.network = network;
45
+ }
46
+ getConnection() {
47
+ return this.connection;
48
+ }
49
+ getProgram() {
50
+ return this.program;
51
+ }
52
+ getProgramId() {
53
+ return this.program.programId;
54
+ }
55
+ getNetwork() {
56
+ return this.network;
57
+ }
58
+ parseTransactionLogs(logs) {
59
+ const eventParser = new anchor.EventParser(this.program.programId, this.program.coder);
60
+ const events = [];
61
+ for (const log of eventParser.parseLogs(logs)) {
62
+ events.push(log);
63
+ }
64
+ return events;
65
+ }
66
+ }
67
+ exports.ContractSdk = ContractSdk;
68
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/common/contract.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4C;AAU5C,MAAa,WAAW;IAYtB,YAAY,UAAsB,EAAE,OAAgB,EAAE,GAAe,EAAE,SAAqB;QAC1F,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC7F,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAOD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAOD,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAQD,oBAAoB,CAAC,IAAc;QACjC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvF,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA1ED,kCA0EC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FuulError = void 0;
4
+ class FuulError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'FuulError';
8
+ }
9
+ }
10
+ exports.FuulError = FuulError;
11
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":";;;AAIA,MAAa,SAAU,SAAQ,KAAK;IAMlC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAVD,8BAUC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./contract"), exports);
18
+ __exportStar(require("./errors"), exports);
19
+ __exportStar(require("./messages"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAAyB;AACzB,6CAA2B"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ClaimMessage = exports.ClaimMessageData = exports.MessageDomain = void 0;
37
+ const borsh_1 = require("borsh");
38
+ const ed25519_1 = require("../utils/ed25519");
39
+ const types_1 = require("../types");
40
+ const ed25519 = __importStar(require("@noble/ed25519"));
41
+ const sha2_js_1 = require("@noble/hashes/sha2.js");
42
+ ed25519.hashes.sha512 = sha2_js_1.sha512;
43
+ class Message {
44
+ constructor(data, domain, schema) {
45
+ this.data = data;
46
+ this.domain = domain;
47
+ this.schema = schema;
48
+ }
49
+ sign(signers) {
50
+ return signers.map((signer) => {
51
+ return {
52
+ signature: ed25519.sign(this.toBuffer(), signer.secretKey.slice(0, 32)),
53
+ signer: signer.publicKey,
54
+ };
55
+ });
56
+ }
57
+ createEd25519Instruction(signature) {
58
+ return (0, ed25519_1.createEd25519Instruction)(signature, this.toBuffer());
59
+ }
60
+ createEd25519InstructionWithMultipleSigners(signatures) {
61
+ return (0, ed25519_1.createEd25519InstructionWithMultipleSigners)(signatures, this.toBuffer());
62
+ }
63
+ toBuffer() {
64
+ return Buffer.from((0, borsh_1.serialize)(this.schema, { data: this.data, domain: this.domain }));
65
+ }
66
+ }
67
+ class MessageDomain {
68
+ constructor(fields) {
69
+ this.program_id = fields.programId.toBytes();
70
+ this.version = fields.version;
71
+ this.deadline = BigInt(fields.deadline);
72
+ }
73
+ }
74
+ exports.MessageDomain = MessageDomain;
75
+ MessageDomain.schema = {
76
+ struct: {
77
+ program_id: { array: { type: 'u8', len: 32 } },
78
+ version: 'u8',
79
+ deadline: 'i64',
80
+ },
81
+ };
82
+ class ClaimMessageData {
83
+ constructor(fields) {
84
+ this.amount = BigInt(fields.amount);
85
+ this.project = fields.project.toBytes();
86
+ this.recipient = fields.recipient.toBytes();
87
+ this.token_type =
88
+ fields.tokenType === types_1.TokenType.Native
89
+ ? 0
90
+ : fields.tokenType === types_1.TokenType.FungibleSpl
91
+ ? 1
92
+ : 2;
93
+ this.token_mint = fields.tokenMint.toBytes();
94
+ this.proof = fields.proof;
95
+ this.reason = fields.reason === types_1.ClaimReason.AffiliatePayout ? 0 : 1;
96
+ }
97
+ }
98
+ exports.ClaimMessageData = ClaimMessageData;
99
+ ClaimMessageData.schema = {
100
+ struct: {
101
+ amount: 'u64',
102
+ project: { array: { type: 'u8', len: 32 } },
103
+ recipient: { array: { type: 'u8', len: 32 } },
104
+ token_type: 'u8',
105
+ token_mint: { array: { type: 'u8', len: 32 } },
106
+ proof: { array: { type: 'u8', len: 32 } },
107
+ reason: 'u8',
108
+ },
109
+ };
110
+ class ClaimMessage extends Message {
111
+ constructor(fields) {
112
+ super(fields.data, fields.domain, ClaimMessage.schema);
113
+ }
114
+ }
115
+ exports.ClaimMessage = ClaimMessage;
116
+ ClaimMessage.schema = {
117
+ struct: {
118
+ data: ClaimMessageData.schema,
119
+ domain: MessageDomain.schema,
120
+ },
121
+ };
122
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/common/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FUUL_PROGRAM_ID = exports.PROJECT_USER_TAG = exports.PROJECT_ATTRIBUTION_TAG = exports.PROJECT_CURRENCY_BUDGET_TAG = exports.PROJECT_TAG = exports.CURRENCY_TOKEN_TAG = exports.GLOBAL_CONFIG_TAG = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const types_1 = require("./types");
6
+ exports.GLOBAL_CONFIG_TAG = 'global-config';
7
+ exports.CURRENCY_TOKEN_TAG = 'currency-token';
8
+ exports.PROJECT_TAG = 'project';
9
+ exports.PROJECT_CURRENCY_BUDGET_TAG = 'project-currency-budget';
10
+ exports.PROJECT_ATTRIBUTION_TAG = 'project-attribution';
11
+ exports.PROJECT_USER_TAG = 'project-user';
12
+ exports.FUUL_PROGRAM_ID = {
13
+ [types_1.Network.MAINNET]: new web3_js_1.PublicKey('7BLkgULKe2eMmrjqMZUSaX8iGsaStue9LgZTQuEpTBEg'),
14
+ [types_1.Network.DEVNET]: new web3_js_1.PublicKey('7BLkgULKe2eMmrjqMZUSaX8iGsaStue9LgZTQuEpTBEg'),
15
+ [types_1.Network.TESTNET]: new web3_js_1.PublicKey('7BLkgULKe2eMmrjqMZUSaX8iGsaStue9LgZTQuEpTBEg'),
16
+ [types_1.Network.LOCALHOST]: new web3_js_1.PublicKey('7BLkgULKe2eMmrjqMZUSaX8iGsaStue9LgZTQuEpTBEg'),
17
+ [types_1.Network.FOGO_TESTNET]: new web3_js_1.PublicKey('7BLkgULKe2eMmrjqMZUSaX8iGsaStue9LgZTQuEpTBEg'),
18
+ [types_1.Network.FOGO_MAINNET]: new web3_js_1.PublicKey('7BLkgULKe2eMmrjqMZUSaX8iGsaStue9LgZTQuEpTBEg'),
19
+ };
20
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,mCAAkC;AAQrB,QAAA,iBAAiB,GAAG,eAAe,CAAC;AAMpC,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAMtC,QAAA,WAAW,GAAG,SAAS,CAAC;AAMxB,QAAA,2BAA2B,GAAG,yBAAyB,CAAC;AAMxD,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAMhD,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAUlC,QAAA,eAAe,GAA+B;IACzD,CAAC,eAAO,CAAC,OAAO,CAAC,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;IAChF,CAAC,eAAO,CAAC,MAAM,CAAC,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;IAC/E,CAAC,eAAO,CAAC,OAAO,CAAC,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;IAChF,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;IAClF,CAAC,eAAO,CAAC,YAAY,CAAC,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;IACrF,CAAC,eAAO,CAAC,YAAY,CAAC,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;CACtF,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fuul.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuul.js","sourceRoot":"","sources":["../../../src/idls/fuul.ts"],"names":[],"mappings":""}