@saberhq/snapshots
Version:
The TypeScript SDK for the Saber Voting Escrow Snapshot system.
96 lines • 3.26 kB
JavaScript
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