@kynesyslabs/demosdk 2.4.0 → 2.4.1

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.
@@ -1,4 +1,4 @@
1
- import { XMCoreTargetIdentityPayload, Web2CoreTargetIdentityPayload, GithubProof, TwitterProof, InferFromSignaturePayload } from "../types/abstraction";
1
+ import { XMCoreTargetIdentityPayload, Web2CoreTargetIdentityPayload, GithubProof, TwitterProof, InferFromSignaturePayload, DiscordProof } from "../types/abstraction";
2
2
  import { Demos } from "../websdk/demosclass";
3
3
  import { PQCAlgorithm } from "../types/cryptography";
4
4
  import { RPCResponseWithValidityData } from "../types";
@@ -7,6 +7,7 @@ export declare class Identities {
7
7
  web2: {
8
8
  github: string[];
9
9
  twitter: string[];
10
+ discord: string[];
10
11
  };
11
12
  };
12
13
  /**
@@ -86,6 +87,14 @@ export declare class Identities {
86
87
  * @returns The response from the RPC call.
87
88
  */
88
89
  addTwitterIdentity(demos: Demos, payload: TwitterProof, referralCode?: string): Promise<RPCResponseWithValidityData>;
90
+ /**
91
+ * Add a discord identity to the GCR.
92
+ *
93
+ * @param demos A Demos instance to communicate with the RPC.
94
+ * @param payload The payload to add the identity to.
95
+ * @returns The response from the RPC call.
96
+ */
97
+ addDiscordIdentity(demos: Demos, payload: DiscordProof, referralCode?: string): Promise<RPCResponseWithValidityData>;
89
98
  bindPqcIdentity(demos: Demos, algorithms?: "all" | PQCAlgorithm[]): Promise<RPCResponseWithValidityData>;
90
99
  removePqcIdentity(demos: Demos, algorithms?: "all" | PQCAlgorithm[]): Promise<RPCResponseWithValidityData>;
91
100
  /**
@@ -19,6 +19,10 @@ class Identities {
19
19
  "https://gist.githubusercontent.com",
20
20
  ],
21
21
  twitter: ["https://x.com", "https://twitter.com"],
22
+ discord: [
23
+ "https://discord.com/channels",
24
+ "https://ptb.discord.com/channels",
25
+ ],
22
26
  },
23
27
  };
24
28
  }
@@ -110,7 +114,10 @@ class Identities {
110
114
  * @returns The validity data of the identity transaction.
111
115
  */
112
116
  async inferXmIdentity(demos, payload, referralCode) {
113
- return await this.inferIdentity(demos, "xm", { ...payload, referralCode: referralCode });
117
+ return await this.inferIdentity(demos, "xm", {
118
+ ...payload,
119
+ referralCode: referralCode,
120
+ });
114
121
  }
115
122
  /**
116
123
  * Infer a web2 identity from a proof payload.
@@ -189,6 +196,31 @@ class Identities {
189
196
  };
190
197
  return await this.inferIdentity(demos, "web2", twitterPayload);
191
198
  }
199
+ /**
200
+ * Add a discord identity to the GCR.
201
+ *
202
+ * @param demos A Demos instance to communicate with the RPC.
203
+ * @param payload The payload to add the identity to.
204
+ * @returns The response from the RPC call.
205
+ */
206
+ async addDiscordIdentity(demos, payload, referralCode) {
207
+ const data = await demos.web2.getDiscordMessage(payload);
208
+ if (!data.success) {
209
+ throw new Error(data.error);
210
+ }
211
+ const msg = data.message;
212
+ if (!msg.authorId || !msg.authorUsername) {
213
+ throw new Error("Unable to get discord user info. Please try again.");
214
+ }
215
+ const discordPayload = {
216
+ context: "discord",
217
+ proof: payload,
218
+ username: msg.authorUsername,
219
+ userId: msg.authorId,
220
+ referralCode: referralCode,
221
+ };
222
+ return await this.inferIdentity(demos, "web2", discordPayload);
223
+ }
192
224
  // SECTION: PQC Identities
