You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
849 B
37 lines
849 B
2 years ago
|
import { Cell, beginCell, Address, beginDict, Slice, toNano } from "ton";
|
||
|
|
||
|
let contentSlice2 : Slice;
|
||
|
|
||
|
|
||
|
|
||
|
enum OPS {
|
||
|
ChangeAdmin = 3,
|
||
|
ReplaceMetadata = 4,
|
||
|
Mint = 21,
|
||
|
InternalTransfer = 0x178d4519,
|
||
|
Transfer = 0xf8a7ea5,
|
||
|
Burn = 0x595f07bc,
|
||
|
}
|
||
|
|
||
|
export type JettonMetaDataKeys =
|
||
|
| "name"
|
||
|
| "description"
|
||
|
| "image"
|
||
|
| "symbol"
|
||
|
| "image_data"
|
||
|
| "decimals";
|
||
|
|
||
|
async function parseJettonOffchainMetadata(contentSlice: Slice): Promise<{
|
||
|
metadata: { [s in JettonMetaDataKeys]?: string };
|
||
|
isIpfs: boolean;
|
||
|
}> {
|
||
|
const jsonURI = contentSlice
|
||
|
.loadBits(await () => (contentSlice.remainingBits()))
|
||
|
.toString("ascii")
|
||
|
.replace("ipfs://", "https://ipfs.io/ipfs/");
|
||
|
|
||
|
return {
|
||
|
metadata: (await axios.get(jsonURI)).data,
|
||
|
isIpfs: /(^|\/)ipfs[.:]/.test(jsonURI),
|
||
|
};
|
||
|
}
|