UNPKG

@saberhq/snapshots

Version:

The TypeScript SDK for the Saber Voting Escrow Snapshot system.

96 lines 3.26 kB
import { __awaiter } from "tslib"; import { SystemProgram } from "@solana/web3.js"; import { findEscrowAddress } from "@tribecahq/tribeca-sdk"; import { findEscrowHistoryAddress, findLockerHistoryAddress } from "."; /** * Handles interacting with the Snapshots program. */ export class SnapshotsWrapper { /** * Constructor for a {@link SnapshotsWrapper}. * @param sdk */ constructor(sdk) { this.sdk = sdk; this.program = sdk.programs.Snapshots; } get provider() { return this.sdk.provider; } fetchLockerHistory(key) { return __awaiter(this, void 0, void 0, function* () { return yield this.program.account.lockerHistory.fetchNullable(key); }); } fetchEscrowHistory(key) { return __awaiter(this, void 0, void 0, function* () { return yield this.program.account.escrowHistory.fetchNullable(key); }); } /** * Creates a Locker History. * @returns */ createLockerHistory({ locker, era, }) { return __awaiter(this, void 0, void 0, function* () { const [lockerHistory] = yield findLockerHistoryAddress(locker, era); return { lockerHistory, tx: this.provider.newTX([ this.program.instruction.createLockerHistory(era, { accounts: { locker, lockerHistory, payer: this.provider.wallet.publicKey, systemProgram: SystemProgram.programId, }, }), ]), }; }); } /** * Creates an Escrow History. * @returns */ createEscrowHistory({ escrow, era, }) { return __awaiter(this, void 0, void 0, function* () { const [escrowHistory] = yield findEscrowHistoryAddress(escrow, era); return { escrowHistory, tx: this.provider.newTX([ this.program.instruction.createEscrowHistory(era, { accounts: { escrow, escrowHistory, payer: this.provider.wallet.publicKey, systemProgram: SystemProgram.programId, }, }), ]), }; }); } /** * Synchronizes an EscrowHistory. * @returns */ sync({ locker, owner, era, }) { return __awaiter(this, void 0, void 0, function* () { const [lockerHistory] = yield findLockerHistoryAddress(locker, era); const [escrow] = yield findEscrowAddress(locker, owner); const [escrowHistory] = yield findEscrowHistoryAddress(escrow, era); return this.provider.newTX([ this.program.instruction.sync({ accounts: { locker, escrow, lockerHistory, escrowHistory, }, }), ]); }); } } //# sourceMappingURL=snapshots.js.map