import { PublicKey } from "@solana/web3.js" // eslint-disable-line @typescript-eslint/no-unused-vars import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars import * as borsh from "@project-serum/borsh" export interface SolOnRampInfoFields { minAmtOut: BN input: number solanaWallet: types.ForeignAddrFields } export interface SolOnRampInfoJSON { minAmtOut: string input: number solanaWallet: types.ForeignAddrJSON } export class SolOnRampInfo { readonly minAmtOut: BN readonly input: number readonly solanaWallet: types.ForeignAddr constructor(fields: SolOnRampInfoFields) { this.minAmtOut = fields.minAmtOut this.input = fields.input this.solanaWallet = new types.ForeignAddr({ ...fields.solanaWallet }) } static layout(property?: string) { return borsh.struct( [ borsh.u64("minAmtOut"), borsh.u8("input"), types.ForeignAddr.layout("solanaWallet"), ], property ) } // eslint-disable-next-line @typescript-eslint/no-explicit-any static fromDecoded(obj: any) { return new SolOnRampInfo({ minAmtOut: obj.minAmtOut, input: obj.input, solanaWallet: types.ForeignAddr.fromDecoded(obj.solanaWallet), }) } static toEncodable(fields: SolOnRampInfoFields) { return { minAmtOut: fields.minAmtOut, input: fields.input, solanaWallet: types.ForeignAddr.toEncodable(fields.solanaWallet), } } toJSON(): SolOnRampInfoJSON { return { minAmtOut: this.minAmtOut.toString(), input: this.input, solanaWallet: this.solanaWallet.toJSON(), } } static fromJSON(obj: SolOnRampInfoJSON): SolOnRampInfo { return new SolOnRampInfo({ minAmtOut: new BN(obj.minAmtOut), input: obj.input, solanaWallet: types.ForeignAddr.fromJSON(obj.solanaWallet), }) } toEncodable() { return SolOnRampInfo.toEncodable(this) } }