PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-core/dist/src/bitgo/staking
Просмотр файла: goStakingWallet.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GoStakingWallet = void 0;
const assert_1 = __importDefault(require("assert"));
class GoStakingWallet {
constructor(wallet) {
this.wallet = wallet;
this.bitgo = wallet.bitgo;
}
get accountId() {
return this.wallet.id();
}
async stake(options) {
// call preview
const preview = await this.previewStake({
amount: options.amount,
clientId: options.clientId,
});
// sign the transaction
const halfSignedTransaction = (await this.wallet.prebuildAndSignTransaction({
walletPassphrase: options.walletPassphrase,
prebuildTx: {
payload: preview.payload,
},
}));
// call finalize to submit the go staking request to go staking service
(0, assert_1.default)(halfSignedTransaction.halfSigned?.payload, 'missing payload in half signed transaction');
const finalOptions = {
amount: options.amount,
clientId: options.clientId,
frontTransferSendRequest: {
halfSigned: {
payload: halfSignedTransaction.halfSigned.payload,
},
},
};
return (await this.finalizeStake(finalOptions));
}
/**
* Unstake request
* @param options
*/
async unstake(options) {
return (await this.createGoStakingRequest(options, 'finalize', 'UNSTAKE'));
}
/**
* Preview staking request
* @param options
*/
async previewStake(options) {
return (await this.createGoStakingRequest(options, 'preview', 'STAKE'));
}
/**
* Finalize staking request
* will prepare the payload and sign the transaction
* and submit it to the go-staking-service
* @param options
*/
async finalizeStake(options) {
return (await this.createGoStakingRequest(options, 'finalize', 'STAKE'));
}
/**
* Get go staking request
* @param goStakingRequestId
*/
async getGoStakingRequest(goStakingRequestId) {
return await this.bitgo.get(this.bitgo.microservicesUrl(this.getGoStakingRequestURL(goStakingRequestId))).result();
}
async createGoStakingRequest(options, path, type) {
return await this.bitgo
.post(this.bitgo.microservicesUrl(`${this.goStakingRequestBaseURL()}/${path}`))
.send({
...options,
type: type,
})
.result();
}
goStakingBaseURL() {
return `/api/go-staking/v1`;
}
goStakingRequestBaseURL() {
return `${this.goStakingBaseURL()}/${this.wallet.baseCoin.getChain()}/accounts/${this.accountId}/requests`;
}
getGoStakingRequestURL(stakingRequestId) {
return `${this.goStakingRequestBaseURL()}/${stakingRequestId}`;
}
}
exports.GoStakingWallet = GoStakingWallet;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29TdGFraW5nV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3N0YWtpbmcvZ29TdGFraW5nV2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQWNBLG9EQUE0QjtBQUU1QixNQUFhLGVBQWU7SUFLMUIsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQXVCO1FBQ2pDLGVBQWU7UUFDZixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDdEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUNMLENBQUMsQ0FBQztRQUV6Qix1QkFBdUI7UUFDdkIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQztZQUMxRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO1lBQzFDLFVBQVUsRUFBRTtnQkFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87YUFDSTtTQUMvQixDQUFDLENBQTZCLENBQUM7UUFFaEMsdUVBQXVFO1FBQ3ZFLElBQUEsZ0JBQU0sRUFBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLDRDQUE0QyxDQUFDLENBQUM7UUFDaEcsTUFBTSxZQUFZLEdBQTJCO1lBQzNDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7WUFDMUIsd0JBQXdCLEVBQUU7Z0JBQ3hCLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLE9BQU87aUJBQ2xEO2FBQ0Y7U0FDRixDQUFDO1FBQ0YsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBcUIsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUN2QyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBcUIsQ0FBQztJQUNqRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUEyQjtRQUNwRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBNkIsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQStCO1FBQ3pELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFxQixDQUFDO0lBQy9GLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsa0JBQTBCO1FBQ2xELE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNySCxDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUNsQyxPQUFvRCxFQUNwRCxJQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM5RSxJQUFJLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7YUFDRCxNQUFNLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxJQUFJLENBQUMsU0FBUyxXQUFXLENBQUM7SUFDN0csQ0FBQztJQUVPLHNCQUFzQixDQUFDLGdCQUF3QjtRQUNyRCxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0NBQ0Y7QUF0R0QsMENBc0dDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElXYWxsZXQsIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHtcbiAgQmFzZUdvU3Rha2VPcHRpb25zLFxuICBGcm9udFRyYW5zZmVyU2VuZFJlcXVlc3QsXG4gIEdvU3Rha2VGaW5hbGl6ZU9wdGlvbnMsXG4gIEdvU3Rha2VPcHRpb25zLFxuICBHb1N0YWtpbmdSZXF1ZXN0LFxuICBJR29TdGFraW5nV2FsbGV0LFxuICBVbnNpZ25lZEdvU3Rha2luZ1JlcXVlc3QsXG59IGZyb20gJy4vaUdvU3Rha2luZ1dhbGxldCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmV4cG9ydCBjbGFzcyBHb1N0YWtpbmdXYWxsZXQgaW1wbGVtZW50cyBJR29TdGFraW5nV2FsbGV0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0KSB7XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy5iaXRnbyA9IHdhbGxldC5iaXRnbztcbiAgfVxuXG4gIGdldCBhY2NvdW50SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuaWQoKTtcbiAgfVxuXG4gIGFzeW5jIHN0YWtlKG9wdGlvbnM6IEdvU3Rha2VPcHRpb25zKTogUHJvbWlzZTxHb1N0YWtpbmdSZXF1ZXN0PiB7XG4gICAgLy8gY2FsbCBwcmV2aWV3XG4gICAgY29uc3QgcHJldmlldyA9IGF3YWl0IHRoaXMucHJldmlld1N0YWtlKHtcbiAgICAgIGFtb3VudDogb3B0aW9ucy5hbW91bnQsXG4gICAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZCxcbiAgICB9IGFzIEJhc2VHb1N0YWtlT3B0aW9ucyk7XG5cbiAgICAvLyBzaWduIHRoZSB0cmFuc2FjdGlvblxuICAgIGNvbnN0IGhhbGZTaWduZWRUcmFuc2FjdGlvbiA9IChhd2FpdCB0aGlzLndhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICB3YWxsZXRQYXNzcGhyYXNlOiBvcHRpb25zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICBwcmVidWlsZFR4OiB7XG4gICAgICAgIHBheWxvYWQ6IHByZXZpZXcucGF5bG9hZCxcbiAgICAgIH0gYXMgUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCxcbiAgICB9KSkgYXMgRnJvbnRUcmFuc2ZlclNlbmRSZXF1ZXN0O1xuXG4gICAgLy8gY2FsbCBmaW5hbGl6ZSB0byBzdWJtaXQgdGhlIGdvIHN0YWtpbmcgcmVxdWVzdCB0byBnbyBzdGFraW5nIHNlcnZpY2VcbiAgICBhc3NlcnQoaGFsZlNpZ25lZFRyYW5zYWN0aW9uLmhhbGZTaWduZWQ/LnBheWxvYWQsICdtaXNzaW5nIHBheWxvYWQgaW4gaGFsZiBzaWduZWQgdHJhbnNhY3Rpb24nKTtcbiAgICBjb25zdCBmaW5hbE9wdGlvbnM6IEdvU3Rha2VGaW5hbGl6ZU9wdGlvbnMgPSB7XG4gICAgICBhbW91bnQ6IG9wdGlvbnMuYW1vdW50LFxuICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgICBmcm9udFRyYW5zZmVyU2VuZFJlcXVlc3Q6IHtcbiAgICAgICAgaGFsZlNpZ25lZDoge1xuICAgICAgICAgIHBheWxvYWQ6IGhhbGZTaWduZWRUcmFuc2FjdGlvbi5oYWxmU2lnbmVkLnBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmZpbmFsaXplU3Rha2UoZmluYWxPcHRpb25zKSkgYXMgR29TdGFraW5nUmVxdWVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN0YWtlIHJlcXVlc3RcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGFzeW5jIHVuc3Rha2Uob3B0aW9uczogQmFzZUdvU3Rha2VPcHRpb25zKTogUHJvbWlzZTxHb1N0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmNyZWF0ZUdvU3Rha2luZ1JlcXVlc3Qob3B0aW9ucywgJ2ZpbmFsaXplJywgJ1VOU1RBS0UnKSkgYXMgR29TdGFraW5nUmVxdWVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2aWV3IHN0YWtpbmcgcmVxdWVzdFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmV2aWV3U3Rha2Uob3B0aW9uczogQmFzZUdvU3Rha2VPcHRpb25zKTogUHJvbWlzZTxVbnNpZ25lZEdvU3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuY3JlYXRlR29TdGFraW5nUmVxdWVzdChvcHRpb25zLCAncHJldmlldycsICdTVEFLRScpKSBhcyBVbnNpZ25lZEdvU3Rha2luZ1JlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRmluYWxpemUgc3Rha2luZyByZXF1ZXN0XG4gICAqIHdpbGwgcHJlcGFyZSB0aGUgcGF5bG9hZCBhbmQgc2lnbiB0aGUgdHJhbnNhY3Rpb25cbiAgICogYW5kIHN1Ym1pdCBpdCB0byB0aGUgZ28tc3Rha2luZy1zZXJ2aWNlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZpbmFsaXplU3Rha2Uob3B0aW9uczogR29TdGFrZUZpbmFsaXplT3B0aW9ucyk6IFByb21pc2U8R29TdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5jcmVhdGVHb1N0YWtpbmdSZXF1ZXN0KG9wdGlvbnMsICdmaW5hbGl6ZScsICdTVEFLRScpKSBhcyBHb1N0YWtpbmdSZXF1ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBnbyBzdGFraW5nIHJlcXVlc3RcbiAgICogQHBhcmFtIGdvU3Rha2luZ1JlcXVlc3RJZFxuICAgKi9cbiAgYXN5bmMgZ2V0R29TdGFraW5nUmVxdWVzdChnb1N0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8R29TdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5nZXRHb1N0YWtpbmdSZXF1ZXN0VVJMKGdvU3Rha2luZ1JlcXVlc3RJZCkpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlR29TdGFraW5nUmVxdWVzdChcbiAgICBvcHRpb25zOiBCYXNlR29TdGFrZU9wdGlvbnMgfCBHb1N0YWtlRmluYWxpemVPcHRpb25zLFxuICAgIHBhdGg6ICdwcmV2aWV3JyB8ICdmaW5hbGl6ZScsXG4gICAgdHlwZTogc3RyaW5nXG4gICk6IFByb21pc2U8R29TdGFraW5nUmVxdWVzdCB8IFVuc2lnbmVkR29TdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYCR7dGhpcy5nb1N0YWtpbmdSZXF1ZXN0QmFzZVVSTCgpfS8ke3BhdGh9YCkpXG4gICAgICAuc2VuZCh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICB9KVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnb1N0YWtpbmdCYXNlVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9nby1zdGFraW5nL3YxYDtcbiAgfVxuXG4gIHByaXZhdGUgZ29TdGFraW5nUmVxdWVzdEJhc2VVUkwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZ29TdGFraW5nQmFzZVVSTCgpfS8ke3RoaXMud2FsbGV0LmJhc2VDb2luLmdldENoYWluKCl9L2FjY291bnRzLyR7dGhpcy5hY2NvdW50SWR9L3JlcXVlc3RzYDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R29TdGFraW5nUmVxdWVzdFVSTChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmdvU3Rha2luZ1JlcXVlc3RCYXNlVVJMKCl9LyR7c3Rha2luZ1JlcXVlc3RJZH1gO1xuICB9XG59XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!