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
JavaScript
;
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