Skip to content

Commit

Permalink
MULTIVERSEX: add initial v3 support
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexeyAdoniev committed Nov 16, 2023
1 parent f2305bc commit dc7bb71
Show file tree
Hide file tree
Showing 7 changed files with 465 additions and 136 deletions.
3 changes: 3 additions & 0 deletions src/factory/factories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export namespace ChainFactoryConfigs {
"erd1qqqqqqqqqqqqqpgqc854pa9ruzgs5f8rdzzc02xgq8kqku3ng6vs59vmf8",
esdt_nft: "XPNFT-af3fde",
esdt_swap: "WEGLD-708f9b",
elrondApi: "https://devnet-api.multiversx.com",
v3_bridge:
"erd1qqqqqqqqqqqqqpgqghvly0npf6ewpmzh47ud76ssh6nppu4e7hnses7qlz",
notifier,
Expand Down Expand Up @@ -698,6 +699,7 @@ export namespace ChainFactoryConfigs {
esdt_nft: "XPNFT-976581",
esdt_swap: "WEGLD-8c393e",
v3_bridge: "",
elrondApi: "",
notifier,
nonce: Chain.ELROND,
feeMargin,
Expand Down Expand Up @@ -879,6 +881,7 @@ export namespace ChainFactoryConfigs {
esdt_nft: "XPNFT-cb7482",
esdt_swap: "WEGLD-5f1f8d",
v3_bridge: "",
elrondApi: "",
notifier,
nonce: Chain.ELROND,
feeMargin,
Expand Down
8 changes: 4 additions & 4 deletions src/factory/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import {
GetExtraFees,
LockNFT,
ClaimV3NFT,
GetClaimData,
} from "../helpers/chain";
import { DfinityParams } from "../helpers/dfinity/dfinity";
import {
Expand Down Expand Up @@ -316,7 +317,7 @@ export type ChainFactory = {
): Promise<Resp | undefined>;

claimNFT<SignerF, RawNftF, Resp>(
fromChain: FullChain<never, unknown, unknown>,
fromChain: FullChain<never, unknown, unknown> & GetClaimData,
toChain: FullChain<SignerF, RawNftF, Resp>,
txHash: string,
sender: SignerF,
Expand Down Expand Up @@ -1153,15 +1154,14 @@ export function ChainFactory(
const initialClaimData = await Promise.allSettled([
fee || estimateClaimFee(from, storageContract),
storageContract.chainRoyalty(
CHAIN_INFO.get(from.getNonce())?.v3_chainId!
CHAIN_INFO.get(to.getNonce())?.v3_chainId!
),
]);

console.log(initialClaimData, "initialClaimData");
return await to.claimV3NFT(
signer,
helpers,
from,
to,
txHash,
storageContract,
{
Expand Down
26 changes: 17 additions & 9 deletions src/helpers/chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,34 +66,42 @@ export interface LockNFT<Signer, RawNft, Resp> {
): Promise<Resp | undefined>;
}

export type ClaimData = {
export type TokenInfo = {
royalty: string;
metadata: string;
name: string;
symbol: string;
image?: string;
};

export type DepTrxData = {
tokenId: string;
destinationChain: V3_ChainId;
destinationUserAddress: string;
sourceNftContractAddress: string;
tokenAmount: string;
nftType: "singular" | "multiple";
sourceChain: V3_ChainId;
royalty: string;
metadata: string;
name: string;
symbol: string;
};

export type ClaimData = DepTrxData & TokenInfo;

export interface GetClaimData {
getClaimData(
hash: string,
helpers: HelperMap<ChainNonce>,
to: FullChain<never, unknown, unknown>
helpers: HelperMap<ChainNonce>
): Promise<ClaimData>;
}

export interface GetTokenInfo {
getTokenInfo(depTrxData: DepTrxData): Promise<TokenInfo>;
}

export interface ClaimV3NFT<Signer, Resp> {
claimV3NFT(
sender: Signer,
helpers: HelperMap<ChainNonce>,
fromChain: FullChain<never, unknown, unknown>,
toChain: FullChain<never, unknown, unknown>,
fromChain: FullChain<never, unknown, unknown> & GetClaimData,
txHash: string,
storageContract: BridgeStorage,
initialClaimData: {
Expand Down
9 changes: 5 additions & 4 deletions src/helpers/elrond/elrond-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -289,11 +289,12 @@ const account = new Account(address);
createNft;
transferToSc;
//transferToSc(bridgeAddress, account, signer, "ALX-afef0b-01", "01");
await createNft("ALX-afef0b-06", address, account, signer);
await createNft("ALX-afef0b-07", address, account, signer);
await createNft("ALX-afef0b-08", address, account, signer);
await createNft("ALX-afef0b-09", address, account, signer);
await createNft("ALX-afef0b-10", address, account, signer);

//await createNft("ALX-afef0b-07", address, account, signer);
//await createNft("ALX-afef0b-08", address, account, signer);
//await createNft("ALX-afef0b-09", address, account, signer);
//await createNft("ALX-afef0b-10", address, account, signer);
})();

//console.log(bridgeContract);
Loading

0 comments on commit dc7bb71

Please sign in to comment.