import { generateTypes } from '@tharsis/eip712'; import { Chain, Sender, Fee } from '@tharsis/transactions'; import * as auctionTx from '../proto/vulcanize/auction/v1beta1/tx'; import { createTx } from './util'; const MSG_COMMIT_BID_TYPES = { MsgValue: [ { name: 'auction_id', type: 'string' }, { name: 'commit_hash', type: 'string' }, { name: 'signer', type: 'string' } ] }; export interface MessageMsgCommitBid { auctionId: string, commitHash: string, } const MSG_REVEAL_BID_TYPES = { MsgValue: [ { name: 'auction_id', type: 'string' }, { name: 'reveal', type: 'string' }, { name: 'signer', type: 'string' } ] }; export interface MessageMsgRevealBid { auctionId: string, reveal: string, } export function createTxMsgCommitBid ( chain: Chain, sender: Sender, fee: Fee, memo: string, params: MessageMsgCommitBid ) { const types = generateTypes(MSG_COMMIT_BID_TYPES); const msg = createMsgCommitBid( params.auctionId, params.commitHash, sender.accountAddress ); const msgCosmos = protoCreateMsgCommitBid( params.auctionId, params.commitHash, sender.accountAddress ); return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } export function createTxMsgRevealBid ( chain: Chain, sender: Sender, fee: Fee, memo: string, params: MessageMsgRevealBid ) { const types = generateTypes(MSG_REVEAL_BID_TYPES); const msg = createMsgRevealBid( params.auctionId, params.reveal, sender.accountAddress ); const msgCosmos = protoCreateMsgRevealBid( params.auctionId, params.reveal, sender.accountAddress ); return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } function createMsgCommitBid ( auctionId: string, commitHash: string, signer: string ) { return { type: 'auction/MsgCommitBid', value: { auction_id: auctionId, commit_hash: commitHash, signer } }; } const protoCreateMsgCommitBid = ( auctionId: string, commitHash: string, signer: string ) => { const commitBidMessage = new auctionTx.vulcanize.auction.v1beta1.MsgCommitBid({ auction_id: auctionId, commit_hash: commitHash, signer }); return { message: commitBidMessage, path: 'vulcanize.auction.v1beta1.MsgCommitBid' }; }; function createMsgRevealBid ( auctionId: string, reveal: string, signer: string ) { return { type: 'auction/MsgRevealBid', value: { auction_id: auctionId, reveal, signer } }; } const protoCreateMsgRevealBid = ( auctionId: string, reveal: string, signer: string ) => { const revealBidMessage = new auctionTx.vulcanize.auction.v1beta1.MsgRevealBid({ auction_id: auctionId, reveal, signer }); return { message: revealBidMessage, path: 'vulcanize.auction.v1beta1.MsgRevealBid' }; };