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=

Выполнить команду


Для локальной разработки. Не используйте в интернете!