193
225
  async bindPqcIdentity(demos, algorithms = "all") {
194
226
  let addressTypes = [];
@@ -337,9 +369,7 @@ class Identities {
337
369
  }
338
370
  const request = {
339
371
  method: "gcr_routine",
340
- params: [
341
- { method: "getReferralInfo", params: [address] },
342
- ],
372
+ params: [{ method: "getReferralInfo", params: [address] }],
343
373
  };
344
374
  return await demos.rpcCall(request, true);
345
375
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Identities.js","sourceRoot":"","sources":["../../../src/abstraction/Identities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Identities.js","sourceRoot":"","sources":["../../../src/abstraction/Identities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Template Registry with Parameter Substitution
3
+ *
4
+ * Manages contract templates, validates parameters, and performs
5
+ * parameter substitution to generate deployable contract source code.
6
+ */
7
+ import { TemplateSchema, ValidationResult } from './TemplateValidator';
8
+ export interface TemplateInfo {
9
+ name: string;
10
+ schema: TemplateSchema;
11
+ sourceFile: string;
12
+ source?: string;
13
+ }
14
+ export interface SubstitutionResult {
15
+ success: boolean;
16
+ source?: string;
17
+ errors: string[];
18
+ warnings: string[];
19
+ }
20
+ export declare class TemplateRegistry {
21
+ private static templates;
22
+ private static initialized;
23
+ /**
24
+ * Initialize the template registry with built-in templates
25
+ */
26
+ static initialize(): void;
27
+ /**
28
+ * Register a new template
29
+ */
30
+ static registerTemplate(templateInfo: TemplateInfo): void;
31
+ /**
32
+ * Get all available template names
33
+ */
34
+ static getAvailableTemplates(): string[];
35
+ /**
36
+ * Get template information
37
+ */
38
+ static getTemplate(name: string): TemplateInfo | null;
39
+ /**
40
+ * Get template schema for validation
41
+ */
42
+ static getTemplateSchema(name: string): TemplateSchema | null;
43
+ /**
44
+ * Load template source code
45
+ */
46
+ private static loadTemplateSource;
47
+ /**
48
+ * Get embedded template source (temporary implementation)
49
+ */
50
+ private static getEmbeddedTemplateSource;
51
+ /**
52
+ * Validate template parameters
53
+ */
54
+ static validateParameters(templateName: string, params: Record<string, any>): ValidationResult;
55
+ /**
56
+ * Generate contract source with parameter substitution
57
+ */
58
+ static generateContract(templateName: string, params?: Record<string, any>): SubstitutionResult;
59
+ /**
60
+ * Perform parameter substitution in template source
61
+ */
62
+ private static substituteParameters;
63
+ /**
64
+ * Format parameter value for code generation
65
+ */
66
+ private static formatParameterValue;
67
+ /**
68
+ * Get template usage examples
69
+ */
70
+ static getTemplateExample(templateName: string): string | null;
71
+ }
@@ -0,0 +1,404 @@
1
+ "use strict";
2
+ /**
3
+ * Template Registry with Parameter Substitution
4
+ *
5
+ * Manages contract templates, validates parameters, and performs
6
+ * parameter substitution to generate deployable contract source code.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TemplateRegistry = void 0;
10
+ const TemplateValidator_1 = require("./TemplateValidator");
11
+ class TemplateRegistry {
12
+ /**
13
+ * Initialize the template registry with built-in templates
14
+ */
15
+ static initialize() {
16
+ if (this.initialized)
17
+ return;
18
+ // Register Token template
19
+ this.registerTemplate({
20
+ name: 'Token',
21
+ schema: {
22
+ name: 'Token',
23
+ description: 'Standard token contract with ERC-20-like functionality',
24
+ version: '1.0.0',
25
+ author: 'Kynesys Labs',
26
+ parameters: [
27
+ {
28
+ name: 'TOKEN_NAME',
29
+ type: 'string',
30
+ required: true,
31
+ default: 'DemosToken',
32
+ pattern: /^[A-Za-z0-9\s]{1,32}$/,
33
+ description: 'The name of the token (e.g., "My Token")'
34
+ },
35
+ {
36
+ name: 'TOKEN_SYMBOL',
37
+ type: 'string',
38
+ required: true,
39
+ default: 'DTK',
40
+ pattern: /^[A-Z]{1,8}$/,
41
+ description: 'The symbol of the token (e.g., "MTK")'
42
+ },
43
+ {
44
+ name: 'TOTAL_SUPPLY',
45
+ type: 'number',
46
+ required: true,
47
+ default: 1000000,
48
+ min: 1,
49
+ max: 1000000000000,
50
+ description: 'Initial token supply'
51
+ },
52
+ {
53
+ name: 'DECIMALS',
54
+ type: 'number',
55
+ required: false,
56
+ default: 18,
57
+ min: 0,
58
+ max: 18,
59
+ description: 'Number of decimal places for the token'
60
+ }
61
+ ]
62
+ },
63
+ sourceFile: 'Token.ts.template'
64
+ });
65
+ // Register Storage template
66
+ this.registerTemplate({
67
+ name: 'Storage',
68
+ schema: {
69
+ name: 'Storage',
70
+ description: 'Key-value storage contract with access control',
71
+ version: '1.0.0',
72
+ author: 'Kynesys Labs',
73
+ parameters: [
74
+ {
75
+ name: 'IS_PUBLIC',
76
+ type: 'boolean',
77
+ required: false,
78
+ default: false,
79
+ description: 'Whether the storage allows public read access'
80
+ },
81
+ {
82
+ name: 'MAX_KEYS',
83
+ type: 'number',
84
+ required: false,
85
+ default: 1000,
86
+ min: 1,
87
+ max: 10000,
88
+ description: 'Maximum number of keys that can be stored'
89
+ }
90
+ ]
91
+ },
92
+ sourceFile: 'Storage.ts.template'
93
+ });
94
+ this.initialized = true;
95
+ }
96
+ /**
97
+ * Register a new template
98
+ */
99
+ static registerTemplate(templateInfo) {
100
+ this.templates.set(templateInfo.name, templateInfo);
101
+ }
102
+ /**
103
+ * Get all available template names
104
+ */
105
+ static getAvailableTemplates() {
106
+ this.initialize();
107
+ return Array.from(this.templates.keys());
108
+ }
109
+ /**
110
+ * Get template information
111
+ */
112
+ static getTemplate(name) {
113
+ this.initialize();
114
+ return this.templates.get(name) || null;
115
+ }
116
+ /**
117
+ * Get template schema for validation
118
+ */
119
+ static getTemplateSchema(name) {
120
+ const template = this.getTemplate(name);
121
+ return template ? template.schema : null;
122
+ }
123
+ /**
124
+ * Load template source code
125
+ */
126
+ static loadTemplateSource(template) {
127
+ if (template.source) {
128
+ return template.source;
129
+ }
130
+ try {
131
+ // In a real implementation, you'd load from the file system
132
+ // For now, we'll use the embedded source strings
133
+ // const templatePath = path.join(__dirname, template.sourceFile)
134
+ // Since we can't actually read files in this context,
135
+ // we'll return the source based on template name
136
+ return this.getEmbeddedTemplateSource(template.name);
137
+ }
138
+ catch (error) {
139
+ throw new Error(`Failed to load template source for ${template.name}: ${error.message}`);
140
+ }
141
+ }
142
+ /**
143
+ * Get embedded template source (temporary implementation)
144
+ */
145
+ static getEmbeddedTemplateSource(templateName) {
146
+ // In a real implementation, these would be loaded from .contract.ts files
147
+ const sources = {
148
+ 'Token': `
149
+ class Token extends DemosContract {
150
+ constructor(
151
+ name: string = "{{TOKEN_NAME}}",
152
+ symbol: string = "{{TOKEN_SYMBOL}}",
153
+ totalSupply: number = {{TOTAL_SUPPLY}},
154
+ decimals: number = {{DECIMALS}}
155
+ ) {
156
+ super()
157
+ this.state.set('name', name)
158
+ this.state.set('symbol', symbol)
159
+ this.state.set('decimals', decimals)
160
+ this.state.set('totalSupply', totalSupply)
161
+ this.state.set('balances', {})
162
+ this.state.set('allowances', {})
163
+ const creator = this.sender
164
+ const balances = this.state.get('balances')
165
+ balances[creator] = totalSupply
166
+ this.state.set('balances', balances)
167
+ this.emit('Transfer', { from: '0x0', to: creator, amount: totalSupply })
168
+ }
169
+
170
+ name(): string { return this.state.get('name') }
171
+ symbol(): string { return this.state.get('symbol') }
172
+ decimals(): number { return this.state.get('decimals') }
173
+ totalSupply(): number { return this.state.get('totalSupply') }
174
+
175
+ balanceOf(address: string): number {
176
+ const balances = this.state.get('balances')
177
+ return balances[address] || 0
178
+ }
179
+
180
+ transfer(to: string, amount: number): boolean {
181
+ const from = this.sender
182
+ return this._transfer(from, to, amount)
183
+ }
184
+
185
+ private _transfer(from: string, to: string, amount: number): boolean {
186
+ if (!to || to === '0x0') this.revert('Transfer to zero address')
187
+ if (amount <= 0) this.revert('Transfer amount must be positive')
188
+
189
+ const balances = this.state.get('balances')
190
+ const fromBalance = balances[from] || 0
191
+ if (fromBalance < amount) this.revert('Insufficient balance')
192
+
193
+ balances[from] = fromBalance - amount
194
+ balances[to] = (balances[to] || 0) + amount
195
+ this.state.set('balances', balances)
196
+
197
+ this.emit('Transfer', { from, to, amount })
198
+ return true
199
+ }
200
+ }`,
201
+ 'Storage': `
202
+ class Storage extends DemosContract {
203
+ constructor(
204
+ isPublic: boolean = {{IS_PUBLIC}},
205
+ maxKeys: number = {{MAX_KEYS}}
206
+ ) {
207
+ super()
208
+ this.state.set('owner', this.sender)
209
+ this.state.set('isPublic', isPublic)
210
+ this.state.set('maxKeys', maxKeys)
211
+ this.state.set('keyCount', 0)
212
+ this.state.set('data', {})
213
+ this.state.set('authorizedUsers', {})
214
+
215
+ const authorizedUsers = {}
216
+ authorizedUsers[this.sender] = true
217
+ this.state.set('authorizedUsers', authorizedUsers)
218
+
219
+ this.emit('StorageCreated', { owner: this.sender, isPublic, maxKeys })
220
+ }
221
+
222
+ store(key: string, value: any): boolean {
223
+ this._requireWriteAccess()
224
+ this._validateKey(key)
225
+
226
+ const data = this.state.get('data')
227
+ const isNewKey = !(key in data)
228
+
229
+ if (isNewKey) {
230
+ const currentKeyCount = this.state.get('keyCount')
231
+ const maxKeys = this.state.get('maxKeys')
232
+ if (currentKeyCount >= maxKeys) this.revert('Maximum key limit reached')
233
+ this.state.set('keyCount', currentKeyCount + 1)
234
+ }
235
+
236
+ data[key] = { value, timestamp: this.blockHeight, author: this.sender }
237
+ this.state.set('data', data)
238
+ this.emit('ValueStored', { key, value, author: this.sender, isNewKey })
239
+ return true
240
+ }
241
+
242
+ retrieve(key: string): any {
243
+ this._requireReadAccess()
244
+ this._validateKey(key)
245
+ const data = this.state.get('data')
246
+ const entry = data[key]
247
+ if (!entry) return null
248
+ this.emit('ValueRetrieved', { key, value: entry.value, requester: this.sender })
249
+ return entry.value
250
+ }
251
+
252
+ private _requireReadAccess(): void {
253
+ const isPublic = this.state.get('isPublic')
254
+ if (isPublic) return
255
+ const authorizedUsers = this.state.get('authorizedUsers')
256
+ if (authorizedUsers[this.sender] !== true) this.revert('Read access denied')
257
+ }
258
+
259
+ private _requireWriteAccess(): void {
260
+ const authorizedUsers = this.state.get('authorizedUsers')
261
+ if (authorizedUsers[this.sender] !== true) this.revert('Write access denied')
262
+ }
263
+
264
+ private _validateKey(key: string): void {
265
+ if (!key || typeof key !== 'string') this.revert('Invalid key: must be non-empty string')
266
+ if (key.length > 64) this.revert('Key too long: maximum 64 characters')
267
+ if (key.startsWith('_') || key.includes('\\0')) this.revert('Invalid key format')
268
+ }
269
+ }`
270
+ };
271
+ return sources[templateName] || '';
272
+ }
273
+ /**
274
+ * Validate template parameters
275
+ */
276
+ static validateParameters(templateName, params) {
277
+ this.initialize();
278
+ const template = this.getTemplate(templateName);
279
+ if (!template) {
280
+ return {
281
+ valid: false,
282
+ errors: [`Template '${templateName}' not found`],
283
+ warnings: [],
284
+ processedParams: {}
285
+ };
286
+ }
287
+ return TemplateValidator_1.TemplateValidator.validate(template.schema, params);
288
+ }
289
+ /**
290
+ * Generate contract source with parameter substitution
291
+ */
292
+ static generateContract(templateName, params = {}) {
293
+ this.initialize();
294
+ const template = this.getTemplate(templateName);
295
+ if (!template) {
296
+ return {
297
+ success: false,
298
+ errors: [`Template '${templateName}' not found`],
299
+ warnings: []
300
+ };
301
+ }
302
+ // Validate parameters
303
+ const validation = this.validateParameters(templateName, params);
304
+ if (!validation.valid) {
305
+ return {
306
+ success: false,
307
+ errors: validation.errors,
308
+ warnings: validation.warnings
309
+ };
310
+ }
311
+ try {
312
+ // Load template source
313
+ const templateSource = this.loadTemplateSource(template);
314
+ // Perform parameter substitution
315
+ const substitutedSource = this.substituteParameters(templateSource, validation.processedParams);
316
+ return {
317
+ success: true,
318
+ source: substitutedSource,
319
+ errors: [],
320
+ warnings: validation.warnings
321
+ };
322
+ }
323
+ catch (error) {
324
+ return {
325
+ success: false,
326
+ errors: [`Template generation failed: ${error.message}`],
327
+ warnings: validation.warnings
328
+ };
329
+ }
330
+ }
331
+ /**
332
+ * Perform parameter substitution in template source
333
+ */
334
+ static substituteParameters(source, params) {
335
+ let result = source;
336
+ // Replace each parameter placeholder
337
+ for (const [key, value] of Object.entries(params)) {
338
+ const placeholder = `{{${key}}}`;
339
+ const replacement = this.formatParameterValue(value);
340
+ // Replace all occurrences
341
+ result = result.replace(new RegExp(placeholder, 'g'), replacement);
342
+ }
343
+ // Check for unreplaced placeholders
344
+ const unreplacedMatches = result.match(/\{\{[^}]+\}\}/g);
345
+ if (unreplacedMatches) {
346
+ throw new Error(`Unreplaced template parameters: ${unreplacedMatches.join(', ')}`);
347
+ }
348
+ return result;
349
+ }
350
+ /**
351
+ * Format parameter value for code generation
352
+ */
353
+ static formatParameterValue(value) {
354
+ if (typeof value === 'string') {
355
+ return `"${value.replace(/"/g, '\\"')}"`; // Escape quotes
356
+ }
357
+ else if (typeof value === 'boolean') {
358
+ return value.toString();
359
+ }
360
+ else if (typeof value === 'number') {
361
+ return value.toString();
362
+ }
363
+ else {
364
+ return JSON.stringify(value);
365
+ }
366
+ }
367
+ /**
368
+ * Get template usage examples
369
+ */
370
+ static getTemplateExample(templateName) {
371
+ this.initialize();
372
+ const examples = {
373
+ 'Token': `
374
+ // Deploy a custom token
375
+ const token = await demos.contracts.deployTemplate('Token', {
376
+ TOKEN_NAME: 'MyToken',
377
+ TOKEN_SYMBOL: 'MTK',
378
+ TOTAL_SUPPLY: 1000000,
379
+ DECIMALS: 18
380
+ })
381
+
382
+ // Interact with the token
383
+ const balance = await token.balanceOf('address')
384
+ await token.transfer('recipient', 100)
385
+ `,
386
+ 'Storage': `
387
+ // Deploy a private storage contract
388
+ const storage = await demos.contracts.deployTemplate('Storage', {
389
+ IS_PUBLIC: false,
390
+ MAX_KEYS: 500
391
+ })
392
+
393
+ // Use the storage
394
+ await storage.store('myKey', 'myValue')
395
+ const value = await storage.retrieve('myKey')
396
+ `
397
+ };
398
+ return examples[templateName] || null;
399
+ }
400
+ }
401
+ exports.TemplateRegistry = TemplateRegistry;
402
+ TemplateRegistry.templates = new Map();
403
+ TemplateRegistry.initialized = false;
404
+ //# sourceMappingURL=TemplateRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRegistry.js","sourceRoot":"","sources":["../../../../src/contracts/templates/TemplateRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Template parameter validation system
3
+ *
4
+ * Validates template parameters before deployment to ensure
5
+ * safe and correct contract generation.
6
+ */
7
+ export interface TemplateParameter {
8
+ name: string;
9
+ type: 'string' | 'number' | 'boolean' | 'address';
10
+ required: boolean;
11
+ default?: any;
12
+ min?: number;
13
+ max?: number;
14
+ pattern?: RegExp;
15
+ description: string;
16
+ }
17
+ export interface TemplateSchema {
18
+ name: string;
19
+ description: string;
20
+ parameters: TemplateParameter[];
21
+ version: string;
22
+ author?: string;
23
+ }
24
+ export interface ValidationResult {
25
+ valid: boolean;
26
+ errors: string[];
27
+ warnings: string[];
28
+ processedParams: Record<string, any>;
29
+ }
30
+ export declare class TemplateValidator {
31
+ /**
32
+ * Validate parameters against a template schema
33
+ */
34
+ static validate(schema: TemplateSchema, params?: Record<string, any>): ValidationResult;
35
+ /**
36
+ * Validate parameter type
37
+ */
38
+ private static validateType;
39
+ /**
40
+ * Validate number range
41
+ */
42
+ private static validateNumberRange;
43
+ /**
44
+ * Validate string pattern
45
+ */
46
+ private static validatePattern;
47
+ /**
48
+ * Validate address format
49
+ */
50
+ private static validateAddress;
51
+ /**
52
+ * Get human-readable validation summary
53
+ */
54
+ static getValidationSummary(result: ValidationResult): string;
55
+ }