mirror of
https://github.com/AthanorLabs/atomic-swap.git
synced 2026-01-07 21:34:05 -05:00
63 lines
2.0 KiB
Go
63 lines
2.0 KiB
Go
// Copyright 2023 The AthanorLabs/atomic-swap Authors
|
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
|
|
package contracts
|
|
|
|
import (
|
|
"math/big"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
|
|
"github.com/athanorlabs/atomic-swap/common/types"
|
|
"github.com/athanorlabs/atomic-swap/common/vjson"
|
|
)
|
|
|
|
// swap is the same as the auto-generated SwapCreatorSwap type, but with some type
|
|
// adjustments and annotations for JSON marshalling.
|
|
type swap struct {
|
|
Owner common.Address `json:"owner" validate:"required"`
|
|
Claimer common.Address `json:"claimer" validate:"required"`
|
|
ClaimCommitment types.Hash `json:"claimCommitment" validate:"required"`
|
|
RefundCommitment types.Hash `json:"refundCommitment" validate:"required"`
|
|
Timeout1 *big.Int `json:"timeout1" validate:"required"`
|
|
Timeout2 *big.Int `json:"timeout2" validate:"required"`
|
|
Asset common.Address `json:"asset"`
|
|
Value *big.Int `json:"value" validate:"required"`
|
|
Nonce *big.Int `json:"nonce" validate:"required"`
|
|
}
|
|
|
|
// MarshalJSON provides JSON marshalling for SwapCreatorSwap
|
|
func (sfs *SwapCreatorSwap) MarshalJSON() ([]byte, error) {
|
|
return vjson.MarshalStruct(&swap{
|
|
Owner: sfs.Owner,
|
|
Claimer: sfs.Claimer,
|
|
ClaimCommitment: sfs.ClaimCommitment,
|
|
RefundCommitment: sfs.RefundCommitment,
|
|
Timeout1: sfs.Timeout1,
|
|
Timeout2: sfs.Timeout2,
|
|
Asset: sfs.Asset,
|
|
Value: sfs.Value,
|
|
Nonce: sfs.Nonce,
|
|
})
|
|
}
|
|
|
|
// UnmarshalJSON provides JSON unmarshalling for SwapCreatorSwap
|
|
func (sfs *SwapCreatorSwap) UnmarshalJSON(data []byte) error {
|
|
s := &swap{}
|
|
if err := vjson.UnmarshalStruct(data, s); err != nil {
|
|
return err
|
|
}
|
|
*sfs = SwapCreatorSwap{
|
|
Owner: s.Owner,
|
|
Claimer: s.Claimer,
|
|
ClaimCommitment: s.ClaimCommitment,
|
|
RefundCommitment: s.RefundCommitment,
|
|
Timeout1: s.Timeout1,
|
|
Timeout2: s.Timeout2,
|
|
Asset: s.Asset,
|
|
Value: s.Value,
|
|
Nonce: s.Nonce,
|
|
}
|
|
return nil
|
|
}
|