UNPKG

delegate-framework

Version:

A TypeScript framework for building robust, production-ready blockchain workflows with comprehensive error handling, logging, and testing. Maintained by delegate.fun

77 lines 3.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomDelegate = exports.ExampleUsage = void 0; const web3_js_1 = require("@solana/web3.js"); const base_delegate_1 = require("./base-delegate"); const deployer_1 = require("./deployer"); const irys_1 = require("../solana/clients/metadata/irys"); const constants_1 = require("./constants"); // Example of how to create and use delegates with the framework class ExampleUsage { static async createDeployerDelegate() { const connection = new web3_js_1.Connection("https://api.mainnet-beta.solana.com"); const signerKeypair = web3_js_1.Keypair.generate(); // In real usage, load from secure storage const metadataClient = new irys_1.IrysClient({ privateKey: "your-private-key-here" }); return new deployer_1.Deployer(connection, signerKeypair, metadataClient); } static async executeDeployerExample() { try { const deployer = await this.createDeployerDelegate(); const deployOptions = { type: constants_1.DELEGATE_TYPES.DEPLOYER, platformId: "your-platform-id", tokenName: "My Token", tokenSymbol: "MTK", tokenDescription: "A great token", tokenMigrateType: "amm", buyAmount: 1000000, // 1 SOL in lamports buySlippageBps: 500, // 5% tokenImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==", tokenWebsite: "https://mytoken.com", tokenTwitter: "https://twitter.com/mytoken" }; const result = await deployer.executeDelegate(deployOptions); console.log("Deployment successful!", { signatures: result.signatures, metadataUri: result.metadataUri, tokenMint: result.tokenMint }); } catch (error) { console.error("Deployment failed:", error); } } } exports.ExampleUsage = ExampleUsage; class CustomDelegate extends base_delegate_1.BaseDelegate { async executeDelegate(delegateOptions) { const requestId = this.generateRequestId(); try { this.logOperation('custom_delegate_started', { requestId }); this.validateOptions(delegateOptions); // Your custom logic here const result = await this.retryOperation(async () => { // Simulate some work await new Promise(resolve => setTimeout(resolve, 1000)); return `Processed ${delegateOptions.amount} of ${delegateOptions.customField}`; }, 3); this.logOperation('custom_delegate_completed', { requestId, result }); return { success: true, customResult: result }; } catch (error) { await this.handleError(error instanceof Error ? error : new Error(String(error)), { requestId }); throw error; } } validateOptions(delegateOptions) { this.validateStringField(delegateOptions.customField, 'customField'); this.validateNumberField(delegateOptions.amount, 'amount', 1); } } exports.CustomDelegate = CustomDelegate; //# sourceMappingURL=example.js.map