import { ERC721TokenType } from "@imtbl/imx-sdk"
import type { Link } from "@imtbl/imx-sdk"
import type { Maybe } from "@rarible/types"
import type { TransferRequest, TransferResponse } from "./domain"
import { getTransferResponse } from "./common/get-tranfer-response"
export async function transfer(
link: Maybe,
request: TransferRequest,
): Promise {
if (link === undefined) {
throw new Error("Wallet undefined")
}
const { assetClass, contract, tokenId, to } = request
if (assetClass !== ERC721TokenType.ERC721) {
throw new Error("Unsupported assetClass")
}
const { result } = await link.transfer([{
type: ERC721TokenType.ERC721,
tokenId,
tokenAddress: contract,
toAddress: to,
}])
const resp = result[0]
return getTransferResponse(resp)
}