diff --git a/examples/ton.ts b/examples/ton.ts new file mode 100644 index 0000000..3e23e48 --- /dev/null +++ b/examples/ton.ts @@ -0,0 +1,71 @@ +import { Kiln, KILN_VALIDATORS, tonToNanoton, zetaToAzeta } from "../src/kiln.ts"; +import type { FireblocksIntegration } from '../src/fireblocks.ts'; +import { loadEnv } from './env.ts'; + +const { kilnApiKey, kilnAccountId, kilnApiUrl, fireblocksApiKey, fireblocksApiSecret, fireblocksVaultId } = + await loadEnv(); + +const k = new Kiln({ + baseUrl: kilnApiUrl, + apiToken: kilnApiKey, +}); + +const vault: FireblocksIntegration = { + config: { + apiKey: fireblocksApiKey, + secretKey: fireblocksApiSecret, + basePath: 'https://api.fireblocks.io/v1', + }, + vaultId: fireblocksVaultId, +}; + +// +// Craft the transaction +// +console.log('Crafting transaction...'); +const txRequest = await k.client.POST('/ton/transaction/stake-single-nomination-pool', { + body: { + account_id: kilnAccountId, + pool_address: 'Ef8Fl22VmKm2kDqIWnPf3iNhCUz0cZkedMkZBNZ2D0jDxH9p', + wallet: 'UQAfjn5-4M5H7q_2z4rCjAIGDslZoT0VsZNWaQ9BIaR4w0V9', + amount_nanoton: tonToNanoton('1.2').toString(), + }, +}); +if (txRequest.error) { + console.log('Failed to craft transaction:', txRequest); + process.exit(1); +} else { + console.log('Crafted transaction:', txRequest.data); +} +console.log('\n\n\n'); + +// +// Sign the transaction +// +console.log('Signing transaction...'); +const signRequest = await (async () => { + try { + return await k.fireblocks.signTonTx(vault, txRequest.data.data, 'TON'); + } catch (err) { + console.log('Failed to sign transaction:', err); + process.exit(1); + } +})(); +console.log('Signed transaction:', signRequest); +console.log('\n\n\n'); + +// +// Broadcast the transaction +// +// console.log('Broadcasting transaction...'); +// const broadcastedRequest = await k.client.POST('/ton/transaction/broadcast', { +// body: { +// tx_serialized: signRequest.signed_tx.data.signed_tx_serialized, +// }, +// }); +// if (broadcastedRequest.error) { +// console.log('Failed to broadcast transaction:', broadcastedRequest); +// process.exit(1); +// } else { +// console.log('Broadcasted transaction:', broadcastedRequest.data); +// }