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 XTokenLocatorFields { address: types.ForeignAddrFields chainId: number } export interface XTokenLocatorJSON { address: types.ForeignAddrJSON chainId: number } export class XTokenLocator { readonly address: types.ForeignAddr readonly chainId: number constructor(fields: XTokenLocatorFields) { this.address = new types.ForeignAddr({ ...fields.address }) this.chainId = fields.chainId } static layout(property?: string) { return borsh.struct( [types.ForeignAddr.layout("address"), borsh.u16("chainId")], property ) } // eslint-disable-next-line @typescript-eslint/no-explicit-any static fromDecoded(obj: any) { return new XTokenLocator({ address: types.ForeignAddr.fromDecoded(obj.address), chainId: obj.chainId, }) } static toEncodable(fields: XTokenLocatorFields) { return { address: types.ForeignAddr.toEncodable(fields.address), chainId: fields.chainId, } } toJSON(): XTokenLocatorJSON { return { address: this.address.toJSON(), chainId: this.chainId, } } static fromJSON(obj: XTokenLocatorJSON): XTokenLocator { return new XTokenLocator({ address: types.ForeignAddr.fromJSON(obj.address), chainId: obj.chainId, }) } toEncodable() { return XTokenLocator.toEncodable(this) } }