Repository navigation
Expand file tree
/
Copy pathaptos.js
More file actions
127 lines (114 loc) · 2.99 KB
/
Copy pathaptos.js
File metadata and controls
127 lines (114 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
const { AptosMarketClient } = require("@indexer-xyz/aptos");
const {
Account,
Aptos,
AptosConfig,
Deserializer,
Ed25519PrivateKey,
InputEntryFunctionData,
Network,
RawTransaction,
TransactionPayloadEntryFunction,
} = require("@aptos-labs/ts-sdk");
const aptos = new Aptos(new AptosConfig({ network: Network.MAINNET }));
const getAccount = (address) => {
switch (address) {
// Ice Blue
case env.WALLET_ADDRESS_1:
let pk = new Ed25519PrivateKey(toUint8Array(env.WALLET_PRIVATE_KEY_1));
let account1 = Account.fromPrivateKey({ privateKey: pk });
return account1;
// Apt Monkey
}
};
function toUint8Array(hex) {
return Buffer.from(hex.replace(/^0x/, ""), "hex");
}
function toHexString(byteArray) {
return Buffer.from(byteArray).toString("hex");
}
const aptosMarketClient = new AptosMarketClient({
apiKey: env.API_KEY,
apiUser: env.API_USER,
});
const txHash = async (hash) => {
const tx = await aptos.getTransactionByHash({ transactionHash: hash });
if (tx && tx.success) {
return tx;
} else if (tx && tx.success == false) {
console.log(`tx failed: ${hash}`);
return tx;
} else {
console.log("txHash waiting..");
await new Promise((resolve) => setTimeout(resolve, 1000));
return txHash(hash);
}
};
const signAndSubmit = async (data, wallet) => {
const transaction = await aptos.transaction.build.simple({
sender: getAccount(wallet).accountAddress,
data: data,
});
// console.log(transaction);
// return transaction;
const committedTransaction = await aptos.signAndSubmitTransaction({
signer: getAccount(wallet),
transaction,
});
console.log(committedTransaction);
hash = committedTransaction.hash;
//find if tx is confirmed
const tx = await txHash(hash);
return tx;
// return committedTransaction;
};
const convertToAptos = (price) => {
return price / 100000000;
};
const createCollectionBid = async (
collectionId,
bidAmount,
numOfBids,
wallet,
) => {
console.log(collectionId, bidAmount, numOfBids);
const payload = await aptosMarketClient.placeCollectionBid({
collectionId: collectionId,
bidAmount: convertToAptos(bidAmount),
numOfBids: numOfBids,
});
console.log("here ->", payload);
const tx = await signAndSubmit(payload, wallet);
console.log(`createCollectionBid(): ${bidAmount}`);
return tx;
};
const listNft = async (nft, price, wallet) => {
try {
const payload = await aptosMarketClient.listNfts({
nfts: [
{
id: nft.id,
listPrice: convertToAptos(price),
},
],
});
const tx = await signAndSubmit(payload, wallet);
console.log(`listNft(): ${price}`);
return tx;
} catch (e) {
throw e;
}
};
const removeCollectionBid = async (bid, wallet) => {
const payload = await aptosMarketClient.removeCollectionBid({
bidId: bid?.id,
});
const tx = await signAndSubmit(payload, wallet);
return tx;
};
module.exports = {
createCollectionBid,
listNft,
removeCollectionBid,
getAccount,
};