├── .gitignore ├── .DS_Store ├── src ├── .DS_Store ├── utils │ ├── uuid.ts │ ├── randomAddress.ts │ ├── randomKeyPair.ts │ ├── index.ts │ ├── EligibleInternalTx.ts │ ├── createTempFile.ts │ ├── createKeyPair.ts │ ├── createSender.ts │ └── importKeyPair.ts ├── sources │ ├── .DS_Store │ └── nft-marketplace-v2.fc ├── wrappers │ ├── .DS_Store │ ├── getgems │ │ ├── .DS_Store │ │ ├── NftAuction │ │ │ ├── .DS_Store │ │ │ └── nft-auction │ │ │ │ ├── .DS_Store │ │ │ │ ├── nft-auction-code.boc │ │ │ │ ├── struct │ │ │ │ ├── op-codes.func │ │ │ │ ├── math.func │ │ │ │ ├── exit-codes.func │ │ │ │ ├── msg-utils.func │ │ │ │ └── get-met.func │ │ │ │ ├── build.sh │ │ │ │ ├── nft-auction-code.base64 │ │ │ │ └── nft-auction.func │ │ ├── NftAuctionV2 │ │ │ └── nft-auction-v2 │ │ │ │ ├── nft-auction-v2-code.boc │ │ │ │ ├── struct │ │ │ │ ├── op-codes.func │ │ │ │ ├── math.func │ │ │ │ ├── exit-codes.func │ │ │ │ ├── msg-utils.func │ │ │ │ ├── get-met.func │ │ │ │ └── storage.func │ │ │ │ ├── build.sh │ │ │ │ └── nft-auction-v2-code.base64 │ │ ├── params.fc │ │ ├── NftRaffle │ │ │ └── nft-raffle │ │ │ │ ├── struct │ │ │ │ ├── get-methods.func │ │ │ │ ├── constants.func │ │ │ │ ├── storage.func │ │ │ │ ├── handles.func │ │ │ │ └── utils.func │ │ │ │ ├── build.sh │ │ │ │ └── main.func │ │ ├── op-codes.fc │ │ ├── NftMarketplace │ │ │ ├── nft-marketplace.fc │ │ │ └── NftMarketplace.ts │ │ └── NftCollectionEditable │ │ │ └── NftCollectionEditable.ts │ └── standard │ │ ├── NftItemRoyalty.ts │ │ ├── NftCollectionRoyalty.ts │ │ ├── NftCollection.ts │ │ └── NftItem.ts ├── transaction-parsing │ └── index.ts ├── index.ts ├── ton-api │ └── index.ts └── storage │ └── index.ts ├── examples ├── assets │ ├── 0.jpg │ └── 0.json ├── transaction-parsing.ts ├── TonAPI.ts ├── transferNft.ts ├── mintNft.ts └── deployNftCollection.ts ├── docs ├── .nojekyll └── assets │ └── highlight.css ├── cli ├── dist │ ├── src │ │ ├── utils │ │ │ ├── uuid.js.map │ │ │ ├── uuid.js │ │ │ ├── index.js.map │ │ │ ├── randomAddress.js.map │ │ │ ├── randomKeyPair.js.map │ │ │ ├── combineFunc.js.map │ │ │ ├── randomAddress.js │ │ │ ├── EligibleInternalTx.js.map │ │ │ ├── createSender.js.map │ │ │ ├── combineFunc.js │ │ │ ├── EligibleInternalTx.js │ │ │ ├── importKeyPair.js.map │ │ │ ├── createTempFile.js.map │ │ │ ├── FetchAndParseTransaction.js.map │ │ │ ├── randomKeyPair.js │ │ │ ├── index.js │ │ │ ├── createSender.js │ │ │ ├── importKeyPair.js │ │ │ ├── parseTransaction.js.map │ │ │ ├── FetchAndParseTransaction.js │ │ │ ├── parseTransaction.js │ │ │ └── createTempFile.js │ │ ├── transaction-parsing │ │ │ ├── index.js.map │ │ │ ├── RoyaltyInfo.js.map │ │ │ ├── EditContent.js.map │ │ │ ├── index.js │ │ │ ├── NftTransfer.js.map │ │ │ ├── TransferEditorship.js.map │ │ │ ├── RoyaltyInfo.js │ │ │ ├── EditContent.js │ │ │ ├── NftTransfer.js │ │ │ └── TransferEditorship.js │ │ ├── index.js.map │ │ ├── ton-api │ │ │ ├── index.js.map │ │ │ └── index.js │ │ ├── wrappers │ │ │ ├── standard │ │ │ │ ├── NftItemRoyalty.js.map │ │ │ │ ├── NftItem.js.map │ │ │ │ └── NftItemRoyalty.js │ │ │ └── getgems │ │ │ │ ├── NftMarketplace.js.map │ │ │ │ ├── NftFixedPrice.js.map │ │ │ │ ├── NftFixedPriceV2.js.map │ │ │ │ ├── NftFixedPriceV3.js.map │ │ │ │ ├── NftItem.js.map │ │ │ │ ├── SbtSingle.js.map │ │ │ │ ├── NftSingle.js.map │ │ │ │ ├── NftMarketplace.js │ │ │ │ ├── NftOffer.js.map │ │ │ │ ├── NftAuctionV2.js.map │ │ │ │ ├── NftFixedPrice.js │ │ │ │ └── NftCollection.js.map │ │ ├── types │ │ │ ├── OffchainContent.js.map │ │ │ └── OffchainContent.js │ │ ├── storage │ │ │ ├── AmazonS3.js.map │ │ │ └── Pinata.js.map │ │ └── index.js │ └── cli │ │ └── src │ │ ├── utils │ │ ├── createSender.js.map │ │ ├── createKeyPair.js.map │ │ ├── importKeyPair.js.map │ │ ├── createSender.js │ │ ├── createKeyPair.js │ │ └── importKeyPair.js │ │ ├── nftSingle.js.map │ │ ├── nftCollection.js.map │ │ └── nftSingle.js ├── tsconfig.json ├── src │ ├── utils │ │ ├── createKeyPair.ts │ │ ├── createSender.ts │ │ └── importKeyPair.ts │ ├── nftSingle.ts │ └── nftCollection.ts ├── package.json └── README.md ├── tsconfig.json ├── .eslintrc.json ├── package.json └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .git 2 | node_modules 3 | yarn-error.log 4 | dist -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/.DS_Store -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/.DS_Store -------------------------------------------------------------------------------- /src/utils/uuid.ts: -------------------------------------------------------------------------------- 1 | import {v4} from 'uuid' 2 | 3 | export const uuid = () => v4() -------------------------------------------------------------------------------- /examples/assets/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/examples/assets/0.jpg -------------------------------------------------------------------------------- /src/sources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/sources/.DS_Store -------------------------------------------------------------------------------- /src/wrappers/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/wrappers/.DS_Store -------------------------------------------------------------------------------- /src/wrappers/getgems/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/wrappers/getgems/.DS_Store -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/wrappers/getgems/NftAuction/.DS_Store -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/wrappers/getgems/NftAuction/nft-auction/.DS_Store -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/nft-auction-code.boc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/wrappers/getgems/NftAuction/nft-auction/nft-auction-code.boc -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/nft-auction-v2-code.boc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ton-community/nft-sdk/HEAD/src/wrappers/getgems/NftAuctionV2/nft-auction-v2/nft-auction-v2-code.boc -------------------------------------------------------------------------------- /src/utils/randomAddress.ts: -------------------------------------------------------------------------------- 1 | import {Address} from "ton-core"; 2 | import {pseudoRandomBytes} from "crypto"; 3 | 4 | export function randomAddress() { 5 | return new Address(0, pseudoRandomBytes(256/8)) 6 | } -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/struct/op-codes.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; op codes 3 | ;; 4 | 5 | int op::transfer() asm "0x5fcc3d14 PUSHINT"; 6 | int op::ownership_assigned() asm "0x05138d91 PUSHINT"; -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/struct/op-codes.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; op codes 3 | ;; 4 | 5 | int op::transfer() asm "0x5fcc3d14 PUSHINT"; 6 | int op::ownership_assigned() asm "0x05138d91 PUSHINT"; -------------------------------------------------------------------------------- /src/utils/randomKeyPair.ts: -------------------------------------------------------------------------------- 1 | import {mnemonicNew, mnemonicToPrivateKey} from "ton-crypto"; 2 | 3 | export async function randomKeyPair() { 4 | let mnemonics = await mnemonicNew() 5 | return mnemonicToPrivateKey(mnemonics) 6 | } -------------------------------------------------------------------------------- /cli/dist/src/utils/uuid.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../../../src/utils/uuid.ts"],"names":[],"mappings":";;;AAAA,+BAAuB;AAEhB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAA,SAAE,GAAE,CAAA;AAAjB,QAAA,IAAI,QAAa"} -------------------------------------------------------------------------------- /cli/dist/src/transaction-parsing/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transaction-parsing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,gDAA6B;AAC7B,gDAA6B;AAC7B,uDAAoC"} -------------------------------------------------------------------------------- /examples/assets/0.json: -------------------------------------------------------------------------------- 1 | {"name":"Test 1","description":"Test 1","content_url":"https://ton.org/_next/static/media/dimond_1_VP9.29bcaf8e.webm","attributes":[],"image":"https://gateway.pinata.cloud/ipfs/QmQFrrZnqS1VoSgmgtMomLXGr4NRnFjCTdFfemsbaGczQv"} -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './EligibleInternalTx' 2 | export * from './createTempFile' 3 | export * from './randomAddress' 4 | export * from './randomKeyPair' 5 | export * from './uuid' 6 | export * from './importKeyPair' 7 | export * from './createSender' -------------------------------------------------------------------------------- /cli/dist/src/utils/uuid.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.uuid = void 0; 4 | const uuid_1 = require("uuid"); 5 | const uuid = () => (0, uuid_1.v4)(); 6 | exports.uuid = uuid; 7 | //# sourceMappingURL=uuid.js.map -------------------------------------------------------------------------------- /cli/dist/src/utils/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,gDAA6B;AAC7B,mDAAgC;AAChC,qDAAkC;AAClC,kDAA+B;AAC/B,kDAA+B;AAC/B,yCAAsB;AACtB,kDAA+B;AAC/B,iDAA8B"} -------------------------------------------------------------------------------- /cli/dist/src/utils/randomAddress.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"randomAddress.js","sourceRoot":"","sources":["../../../../src/utils/randomAddress.ts"],"names":[],"mappings":";;;AAAA,uCAAiC;AACjC,mCAAyC;AAEzC,SAAgB,aAAa;IACzB,OAAO,IAAI,kBAAO,CAAC,CAAC,EAAE,IAAA,0BAAiB,EAAC,GAAG,GAAC,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC;AAFD,sCAEC"} -------------------------------------------------------------------------------- /cli/dist/src/utils/randomKeyPair.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"randomKeyPair.js","sourceRoot":"","sources":["../../../../src/utils/randomKeyPair.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA6D;AAE7D,SAAsB,aAAa;;QAC/B,IAAI,SAAS,GAAG,MAAM,IAAA,wBAAW,GAAE,CAAA;QACnC,OAAO,IAAA,iCAAoB,EAAC,SAAS,CAAC,CAAA;IAC1C,CAAC;CAAA;AAHD,sCAGC"} -------------------------------------------------------------------------------- /src/wrappers/getgems/params.fc: -------------------------------------------------------------------------------- 1 | int workchain() asm "0 PUSHINT"; 2 | 3 | () force_chain(slice addr) impure { 4 | (int wc, _) = parse_std_addr(addr); 5 | throw_unless(333, wc == workchain()); 6 | } 7 | 8 | slice null_addr() asm "b{00} PUSHSLICE"; 9 | int flag::regular() asm "0x10 PUSHINT"; 10 | int flag::bounce() asm "0x8 PUSHINT"; -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "commonjs", 5 | "sourceMap": true, 6 | "outDir": "./dist", 7 | "strict": true, 8 | "esModuleInterop": true 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | , "examples", "sandbox-examples" ], 13 | "exclude": [ 14 | "node_modules" 15 | ] 16 | } -------------------------------------------------------------------------------- /src/utils/EligibleInternalTx.ts: -------------------------------------------------------------------------------- 1 | import { Transaction } from 'ton-core' 2 | 3 | export function isEligibleTransaction(tx: Transaction): boolean { 4 | return ( 5 | tx.inMessage?.info.type == 'internal' && 6 | tx.description.type == 'generic' && 7 | tx.description.computePhase.type == 'vm' && 8 | tx.description.computePhase.exitCode == 0 9 | ) 10 | } -------------------------------------------------------------------------------- /cli/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "esModuleInterop": true, 5 | "target": "es6", 6 | "moduleResolution": "node", 7 | "sourceMap": true, 8 | "outDir": "dist", 9 | "strict": true, 10 | "baseUrl": ".", 11 | "paths": { 12 | "*": ["node_modules/*"] 13 | } 14 | }, 15 | "include": ["src/**/*"] 16 | } 17 | -------------------------------------------------------------------------------- /src/transaction-parsing/index.ts: -------------------------------------------------------------------------------- 1 | import { Transaction } from "ton-core" 2 | 3 | export function parseTransaction any)>(tx: Transaction, parsers: E[]): (E extends ((input: Transaction) => infer RR) ? RR : never) | undefined { 4 | 5 | for (const p of parsers) { 6 | const parsed = p(tx); 7 | if (parsed !== undefined) return parsed; 8 | } 9 | 10 | return undefined; 11 | } -------------------------------------------------------------------------------- /cli/dist/src/utils/combineFunc.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"combineFunc.js","sourceRoot":"","sources":["../../../../src/utils/combineFunc.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,+BAA6B;AAE7B,SAAgB,WAAW,CAAC,IAAY,EAAE,KAAe;IACrD,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;QACpB,GAAG,IAAI,IAAA,iBAAY,EAAC,IAAA,cAAO,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QACjD,GAAG,IAAI,IAAI,CAAA;KACd;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AATD,kCASC"} -------------------------------------------------------------------------------- /cli/dist/src/utils/randomAddress.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.randomAddress = void 0; 4 | const ton_core_1 = require("ton-core"); 5 | const crypto_1 = require("crypto"); 6 | function randomAddress() { 7 | return new ton_core_1.Address(0, (0, crypto_1.pseudoRandomBytes)(256 / 8)); 8 | } 9 | exports.randomAddress = randomAddress; 10 | //# sourceMappingURL=randomAddress.js.map -------------------------------------------------------------------------------- /cli/dist/src/utils/EligibleInternalTx.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"EligibleInternalTx.js","sourceRoot":"","sources":["../../../../src/utils/EligibleInternalTx.ts"],"names":[],"mappings":";;;AAEA,SAAgB,qBAAqB,CAAC,EAAe;;IACjD,OAAO,CACH,CAAA,MAAA,EAAE,CAAC,SAAS,0CAAE,IAAI,CAAC,IAAI,KAAI,UAAU;QACrC,EAAE,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS;QAChC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI;QACxC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAC5C,CAAA;AACL,CAAC;AAPD,sDAOC"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/struct/math.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; math utils 3 | ;; 4 | 5 | int division(int a, int b) { ;; division with factor 6 | return muldiv(a, 1000000000 {- 1e9 -}, b); 7 | } 8 | 9 | int multiply(int a, int b) { ;; multiply with factor 10 | return muldiv (a, b, 1000000000 {- 1e9 -}); 11 | } 12 | 13 | int math::get_percent(int a, int percent, int factor) { 14 | return division(multiply(a, percent), factor); 15 | } -------------------------------------------------------------------------------- /cli/dist/src/utils/createSender.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createSender.js","sourceRoot":"","sources":["../../../../src/utils/createSender.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6BAAmD;AAEnD,SAAsB,YAAY,CAC9B,OAAgB,EAChB,MAAkB;;QAElB,IAAI,MAAM,GAAG,sBAAgB,CAAC,MAAM,CAChC;YACI,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CACJ,CAAA;QAED,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CACtB,MAAM,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;CAAA;AAhBD,oCAgBC;AAED,kBAAe,YAAY,CAAC"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/struct/exit-codes.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; custom TVM exit codes 3 | ;; 4 | 5 | int exit::low_bid() asm "1000 PUSHINT"; 6 | int exit::auction_init() asm "1001 PUSHINT"; 7 | int exit::no_transfer() asm "1002 PUSHINT"; 8 | int exit::not_message() asm "1003 PUSHINT"; 9 | int exit::not_cancel() asm "1004 PUSHINT"; 10 | int exit::auction_end() asm "1005 PUSHINT"; 11 | int exit::already_activated() asm "1006 PUSHINT"; 12 | -------------------------------------------------------------------------------- /cli/dist/cli/src/utils/createSender.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createSender.js","sourceRoot":"","sources":["../../../../src/utils/createSender.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6BAAmD;AAEnD,SAAsB,YAAY,CAC9B,OAAgB,EAChB,MAAkB;;QAElB,IAAI,MAAM,GAAG,sBAAgB,CAAC,MAAM,CAChC;YACI,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CACJ,CAAA;QAED,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CACtB,MAAM,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;CAAA;AAhBD,oCAgBC;AAED,kBAAe,YAAY,CAAC"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftRaffle/nft-raffle/struct/get-methods.func: -------------------------------------------------------------------------------- 1 | #include "storage.func"; 2 | #include "handles.func"; 3 | 4 | _ raffle_state() method_id { 5 | init_data(); 6 | return (db::state, db::right_nfts_count, db::right_nfts_received, db::left_nfts_count, 7 | db::left_nfts_received, db::left_user, db::right_user, db::super_user, db::left_commission, 8 | db::right_commission, db::left_coins_got, db::right_coins_got, db::nft_transfer_fee, 9 | db::nfts, db::raffled_nfts); 10 | } -------------------------------------------------------------------------------- /cli/dist/cli/src/utils/createKeyPair.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createKeyPair.js","sourceRoot":"","sources":["../../../../src/utils/createKeyPair.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2BAAmC;AACnC,2CAA4D;AAE5D,SAAsB,aAAa;;QAC/B,IAAI,QAAQ,GAAG,MAAM,IAAA,wBAAW,GAAE,CAAA;QAClC,IAAI,OAAO,GAAG,MAAM,IAAA,iCAAoB,EAAC,QAAQ,CAAC,CAAA;QAElD,IAAA,kBAAa,EACT,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAC1B,CAAC;QAEF,IAAA,kBAAa,EACT,QAAQ,EACR,cAAc,OAAO,CAAC,SAAS,EAAE,CACpC,CAAA;IACL,CAAC;CAAA;AAbD,sCAaC;AAED,kBAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /src/utils/createTempFile.ts: -------------------------------------------------------------------------------- 1 | import {uuid} from './uuid' 2 | import * as os from 'os' 3 | import path from 'path' 4 | import {writeFile, unlink} from 'fs/promises' 5 | 6 | export async function createTempFile(ext: string) { 7 | const name = uuid() 8 | const fullPath = path.resolve(os.tmpdir(), name + ext) 9 | await writeFile(fullPath, Buffer.alloc(0)) 10 | return { 11 | name: fullPath, 12 | destroy: async () => { 13 | await unlink(fullPath) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/createKeyPair.ts: -------------------------------------------------------------------------------- 1 | import { writeFileSync } from "fs"; 2 | import {mnemonicNew, mnemonicToPrivateKey} from "ton-crypto" 3 | 4 | export async function createKeyPair() { 5 | let mnemonic = await mnemonicNew() 6 | let keypair = await mnemonicToPrivateKey(mnemonic) 7 | 8 | writeFileSync( 9 | "./keypair.json", 10 | JSON.stringify(keypair) 11 | ); 12 | 13 | writeFileSync( 14 | "./.env", 15 | `SECRET_KEY=${keypair.secretKey}` 16 | ) 17 | } 18 | 19 | export default createKeyPair; -------------------------------------------------------------------------------- /cli/dist/src/utils/combineFunc.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.combineFunc = void 0; 4 | const fs_1 = require("fs"); 5 | const path_1 = require("path"); 6 | function combineFunc(root, paths) { 7 | let res = ''; 8 | for (let path of paths) { 9 | res += (0, fs_1.readFileSync)((0, path_1.resolve)(root, path), 'utf-8'); 10 | res += '\n'; 11 | } 12 | return res; 13 | } 14 | exports.combineFunc = combineFunc; 15 | //# sourceMappingURL=combineFunc.js.map -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/struct/math.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; math utils 3 | ;; 4 | 5 | int division(int a, int b) { ;; division with factor 6 | return muldiv(a, 1000000000 {- 1e9 -}, b); 7 | } 8 | 9 | int multiply(int a, int b) { ;; multiply with factor 10 | return muldiv (a, b, 1000000000 {- 1e9 -}); 11 | } 12 | 13 | int math::get_percent(int a, int percent, int factor) { 14 | if (factor == 0) { 15 | return 0; 16 | } else { 17 | return division(multiply(a, percent), factor); 18 | } 19 | } -------------------------------------------------------------------------------- /src/wrappers/getgems/NftRaffle/nft-raffle/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MINPUT="./main.func" 4 | OUTPUT="./code" 5 | 6 | echo "building \"${MINPUT}\"" 7 | 8 | function errvar { 9 | echo "[ERR] \"FUNC_STDLIB_PATH\" and \"FIFTPATH\" env vars must be set" 10 | exit 11 | } 12 | 13 | [[ -z "${FIFTPATH}" ]] && errvar || : 14 | 15 | func -PA -o "${OUTPUT}.fif" ${MINPUT} 16 | echo -e "\"TonUtil.fif\" include\n$(cat ${OUTPUT}.fif)" > "${OUTPUT}.fif" 17 | echo "\"${OUTPUT}.fif\" include 2 boc+>B \"${OUTPUT}.boc\" B>file" | fift -s -------------------------------------------------------------------------------- /cli/src/utils/createKeyPair.ts: -------------------------------------------------------------------------------- 1 | import { writeFileSync } from "fs"; 2 | import {mnemonicNew, mnemonicToPrivateKey} from "ton-crypto" 3 | 4 | export async function createKeyPair() { 5 | let mnemonic = await mnemonicNew() 6 | let keypair = await mnemonicToPrivateKey(mnemonic) 7 | 8 | writeFileSync( 9 | "./keypair.json", 10 | JSON.stringify(keypair) 11 | ); 12 | 13 | writeFileSync( 14 | "./.env", 15 | `SECRET_KEY=${keypair.secretKey.toString()}` 16 | ) 17 | } 18 | 19 | export default createKeyPair; -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MINPUT="./nft-auction.func" 4 | OUTPUT="./nft-auction-code" 5 | FUNC_STDLIB_PATH="../stdlib.fc" 6 | 7 | echo "building \"${MINPUT}\"" 8 | 9 | # build you own func compiler 10 | /Users/i.nedzvetskiy/projects/ton/build/crypto/func -PA -o "${OUTPUT}.fif" ${FUNC_STDLIB_PATH} ${MINPUT} 11 | echo -e "\"TonUtil.fif\" include\n$(cat ${OUTPUT}.fif)" > "${OUTPUT}.fif" 12 | echo "\"${OUTPUT}.fif\" include 2 boc+>B \"${OUTPUT}.boc\" B>file" | fift -s 13 | base64 "${OUTPUT}.boc" > "${OUTPUT}.base64" -------------------------------------------------------------------------------- /src/utils/createSender.ts: -------------------------------------------------------------------------------- 1 | import { KeyPair } from "ton-crypto"; 2 | import { TonClient4, WalletContractV4 } from "ton"; 3 | 4 | export async function createSender( 5 | keypair: KeyPair, 6 | client: TonClient4 7 | ) { 8 | let wallet = WalletContractV4.create( 9 | { 10 | workchain: 0, 11 | publicKey: keypair.publicKey 12 | } 13 | ) 14 | 15 | let contract = client.open( 16 | wallet 17 | ); 18 | 19 | return contract.sender(keypair.secretKey); 20 | } 21 | 22 | export default createSender; -------------------------------------------------------------------------------- /cli/src/utils/createSender.ts: -------------------------------------------------------------------------------- 1 | import { KeyPair } from "ton-crypto"; 2 | import { TonClient4, WalletContractV4 } from "ton"; 3 | 4 | export async function createSender( 5 | keypair: KeyPair, 6 | client: TonClient4 7 | ) { 8 | let wallet = WalletContractV4.create( 9 | { 10 | workchain: 0, 11 | publicKey: keypair.publicKey 12 | } 13 | ) 14 | 15 | let contract = client.open( 16 | wallet 17 | ); 18 | 19 | return contract.sender(keypair.secretKey); 20 | } 21 | 22 | export default createSender; -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | MINPUT="./nft-auction-v2.func" 4 | OUTPUT="./nft-auction-v2-code" 5 | FUNC_STDLIB_PATH="../stdlib.fc" 6 | 7 | echo "building \"${MINPUT}\"" 8 | 9 | # build you own func compiler 10 | /Users/i.nedzvetskiy/projects/ton/build/crypto/func -PA -o "${OUTPUT}.fif" ${FUNC_STDLIB_PATH} ${MINPUT} 11 | echo -e "\"TonUtil.fif\" include\n$(cat ${OUTPUT}.fif)" > "${OUTPUT}.fif" 12 | echo "\"${OUTPUT}.fif\" include 2 boc+>B \"${OUTPUT}.boc\" B>file" | fift -s 13 | base64 "${OUTPUT}.boc" > "${OUTPUT}.base64" -------------------------------------------------------------------------------- /cli/dist/src/utils/EligibleInternalTx.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.isEligibleTransaction = void 0; 4 | function isEligibleTransaction(tx) { 5 | var _a; 6 | return (((_a = tx.inMessage) === null || _a === void 0 ? void 0 : _a.info.type) == 'internal' && 7 | tx.description.type == 'generic' && 8 | tx.description.computePhase.type == 'vm' && 9 | tx.description.computePhase.exitCode == 0); 10 | } 11 | exports.isEligibleTransaction = isEligibleTransaction; 12 | //# sourceMappingURL=EligibleInternalTx.js.map -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/struct/exit-codes.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; custom TVM exit codes 3 | ;; 4 | 5 | int exit::low_bid() asm "1000 PUSHINT"; 6 | int exit::auction_init() asm "1001 PUSHINT"; 7 | int exit::no_transfer() asm "1002 PUSHINT"; 8 | int exit::not_message() asm "1003 PUSHINT"; 9 | int exit::not_cancel() asm "1004 PUSHINT"; 10 | int exit::auction_end() asm "1005 PUSHINT"; 11 | int exit::already_activated() asm "1006 PUSHINT"; 12 | int exit::cant_cancel_end() asm "1007 PUSHINT"; 13 | int exit::low_amount() asm "1008 PUSHINT"; 14 | 15 | -------------------------------------------------------------------------------- /cli/dist/src/utils/importKeyPair.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"importKeyPair.js","sourceRoot":"","sources":["../../../../src/utils/importKeyPair.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA6B;AAC7B,2CAA0D;AAC1D,2BAAkC;AAElC,SAAsB,aAAa,CAC/B,SAAkB;;QAElB,IAAI,OAAgB,CAAC;QAErB,IAAI,SAAS,EAAE;YACX,OAAO,GAAG,IAAA,iCAAoB,EAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;SACjE;aAAM;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,MAAM,CAAC,aAAG,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,GAAG,IAAA,iCAAoB,EAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;SAC/D;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AAbD,sCAaC;AAED,kBAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /cli/dist/cli/src/utils/importKeyPair.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"importKeyPair.js","sourceRoot":"","sources":["../../../../src/utils/importKeyPair.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA6B;AAC7B,2CAA0D;AAC1D,2BAAkC;AAElC,SAAsB,aAAa,CAC/B,SAAkB;;QAElB,IAAI,OAAgB,CAAC;QAErB,IAAI,SAAS,EAAE;YACX,OAAO,GAAG,IAAA,iCAAoB,EAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;SACjE;aAAM;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,MAAM,CAAC,aAAG,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,GAAG,IAAA,iCAAoB,EAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;SAC/D;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AAbD,sCAaC;AAED,kBAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /src/utils/importKeyPair.ts: -------------------------------------------------------------------------------- 1 | import { env } from 'process' 2 | import { KeyPair, keyPairFromSecretKey } from "ton-crypto" 3 | import { readFileSync } from 'fs'; 4 | 5 | export async function importKeyPair( 6 | secretKey?: string 7 | ) { 8 | let keyPair: KeyPair; 9 | 10 | if (secretKey) { 11 | keyPair = keyPairFromSecretKey(Buffer.from(secretKey, 'hex')); 12 | } else { 13 | const content = readFileSync(String(env.SECRET_KEY), 'utf-8'); 14 | keyPair = keyPairFromSecretKey(Buffer.from(content, 'hex')); 15 | } 16 | 17 | return keyPair; 18 | } 19 | 20 | export default importKeyPair; -------------------------------------------------------------------------------- /cli/src/utils/importKeyPair.ts: -------------------------------------------------------------------------------- 1 | import { env } from 'process' 2 | import { KeyPair, keyPairFromSecretKey } from "ton-crypto" 3 | import { readFileSync } from 'fs'; 4 | 5 | export async function importKeyPair( 6 | secretKey?: string 7 | ) { 8 | let keyPair: KeyPair; 9 | 10 | if (secretKey) { 11 | keyPair = keyPairFromSecretKey(Buffer.from(secretKey, 'hex')); 12 | } else { 13 | const content = readFileSync(String(env.SECRET_KEY), 'utf-8'); 14 | keyPair = keyPairFromSecretKey(Buffer.from(content, 'hex')); 15 | } 16 | 17 | return keyPair; 18 | } 19 | 20 | export default importKeyPair; -------------------------------------------------------------------------------- /docs/assets/highlight.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --light-code-background: #FFFFFF; 3 | --dark-code-background: #1E1E1E; 4 | } 5 | 6 | @media (prefers-color-scheme: light) { :root { 7 | --code-background: var(--light-code-background); 8 | } } 9 | 10 | @media (prefers-color-scheme: dark) { :root { 11 | --code-background: var(--dark-code-background); 12 | } } 13 | 14 | :root[data-theme='light'] { 15 | --code-background: var(--light-code-background); 16 | } 17 | 18 | :root[data-theme='dark'] { 19 | --code-background: var(--dark-code-background); 20 | } 21 | 22 | pre, code { background: var(--code-background); } 23 | -------------------------------------------------------------------------------- /cli/dist/src/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,UAAU;AACV,iDAA4C;AA4BxC,yFA5BI,mBAAQ,OA4BJ;AA3BZ,6CAAwC;AA4BpC,uFA5BI,eAAM,OA4BJ;AA1BV,WAAW;AACX,mEAAiD;AACjD,6DAA2C;AAC3C,+DAA6C;AAC7C,qEAAmD;AACnD,gEAA8C;AAC9C,kEAAgD;AAChD,mEAAiD;AACjD,qEAAmD;AACnD,qEAAmD;AACnD,oEAAkD;AAClD,8DAA4C;AAC5C,6DAA2C;AAE3C,QAAQ;AACR,0CAAwB;AAExB,2BAA2B;AAC3B,0DAAuC;AAEvC,sBAAsB;AACtB,6EAA4D;AAC5D,mEAAiD;AAOjD,UAAU;AACV,4CAA0B;AAE1B,YAAY;AACZ,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,4DAAgD,CAAA;IAChD,oEAAwD,CAAA;AAC5D,CAAC,EAHW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAGnB"} -------------------------------------------------------------------------------- /cli/dist/src/utils/createTempFile.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createTempFile.js","sourceRoot":"","sources":["../../../../src/utils/createTempFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA4B;AAC5B,uCAAyB;AACzB,gDAAwB;AACxB,0CAA8C;AAE9C,SAAsB,cAAc,CAAC,GAAW;;QAC5C,IAAI,IAAI,GAAG,IAAA,WAAI,GAAE,CAAA;QACjB,IAAI,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,CAAC,CAAA;QACpD,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAU,EAAE;gBACjB,MAAM,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC,CAAA;SACJ,CAAA;IACL,CAAC;CAAA;AAVD,wCAUC"} -------------------------------------------------------------------------------- /cli/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cli", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "keywords": [], 6 | "author": "", 7 | "license": "ISC", 8 | "description": "", 9 | "dependencies": { 10 | "@ton-community/blueprint": "^0.9.0", 11 | "@types/node": "^18.16.3", 12 | "@types/yargs": "^17.0.24", 13 | "ton": "latest", 14 | "ton-crypto": "^3.2.0", 15 | "ts-node": "^10.9.1", 16 | "typescript": "^5.0.4", 17 | "yargs": "^17.7.2" 18 | }, 19 | "bin": { 20 | "ton-nft-cli": "./dist/cli/src/index.js" 21 | }, 22 | "scripts": { 23 | "build": "tsc", 24 | "start": "ts-node src/index.ts", 25 | "link": "npm link" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /examples/transaction-parsing.ts: -------------------------------------------------------------------------------- 1 | import {Address} from 'ton-core' 2 | import {NftItem} from '../src/wrappers/standard/NftItem' 3 | import { TonClient } from 'ton' 4 | import { getHttpEndpoint } from '@orbs-network/ton-access' 5 | 6 | async function main() { 7 | // Config 8 | const client = new TonClient({ 9 | endpoint: await getHttpEndpoint() 10 | }) 11 | 12 | // Transfer TX 13 | const txData = await client.getTransactions(Address.parse('EQCWbV3k8hlLGiFlxPE_RAJDLUpm_WnCCbCxaprvWxh1_AOI'), { 14 | limit: 10, 15 | hash: 'odtysMOr5JY0JQ+31TtmzGzldPBH2IMTIL21CAiJ9G8=' 16 | }) 17 | 18 | console.log(txData) 19 | 20 | const data = NftItem.parseTransfer(txData[0]) 21 | 22 | // Prints Transaction Data 23 | console.log(data) 24 | } 25 | 26 | main() -------------------------------------------------------------------------------- /cli/dist/src/ton-api/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ton-api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,MAAa,YAAY;IACrB,YACa,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IACjC,CAAC;IAEE,iBAAiB,CACnB,KAAc,EACd,MAAe;;YAEf,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC7D,CAAC;KAAA;IAEK,gBAAgB,CAClB,iBAAyB;;YAEzB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;QAChE,CAAC;KAAA;IAEK,WAAW,CACb,iBAAyB,EACzB,KAAc,EACd,MAAe;;YAEf,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAC1E,CAAC;KAAA;IAEK,UAAU,CACZ,WAAmB;;YAEnB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QACpD,CAAC;KAAA;IAEK,wBAAwB,CAC1B,OAAgB,EAChB,KAAc;;YAEd,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC;KAAA;CACJ;AAtCD,oCAsCC"} -------------------------------------------------------------------------------- /cli/dist/src/utils/FetchAndParseTransaction.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"FetchAndParseTransaction.js","sourceRoot":"","sources":["../../../../src/utils/FetchAndParseTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAgD;AAChD,wCAAoC;AACpC,yDAAgE;AAEhE,SAAsB,4BAA4B,CAC9C,OAAgB,EAChB,KAAa;;QAEb,MAAM,SAAS,GAAG,IAAI,mBAAS,EAAE,CAAC;QAElC,MAAM,YAAY,GAAQ,MAAM,SAAS,CAAC,wBAAwB,CAC9D,OAAO,EACP,KAAK,CACR,CAAC;QAEF,IAAI,iBAAiB,GAAgB,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvD,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjD,MAAM,iBAAiB,GAAG,MAAM,IAAA,uCAAoB,EAChD,eAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CACpE,CAAC;YAEF,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC7C;QAED,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CAAA;AAvBD,oEAuBC"} -------------------------------------------------------------------------------- /cli/dist/src/transaction-parsing/RoyaltyInfo.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"RoyaltyInfo.js","sourceRoot":"","sources":["../../../../src/transaction-parsing/RoyaltyInfo.ts"],"names":[],"mappings":";;;AAAA,uCAA8E;AAC9E,oEAAoE;AAQpE,SAAS,kBAAkB,CAAC,IAAS;IACnC,OAAO;QACL,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,GAAG;QACpB,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,IAAI;QACxB,KAAK,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK;KAC9B,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAC9B,WAAkB;;IAElB,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,WAAW,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAA,EAAE,CAAC,SAAS,0CAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAE7C,IAAI,EAAE,CAAC;IACP,IAAI;QACF,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACzB;IAAC,WAAM;QACN,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAA,0CAAqB,EAAC,EAAE,CAAC,EAAE;QAC7B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAlBD,4CAkBC"} -------------------------------------------------------------------------------- /cli/dist/src/transaction-parsing/EditContent.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"EditContent.js","sourceRoot":"","sources":["../../../../src/transaction-parsing/EditContent.ts"],"names":[],"mappings":";;;AAAA,uCAAiE;AACjE,oEAAoE;AAWpE,SAAS,sBAAsB,CAAC,IAAS;;IACrC,OAAO;QACH,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,EAAE,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAC,GAAG;QAC9B,OAAO,EAAE,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAC,IAAI;QAClC,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE;QACxB,KAAK,EAAE,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAC,KAAK,CAAC,KAAK;KAC1C,CAAC;AACJ,CAAC;AAEH,SAAgB,oBAAoB,CAChC,WAAkB;;IAElB,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,WAAW,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAA,EAAE,CAAC,SAAS,0CAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAE7C,IAAI,EAAE,CAAC;IAEP,IAAI;QACA,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC3B;IAAC,WAAM;QACJ,OAAO,IAAI,CAAC;KACf;IAED,IAAI,IAAA,0CAAqB,EAAC,EAAE,CAAC,EAAE;QAC3B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;KACtC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAnBD,oDAmBC"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/struct/msg-utils.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; text constants for msg comments 3 | ;; 4 | 5 | slice msg::cancel_msg() asm " Promise 45 | getNftCollection: (collectionAddress: string) => Promise 46 | getNftItems: (collectionAddress: string, limit?: number, offset?: number) => Promise 47 | getNftItem: (itemAddress: string) => Promise 48 | getTransactionsByAddress: (address: Address, limit?: number) => Promise 49 | } -------------------------------------------------------------------------------- /src/storage/index.ts: -------------------------------------------------------------------------------- 1 | export class Storage { 2 | constructor( 3 | readonly provider: ProviderInterface 4 | ) {} 5 | 6 | // Function to upload images 7 | async uploadImage( 8 | imagePath: string 9 | ): Promise { 10 | return await this.provider.uploadImage(imagePath) 11 | } 12 | 13 | // Function to upload multiple images 14 | async uploadImages( 15 | folderPath: string 16 | ): Promise { 17 | return await this.provider.uploadImages(folderPath) 18 | } 19 | 20 | // Function to upload json file 21 | async uploadJson( 22 | jsonPath: string 23 | ): Promise { 24 | return await this.provider.uploadJson(jsonPath) 25 | } 26 | 27 | // Function to upload multiple json files 28 | async uploadJsonBulk( 29 | folderPath: string 30 | ): Promise { 31 | return await this.provider.uploadJsonBulk(folderPath) 32 | } 33 | 34 | // Function to upload multiple json files 35 | async uploadBulk( 36 | assetsFolderPath: string 37 | ): Promise<[string[], string[]]> { 38 | return await this.provider.uploadBulk(assetsFolderPath) 39 | } 40 | } 41 | 42 | export interface ProviderInterface { 43 | uploadImage: (imagePath: string) => Promise 44 | uploadImages: (folderPath: string) => Promise 45 | uploadJson: (jsonPath: string) => Promise 46 | uploadJsonBulk: (folderPath: string) => Promise 47 | uploadBulk: (assetsFolderPath: string) => Promise<[string[], string[]]> 48 | } -------------------------------------------------------------------------------- /cli/dist/src/utils/importKeyPair.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.importKeyPair = void 0; 13 | const process_1 = require("process"); 14 | const ton_crypto_1 = require("ton-crypto"); 15 | const fs_1 = require("fs"); 16 | function importKeyPair(secretKey) { 17 | return __awaiter(this, void 0, void 0, function* () { 18 | let keyPair; 19 | if (secretKey) { 20 | keyPair = (0, ton_crypto_1.keyPairFromSecretKey)(Buffer.from(secretKey, 'hex')); 21 | } 22 | else { 23 | const content = (0, fs_1.readFileSync)(String(process_1.env.SECRET_KEY), 'utf-8'); 24 | keyPair = (0, ton_crypto_1.keyPairFromSecretKey)(Buffer.from(content, 'hex')); 25 | } 26 | return keyPair; 27 | }); 28 | } 29 | exports.importKeyPair = importKeyPair; 30 | exports.default = importKeyPair; 31 | //# sourceMappingURL=importKeyPair.js.map -------------------------------------------------------------------------------- /cli/dist/cli/src/utils/importKeyPair.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.importKeyPair = void 0; 13 | const process_1 = require("process"); 14 | const ton_crypto_1 = require("ton-crypto"); 15 | const fs_1 = require("fs"); 16 | function importKeyPair(secretKey) { 17 | return __awaiter(this, void 0, void 0, function* () { 18 | let keyPair; 19 | if (secretKey) { 20 | keyPair = (0, ton_crypto_1.keyPairFromSecretKey)(Buffer.from(secretKey, 'hex')); 21 | } 22 | else { 23 | const content = (0, fs_1.readFileSync)(String(process_1.env.SECRET_KEY), 'utf-8'); 24 | keyPair = (0, ton_crypto_1.keyPairFromSecretKey)(Buffer.from(content, 'hex')); 25 | } 26 | return keyPair; 27 | }); 28 | } 29 | exports.importKeyPair = importKeyPair; 30 | exports.default = importKeyPair; 31 | //# sourceMappingURL=importKeyPair.js.map -------------------------------------------------------------------------------- /cli/dist/src/transaction-parsing/NftTransfer.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.parseNftTransferInfo = void 0; 4 | const ton_core_1 = require("ton-core"); 5 | const EligibleInternalTx_1 = require("../utils/EligibleInternalTx"); 6 | function extractNftTransferInfo(body) { 7 | return { 8 | queryId: body === null || body === void 0 ? void 0 : body.loadUint(64), 9 | from: body === null || body === void 0 ? void 0 : body.info.src, 10 | to: body === null || body === void 0 ? void 0 : body.loadAddress(), 11 | value: body === null || body === void 0 ? void 0 : body.info.value.coins, 12 | responseTo: body === null || body === void 0 ? void 0 : body.loadAddress(), 13 | customPayload: body === null || body === void 0 ? void 0 : body.loadBit(), 14 | forwardAmount: body === null || body === void 0 ? void 0 : body.loadCoins(), 15 | forwardPayload: body === null || body === void 0 ? void 0 : body.loadBit(), 16 | }; 17 | } 18 | function parseNftTransferInfo(transaction) { 19 | var _a; 20 | const tx = (0, ton_core_1.loadTransaction)(transaction); 21 | const body = (_a = tx.inMessage) === null || _a === void 0 ? void 0 : _a.body.beginParse(); 22 | let op; 23 | try { 24 | op = body === null || body === void 0 ? void 0 : body.loadUint(32); 25 | } 26 | catch (_b) { 27 | return null; 28 | } 29 | if ((0, EligibleInternalTx_1.isEligibleTransaction)(tx)) { 30 | return extractNftTransferInfo(body); 31 | } 32 | return null; 33 | } 34 | exports.parseNftTransferInfo = parseNftTransferInfo; 35 | //# sourceMappingURL=NftTransfer.js.map -------------------------------------------------------------------------------- /cli/dist/src/utils/parseTransaction.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"parseTransaction.js","sourceRoot":"","sources":["../../../../src/utils/parseTransaction.ts"],"names":[],"mappings":";;;AAAA,uCAAiE;AAQjE,SAAgB,oBAAoB,CAAC,WAAkB;;IACnD,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,WAAW,CAAC,CAAC;IAExC,IAAI,CAAA,MAAA,EAAE,CAAC,SAAS,0CAAE,IAAI,CAAC,IAAI,MAAK,UAAU,EAAE;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAC;QAEP,IAAI;YACA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SAClB;QAAC,WAAM;YACJ,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,IAAI;aACb,CAAA;SACJ;QAED,IACI,EAAE,KAAK,UAAU;YACjB,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;YACjC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAC3C;YACE,MAAM,WAAW,GAAoB;gBACjC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;gBAC3B,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE;gBACtB,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;gBACpC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC9B,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE;gBAClC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC/B,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE;aACtC,CAAC;YAEF,OAAO;gBACH,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;aACpB,CAAC;SACL;aAAM,IACH,EAAE,KAAK,UAAU;YACjB,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;YACjC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAC3C;YACE,MAAM,WAAW,GAAgB;gBAC7B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;gBAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC3B,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;aACvC,CAAC;YAEF,OAAO;gBACH,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,WAAW;aACpB,CAAC;SACL;aAAM;YACH,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,IAAI;aACb,CAAA;SACJ;KACJ;IAED,OAAO;QACH,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACb,CAAC;AACN,CAAC;AAjED,oDAiEC"} -------------------------------------------------------------------------------- /examples/mintNft.ts: -------------------------------------------------------------------------------- 1 | import {Address, toNano} from 'ton-core' 2 | import {NftCollection} from '../src/wrappers/getgems/NftCollection/NftCollection' 3 | import {randomAddress, importKeyPair, createSender} from '../src/utils' 4 | import {ENDPOINT} from '../src' 5 | import { TonClient4 } from 'ton' 6 | import { Storage } from '../src/storage' 7 | import { Pinata } from '../src/storage/Pinata' 8 | 9 | async function main() { 10 | // Config 11 | const keypair = await importKeyPair('') 12 | const client = new TonClient4({endpoint: ENDPOINT.TESTNET}) 13 | const wallet = await createSender(keypair, client) 14 | const address = wallet.address ?? randomAddress() 15 | 16 | // Addresses 17 | const ownerAddress = address 18 | const collectionAddress = Address.parse('') 19 | 20 | // Deploying Assets 21 | const pinata = new Pinata('', '') 22 | const storage = new Storage(pinata) 23 | const data: [string[], string[]] = await storage.uploadBulk('./assets') 24 | 25 | // Creates NFT Item 26 | const nftCollection = client.open( 27 | await NftCollection.createFromAddress( 28 | collectionAddress 29 | ) 30 | ) 31 | 32 | // Mints NFT 33 | const mintResult = await nftCollection.sendMint( 34 | wallet, 35 | { 36 | queryId: 1, 37 | value: toNano(1), 38 | passAmount: toNano(1), 39 | itemIndex: 0, 40 | itemOwnerAddress: ownerAddress, 41 | itemContent: data[1][0] 42 | } 43 | ) 44 | 45 | // Prints Result 46 | console.log(mintResult) 47 | 48 | // Fetches Nft Data 49 | const collectionData = await nftCollection.getCollectionData() 50 | 51 | // Prints Nft Data 52 | console.log(collectionData) 53 | } 54 | 55 | main() -------------------------------------------------------------------------------- /cli/dist/src/transaction-parsing/TransferEditorship.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.parseTransferEditorshipInfo = void 0; 4 | const ton_core_1 = require("ton-core"); 5 | const EligibleInternalTx_1 = require("../utils/EligibleInternalTx"); 6 | function extractTransferEditorshipInfo(body) { 7 | return { 8 | queryId: body === null || body === void 0 ? void 0 : body.loadUint(64), 9 | from: body === null || body === void 0 ? void 0 : body.info.src, 10 | nftItem: body === null || body === void 0 ? void 0 : body.info.dest, 11 | newEditor: body === null || body === void 0 ? void 0 : body.loadAddress(), 12 | responseDestination: body === null || body === void 0 ? void 0 : body.loadAddress(), 13 | customPayload: body === null || body === void 0 ? void 0 : body.loadMaybeRef(), 14 | forwardAmount: body === null || body === void 0 ? void 0 : body.loadCoins(), 15 | forwardPayload: body === null || body === void 0 ? void 0 : body.loadMaybeRef(), 16 | value: body === null || body === void 0 ? void 0 : body.info.value.coins, 17 | }; 18 | } 19 | function parseTransferEditorshipInfo(transaction) { 20 | var _a; 21 | const tx = (0, ton_core_1.loadTransaction)(transaction); 22 | const body = (_a = tx.inMessage) === null || _a === void 0 ? void 0 : _a.body.beginParse(); 23 | let op; 24 | try { 25 | op = body === null || body === void 0 ? void 0 : body.loadUint(32); 26 | } 27 | catch (_b) { 28 | return null; 29 | } 30 | if ((0, EligibleInternalTx_1.isEligibleTransaction)(tx)) { 31 | return extractTransferEditorshipInfo(body); 32 | } 33 | return null; 34 | } 35 | exports.parseTransferEditorshipInfo = parseTransferEditorshipInfo; 36 | //# sourceMappingURL=TransferEditorship.js.map -------------------------------------------------------------------------------- /cli/dist/src/types/OffchainContent.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"OffchainContent.js","sourceRoot":"","sources":["../../../../src/types/OffchainContent.ts"],"names":[],"mappings":";;;AAAA,uCAA8C;AAI9C,sCAAsC;AAEtC,MAAM,wBAAwB,GAAG,IAAI,CAAA;AAMrC,iDAAiD;AACjD,8BAA8B;AAE9B,gCAAgC;AAEhC,kBAAkB;AAClB,kCAAkC;AAClC,6CAA6C;AAC7C,2CAA2C;AAC3C,wBAAwB;AACxB,QAAQ;AAER,iBAAiB;AACjB,IAAI;AAEJ,SAAS,cAAc,CAAC,IAAY,EAAE,SAAiB;IACnD,IAAI,MAAM,GAAa,EAAE,CAAA;IACzB,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QACrC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;KAC/B;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACtC,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtC,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAC1B,IAAI,OAAO,GAAG,QAAQ,CAAA;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAErB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE1B,IAAI,MAAM,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE;YACb,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;YAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC1B,OAAO,GAAG,QAAQ,CAAA;SACrB;KACJ;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC;AAlBD,sCAkBC;AAED,iEAAiE;AACjE,2CAA2C;AAE3C,2BAA2B;AAC3B,iDAAiD;AACjD,4EAA4E;AAC5E,QAAQ;AACR,eAAe;AACf,wCAAwC;AACxC,QAAQ;AACR,IAAI;AAEJ,SAAgB,oBAAoB,CAAC,OAAiB;IAClD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnC,IAAI,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAC5D,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAA;IAE5C,OAAO,CAAC,OAAgB,EAAE,EAAE;QACxB,OAAO,CAAC,QAAQ,CACZ,aAAa,CAAC,IAAI,CAAC,CACtB,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AAVD,oDAUC;AAED,SAAgB,qBAAqB,CAAC,OAAe;IACjD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,IAAI,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAC5D,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AALD,sDAKC"} -------------------------------------------------------------------------------- /cli/dist/src/utils/FetchAndParseTransaction.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.fetchAndParseTransactionData = void 0; 13 | const ton_core_1 = require("ton-core"); 14 | const ton_api_1 = require("../ton-api"); 15 | const parseTransaction_1 = require("./parseTransaction"); 16 | function fetchAndParseTransactionData(account, limit) { 17 | return __awaiter(this, void 0, void 0, function* () { 18 | const tonClient = new ton_api_1.TonClient(); 19 | const transactions = yield tonClient.getTransactionsByAddress(account, limit); 20 | let transactions_data = []; 21 | for (let i = 0; i < transactions.transactions.length; i++) { 22 | const transaction = transactions.transactions[i]; 23 | const parsedTransaction = yield (0, parseTransaction_1.parseTransactionData)(ton_core_1.Cell.fromBoc(Buffer.from(transaction.data, 'hex'))[0].beginParse()); 24 | transactions_data.push(parsedTransaction); 25 | } 26 | return transactions_data; 27 | }); 28 | } 29 | exports.fetchAndParseTransactionData = fetchAndParseTransactionData; 30 | //# sourceMappingURL=FetchAndParseTransaction.js.map -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/nft-auction-v2-code.base64: -------------------------------------------------------------------------------- 1 | te6cckECHQEABZMAART/APSkE/S88sgLAQIBIAIDAgFIBAUCKPIw2zyBA+74RMD/8vL4AH/4ZNs8GxwCAs4GBwKLoDhZtnm2eQQQgqqH8IXwofCH8KfwpfCd8JvwmfCX8JXwi/Cf8IwaIiYaGCIkGBYiIhYUIiAUIT4hHCD6INggtiD0INIgsRsaAgEgCAkCASAYGQT1AHQ0wMBcbDyQPpAMNs8+ELA//hDUiDHBbCO0DMx0x8hwACNBJyZXBlYXRfZW5kX2F1Y3Rpb26BSIMcFsI6DW9s84DLAAI0EWVtZXJnZW5jeV9tZXNzYWdlgUiDHBbCa1DDQ0wfUMAH7AOAw4PhTUhDHBY6EMzHbPOABgGxIKCwATIIQO5rKAAGphIAFcMYED6fhS10nCAvLygQPqAdMfghAFE42REroS8vSAQNch+kAw+HJw+GJ/+GTbPBwEhts8IMABjzgwgQPt+CP4UL7y8oED7fhCwP/y8oED8AKCEDuaygC5EvLy+FJSEMcF+ENSIMcFsfLhkwF/2zzbPOAgwAIMFQ0OAIwgxwDA/5IwcODTHzGLZjYW5jZWyCHHBZIwceCLRzdG9wghxwWSMHLgi2ZmluaXNoghxwWSMHLgi2ZGVwbG95gBxwWRc+BwAYpwIPglghBfzD0UyMsfyz/4Us8WUAPPFhLLACH6AssAyXGAGMjLBfhTzxZw+gLLasyCCA9CQHD7AsmDBvsAf/hif/hm2zwcBPyOwzAygQPt+ELA//LygQPwAYIQO5rKALny8vgj+FC+jhf4UlIQxwX4Q1IgxwWx+E1SIMcFsfLhk5n4UlIQxwXy4ZPi2zzgwAOSXwPg+ELA//gj+FC+sZdfA4ED7fLw4PhLghA7msoAoFIgvvhLwgCw4wL4UPhRofgjueMA+E4SDxARAiwCcNs8IfhtghA7msoAofhu+CP4b9s8FRIADvhQ+FGg+HADcI6VMoED6PhKUiC58vL4bvht+CP4b9s84fhO+EygUiC5l18DgQPo8vDgAnDbPAH4bfhu+CP4b9s8HBUcApT4TsAAjj1wIPglghBfzD0UyMsfyz/4Us8WUAPPFhLLACH6AssAyXGAGMjLBfhTzxZw+gLLasyCCA9CQHD7AsmDBvsA4w5/+GLbPBMcAvrbPPhOQFTwAyDCAI4rcCCAEMjLBVAHzxYi+gIWy2oVyx+L9NYXJrZXRwbGFjZSBmZWWM8WyXL7AJE04vhOQAPwAyDCAI4jcCCAEMjLBVAEzxYi+gITy2oSyx+LdSb3lhbHR5jPFsly+wCRMeKCCA9CQHD7AvhOWKEBoSDCABoUAMCOInAggBDIywX4Us8WUAP6AhLLassfi2UHJvZml0jPFsly+wCRMOJwIPglghBfzD0UyMsfyz/4Tc8WUAPPFhLLAIIImJaA+gLLAMlxgBjIywX4U88WcPoCy2rMyYMG+wAC8vhOwQGRW+D4TvhHoSKCCJiWgKFSELyZMAGCCJiWgKEBkTLijQpWW91ciBiaWQgaGFzIGJlZW4gb3V0YmlkIGJ5IGFub3RoZXIgdXNlci6ABwP+OHzCNBtBdWN0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZC6DeIcIA4w8WFwA4cCCAGMjLBfhNzxZQBPoCE8tqEssfAc8WyXL7AAACWwARIIQO5rKAKmEgAB0IMAAk18DcOBZ8AIB8AGAAIPhI0PpA0x/TH/pA0x/THzAAyvhBbt3tRNDSAAH4YtIAAfhk0gAB+Gb6QAH4bfoAAfhu0x8B+G/THwH4cPpAAfhy1AH4aNQw+Gn4SdDSHwH4Z/pAAfhj+gAB+Gr6AAH4a/oAAfhs0x8B+HH6QAH4c9MfMPhlf/hhAFT4SfhI+FD4T/hG+ET4QsjKAMoAygD4Tc8W+E76Assfyx/4Us8WzMzJ7VQBqlR8 2 | -------------------------------------------------------------------------------- /src/wrappers/getgems/NftMarketplace/nft-marketplace.fc: -------------------------------------------------------------------------------- 1 | ;; NFT marketplace smart contract 2 | 3 | #include "../stdlib.fc"; 4 | #include "../params.fc"; 5 | #include "../op-codes.fc"; 6 | 7 | ;; storage scheme 8 | ;; storage#_ owner_address:MsgAddress 9 | ;; = Storage; 10 | 11 | (slice) load_data() inline { 12 | var ds = get_data().begin_parse(); 13 | return 14 | (ds~load_msg_addr() ;; owner 15 | ); 16 | } 17 | 18 | () save_data(slice owner_address) impure inline { 19 | set_data(begin_cell() 20 | .store_slice(owner_address) 21 | .end_cell()); 22 | } 23 | 24 | () recv_internal(int msg_value, cell in_msg_full, slice in_msg_body) impure { 25 | if (in_msg_body.slice_empty?()) { ;; ignore empty messages 26 | return (); 27 | } 28 | slice cs = in_msg_full.begin_parse(); 29 | int flags = cs~load_uint(4); 30 | 31 | if (flags & 1) { ;; ignore all bounced messages 32 | return (); 33 | } 34 | slice sender_address = cs~load_msg_addr(); 35 | 36 | var (owner_address) = load_data(); 37 | throw_unless(401, equal_slices(sender_address, owner_address)); 38 | int op = in_msg_body~load_uint(32); 39 | 40 | if (op == 1) { ;; deploy new auction 41 | int amount = in_msg_body~load_coins(); 42 | (cell state_init, cell body) = (cs~load_ref(), cs~load_ref()); 43 | int state_init_hash = cell_hash(state_init); 44 | slice dest_address = begin_cell().store_int(0, 8).store_uint(state_init_hash, 256).end_cell().begin_parse(); 45 | 46 | var msg = begin_cell() 47 | .store_uint(0x18, 6) 48 | .store_uint(4, 3).store_slice(dest_address) 49 | .store_grams(amount) 50 | .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) 51 | .store_ref(state_init) 52 | .store_ref(body); 53 | send_raw_message(msg.end_cell(), 1); ;; paying fees, revert on errors 54 | } 55 | } 56 | 57 | () recv_external(slice in_msg) impure { 58 | } -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftMarketplace.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftMarketplace.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftMarketplace.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAmH;AACnH,2CAA2C;AAE3C,MAAa,cAAc;IACvB,YAAqB,OAAgB,EAAW,SAAkB,EAAW,IAAiC;QAAzF,YAAO,GAAP,OAAO,CAAS;QAAW,cAAS,GAAT,SAAS,CAAS;QAAW,SAAI,GAAJ,IAAI,CAA6B;IAAG,CAAC;IAElH,MAAM,CAAC,iBAAiB,CACpB,OAAgB;QAEhB,OAAO,IAAI,cAAc,CACrB,OAAO,CACN,CAAC;IACV,CAAC;IAGD,MAAM,CAAO,gBAAgB,CACzB,MAA0B;;YAG1B,IAAI,IAAI,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,OAAO,GAAG,IAAA,0BAAe,EACzB,CAAC,EACD;gBACI,IAAI,EAAE,8BAAsB;gBAC5B,IAAI,EAAE,IAAI;aACb,CACJ,CAAA;YAED,OAAO,IAAI,cAAc,CACrB,OAAO,EACP,CAAC,EACD;gBACI,IAAI,EAAE,8BAAsB;gBAC5B,IAAI,EAAE,IAAI;aACb,CACJ,CAAA;QACL,CAAC;KAAA;IAED,aAAa;IACP,UAAU,CAAC,QAA0B,EAAE,GAAW,EAAE,KAAa;;YACnE,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK;gBACL,IAAI,EAAE,IAAA,oBAAS,GAAE,CAAC,OAAO,EAAE;aAC9B,CAAC,CAAA;QACN,CAAC;KAAA;IAGK,SAAS,CAAC,QAA0B,EAAE,GAAW,EAAE,MAGxD;;YACG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,IAAA,oBAAS,GAAE;qBACZ,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;qBAChB,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;qBAC7B,OAAO,EAAE;gBACd,QAAQ,EAAE,mBAAQ,CAAC,kBAAkB;aACxC,CAAC,CAAA;QACN,CAAC;KAAA;CACJ;AAzDD,wCAyDC;AAUD,SAAgB,2BAA2B,CAAC,IAAwB;IAChE,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAE1B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEpC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAA;AAC7B,CAAC;AARD,kEAQC;AAED,SAAgB,cAAc,CAAC,MAI9B;IACC,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACvC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAEzC,OAAO,IAAA,iBAAI,EAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AAClE,CAAC;AAVD,wCAUC;AAGD,OAAO;AAEM,QAAA,qBAAqB,GAAG,sVAAsV,CAAA;AAE9W,QAAA,sBAAsB,GAAG,eAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,6BAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"} -------------------------------------------------------------------------------- /examples/deployNftCollection.ts: -------------------------------------------------------------------------------- 1 | import {toNano} from 'ton-core' 2 | import {NftCollection} from '../src/wrappers/getgems/NftCollection/NftCollection' 3 | import {NftItem} from '../src/wrappers/getgems/NftItem/NftItem' 4 | import {randomAddress, importKeyPair, createSender} from '../src/utils' 5 | import {ENDPOINT} from '../src' 6 | import { TonClient4 } from 'ton' 7 | import { Storage } from '../src/storage' 8 | import { Pinata } from '../src/storage/Pinata' 9 | 10 | async function main() { 11 | // Config 12 | const keypair = await importKeyPair('') 13 | const client = new TonClient4({endpoint: ENDPOINT.TESTNET}) 14 | const wallet = await createSender(keypair, client) 15 | const address = wallet.address ?? randomAddress() 16 | 17 | // Addresses 18 | const ownerAddress = address 19 | 20 | // Deploying Assets 21 | const pinata = new Pinata('', '') 22 | const storage = new Storage(pinata) 23 | 24 | // String [0] - Images 25 | // String [1] - Json 26 | const data: [string[], string[]] = await storage.uploadBulk('./assets') 27 | 28 | // Creates NFT Collection 29 | const nftCollection = client.open( 30 | await NftCollection.createFromConfig({ 31 | ownerAddress: ownerAddress, 32 | nextItemIndex: 1, 33 | collectionContent: data[1][0], 34 | commonContent: '', 35 | nftItemCode: NftItem.code, 36 | royaltyParams: { 37 | royaltyFactor: 10, 38 | royaltyBase: 100, 39 | royaltyAddress: ownerAddress 40 | } 41 | }) 42 | ) 43 | 44 | // Deploys Nft Collection 45 | const deployResult = await nftCollection.sendDeploy(wallet, toNano('0.05')) 46 | 47 | // Prints Result 48 | console.log(deployResult) 49 | 50 | // Fetches Nft Collection Data 51 | const collectionData = await nftCollection.getCollectionData() 52 | 53 | // Prints Nft Collection Data 54 | console.log(collectionData) 55 | } 56 | 57 | main() -------------------------------------------------------------------------------- /src/wrappers/getgems/NftRaffle/nft-raffle/main.func: -------------------------------------------------------------------------------- 1 | 2 | #include "../../stdlib.fc"; 3 | #include "../../params.fc"; 4 | #include "../../op-codes.fc"; 5 | #include "struct/constants.func"; 6 | #include "struct/utils.func"; 7 | #include "struct/storage.func"; 8 | #include "struct/get-methods.func"; 9 | 10 | {- 11 | [+] Receive NFT`s 12 | [+] Raffle NFT`s and send NFT`s to the new owners 13 | [+] Cancel and send NFT`s to the owners 14 | [+] Receive extra TON`s for comission 15 | [+] If we have errors we should can send NFT`s 16 | -} 17 | 18 | () recv_internal(int my_balance, int msg_value, cell in_msg_full, slice in_msg_body) impure { 19 | slice cs = in_msg_full.begin_parse(); 20 | throw_if(0, cs~load_uint(4) & 1); 21 | init_data(); 22 | 23 | slice sender_addr = cs~load_msg_addr(); 24 | int op = in_msg_body~load_uint(32); 25 | 26 | int left? = equal_slices(sender_addr, db::left_user); 27 | int right? = equal_slices(sender_addr, db::right_user); 28 | int super? = equal_slices(sender_addr, db::super_user); 29 | 30 | if (op == op::ownership_assigned()) { 31 | handle::receive_nft(sender_addr, msg_value, in_msg_body); 32 | return (); 33 | } 34 | if (op == op::cancel()) { 35 | throw_unless(err::wrong_addr(), left? | right? | super?); 36 | handle::cancel(); 37 | return (); 38 | } 39 | 40 | if (op == op::add_coins()) { 41 | throw_unless(err::wrong_addr(), right? | left?); 42 | int sender = 0; 43 | if (left?) { 44 | sender = 1; 45 | } 46 | if (right?) { 47 | sender = 2; 48 | } 49 | handle::add_coins(sender, sender_addr, msg_value, in_msg_body); 50 | return (); 51 | } 52 | 53 | if (op == op::send_again()) { 54 | handle::send_again(msg_value); 55 | return (); 56 | } 57 | 58 | if (op == op::maintain()) { 59 | handle::maintain(sender_addr, in_msg_body); 60 | return(); 61 | } 62 | throw(0xffff); 63 | } -------------------------------------------------------------------------------- /cli/dist/src/ton-api/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.TonNftClient = void 0; 13 | class TonNftClient { 14 | constructor(client) { 15 | this.client = client; 16 | } 17 | getNftCollections(limit, offset) { 18 | return __awaiter(this, void 0, void 0, function* () { 19 | return yield this.client.getNftCollections(limit, offset); 20 | }); 21 | } 22 | getNftCollection(collectionAddress) { 23 | return __awaiter(this, void 0, void 0, function* () { 24 | return yield this.client.getNftCollection(collectionAddress); 25 | }); 26 | } 27 | getNftItems(collectionAddress, limit, offset) { 28 | return __awaiter(this, void 0, void 0, function* () { 29 | return yield this.client.getNftItems(collectionAddress, limit, offset); 30 | }); 31 | } 32 | getNftItem(itemAddress) { 33 | return __awaiter(this, void 0, void 0, function* () { 34 | return yield this.client.getNftItem(itemAddress); 35 | }); 36 | } 37 | getTransactionsByAddress(address, limit) { 38 | return __awaiter(this, void 0, void 0, function* () { 39 | return yield this.client.getTransactionsByAddress(address, limit); 40 | }); 41 | } 42 | } 43 | exports.TonNftClient = TonNftClient; 44 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftFixedPrice.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftFixedPrice.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftFixedPrice.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAmH;AAEnH,MAAa,aAAa;IACtB,YAAqB,OAAgB,EAAW,SAAkB,EAAW,IAAiC;QAAzF,YAAO,GAAP,OAAO,CAAS;QAAW,cAAS,GAAT,SAAS,CAAS;QAAW,SAAI,GAAJ,IAAI,CAA6B;IAAG,CAAC;IAElH,MAAM,CAAC,iBAAiB,CACpB,OAAgB;QAEhB,OAAO,IAAI,aAAa,CACpB,OAAO,CACN,CAAC;IACV,CAAC;IAED,MAAM,CAAO,gBAAgB,CACzB,MAA2B;;YAG3B,IAAI,IAAI,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,IAAA,0BAAe,EACzB,CAAC,EACD;gBACI,IAAI,EAAE,+BAAuB;gBAC7B,IAAI,EAAE,IAAI;aACb,CACJ,CAAA;YAED,OAAO,IAAI,aAAa,CACpB,OAAO,EACP,CAAC,EACD;gBACI,IAAI,EAAE,+BAAuB;gBAC7B,IAAI,EAAE,IAAI;aACb,CACJ,CAAA;QACL,CAAC;KAAA;IAED,aAAa;IACP,UAAU,CAAC,QAA0B,EAAE,GAAW,EAAE,KAAa;;YACnE,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK;gBACL,IAAI,EAAE,IAAA,oBAAS,GAAE,CAAC,OAAO,EAAE;aAC9B,CAAC,CAAA;QACN,CAAC;KAAA;IAGK,WAAW,CAAC,QAA0B;;YACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;YACzD,OAAO;gBACH,kBAAkB,EAAE,KAAK,CAAC,cAAc,EAAE;gBAC1C,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE;gBAClC,eAAe,EAAE,KAAK,CAAC,cAAc,EAAE;gBACvC,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE;gBAChC,qBAAqB,EAAE,KAAK,CAAC,cAAc,EAAE;gBAC7C,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE;gBACrC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;gBACtC,aAAa,EAAG,KAAK,CAAC,aAAa,EAAE;aACxC,CAAA;QACL,CAAC;KAAA;CACJ;AAxDD,sCAwDC;AAeD,SAAgB,4BAA4B,CAAC,IAAyB;IAElE,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAE1B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACxC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjD,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAEvC,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAE1B,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9C,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAE3B,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAA;AAC7B,CAAC;AAlBD,oEAkBC;AAED,OAAO;AAEM,QAAA,sBAAsB,GAAG,0lBAA0lB,CAAA;AAEnnB,QAAA,uBAAuB,GAAG,eAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,8BAAsB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"} -------------------------------------------------------------------------------- /cli/dist/cli/src/nftSingle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"nftSingle.js","sourceRoot":"","sources":["../../../src/nftSingle.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/wrappers/standard/NftItemRoyalty.ts: -------------------------------------------------------------------------------- 1 | import { Address, beginCell, ContractProvider, Sender, SendMode } from 'ton-core' 2 | import { NftItem } from './NftItem' 3 | 4 | /** 5 | * Represents an NFT item contract with royalty features. 6 | * Inherits from the NftItem class. 7 | */ 8 | export class NftItemRoyalty extends NftItem { 9 | /** 10 | * Constructs an instance of the NftItemRoyalty contract from an address. 11 | * @param address - The address of the contract. 12 | * @returns An instance of NftItemRoyalty. 13 | */ 14 | static createFromAddress( 15 | address: Address 16 | ) { 17 | return new NftItemRoyalty( 18 | address 19 | ) 20 | } 21 | 22 | /** 23 | * Sends a request to get the royalty parameters from the contract. 24 | * @param provider - The ContractProvider to facilitate the data retrieval. 25 | * @param via - The Sender initiating the data retrieval. 26 | * @param params - The parameters for the data retrieval. 27 | */ 28 | async sendGetRoyaltyParams( 29 | provider: ContractProvider, 30 | via: Sender, 31 | params: { 32 | value: bigint 33 | queryId: bigint 34 | } 35 | ) { 36 | await provider.internal(via, { 37 | value: params.value, 38 | body: beginCell() 39 | .storeUint(0x693d3950, 32) 40 | .storeUint(params.queryId, 64) 41 | .endCell(), 42 | sendMode: SendMode.PAY_GAS_SEPARATELY, 43 | }) 44 | } 45 | 46 | /** 47 | * Retrieves the royalty parameters of the NFT from the contract. 48 | * @param provider - The ContractProvider to facilitate the data retrieval. 49 | * @returns An object with the royalty parameters. 50 | */ 51 | async getRoyaltyParams( 52 | provider: ContractProvider 53 | ) { 54 | const { stack } = await provider.get('royalty_params', []) 55 | return { 56 | init: stack.readBoolean(), 57 | numerator: stack.readBigNumber(), 58 | denominator: stack.readBigNumber(), 59 | destination: stack.readAddressOpt() 60 | } 61 | } 62 | } 63 | 64 | -------------------------------------------------------------------------------- /src/wrappers/standard/NftCollectionRoyalty.ts: -------------------------------------------------------------------------------- 1 | import { Address, ContractProvider, Sender, SendMode, beginCell } from 'ton-core' 2 | import { NftCollection } from './NftCollection' 3 | 4 | /** 5 | * Represents a collection of NFT items with royalty features. 6 | * Inherits from the NftCollection class. 7 | */ 8 | export class NftCollectionRoyalty extends NftCollection { 9 | /** 10 | * Constructs an instance of the NftCollectionRoyalty contract from an address. 11 | * @param address - The address of the contract. 12 | * @returns An instance of NftCollectionRoyalty. 13 | */ 14 | static createFromAddress( 15 | address: Address 16 | ) { 17 | return new NftCollectionRoyalty( 18 | address 19 | ) 20 | } 21 | 22 | /** 23 | * Sends a request to get the royalty parameters from the contract. 24 | * @param provider - The ContractProvider to facilitate the data retrieval. 25 | * @param via - The Sender initiating the data retrieval. 26 | * @param params - The parameters for the data retrieval. 27 | */ 28 | async sendGetRoyaltyParams( 29 | provider: ContractProvider, 30 | via: Sender, 31 | params: { 32 | value: bigint 33 | queryId: bigint 34 | } 35 | ) { 36 | await provider.internal(via, { 37 | value: params.value, 38 | body: beginCell() 39 | .storeUint(0x693d3950, 32) 40 | .storeUint(params.queryId, 64) 41 | .endCell(), 42 | sendMode: SendMode.PAY_GAS_SEPARATELY, 43 | }) 44 | } 45 | 46 | /** 47 | * Retrieves the royalty parameters of the NFT collection from the contract. 48 | * @param provider - The ContractProvider to facilitate the data retrieval. 49 | * @returns An object with the royalty parameters. 50 | */ 51 | async getRoyaltyParams( 52 | provider: ContractProvider 53 | ) { 54 | const { stack } = await provider.get('royalty_params', []) 55 | return { 56 | init: stack.readBoolean(), 57 | numerator: stack.readBigNumber(), 58 | denominator: stack.readBigNumber(), 59 | destination: stack.readAddressOpt() 60 | } 61 | } 62 | 63 | } -------------------------------------------------------------------------------- /cli/dist/src/wrappers/standard/NftItem.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftItem.js","sourceRoot":"","sources":["../../../../../src/wrappers/standard/NftItem.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/nft-auction-code.base64: -------------------------------------------------------------------------------- 1 | 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 2 | -------------------------------------------------------------------------------- /cli/dist/src/utils/parseTransaction.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.parseTransactionData = void 0; 4 | const ton_core_1 = require("ton-core"); 5 | function parseTransactionData(transaction) { 6 | var _a; 7 | const tx = (0, ton_core_1.loadTransaction)(transaction); 8 | if (((_a = tx.inMessage) === null || _a === void 0 ? void 0 : _a.info.type) === "internal") { 9 | const body = tx.inMessage.body.beginParse(); 10 | let op; 11 | try { 12 | op = body.loadUint(32); 13 | console.log(op); 14 | } 15 | catch (_b) { 16 | return { 17 | type: "unknown", 18 | info: null, 19 | }; 20 | } 21 | if (op === 0x5fcc3d14 && 22 | tx.description.type === "generic" && 23 | tx.description.computePhase.type === "vm") { 24 | const nftTransfer = { 25 | queryId: body.loadUint(64), 26 | from: tx.inMessage.info.src, 27 | to: body.loadAddress(), 28 | value: tx.inMessage.info.value.coins, 29 | responseTo: body.loadAddress(), 30 | customPayload: body.loadMaybeRef(), 31 | forwardAmount: body.loadCoins(), 32 | forwardPayload: body.loadMaybeRef(), 33 | }; 34 | return { 35 | type: "transfer", 36 | info: nftTransfer, 37 | }; 38 | } 39 | else if (op === 0x693d3950 && 40 | tx.description.type === "generic" && 41 | tx.description.computePhase.type === "vm") { 42 | const royaltyInfo = { 43 | queryId: body.loadUint(64), 44 | from: tx.inMessage.info.src, 45 | nftItem: body.loadAddress(), 46 | value: tx.inMessage.info.value.coins, 47 | }; 48 | return { 49 | type: "royalty_params", 50 | info: royaltyInfo, 51 | }; 52 | } 53 | else { 54 | return { 55 | type: "unknown", 56 | info: null 57 | }; 58 | } 59 | } 60 | return { 61 | type: null, 62 | info: null, 63 | }; 64 | } 65 | exports.parseTransactionData = parseTransactionData; 66 | //# sourceMappingURL=parseTransaction.js.map -------------------------------------------------------------------------------- /cli/dist/cli/src/nftCollection.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"nftCollection.js","sourceRoot":"","sources":["../../../src/nftCollection.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /cli/dist/src/types/OffchainContent.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.encodeOffChainContent = exports.storeOffchainContent = exports.makeSnakeCell = void 0; 4 | const ton_core_1 = require("ton-core"); 5 | // offchain#01 uri:Text = FullContent; 6 | const OFF_CHAIN_CONTENT_PREFIX = 0x01; 7 | // export function flattenSnakeCell(cell: Cell) { 8 | // let c: Cell|null = cell 9 | // let res = Buffer.alloc(0) 10 | // while (c) { 11 | // let cs = c.beginParse() 12 | // let data = cs.readRemainingBytes() 13 | // res = Buffer.concat([res, data]) 14 | // c = c.refs[0] 15 | // } 16 | // return res 17 | // } 18 | function bufferToChunks(buff, chunkSize) { 19 | let chunks = []; 20 | while (buff.byteLength > 0) { 21 | chunks.push(buff.slice(0, chunkSize)); 22 | buff = buff.slice(chunkSize); 23 | } 24 | return chunks; 25 | } 26 | function makeSnakeCell(data) { 27 | let chunks = bufferToChunks(data, 127); 28 | let rootCell = (0, ton_core_1.beginCell)(); 29 | let curCell = rootCell; 30 | for (let i = 0; i < chunks.length; i++) { 31 | let chunk = chunks[i]; 32 | curCell.storeBuffer(chunk); 33 | if (chunks[i + 1]) { 34 | let nextCell = (0, ton_core_1.beginCell)(); 35 | curCell.storeRef(nextCell); 36 | curCell = nextCell; 37 | } 38 | } 39 | return rootCell; 40 | } 41 | exports.makeSnakeCell = makeSnakeCell; 42 | // export function loadOffchainContent(content: Cell): Offchain { 43 | // let data = flattenSnakeCell(content) 44 | // let prefix = data[0] 45 | // if (prefix !== OFF_CHAIN_CONTENT_PREFIX) { 46 | // throw new Error(`Unknown content prefix: ${prefix.toString(16)}`) 47 | // } 48 | // return { 49 | // uri: data.slice(1).toString() 50 | // } 51 | // } 52 | function storeOffchainContent(content) { 53 | let data = Buffer.from(content.uri); 54 | let offChainPrefix = Buffer.from([OFF_CHAIN_CONTENT_PREFIX]); 55 | data = Buffer.concat([offChainPrefix, data]); 56 | return (builder) => { 57 | builder.storeRef(makeSnakeCell(data)); 58 | }; 59 | } 60 | exports.storeOffchainContent = storeOffchainContent; 61 | function encodeOffChainContent(content) { 62 | let data = Buffer.from(content); 63 | let offChainPrefix = Buffer.from([OFF_CHAIN_CONTENT_PREFIX]); 64 | data = Buffer.concat([offChainPrefix, data]); 65 | return makeSnakeCell(data); 66 | } 67 | exports.encodeOffChainContent = encodeOffChainContent; 68 | //# sourceMappingURL=OffchainContent.js.map -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/struct/get-met.func: -------------------------------------------------------------------------------- 1 | (int, int) get_nft_owner() method_id { 2 | init_data(); 3 | 4 | if (nft_owner.slice_bits() <= 2) { return (0, 0);} 5 | 6 | (int wc, int addr) = parse_std_addr(nft_owner); 7 | return (wc, addr); 8 | } 9 | 10 | (int, int) get_nft_addr() method_id { 11 | init_data(); 12 | 13 | if (nft_addr.slice_bits() <= 2) { return (0, 0);} 14 | 15 | (int wc, int addr) = parse_std_addr(nft_addr); 16 | return (wc, addr); 17 | } 18 | 19 | (int, int) get_last_member() method_id { 20 | init_data(); 21 | ;; trhow error of addr not std 22 | (int wc, int addr) = parse_std_addr(last_member); 23 | return (wc, addr); 24 | } 25 | 26 | (int, int) get_mp_addr() method_id { 27 | init_data(); 28 | ;; trhow error of addr not std 29 | (int wc, int addr) = parse_std_addr(mp_addr); 30 | return (wc, addr); 31 | } 32 | 33 | (int, int) get_mp_fee_addr() method_id { 34 | init_data(); 35 | ;; trhow error of addr not std 36 | (int wc, int addr) = parse_std_addr(mp_fee_addr); 37 | return (wc, addr); 38 | } 39 | 40 | (int, int) get_royalty_fee_addr() method_id { 41 | init_data(); 42 | ;; trhow error of addr not std 43 | (int wc, int addr) = parse_std_addr(royalty_fee_addr); 44 | return (wc, addr); 45 | } 46 | 47 | (int, int, int, int) get_fees_info() method_id { 48 | init_data(); 49 | return ( 50 | mp_fee_factor, mp_fee_base, 51 | royalty_fee_factor, royalty_fee_base 52 | ); 53 | } 54 | 55 | (int, int, int, int, int) get_bid_info() method_id { 56 | init_data(); 57 | return ( 58 | min_bid, max_bid, min_step, 59 | last_bid, end_time 60 | ); 61 | } 62 | 63 | ;; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 64 | (int, int, int, slice, slice, slice, int, slice, int, slice, int, int, slice, int, int, int, int, int, int, int) get_sale_data() method_id { 65 | init_data(); 66 | 67 | return ( 68 | 0x415543, ;; 1 nft aucion ("AUC") 69 | end?, ;; 2 70 | end_time, ;; 3 71 | mp_addr, ;; 4 72 | nft_addr, ;; 5 73 | nft_owner, ;; 6 74 | last_bid, ;; 7 75 | last_member, ;; 8 76 | min_step, ;; 9 77 | mp_fee_addr, ;; 10 78 | mp_fee_factor, mp_fee_base, ;; 11, 12 79 | royalty_fee_addr, ;; 13 80 | royalty_fee_factor, royalty_fee_base, ;; 14, 15 81 | max_bid, ;; 16 82 | min_bid, ;; 17 83 | created_at?, ;; 18 84 | last_bid_at, ;; 19 85 | is_canceled? ;; 20 86 | ); 87 | } 88 | -------------------------------------------------------------------------------- /cli/dist/src/utils/createTempFile.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { 14 | Object.defineProperty(o, "default", { enumerable: true, value: v }); 15 | }) : function(o, v) { 16 | o["default"] = v; 17 | }); 18 | var __importStar = (this && this.__importStar) || function (mod) { 19 | if (mod && mod.__esModule) return mod; 20 | var result = {}; 21 | if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 22 | __setModuleDefault(result, mod); 23 | return result; 24 | }; 25 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 26 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 27 | return new (P || (P = Promise))(function (resolve, reject) { 28 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 29 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 30 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 31 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 32 | }); 33 | }; 34 | var __importDefault = (this && this.__importDefault) || function (mod) { 35 | return (mod && mod.__esModule) ? mod : { "default": mod }; 36 | }; 37 | Object.defineProperty(exports, "__esModule", { value: true }); 38 | exports.createTempFile = void 0; 39 | const uuid_1 = require("./uuid"); 40 | const os = __importStar(require("os")); 41 | const path_1 = __importDefault(require("path")); 42 | const promises_1 = require("fs/promises"); 43 | function createTempFile(ext) { 44 | return __awaiter(this, void 0, void 0, function* () { 45 | let name = (0, uuid_1.uuid)(); 46 | let fullPath = path_1.default.resolve(os.tmpdir(), name + ext); 47 | yield (0, promises_1.writeFile)(fullPath, Buffer.alloc(0)); 48 | return { 49 | name: fullPath, 50 | destroy: () => __awaiter(this, void 0, void 0, function* () { 51 | yield (0, promises_1.unlink)(fullPath); 52 | }) 53 | }; 54 | }); 55 | } 56 | exports.createTempFile = createTempFile; 57 | //# sourceMappingURL=createTempFile.js.map -------------------------------------------------------------------------------- /src/wrappers/standard/NftCollection.ts: -------------------------------------------------------------------------------- 1 | import { Address, Cell, Contract, ContractProvider } from 'ton-core' 2 | 3 | /** 4 | * Represents a collection of NFT items. 5 | */ 6 | export class NftCollection implements Contract { 7 | 8 | /** 9 | * Constructs an instance of the NftCollection contract. 10 | * @param address - The address of the contract. 11 | * @param init - Optional initialization data for the contract's code and data. 12 | */ 13 | constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {} 14 | 15 | /** 16 | * Constructs an instance of the NftCollection contract from an address. 17 | * @param address - The address of the contract. 18 | * @returns An instance of NftCollection. 19 | */ 20 | static createFromAddress( 21 | address: Address 22 | ) { 23 | return new NftCollection( 24 | address 25 | ) 26 | } 27 | 28 | /** 29 | * Retrieves the collection data from the contract. 30 | * @param provider - The ContractProvider to facilitate the data retrieval. 31 | * @returns An object with the collection data. 32 | */ 33 | async getCollectionData( 34 | provider: ContractProvider 35 | ) { 36 | const { stack } = await provider.get('get_collection_data', []) 37 | return { 38 | nextItemIndex: stack.readBigNumber(), 39 | collectionContent: stack.readCellOpt(), 40 | ownerAddress: stack.readAddressOpt(), 41 | } 42 | } 43 | 44 | /** 45 | * Retrieves the NFT address by index from the contract. 46 | * @param provider - The ContractProvider to facilitate the data retrieval. 47 | * @param index - The index of the NFT in the collection. 48 | * @returns An object with the NFT address. 49 | */ 50 | async getNftAddressByIndex( 51 | provider: ContractProvider, 52 | index: bigint 53 | ) { 54 | const { stack } = await provider.get('get_nft_address_by_index', [ 55 | { type: 'int', value: index } 56 | ]) 57 | return { 58 | nftAddress: stack.readAddressOpt(), 59 | } 60 | } 61 | 62 | /** 63 | * Retrieves the NFT content from the contract. 64 | * @param provider - The ContractProvider to facilitate the data retrieval. 65 | * @param index - The index of the NFT in the collection. 66 | * @param individualContent - The individual content of the NFT. 67 | * @returns An object with the full NFT content. 68 | */ 69 | async getNftContent( 70 | provider: ContractProvider, 71 | index: bigint, 72 | individualContent: Cell 73 | ) { 74 | const { stack } = await provider.get('get_nft_content', [ 75 | { type: 'int', value: index }, 76 | { type: 'cell', cell: individualContent } 77 | ]) 78 | return { 79 | fullContent: stack.readCellOpt(), 80 | } 81 | } 82 | 83 | } -------------------------------------------------------------------------------- /cli/dist/src/wrappers/standard/NftItemRoyalty.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.NftItemRoyalty = void 0; 13 | const ton_core_1 = require("ton-core"); 14 | const NftItem_1 = require("./NftItem"); 15 | /** 16 | * Represents an NFT item contract with royalty features. 17 | * Inherits from the NftItem class. 18 | */ 19 | class NftItemRoyalty extends NftItem_1.NftItem { 20 | /** 21 | * Constructs an instance of the NftItemRoyalty contract from an address. 22 | * @param address - The address of the contract. 23 | * @returns An instance of NftItemRoyalty. 24 | */ 25 | static createFromAddress(address) { 26 | return new NftItemRoyalty(address); 27 | } 28 | /** 29 | * Sends a request to get the royalty parameters from the contract. 30 | * @param provider - The ContractProvider to facilitate the data retrieval. 31 | * @param via - The Sender initiating the data retrieval. 32 | * @param params - The parameters for the data retrieval. 33 | */ 34 | sendGetRoyaltyParams(provider, via, params) { 35 | return __awaiter(this, void 0, void 0, function* () { 36 | yield provider.internal(via, { 37 | value: params.value, 38 | body: (0, ton_core_1.beginCell)() 39 | .storeUint(0x693d3950, 32) 40 | .storeUint(params.queryId, 64) 41 | .endCell(), 42 | sendMode: ton_core_1.SendMode.PAY_GAS_SEPARATELY, 43 | }); 44 | }); 45 | } 46 | /** 47 | * Retrieves the royalty parameters of the NFT from the contract. 48 | * @param provider - The ContractProvider to facilitate the data retrieval. 49 | * @returns An object with the royalty parameters. 50 | */ 51 | getRoyaltyParams(provider) { 52 | return __awaiter(this, void 0, void 0, function* () { 53 | const { stack } = yield provider.get('royalty_params', []); 54 | return { 55 | init: stack.readBoolean(), 56 | numerator: stack.readBigNumber(), 57 | denominator: stack.readBigNumber(), 58 | destination: stack.readAddressOpt() 59 | }; 60 | }); 61 | } 62 | } 63 | exports.NftItemRoyalty = NftItemRoyalty; 64 | //# sourceMappingURL=NftItemRoyalty.js.map -------------------------------------------------------------------------------- /cli/dist/src/storage/AmazonS3.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"AmazonS3.js","sourceRoot":"","sources":["../../../../src/storage/AmazonS3.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftFixedPriceV2.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftFixedPriceV2.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftFixedPriceV2.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAmH;AAEnH,MAAa,eAAe;IACxB,YAAqB,OAAgB,EAAW,SAAkB,EAAW,IAAiC;QAAzF,YAAO,GAAP,OAAO,CAAS;QAAW,cAAS,GAAT,SAAS,CAAS;QAAW,SAAI,GAAJ,IAAI,CAA6B;IAAG,CAAC;IAElH,MAAM,CAAC,iBAAiB,CACpB,OAAgB;QAEhB,OAAO,IAAI,eAAe,CACtB,OAAO,CACN,CAAC;IACV,CAAC;IAED,MAAM,CAAO,gBAAgB,CACzB,MAA6B;;YAG7B,IAAI,IAAI,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,OAAO,GAAG,IAAA,0BAAe,EACzB,CAAC,EACD;gBACI,IAAI,EAAE,iCAAyB;gBAC/B,IAAI,EAAE,IAAI;aACb,CACJ,CAAA;YAED,OAAO,IAAI,eAAe,CACtB,OAAO,EACP,CAAC,EACD;gBACI,IAAI,EAAE,iCAAyB;gBAC/B,IAAI,EAAE,IAAI;aACb,CACJ,CAAA;QACL,CAAC;KAAA;IAED,aAAa;IACP,UAAU,CAAC,QAA0B,EAAE,GAAW,EAAE,KAAa;;YACnE,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK;gBACL,IAAI,EAAE,IAAA,oBAAS,GAAE,CAAC,OAAO,EAAE;aAC9B,CAAC,CAAA;QACN,CAAC;KAAA;IAGK,SAAS,CAAC,QAA0B,EAAE,GAAW,EAAE,MAGxD;;YACG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,IAAA,oBAAS,GAAE;qBACZ,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;qBAChB,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;qBAC7B,OAAO,EAAE;gBACd,QAAQ,EAAE,mBAAQ,CAAC,kBAAkB;aACxC,CAAC,CAAA;QACN,CAAC;KAAA;IAEK,cAAc,CAAC,QAA0B,EAAE,GAAW,EAAE,MAG7D;;YACG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,IAAA,oBAAS,GAAE;qBACZ,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;qBAChB,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;qBAC7B,OAAO,EAAE;gBACd,QAAQ,EAAE,mBAAQ,CAAC,kBAAkB;aACxC,CAAC,CAAA;QACN,CAAC;KAAA;IAEK,OAAO,CAAC,QAA0B,EAAE,GAAW,EAAE,MAGtD;;YACG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,IAAA,oBAAS,GAAE;oBACb,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;oBAClC,OAAO,EAAE;gBACb,QAAQ,EAAE,mBAAQ,CAAC,kBAAkB;aACxC,CAAC,CAAA;QACN,CAAC;KAAA;IAEK,WAAW,CAAC,QAA0B;;YACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;YAEzD,oBAAoB;YACpB,KAAK,CAAC,GAAG,EAAE,CAAA;YAEX,OAAO;gBACH,mCAAmC;gBACnC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE;gBACjC,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE;gBAChC,kBAAkB,EAAE,KAAK,CAAC,cAAc,EAAE;gBAC1C,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE;gBAClC,eAAe,EAAE,KAAK,CAAC,cAAc,EAAE;gBACvC,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE;gBAChC,qBAAqB,EAAE,KAAK,CAAC,cAAc,EAAE;gBAC7C,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE;gBACrC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;gBACtC,aAAa,EAAG,KAAK,CAAC,aAAa,EAAE;aACxC,CAAA;QACL,CAAC;KAAA;CACJ;AAxGD,0CAwGC;AAiBD,SAAgB,8BAA8B,CAAC,IAA2B;IAEtE,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAE1B,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACxC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAEvC,IAAI,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAA;IAE1B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9C,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAE3B,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAA;AAC7B,CAAC;AApBD,wEAoBC;AAED,OAAO;AAEM,QAAA,wBAAwB,GAAG,0vBAA0vB,CAAA;AAErxB,QAAA,yBAAyB,GAAG,eAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuction/nft-auction/nft-auction.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; main FunC file git@github.com:cryshado/nft-auc-contest.git 3 | ;; 4 | 5 | int equal_slices? (slice a, slice b) asm "SDEQ"; 6 | 7 | #include "struct/stdlib.fc"; 8 | #include "struct/op-codes.func"; 9 | #include "struct/exit-codes.func"; 10 | #include "struct/math.func"; 11 | #include "struct/msg-utils.func"; 12 | #include "struct/storage.func"; 13 | #include "struct/handles.func"; 14 | #include "struct/get-met.func"; 15 | 16 | {- 17 | SHOULD 18 | [+] accept coins for deploy 19 | [+] accept nft and change auction statud 20 | [+] return transaction if auction already end 21 | [+] can cancel auction 22 | [+] accept new bid -> check auction end -> end auction 23 | -} 24 | () recv_internal(int my_balance, int msg_value, cell in_msg_cell, slice in_msg_body) impure { 25 | slice cs = in_msg_cell.begin_parse(); 26 | throw_if(0, cs~load_uint(4) & 1); 27 | 28 | slice sender_addr = cs~load_msg_addr(); 29 | init_data(); 30 | 31 | if (equal_slices?(sender_addr, mp_addr) & end? == true) { 32 | int op = in_msg_body~load_uint(32); 33 | if ((op == 0) & equal_slices(in_msg_body, msg::repeat_end_auction())) { 34 | ;; special case for repeat end_auction logic if nft not transfered from auc contract 35 | handle::end_auction(); 36 | return (); 37 | } 38 | if ((op == 0) & equal_slices(in_msg_body, msg::emergency_message())) { 39 | ;; way to fix unexpected troubles with auction contract 40 | ;; for example if some one transfer nft to this contract 41 | var msg = in_msg_body~load_ref().begin_parse(); 42 | var mode = msg~load_uint(8); 43 | send_raw_message(msg~load_ref(), mode); 44 | return (); 45 | } 46 | ;; accept coins for deploy 47 | return (); 48 | } 49 | 50 | if (equal_slices?(sender_addr, nft_addr)) { 51 | handle::try_init_auction(sender_addr, in_msg_body); 52 | return (); 53 | } 54 | 55 | if (now() >= end_time) { 56 | handle::return_transaction(sender_addr); 57 | handle::end_auction(); 58 | return (); 59 | } 60 | 61 | if (end? == true) { 62 | handle::return_transaction(sender_addr); 63 | return (); 64 | } 65 | 66 | if (equal_slices?(sender_addr, nft_owner)) | (equal_slices?(sender_addr, mp_addr)) { 67 | throw_if(;;throw if it`s not message 68 | exit::not_message(), 69 | in_msg_body~load_uint(32) != 0 70 | ); 71 | 72 | if (equal_slices?(in_msg_body, msg::cancel_msg())) { 73 | handle::try_cancel(in_msg_body); 74 | } 75 | 76 | if (equal_slices?(in_msg_body, msg::stop_msg()) & equal_slices?(sender_addr, nft_owner)) { 77 | handle::return_transaction(sender_addr); 78 | handle::end_auction(); 79 | } 80 | 81 | return (); 82 | } 83 | 84 | handle::new_bid(sender_addr, msg_value); 85 | } 86 | 87 | {- 88 | Message for deploy contract external 89 | -} 90 | () recv_external(slice in_msg) impure { 91 | init_data(); 92 | throw_if(exit::already_activated(), activated? == true); 93 | accept_message(); 94 | activated? = true; 95 | pack_data(); 96 | } -------------------------------------------------------------------------------- /src/wrappers/getgems/NftRaffle/nft-raffle/struct/storage.func: -------------------------------------------------------------------------------- 1 | global int init?; 2 | global int db::state; 3 | global int db::right_nfts_count; 4 | global int db::right_nfts_received; 5 | global int db::left_nfts_count; 6 | global int db::left_nfts_received; 7 | 8 | global slice db::left_user; 9 | global slice db::right_user; 10 | global slice db::super_user; 11 | 12 | global int db::left_commission; 13 | global int db::right_commission; 14 | global int db::left_coins_got; 15 | global int db::right_coins_got; 16 | global int db::nft_transfer_fee; 17 | 18 | global cell db::nfts; 19 | global cell db::raffled_nfts; 20 | 21 | 22 | 23 | () init_data() impure inline_ref { 24 | ifnot(null?(init?)) { 25 | return (); 26 | } 27 | slice ds = get_data().begin_parse(); 28 | 29 | slice state_slice = ds~load_ref().begin_parse(); 30 | db::state = state_slice~load_uint(2); 31 | db::right_nfts_count = state_slice~load_uint(4); 32 | db::right_nfts_received = state_slice~load_uint(4); 33 | db::left_nfts_count = state_slice~load_uint(4); 34 | db::left_nfts_received = state_slice~load_uint(4); 35 | 36 | slice addr_slice = ds~load_ref().begin_parse(); 37 | db::left_user = addr_slice~load_msg_addr(); 38 | db::right_user = addr_slice~load_msg_addr(); 39 | db::super_user = addr_slice~load_msg_addr(); 40 | 41 | slice commission_slice = ds~load_ref().begin_parse(); 42 | db::left_commission = commission_slice~load_coins(); 43 | db::right_commission = commission_slice~load_coins(); 44 | db::left_coins_got = commission_slice~load_coins(); 45 | db::right_coins_got = commission_slice~load_coins(); 46 | db::nft_transfer_fee = commission_slice~load_coins(); 47 | 48 | slice dict_slice = ds~load_ref().begin_parse(); 49 | db::nfts = dict_slice~load_dict(); 50 | db::raffled_nfts = dict_slice~load_dict(); 51 | init? = true; 52 | } 53 | 54 | () save_data() impure inline_ref { 55 | set_data( 56 | begin_cell() 57 | .store_ref( ;; state slice 58 | begin_cell() 59 | .store_uint(db::state, 2) 60 | .store_uint(db::right_nfts_count, 4) 61 | .store_uint(db::right_nfts_received, 4) 62 | .store_uint(db::left_nfts_count, 4) 63 | .store_uint(db::left_nfts_received, 4) 64 | .end_cell() 65 | ) 66 | .store_ref( ;; addr slice 67 | begin_cell() 68 | .store_slice(db::left_user) 69 | .store_slice(db::right_user) 70 | .store_slice(db::super_user) 71 | .end_cell() 72 | ) 73 | .store_ref( ;; commission slice 74 | begin_cell() 75 | .store_coins(db::left_commission) 76 | .store_coins(db::right_commission) 77 | .store_coins(db::left_coins_got) 78 | .store_coins(db::right_coins_got) 79 | .store_coins(db::nft_transfer_fee) 80 | .end_cell() 81 | ) 82 | .store_ref( ;; dict slice 83 | begin_cell() 84 | .store_dict(db::nfts) 85 | .store_dict(db::raffled_nfts) 86 | .end_cell() 87 | ) 88 | .end_cell() 89 | ); 90 | } -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftFixedPriceV3.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftFixedPriceV3.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftFixedPriceV3.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /cli/src/nftSingle.ts: -------------------------------------------------------------------------------- 1 | import { Sender, toNano } from 'ton-core' 2 | import {NftSingle, NftSingleData} from '../../src/wrappers/getgems/NftSingle/NftSingle' 3 | import importKeyPair from './utils/importKeyPair'; 4 | import { readFileSync, writeFileSync } from 'fs'; 5 | import { error } from 'console'; 6 | import { env } from 'process'; 7 | import { Address } from 'ton-core' 8 | import { TonClient4 } from 'ton'; 9 | import createSender from './utils/createSender' 10 | 11 | export async function createNftSingle( 12 | client: TonClient4, 13 | config: NftSingleData, 14 | options?: { 15 | secretKey?: string 16 | } 17 | ) { 18 | let keypair = await importKeyPair(options?.secretKey); 19 | 20 | let sender = await createSender(keypair, client) 21 | 22 | 23 | const nftSingle = client.open( 24 | await NftSingle.createFromConfig( 25 | config 26 | ) 27 | ); 28 | 29 | await nftSingle.sendDeploy(sender, toNano('0.05')); 30 | 31 | console.log( 32 | `NFT Single deployed at ${nftSingle.address}` 33 | ) 34 | 35 | await writeFileSync( 36 | './nftSingle.json', 37 | JSON.stringify({ 38 | config: config, 39 | address: nftSingle.address, 40 | init: nftSingle.init 41 | } 42 | )) 43 | 44 | console.log( 45 | `Saved Config` 46 | ) 47 | 48 | return nftSingle; 49 | } 50 | 51 | export async function importExistingNftSingle( 52 | client: TonClient4, 53 | options?: { 54 | configPath?: string 55 | } 56 | ) { 57 | if (options?.configPath) { 58 | const config = JSON.parse( 59 | readFileSync( 60 | options?.configPath, 61 | 'utf-8' 62 | ) 63 | ) 64 | 65 | const nftSingle = client.open( 66 | await NftSingle.createFromAddress( 67 | config.address 68 | ) 69 | ); 70 | 71 | return nftSingle 72 | } else { 73 | const config = JSON.parse(readFileSync(String(env.PATH_TO_CONFIG), 'utf-8')); 74 | 75 | const nftSingle = client.open( 76 | await NftSingle.createFromAddress( 77 | config.address 78 | ) 79 | ); 80 | 81 | return nftSingle; 82 | } 83 | } 84 | 85 | export async function transfer( 86 | client: TonClient4, 87 | destination: string, 88 | options?: { 89 | configPath?: string, 90 | secretKey?: string 91 | } 92 | ) { 93 | const nftSingle = await importExistingNftSingle( 94 | client, 95 | options 96 | ); 97 | 98 | let keypair = await importKeyPair( 99 | options?.secretKey 100 | ) 101 | 102 | let sender = await createSender(keypair, client); 103 | 104 | let tx = await nftSingle.sendTransfer( 105 | sender, 106 | { 107 | value: toNano('0.05'), 108 | queryId: toNano('0'), 109 | newOwner: Address.parse(destination), 110 | responseDestination: sender.address, 111 | forwardAmount: toNano('0') 112 | } 113 | ); 114 | 115 | console.log( 116 | `Transferred NFT from ${sender.address?.toString()} to ${destination}` 117 | ) 118 | } -------------------------------------------------------------------------------- /cli/dist/src/storage/Pinata.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Pinata.js","sourceRoot":"","sources":["../../../../src/storage/Pinata.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /cli/dist/src/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { 14 | Object.defineProperty(o, "default", { enumerable: true, value: v }); 15 | }) : function(o, v) { 16 | o["default"] = v; 17 | }); 18 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 19 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 20 | }; 21 | var __importStar = (this && this.__importStar) || function (mod) { 22 | if (mod && mod.__esModule) return mod; 23 | var result = {}; 24 | if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 25 | __setModuleDefault(result, mod); 26 | return result; 27 | }; 28 | Object.defineProperty(exports, "__esModule", { value: true }); 29 | exports.ENDPOINT = exports.Pinata = exports.AmazonS3 = exports.TransactionParsing = void 0; 30 | // Storage 31 | const AmazonS3_1 = require("./storage/AmazonS3"); 32 | Object.defineProperty(exports, "AmazonS3", { enumerable: true, get: function () { return AmazonS3_1.AmazonS3; } }); 33 | const Pinata_1 = require("./storage/Pinata"); 34 | Object.defineProperty(exports, "Pinata", { enumerable: true, get: function () { return Pinata_1.Pinata; } }); 35 | // Wrappers 36 | __exportStar(require("./wrappers/getgems/NftCollection"), exports); 37 | __exportStar(require("./wrappers/getgems/NftItem"), exports); 38 | __exportStar(require("./wrappers/getgems/SbtSingle"), exports); 39 | __exportStar(require("./wrappers/standard/NftItemRoyalty"), exports); 40 | __exportStar(require("./wrappers/getgems/NftAuction"), exports); 41 | __exportStar(require("./wrappers/getgems/NftAuctionV2"), exports); 42 | __exportStar(require("./wrappers/getgems/NftFixedPrice"), exports); 43 | __exportStar(require("./wrappers/getgems/NftFixedPriceV2"), exports); 44 | __exportStar(require("./wrappers/getgems/NftFixedPriceV3"), exports); 45 | __exportStar(require("./wrappers/getgems/NftMarketplace"), exports); 46 | __exportStar(require("./wrappers/getgems/NftOffer"), exports); 47 | __exportStar(require("./wrappers/getgems/NftSwap"), exports); 48 | // Utils 49 | __exportStar(require("./utils"), exports); 50 | // Data Encoders & Decoders 51 | __exportStar(require("./types/OffchainContent"), exports); 52 | // Transaction Parsing 53 | exports.TransactionParsing = __importStar(require("./transaction-parsing/")); 54 | __exportStar(require("./utils/FetchAndParseTransaction"), exports); 55 | // TON API 56 | __exportStar(require("./ton-api"), exports); 57 | // Endpoints 58 | var ENDPOINT; 59 | (function (ENDPOINT) { 60 | ENDPOINT["MAINNET"] = "https://toncenter.com/api/v2/jsonRPC"; 61 | ENDPOINT["TESTNET"] = "https://testnet.toncenter.com/api/v2/jsonRPC"; 62 | })(ENDPOINT = exports.ENDPOINT || (exports.ENDPOINT = {})); 63 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftItem.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftItem.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftItem.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/SbtSingle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"SbtSingle.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/SbtSingle.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/sources/nft-marketplace-v2.fc: -------------------------------------------------------------------------------- 1 | ;; NFT marketplace smart contract v2 2 | ;; Extends wallet v3r2 & adds ability to deploy sales 3 | 4 | ;; 5 | ;; storage scheme 6 | ;; 7 | ;; storage#_ seqno:uint32 subwallet:uint32 public_key:uint25 8 | ;; = Storage; 9 | ;; 10 | _ load_data() { 11 | var ds = get_data().begin_parse(); 12 | return ( 13 | ds~load_uint(32), ;; seqno 14 | ds~load_uint(32), ;; subwallet 15 | ds~load_uint(256) ;; public_key 16 | ); 17 | } 18 | 19 | () store_data(var data) impure { 20 | ( 21 | int seqno, 22 | int subwallet, 23 | int public_key 24 | ) = data; 25 | 26 | set_data( 27 | begin_cell() 28 | .store_uint(seqno, 32) 29 | .store_uint(subwallet, 32) 30 | .store_uint(public_key, 256) 31 | .end_cell() 32 | ); 33 | } 34 | 35 | () recv_internal(int my_balance, int msg_value, cell in_msg_full, slice in_msg_body) impure { 36 | if (in_msg_body.slice_empty?()) { ;; ignore empty messages 37 | return (); 38 | } 39 | 40 | slice cs = in_msg_full.begin_parse(); 41 | int flags = cs~load_uint(4); 42 | 43 | if (flags & 1) { ;; ignore all bounced messages 44 | return (); 45 | } 46 | slice sender_address = cs~load_msg_addr(); 47 | var (seqno, subwallet, public_key) = load_data(); 48 | 49 | int op = in_msg_body~load_uint(32); 50 | 51 | if (op == 1) { ;; deploy new signed sale 52 | var signature = in_msg_body~load_bits(512); 53 | throw_unless(35, check_signature(slice_hash(in_msg_body), signature, public_key)); 54 | 55 | (cell state_init, cell body) = (in_msg_body~load_ref(), in_msg_body~load_ref()); 56 | 57 | int state_init_hash = cell_hash(state_init); 58 | slice dest_address = begin_cell().store_int(0, 8).store_uint(state_init_hash, 256).end_cell().begin_parse(); 59 | 60 | var msg = begin_cell() 61 | .store_uint(0x18, 6) 62 | .store_uint(4, 3).store_slice(dest_address) 63 | .store_grams(0) 64 | .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) 65 | .store_ref(state_init) 66 | .store_ref(body); 67 | 68 | send_raw_message(msg.end_cell(), 64); ;; carry remaining value of message 69 | return (); 70 | } 71 | 72 | return (); 73 | } 74 | 75 | () recv_external(slice in_msg) impure { 76 | var signature = in_msg~load_bits(512); 77 | var cs = in_msg; 78 | var (subwallet_id, valid_until, msg_seqno) = (cs~load_uint(32), cs~load_uint(32), cs~load_uint(32)); 79 | throw_if(35, valid_until <= now()); 80 | var (seqno, subwallet, public_key) = load_data(); 81 | throw_unless(33, msg_seqno == seqno); 82 | throw_unless(34, subwallet_id == subwallet); 83 | throw_unless(35, check_signature(slice_hash(in_msg), signature, public_key)); 84 | accept_message(); 85 | cs~touch(); 86 | while (cs.slice_refs()) { 87 | var mode = cs~load_uint(8); 88 | send_raw_message(cs~load_ref(), mode); 89 | } 90 | 91 | store_data( 92 | seqno + 1, 93 | subwallet, 94 | public_key 95 | ); 96 | } 97 | 98 | ;; Get methods 99 | 100 | int seqno() method_id { 101 | return get_data().begin_parse().preload_uint(32); 102 | } 103 | 104 | int get_public_key() method_id { 105 | var cs = get_data().begin_parse(); 106 | cs~load_uint(64); 107 | return cs.preload_uint(256); 108 | } -------------------------------------------------------------------------------- /cli/README.md: -------------------------------------------------------------------------------- 1 | # NFT CLI Tool 2 | 3 | A command line tool for interacting with Non-Fungible Tokens (NFTs) on the TON blockchain. 4 | 5 | ## Requirements 6 | 7 | - Node.js 14.x or higher 8 | - A TON wallet or private key 9 | 10 | ## Installation 11 | 12 | 1. Clone the repository or download the source code. 13 | 2. Change into the project directory. 14 | 3. Change into the `cli/` directory 15 | 4. Run `npm install` to install dependencies. 16 | 5. Run `npm run build` to build the CLI 17 | 6. Run `npm link` to use the CLI everywhere 18 | 19 | ## Usage 20 | 21 | ### Upload NFT via Pinata: 22 | ``` 23 | ton-nft-cli upload pinata [path] --apiKey [API Key] --secretApiKey [Secret API Key] 24 | ``` 25 | This command is used to upload a file to Pinata, which is an IPFS pinning service. You need to replace `[path]` with the path of the file you want to upload, and `[API Key]` and `[Secret API Key]` with your Pinata API keys. 26 | 27 | ### Upload NFT via Amazon S3: 28 | ``` 29 | ton-nft-cli upload s3 [path] --accessKey [Access Key] --secretAccessKey [Secret Access Key] --bucketName [Bucket Name] --fileType [File Type] 30 | ``` 31 | This command is used to upload a file to Amazon S3. You need to replace `[path]` with the path of the file you want to upload, `[Access Key]` and `[Secret Access Key]` with your Amazon S3 credentials, `[Bucket Name]` with the name of your S3 bucket, and `[File Type]` with the type of the file you are uploading. 32 | 33 | ### Get NFT collections: 34 | ``` 35 | ton-nft-cli collections [limit] [offset] 36 | ``` 37 | This command is used to get a list of NFT collections. You can optionally specify a `[limit]` to limit the number of collections returned, and an `[offset]` to skip a certain number of collections. 38 | 39 | ### Get NFT collection by address: 40 | ``` 41 | ton-nft-cli collection [Address] 42 | ``` 43 | This command is used to get an NFT collection by its address. You need to replace `[Address]` with the address of the NFT collection. 44 | 45 | ### Get NFT items from collection by address: 46 | ``` 47 | ton-nft-cli collection-items [Address] [limit] [offset] 48 | ``` 49 | This command is used to get NFT items from a collection by its address. You need to replace `[Address]` with the address of the NFT collection. You can optionally specify a `[limit]` to limit the number of items returned, and an `[offset]` to skip a certain number of items. 50 | 51 | ### Get NFT item by its address: 52 | ``` 53 | ton-nft-cli item [Address] 54 | ``` 55 | This command is used to get an NFT item by its address. You need to replace `[Address]` with the address of the NFT item. 56 | 57 | ### Create a keypair: 58 | ``` 59 | ton-nft-cli keypair create 60 | ``` 61 | This command is used to create a new keypair. 62 | 63 | ### Create a single NFT: 64 | ``` 65 | ton-nft-cli nft-single create [configPath] [secretKey] 66 | ``` 67 | This command is used to create a single NFT. You need to replace `[configPath]` with the path of the NFT single data config JSON file, and optionally `[secretKey]` with your secret key. 68 | 69 | ### Transfer an NFT: 70 | ``` 71 | ton-nft-cli nft-single transfer [destination] [configPath] [secretKey] 72 | ``` 73 | This command is used to transfer an NFT single. You need to replace `[destination]` with the destination address, `[configPath]` with the path of the transfer configuration JSON file, and `[secretKey]` with the secret key of the sender. 74 | 75 | ### Create a NFT Collection: 76 | ``` 77 | ton-nft-cli nft-collection create [configPath] [secretKey] 78 | ``` 79 | This command is used to create a NFT Collection. You need to replace `[configPath]` with the path of the NFT collection data config JSON file, and optionally `[secretKey]` with your secret key. -------------------------------------------------------------------------------- /src/wrappers/getgems/NftRaffle/nft-raffle/struct/handles.func: -------------------------------------------------------------------------------- 1 | #include "constants.func"; 2 | 3 | () handle::raffle() impure inline_ref { 4 | db::state = state::completed(); 5 | db::raffled_nfts = utils::raffle_nfts(db::raffled_nfts, db::nfts); 6 | utils::send_raffled_nfts(db::raffled_nfts, db::nft_transfer_fee); 7 | raw_reserve(min_tons_for_storage(), 0); 8 | utils::send_tons(db::super_user, 0, msg::commission(), 130); 9 | save_data(); 10 | } 11 | 12 | 13 | () handle::return_nft(slice nft_addr, slice in_msg_body) impure inline_ref { 14 | in_msg_body~skip_bits(64); 15 | slice prev_owner = in_msg_body~load_msg_addr(); 16 | (_, int addr) = parse_std_addr(nft_addr); 17 | utils::send_nft(64, 0, prev_owner, addr); 18 | } 19 | 20 | () handle::receive_nft(slice nft_addr, int msg_value, slice in_msg_body) impure inline_ref { 21 | int extra = msg_value - min_tons_for_operation() - db::nft_transfer_fee; 22 | if ((extra < 0 ) | (db::state != state::active())) { 23 | handle::return_nft(nft_addr,in_msg_body); 24 | return (); 25 | } 26 | (_, int addr) = parse_std_addr(nft_addr); 27 | (cell nfts, int left_success, int right_success) = db::nfts.utils::add_nft(addr); 28 | 29 | if (~ (left_success | right_success)) { 30 | handle::return_nft(nft_addr,in_msg_body); 31 | return (); 32 | } 33 | db::nfts = nfts; 34 | if (left_success) { 35 | db::left_nfts_received += 1; 36 | db::left_coins_got += extra; 37 | } 38 | if(right_success) { 39 | db::right_nfts_received += 1; 40 | db::right_coins_got += extra; 41 | } 42 | if (utils::check_conditions()) { 43 | handle::raffle(); 44 | } 45 | save_data(); 46 | } 47 | 48 | () handle::cancel() impure inline_ref { 49 | throw_if(err::state(), db::state != state::active()); 50 | throw_if(err::state(), utils::check_conditions()); 51 | db::state = state::canceled(); 52 | db::nfts.utils::send_nfts(db::nft_transfer_fee, db::left_user, db::right_user); 53 | 54 | raw_reserve(min_tons_for_storage(), 0); 55 | 56 | utils::send_tons(db::left_user, db::left_coins_got, msg::canceled(), 2); 57 | utils::send_tons(db::right_user, db::right_coins_got, msg::canceled(), 2); 58 | utils::send_tons(db::super_user, 0, msg::canceled(), 128 + 2); 59 | save_data(); 60 | } 61 | 62 | () handle::add_coins(int sender, slice addr, int msg_value, slice in_msg_body) impure inline_ref { 63 | throw_unless(err::state(), db::state == state::active()); 64 | throw_if(err::coins(), msg_value < min_tons_for_operation()); 65 | if (sender == 1) { 66 | db::left_coins_got += (msg_value - min_tons_for_operation()); 67 | } 68 | if (sender == 2) { 69 | db::right_coins_got += (msg_value - min_tons_for_operation()); 70 | } 71 | if (utils::check_conditions()) { 72 | handle::raffle(); 73 | } 74 | save_data(); 75 | } 76 | 77 | () handle::maintain(slice sender_addr, slice in_msg_body) impure inline_ref { 78 | throw_if(err::state(), db::state == state::active()); 79 | throw_unless(err::wrong_addr(), equal_slices(sender_addr, db::super_user)); 80 | send_raw_message(in_msg_body~load_ref(), in_msg_body~load_uint(8)); 81 | } 82 | 83 | () handle::send_again(int msg_value) impure inline_ref { 84 | throw_if(err::state(), db::state != state::completed()); 85 | int need_coins = (db::left_nfts_count + db::right_nfts_count) * db::nft_transfer_fee; 86 | throw_if(err::coins(), msg_value < need_coins); 87 | int coins_for_nft = msg_value / (db::left_nfts_count + db::right_nfts_count); 88 | utils::send_raffled_nfts(db::raffled_nfts, coins_for_nft); 89 | } -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftSingle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftSingle.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftSingle.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftAuctionV2/nft-auction-v2/struct/storage.func: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; persistant and runtime storage вescription 3 | ;; 4 | 5 | global int init?; ;; init_data safe check 6 | global int end?; ;; end auction or not 7 | global slice mp_addr; ;; the address of the marketplace from which the contract is deployed 8 | global int activated?; ;; contract is activated by external message or by nft transfer 9 | global int created_at?; ;; timestamp of created acution 10 | global int is_canceled?; ;; auction was cancelled by owner 11 | global int sub_gas_price_from_bid?; ;; amound of gas used for processing bif 12 | 13 | global cell fees_cell; 14 | global cell constant_cell; 15 | 16 | ;; bids info cell (ref) 17 | global int min_bid; ;; minimal bid 18 | global int max_bid; ;; maximum bid 19 | global int min_step; ;; minimum step (can be 0) 20 | global slice last_member; ;; last member address 21 | global int last_bid; ;; last bid amount 22 | global int last_bid_at; ;; timestamp of last bid 23 | global int end_time; ;; unix end time 24 | global int step_time; ;; by how much the time increases with the new bid (e.g. 30) 25 | 26 | ;; nft info cell (ref) 27 | global slice nft_owner; ;; nft owner addres (should be sent nft if auction canceled or money from auction) 28 | global slice nft_addr; ;; nft address 29 | 30 | 31 | () init_data() impure inline_ref {- save for get methods -} { 32 | ifnot(null?(init?)) { return ();} 33 | 34 | slice ds = get_data().begin_parse(); 35 | end? = ds~load_int(1); 36 | activated? = ds~load_int(1); 37 | is_canceled? = ds~load_int(1); 38 | last_member = ds~load_msg_addr(); 39 | last_bid = ds~load_coins(); 40 | last_bid_at = ds~load_uint(32); 41 | end_time = ds~load_uint(32); 42 | nft_owner = ds~load_msg_addr(); 43 | 44 | fees_cell = ds~load_ref(); 45 | constant_cell = ds~load_ref(); 46 | slice constants = constant_cell.begin_parse(); 47 | sub_gas_price_from_bid? = constants~load_int(32); 48 | mp_addr = constants~load_msg_addr(); 49 | min_bid = constants~load_coins(); 50 | max_bid = constants~load_coins(); 51 | min_step = constants~load_coins(); 52 | step_time = constants~load_uint(32); 53 | nft_addr = constants~load_msg_addr(); 54 | created_at? = constants~load_uint(32); 55 | 56 | 57 | init? = true; 58 | } 59 | 60 | () pack_data() impure inline_ref { 61 | set_data( 62 | begin_cell() 63 | .store_int(end?, 1) ;; + stc 1 64 | .store_int(activated?, 1) ;; activated? 1 65 | .store_int(is_canceled?, 1) ;; 1 66 | .store_slice(last_member) ;; + max 267 ($10 with Anycast = 0) 67 | .store_coins(last_bid) ;; + max 124 68 | .store_uint(last_bid_at, 32) ;; + stc 32 69 | .store_uint(end_time, 32) ;; + stc 32 70 | .store_slice(nft_owner) ;; 267 71 | .store_ref(fees_cell) ;; + ref 72 | .store_ref(constant_cell) ;; + ref 73 | .end_cell() 74 | ;; total 267 + 124 + 32 + 32 + 267 + 1 + 1 + 1 = 725 75 | ); 76 | } 77 | 78 | (slice, int, int, slice, int, int) get_fees() inline_ref { 79 | slice fees = fees_cell.begin_parse(); 80 | slice mp_fee_addr = fees~load_msg_addr(); 81 | int mp_fee_factor = fees~load_uint(32); 82 | int mp_fee_base = fees~load_uint(32); 83 | slice royalty_fee_addr = fees~load_msg_addr(); 84 | int royalty_fee_factor = fees~load_uint(32); 85 | int royalty_fee_base = fees~load_uint(32); 86 | return ( 87 | mp_fee_addr, 88 | mp_fee_factor, 89 | mp_fee_base, 90 | royalty_fee_addr, 91 | royalty_fee_factor, 92 | royalty_fee_base 93 | ); 94 | } 95 | -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftMarketplace.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.NftMarketplaceCodeCell = exports.NftMarketplaceCodeBoc = exports.buildSignature = exports.buildNftMarketplaceDataCell = exports.NftMarketplace = void 0; 13 | const ton_core_1 = require("ton-core"); 14 | const ton_crypto_1 = require("ton-crypto"); 15 | class NftMarketplace { 16 | constructor(address, workchain, init) { 17 | this.address = address; 18 | this.workchain = workchain; 19 | this.init = init; 20 | } 21 | static createFromAddress(address) { 22 | return new NftMarketplace(address); 23 | } 24 | static createFromConfig(config) { 25 | return __awaiter(this, void 0, void 0, function* () { 26 | let data = buildNftMarketplaceDataCell(config); 27 | let address = (0, ton_core_1.contractAddress)(0, { 28 | code: exports.NftMarketplaceCodeCell, 29 | data: data 30 | }); 31 | return new NftMarketplace(address, 0, { 32 | code: exports.NftMarketplaceCodeCell, 33 | data: data 34 | }); 35 | }); 36 | } 37 | // Deployment 38 | sendDeploy(provider, via, value) { 39 | return __awaiter(this, void 0, void 0, function* () { 40 | yield provider.internal(via, { 41 | value, 42 | body: (0, ton_core_1.beginCell)().endCell(), 43 | }); 44 | }); 45 | } 46 | sendCoins(provider, via, params) { 47 | return __awaiter(this, void 0, void 0, function* () { 48 | yield provider.internal(via, { 49 | value: params.value, 50 | body: (0, ton_core_1.beginCell)() 51 | .storeUint(1, 32) 52 | .storeUint(params.queryId, 64) 53 | .endCell(), 54 | sendMode: ton_core_1.SendMode.PAY_GAS_SEPARATELY, 55 | }); 56 | }); 57 | } 58 | } 59 | exports.NftMarketplace = NftMarketplace; 60 | function buildNftMarketplaceDataCell(data) { 61 | let dataCell = (0, ton_core_1.beginCell)(); 62 | dataCell.storeUint(data.seqno, 32); 63 | dataCell.storeUint(data.subwallet, 32); 64 | dataCell.storeBuffer(data.publicKey); 65 | return dataCell.endCell(); 66 | } 67 | exports.buildNftMarketplaceDataCell = buildNftMarketplaceDataCell; 68 | function buildSignature(params) { 69 | let bodyCell = (0, ton_core_1.beginCell)(); 70 | bodyCell.storeRef(params.saleStateInit); 71 | bodyCell.storeRef(params.saleMessageBody); 72 | return (0, ton_crypto_1.sign)(bodyCell.endCell().hash(), params.keyPair.secretKey); 73 | } 74 | exports.buildSignature = buildSignature; 75 | // Data 76 | exports.NftMarketplaceCodeBoc = 'te6cckEBDAEA7wABFP8A9KQT9LzyyAsBAgEgAwIAePKDCNcYINMf0x/THwL4I7vyY/ABUTK68qFRRLryogT5AVQQVfkQ8qP4AJMg10qW0wfUAvsA6DABpALwAgIBSAcEAgFIBgUAEbjJftRNDXCx+AAXuznO1E0NM/MdcL/4AgLOCQgAF0AsjLH8sfy//J7VSAIBIAsKABU7UTQ0x/TH9P/MIACpGwiIMcAkVvgAdDTAzBxsJEw4PABbCEB0x8BwAGONIMI1xgg+QFAA/kQ8qPU1DAh+QBwyMoHy//J0Hd0gBjIywXLAljPFnD6AstrEszMyYBA+wDgW4NC26jQ='; 77 | exports.NftMarketplaceCodeCell = ton_core_1.Cell.fromBoc(Buffer.from(exports.NftMarketplaceCodeBoc, 'base64'))[0]; 78 | //# sourceMappingURL=NftMarketplace.js.map -------------------------------------------------------------------------------- /cli/src/nftCollection.ts: -------------------------------------------------------------------------------- 1 | import { Sender, toNano } from 'ton-core' 2 | import {NftCollection, NftCollectionData} from '../../src/wrappers/getgems/NftCollection/NftCollection' 3 | import importKeyPair from './utils/importKeyPair'; 4 | import { readFileSync, writeFileSync, existsSync } from 'fs'; 5 | import { error } from 'console'; 6 | import { env } from 'process'; 7 | import { Address } from 'ton-core' 8 | import { TonClient4 } from 'ton'; 9 | import createSender from './utils/createSender' 10 | 11 | export async function createNftCollection( 12 | client: TonClient4, 13 | config: NftCollectionData, 14 | options?: { 15 | secretKey?: string 16 | } 17 | ) { 18 | let keypair = await importKeyPair(options?.secretKey); 19 | 20 | let sender = await createSender(keypair, client) 21 | 22 | 23 | const nftCollection = client.open( 24 | await NftCollection.createFromConfig( 25 | config 26 | ) 27 | ); 28 | 29 | await nftCollection.sendDeploy(sender, toNano('0.05')); 30 | 31 | console.log( 32 | `NFT Single deployed at ${nftCollection.address}` 33 | ) 34 | 35 | await writeFileSync( 36 | './NftCollection.json', 37 | JSON.stringify({ 38 | config: config, 39 | address: nftCollection.address, 40 | init: nftCollection.init 41 | } 42 | )) 43 | 44 | console.log( 45 | `Saved Config` 46 | ) 47 | 48 | return nftCollection; 49 | } 50 | 51 | export async function importExistingNftCollection( 52 | client: TonClient4, 53 | options?: { 54 | configPath?: string, 55 | address?: Address 56 | } 57 | ) { 58 | if (options?.configPath) { 59 | const config = JSON.parse( 60 | readFileSync( 61 | options?.configPath, 62 | 'utf-8' 63 | ) 64 | ) 65 | 66 | const nftCollection = client.open( 67 | await NftCollection.createFromAddress( 68 | config.address 69 | ) 70 | ); 71 | 72 | return nftCollection 73 | } else if (existsSync(String(env.PATH_TO_CONFIG))) { 74 | const config = JSON.parse(readFileSync(String(env.PATH_TO_CONFIG), 'utf-8')); 75 | 76 | const nftCollection = client.open( 77 | await NftCollection.createFromAddress( 78 | config.address 79 | ) 80 | ); 81 | 82 | return nftCollection; 83 | } else { 84 | const nftCollection = client.open( 85 | await NftCollection.createFromAddress( 86 | options?.address ?? Address.parse(String(env.NFT_COLLECTION_ADDRESS)) 87 | ) 88 | ); 89 | 90 | return nftCollection; 91 | } 92 | } 93 | 94 | 95 | export async function mint( 96 | client: TonClient4, 97 | itemOwner: Address, 98 | collectionAddress: Address, 99 | itemContent: string, 100 | options?: { 101 | configPath?: string, 102 | secretKey?: string 103 | } 104 | ) { 105 | const nftCollection = await importExistingNftCollection( 106 | client, 107 | { 108 | configPath: options?.configPath, 109 | address: collectionAddress 110 | } 111 | ); 112 | 113 | let keypair = await importKeyPair( 114 | options?.secretKey 115 | ) 116 | 117 | let sender = await createSender(keypair, client); 118 | 119 | let collectionData = await nftCollection.getCollectionData(); 120 | 121 | let tx = await nftCollection.sendMint( 122 | sender, 123 | { 124 | value: toNano("0.05"), 125 | passAmount: toNano("0"), 126 | itemIndex: Number(collectionData.nextItemIndex), 127 | itemOwnerAddress: itemOwner, 128 | itemContent: itemContent 129 | } 130 | ); 131 | 132 | console.log( 133 | `Minted NFT to ${itemOwner.toString()}` 134 | ) 135 | } -------------------------------------------------------------------------------- /src/wrappers/getgems/NftCollectionEditable/NftCollectionEditable.ts: -------------------------------------------------------------------------------- 1 | import { Address, beginCell, ContractProvider, Sender, SendMode } from 'ton-core' 2 | import { NftCollectionRoyalty } from '../../standard/NftCollectionRoyalty' 3 | 4 | export type CollectionMintItemInput = { 5 | passAmount: bigint 6 | index: number 7 | ownerAddress: Address 8 | content: string 9 | } 10 | 11 | export type RoyaltyParams = { 12 | royaltyFactor: number 13 | royaltyBase: number 14 | royaltyAddress: Address 15 | } 16 | 17 | const OperationCodes = { 18 | Mint: 1, 19 | BatchMint: 2, 20 | ChangeOwner: 3, 21 | EditContent: 4, 22 | GetRoyaltyParams: 0x693d3950, 23 | GetRoyaltyParamsResponse: 0xa8cb00ad 24 | } 25 | 26 | /** 27 | * Class representing an editable Non-Fungible Token (NFT) collection contract. 28 | * This class extends from the `NftCollectionRoyalty` class. 29 | */ 30 | export class NftCollectionEditable extends NftCollectionRoyalty { 31 | /** 32 | * Creates an `NftCollectionEditable` instance from an address. 33 | * @param address - The address to create from. 34 | * @returns A new `NftCollectionEditable` instance. 35 | */ 36 | static createFromAddress( 37 | address: Address 38 | ) { 39 | return new NftCollectionEditable( 40 | address 41 | ) 42 | } 43 | 44 | /** 45 | * Sends a deploy command to the contract. 46 | * @param provider - The contract provider. 47 | * @param via - The sender of the deploy command. 48 | * @param value - The value to send with the command. 49 | */ 50 | async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) { 51 | await provider.internal(via, { 52 | value, 53 | body: beginCell().endCell(), 54 | }) 55 | } 56 | 57 | /** 58 | * Sends a mint command to the contract. 59 | * @param provider - The contract provider. 60 | * @param via - The sender of the mint command. 61 | * @param params - The parameters for the mint command. 62 | */ 63 | async sendMint(provider: ContractProvider, via: Sender, params: { 64 | queryId?: number, 65 | value: bigint, 66 | passAmount: bigint, 67 | itemIndex: number, 68 | itemOwnerAddress: Address, 69 | itemContent: string 70 | }) { 71 | const itemContent = beginCell() 72 | itemContent.storeBuffer(Buffer.from(params.itemContent)).endCell() 73 | 74 | const nftItemMessage = beginCell() 75 | 76 | nftItemMessage.storeAddress(params.itemOwnerAddress) 77 | nftItemMessage.storeRef(itemContent).endCell() 78 | 79 | await provider.internal(via, { 80 | value: params.value, 81 | body: beginCell() 82 | .storeUint(1, 32) 83 | .storeUint(params.queryId || 0, 64) 84 | .storeUint(params.itemIndex, 64) 85 | .storeCoins(params.passAmount) 86 | .storeRef(nftItemMessage) 87 | .endCell(), 88 | sendMode: SendMode.PAY_GAS_SEPARATELY, 89 | }) 90 | } 91 | 92 | /** 93 | * Sends a change owner command to the contract. 94 | * @param provider - The contract provider. 95 | * @param via - The sender of the change owner command. 96 | * @param params - The parameters for the change owner command. 97 | */ 98 | async sendChangeOwner(provider: ContractProvider, via: Sender, params: { 99 | queryId?: number, 100 | value: bigint, 101 | newOwner: Address 102 | }) { 103 | await provider.internal(via, { 104 | value: params.value, 105 | body: beginCell() 106 | .storeUint(OperationCodes.ChangeOwner, 32) 107 | .storeUint(params.queryId || 0, 64) 108 | .storeAddress(params.newOwner) 109 | .endCell(), 110 | sendMode: SendMode.PAY_GAS_SEPARATELY 111 | }) 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftOffer.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftOffer.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftOffer.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/wrappers/getgems/NftRaffle/nft-raffle/struct/utils.func: -------------------------------------------------------------------------------- 1 | #include "stdlib.fc"; 2 | #include "storage.func"; 3 | 4 | () utils::send_nft(int mode, int amount, slice to, int nft_addr) impure inline_ref { 5 | builder body = begin_cell() 6 | .store_uint(op::transfer(), 32) ;; op 7 | .store_uint(cur_lt(), 64) ;; query id 8 | .store_slice(to) ;; new owner 9 | .store_slice(to) ;; response destination 10 | .store_int(0, 1) ;; custom payload 11 | .store_coins(0) ;; fwd ton amount 12 | .store_int(0, 1); ;; fwd custom payload 13 | builder msg = begin_cell() 14 | .store_uint(0x18, 6) 15 | .store_uint(2, 2) ;; addr std 16 | .store_uint(0, 1) ;; anycast 17 | .store_uint(0, 8) ;; wc 18 | .store_uint(nft_addr, 256) 19 | .store_coins(amount) 20 | .store_uint(1, 1 + 4 + 4 + 64 + 32 + 1 + 1) 21 | .store_ref(body.end_cell()); 22 | send_raw_message(msg.end_cell(), mode); 23 | } 24 | 25 | () utils::send_raffled_nfts(cell dict, int amount) impure inline_ref { 26 | int key = -1; 27 | do { 28 | (key, slice data, int found) = dict.udict_get_next?(256, key); 29 | if (found) { 30 | if (data.preload_uint(1) == 1) { 31 | utils::send_nft(0, amount, db::left_user, key); 32 | } else { 33 | utils::send_nft(0, amount, db::right_user, key); 34 | } 35 | } 36 | } until (~ found); 37 | } 38 | 39 | () utils::send_nfts(cell dict, int amount, slice left, slice right) impure inline_ref { 40 | int key = -1; 41 | do { 42 | (key, slice data, int found) = dict.udict_get_next?(256, key); 43 | if (found) { 44 | if (data.preload_uint(4) == 2) { 45 | utils::send_nft(1, amount, left, key); 46 | } 47 | if (data.preload_uint(4) == 3) { 48 | utils::send_nft(1, amount, right, key); 49 | } 50 | } 51 | } until (~ found); 52 | } 53 | 54 | (cell, int, int) utils::add_nft(cell dict, int nft_addr) inline_ref { 55 | int left_success = 0; 56 | int right_success = 0; 57 | (slice data, int found) = dict.udict_get?(256, nft_addr); 58 | if (found == 0) { 59 | return (dict, 0, 0); 60 | } 61 | if (data~load_uint(4) == 0) { 62 | dict~udict_set(256, nft_addr, begin_cell().store_uint(2, 4).end_cell().begin_parse()); 63 | left_success = -1; 64 | } else { 65 | dict~udict_set(256, nft_addr, begin_cell().store_uint(3, 4).end_cell().begin_parse()); 66 | right_success = -1; 67 | } 68 | return(dict, left_success, right_success); 69 | } 70 | 71 | cell utils::raffle_nfts(cell raffled_nfts, cell nfts) inline_ref { 72 | int key = -1; 73 | do { 74 | (key, slice data, int found) = nfts.udict_get_next?(256, key); 75 | if (found) { 76 | if (rand(2) == 0) { 77 | raffled_nfts~udict_set(256, key, begin_cell().store_uint(1, 1).end_cell().begin_parse()); 78 | } else { 79 | raffled_nfts~udict_set(256, key, begin_cell().store_uint(0, 1).end_cell().begin_parse()); 80 | } 81 | } 82 | } until (~ found) 83 | return raffled_nfts; 84 | } 85 | 86 | 87 | int utils::check_conditions() inline_ref method_id { 88 | init_data(); 89 | return ((db::right_nfts_count == db::right_nfts_received) & (db::left_nfts_count == db::left_nfts_received) & 90 | (db::left_coins_got >= db::left_commission) & (db::right_coins_got >= db::right_commission)); 91 | } 92 | 93 | () utils::send_tons(slice to, int amount, slice message, int mode) impure inline_ref { 94 | var msg = begin_cell() 95 | .store_uint(0x18, 6) 96 | .store_slice(to) 97 | .store_coins(amount) 98 | .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) 99 | .store_uint(0, 32) 100 | .store_slice(message); 101 | send_raw_message(msg.end_cell(), mode); 102 | } -------------------------------------------------------------------------------- /cli/dist/cli/src/nftSingle.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | var __importDefault = (this && this.__importDefault) || function (mod) { 12 | return (mod && mod.__esModule) ? mod : { "default": mod }; 13 | }; 14 | Object.defineProperty(exports, "__esModule", { value: true }); 15 | exports.transfer = exports.importExistingNftSingle = exports.createNftSingle = void 0; 16 | const ton_core_1 = require("ton-core"); 17 | const NftSingle_1 = require("../../src/wrappers/getgems/NftSingle/NftSingle"); 18 | const importKeyPair_1 = __importDefault(require("./utils/importKeyPair")); 19 | const fs_1 = require("fs"); 20 | const process_1 = require("process"); 21 | const ton_core_2 = require("ton-core"); 22 | const createSender_1 = __importDefault(require("./utils/createSender")); 23 | function createNftSingle(client, config, options) { 24 | return __awaiter(this, void 0, void 0, function* () { 25 | let keypair = yield (0, importKeyPair_1.default)(options === null || options === void 0 ? void 0 : options.secretKey); 26 | let sender = yield (0, createSender_1.default)(keypair, client); 27 | const nftSingle = client.open(yield NftSingle_1.NftSingle.createFromConfig(config)); 28 | yield nftSingle.sendDeploy(sender, (0, ton_core_1.toNano)('0.05')); 29 | console.log(`NFT Single deployed at ${nftSingle.address}`); 30 | yield (0, fs_1.writeFileSync)('./nftSingle.json', JSON.stringify({ 31 | config: config, 32 | address: nftSingle.address, 33 | init: nftSingle.init 34 | })); 35 | console.log(`Saved Config`); 36 | return nftSingle; 37 | }); 38 | } 39 | exports.createNftSingle = createNftSingle; 40 | function importExistingNftSingle(client, options) { 41 | return __awaiter(this, void 0, void 0, function* () { 42 | if (options === null || options === void 0 ? void 0 : options.configPath) { 43 | const config = JSON.parse((0, fs_1.readFileSync)(options === null || options === void 0 ? void 0 : options.configPath, 'utf-8')); 44 | const nftSingle = client.open(yield NftSingle_1.NftSingle.createFromAddress(config.address)); 45 | return nftSingle; 46 | } 47 | else { 48 | const config = JSON.parse((0, fs_1.readFileSync)(String(process_1.env.PATH_TO_CONFIG), 'utf-8')); 49 | const nftSingle = client.open(yield NftSingle_1.NftSingle.createFromAddress(config.address)); 50 | return nftSingle; 51 | } 52 | }); 53 | } 54 | exports.importExistingNftSingle = importExistingNftSingle; 55 | function transfer(client, destination, options) { 56 | var _a; 57 | return __awaiter(this, void 0, void 0, function* () { 58 | const nftSingle = yield importExistingNftSingle(client, options); 59 | let keypair = yield (0, importKeyPair_1.default)(options === null || options === void 0 ? void 0 : options.secretKey); 60 | let sender = yield (0, createSender_1.default)(keypair, client); 61 | let tx = yield nftSingle.sendTransfer(sender, { 62 | value: (0, ton_core_1.toNano)('0.05'), 63 | queryId: (0, ton_core_1.toNano)('0'), 64 | newOwner: ton_core_2.Address.parse(destination), 65 | responseDestination: sender.address, 66 | forwardAmount: (0, ton_core_1.toNano)('0') 67 | }); 68 | console.log(`Transferred NFT from ${(_a = sender.address) === null || _a === void 0 ? void 0 : _a.toString()} to ${destination}`); 69 | }); 70 | } 71 | exports.transfer = transfer; 72 | //# sourceMappingURL=nftSingle.js.map -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftAuctionV2.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftAuctionV2.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftAuctionV2.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftFixedPrice.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.NftFixPriceSaleCodeCell = exports.NftFixPriceSaleCodeBoc = exports.buildNftFixPriceSaleDataCell = exports.NftFixedPrice = void 0; 13 | const ton_core_1 = require("ton-core"); 14 | class NftFixedPrice { 15 | constructor(address, workchain, init) { 16 | this.address = address; 17 | this.workchain = workchain; 18 | this.init = init; 19 | } 20 | static createFromAddress(address) { 21 | return new NftFixedPrice(address); 22 | } 23 | static createFromConfig(config) { 24 | return __awaiter(this, void 0, void 0, function* () { 25 | let data = buildNftFixPriceSaleDataCell(config); 26 | let address = (0, ton_core_1.contractAddress)(0, { 27 | code: exports.NftFixPriceSaleCodeCell, 28 | data: data 29 | }); 30 | return new NftFixedPrice(address, 0, { 31 | code: exports.NftFixPriceSaleCodeCell, 32 | data: data 33 | }); 34 | }); 35 | } 36 | // Deployment 37 | sendDeploy(provider, via, value) { 38 | return __awaiter(this, void 0, void 0, function* () { 39 | yield provider.internal(via, { 40 | value, 41 | body: (0, ton_core_1.beginCell)().endCell(), 42 | }); 43 | }); 44 | } 45 | getSaleData(provider) { 46 | return __awaiter(this, void 0, void 0, function* () { 47 | const { stack } = yield provider.get('get_sale_data', []); 48 | return { 49 | marketplaceAddress: stack.readAddressOpt(), 50 | nftAddress: stack.readAddressOpt(), 51 | nftOwnerAddress: stack.readAddressOpt(), 52 | fullPrice: stack.readBigNumber(), 53 | marketplaceFeeAddress: stack.readAddressOpt(), 54 | marketplaceFee: stack.readBigNumber(), 55 | royaltyAddress: stack.readAddressOpt(), 56 | royaltyAmount: stack.readBigNumber() 57 | }; 58 | }); 59 | } 60 | } 61 | exports.NftFixedPrice = NftFixedPrice; 62 | function buildNftFixPriceSaleDataCell(data) { 63 | let feesCell = (0, ton_core_1.beginCell)(); 64 | feesCell.storeCoins(data.marketplaceFee); 65 | feesCell.storeAddress(data.marketplaceFeeAddress); 66 | feesCell.storeAddress(data.royaltyAddress); 67 | feesCell.storeCoins(data.royaltyAmount); 68 | let dataCell = (0, ton_core_1.beginCell)(); 69 | dataCell.storeAddress(data.marketplaceAddress); 70 | dataCell.storeAddress(data.nftAddress); 71 | dataCell.storeAddress(data.nftOwnerAddress); 72 | dataCell.storeCoins(data.fullPrice); 73 | dataCell.storeRef(feesCell); 74 | return dataCell.endCell(); 75 | } 76 | exports.buildNftFixPriceSaleDataCell = buildNftFixPriceSaleDataCell; 77 | // Data 78 | exports.NftFixPriceSaleCodeBoc = 'te6cckECCgEAAbIAART/APSkE/S88sgLAQIBIAMCAATyMAIBSAUEADegOFnaiaH0gfSB9IH0AahhofQB9IH0gfQAYCBHAgLNCAYB99G8EIHc1lACkgUCkQX3lw4QFofQB9IH0gfQAYOEAIZGWCqATniyi6UJDQqFrQilAK/QEK5bVkuP2AOEAIZGWCrGeLKAP9AQtltWS4/YA4QAhkZYKsZ4ssfQFltWS4/YA4EEEIL+YeihDADGRlgqgC54sRfQEKZbUJ5Y+JwHAC7LPyPPFlADzxYSygAh+gLKAMmBAKD7AAH30A6GmBgLjYSS+CcH0gGHaiaH0gfSB9IH0AahgRa6ThAVnHHZkbGymQ44LJL4NwKJFjgvlw+gFpj8EIAonGyIldeXD66Z+Y/SAYIBpkKALniygB54sA54sA/QFmZPaqcBNjgEybCBsimYI4eAJwA2mP6Z+YEOAAyS+FcBDAkAtsACmjEQRxA2RUAS8ATgMjQ0NDXAA449ghA7msoAE77y4clwIIIQX8w9FCGAEMjLBVAHzxYi+gIWy2oVyx8Tyz8hzxYBzxYSygAh+gLKAMmBAKD7AOBfBIQP8vCVeDe4'; 79 | exports.NftFixPriceSaleCodeCell = ton_core_1.Cell.fromBoc(Buffer.from(exports.NftFixPriceSaleCodeBoc, 'base64'))[0]; 80 | //# sourceMappingURL=NftFixedPrice.js.map -------------------------------------------------------------------------------- /cli/dist/src/wrappers/getgems/NftCollection.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"NftCollection.js","sourceRoot":"","sources":["../../../../../src/wrappers/getgems/NftCollection.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/wrappers/standard/NftItem.ts: -------------------------------------------------------------------------------- 1 | import { Address, beginCell, Cell, Contract, ContractProvider, Sender, Transaction, SendMode, ExternalAddress } from 'ton-core' 2 | import { isEligibleTransaction } from '../../utils/EligibleInternalTx' 3 | import { Maybe } from 'ton-core/dist/utils/maybe' 4 | 5 | /** 6 | * Represents an NFT item contract. 7 | */ 8 | export class NftItem implements Contract { 9 | constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {} 10 | 11 | /** 12 | * Sends a transfer from the contract. 13 | * @param provider - The ContractProvider to facilitate the transfer. 14 | * @param via - The Sender initiating the transfer. 15 | * @param params - The parameters for the transfer. 16 | */ 17 | async sendTransfer(provider: ContractProvider, via: Sender, params: { 18 | value: bigint 19 | queryId: bigint 20 | newOwner: Address 21 | responseDestination?: Address 22 | customPayload?: Cell 23 | forwardAmount: bigint 24 | forwardPayload?: Cell 25 | }) { 26 | await provider.internal(via, { 27 | value: params.value, 28 | body: beginCell() 29 | .storeUint(0x5fcc3d14, 32) 30 | .storeUint(params.queryId, 64) 31 | .storeAddress(params.newOwner) 32 | .storeAddress(params.responseDestination) 33 | .storeMaybeRef(params.customPayload) 34 | .storeCoins(params.forwardAmount) 35 | .storeMaybeRef(params.forwardPayload) 36 | .endCell(), 37 | sendMode: SendMode.PAY_GAS_SEPARATELY, 38 | }) 39 | } 40 | 41 | /** 42 | * Gets static data from the contract. 43 | * @param provider - The ContractProvider to facilitate the data retrieval. 44 | * @param via - The Sender initiating the data retrieval. 45 | * @param params - The parameters for the data retrieval. 46 | */ 47 | async sendGetStaticData( 48 | provider: ContractProvider, 49 | via: Sender, 50 | params: { 51 | value: bigint 52 | queryId: bigint 53 | } 54 | ) { 55 | await provider.internal(via, { 56 | value: params.value, 57 | body: beginCell() 58 | .storeUint(0x2fcb26a2, 32) 59 | .storeUint(params.queryId || 0, 64) 60 | .endCell(), 61 | sendMode: SendMode.PAY_GAS_SEPARATELY, 62 | }) 63 | } 64 | 65 | // Getter Functions 66 | 67 | /** 68 | * Retrieves the data of the NFT from the contract. 69 | * @param provider - The ContractProvider to facilitate the data retrieval. 70 | */ 71 | async getNftData(provider: ContractProvider) { 72 | const { stack } = await provider.get('get_nft_data', []) 73 | return { 74 | init: stack.readBoolean(), 75 | index: stack.readBigNumber(), 76 | collectionAddress: stack.readAddressOpt(), 77 | ownerAddress: stack.readAddressOpt(), 78 | individualContent: stack.readCellOpt(), 79 | } 80 | } 81 | 82 | // Transaction Parsing 83 | 84 | /** 85 | * Parses a transfer transaction. 86 | * @param tx - The Transaction to be parsed. 87 | * @returns A NftTransfer object if the transaction is valid, undefined otherwise. 88 | */ 89 | static parseTransfer(tx: Transaction): NftTransfer | undefined { 90 | try { 91 | const body = tx.inMessage?.body.beginParse() 92 | 93 | if (body === undefined) return undefined 94 | 95 | const op = body.loadUint(32) 96 | 97 | if (op !== 0x5fcc3d14) return undefined 98 | 99 | if (!isEligibleTransaction(tx)) { 100 | return undefined 101 | } 102 | 103 | return { 104 | queryId: body.loadUint(64), 105 | from: tx.inMessage?.info.src ?? undefined, 106 | to: body.loadAddress(), 107 | responseTo: body.loadAddress(), 108 | customPayload: body.loadMaybeRef(), 109 | forwardAmount: body.loadCoins(), 110 | forwardPayload: body.loadMaybeRef(), 111 | } 112 | } catch (e) { console.log(e) } 113 | 114 | return undefined 115 | } 116 | } 117 | 118 | /** 119 | * Represents the data structure of an NFT transfer. 120 | */ 121 | export type NftTransfer = { 122 | queryId: number 123 | from?: Address | Maybe 124 | to: Address 125 | responseTo?: Address 126 | customPayload: Cell | null 127 | forwardAmount: bigint 128 | forwardPayload: Cell | null 129 | } -------------------------------------------------------------------------------- /src/wrappers/getgems/NftMarketplace/NftMarketplace.ts: -------------------------------------------------------------------------------- 1 | import { Address, beginCell, Cell, Contract, ContractProvider, Sender, SendMode, contractAddress } from 'ton-core' 2 | import { KeyPair, sign } from 'ton-crypto' 3 | 4 | /** 5 | * Class representing a NFT Marketplace contract. 6 | */ 7 | export class NftMarketplace implements Contract { 8 | /** 9 | * Constructs an instance of the NftMarketplace contract. 10 | * @param address - The address of the contract. 11 | * @param init - The initial code and data for the contract. 12 | */ 13 | constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {} 14 | 15 | /** 16 | * Creates an NftMarketplace instance from an address. 17 | * @param address - The address to create from. 18 | * @returns A new NftMarketplace instance. 19 | */ 20 | static createFromAddress( 21 | address: Address 22 | ) { 23 | return new NftMarketplace( 24 | address 25 | ) 26 | } 27 | 28 | static code = Cell.fromBoc(Buffer.from('te6cckEBDAEA7wABFP8A9KQT9LzyyAsBAgEgAwIAePKDCNcYINMf0x/THwL4I7vyY/ABUTK68qFRRLryogT5AVQQVfkQ8qP4AJMg10qW0wfUAvsA6DABpALwAgIBSAcEAgFIBgUAEbjJftRNDXCx+AAXuznO1E0NM/MdcL/4AgLOCQgAF0AsjLH8sfy//J7VSAIBIAsKABU7UTQ0x/TH9P/MIACpGwiIMcAkVvgAdDTAzBxsJEw4PABbCEB0x8BwAGONIMI1xgg+QFAA/kQ8qPU1DAh+QBwyMoHy//J0Hd0gBjIywXLAljPFnD6AstrEszMyYBA+wDgW4NC26jQ=', 'base64'))[0] 29 | 30 | /** 31 | * Builds the data cell for an NFT marketplace. 32 | * @param data - The data for the NFT marketplace. 33 | * @returns A cell containing the data for the NFT marketplace. 34 | */ 35 | static buildDataCell(data: NftMarketplaceData) { 36 | const dataCell= beginCell() 37 | 38 | dataCell.storeUint(data.seqno, 32) 39 | dataCell.storeUint(data.subwallet, 32) 40 | dataCell.storeBuffer(data.publicKey) 41 | 42 | return dataCell.endCell() 43 | } 44 | 45 | /** 46 | * Creates an NftMarketplace instance from a configuration object. 47 | * @param config - The configuration data for the NFT marketplace. 48 | * @param workchain - The workchain ID (default is 0). 49 | * @returns A new NftMarketplace instance. 50 | */ 51 | static async createFromConfig( 52 | config: NftMarketplaceData, 53 | workchain = 0 54 | ) { 55 | 56 | const data = this.buildDataCell(config) 57 | const address = contractAddress( 58 | workchain, 59 | { 60 | code: this.code, 61 | data: data 62 | } 63 | ) 64 | 65 | return new NftMarketplace( 66 | address, 67 | { 68 | code: this.code, 69 | data: data 70 | } 71 | ) 72 | } 73 | 74 | /** 75 | * Sends a deploy command to the contract. 76 | * @param provider - The contract provider. 77 | * @param via - The sender of the deploy command. 78 | * @param value - The value to send with the command. 79 | */ 80 | async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) { 81 | await provider.internal(via, { 82 | value, 83 | body: beginCell().endCell(), 84 | }) 85 | } 86 | 87 | /** 88 | * Sends coins to the contract. 89 | * @param provider - The contract provider. 90 | * @param via - The sender of the coins. 91 | * @param params - Parameters for the operation, including the value and queryId. 92 | */ 93 | async sendCoins(provider: ContractProvider, via: Sender, params: { 94 | value: bigint 95 | queryId: bigint 96 | }) { 97 | await provider.internal(via, { 98 | value: params.value, 99 | body: beginCell() 100 | .storeUint(1, 32) 101 | .storeUint(params.queryId, 64) 102 | .endCell(), 103 | sendMode: SendMode.PAY_GAS_SEPARATELY, 104 | }) 105 | } 106 | } 107 | 108 | /** 109 | * Type definition for the data of an NFT marketplace. 110 | */ 111 | export type NftMarketplaceData = { 112 | seqno: number 113 | subwallet: number 114 | publicKey: Buffer 115 | } 116 | 117 | /** 118 | * Builds a signature for an operation. 119 | * @param params - Parameters for the signature, including the key pair, sale state initialization, and sale message body. 120 | * @returns The generated signature. 121 | */ 122 | export function buildSignature(params: { 123 | keyPair: KeyPair, 124 | saleStateInit: Cell, 125 | saleMessageBody: Cell 126 | }) { 127 | const bodyCell = beginCell() 128 | bodyCell.storeRef(params.saleStateInit) 129 | bodyCell.storeRef(params.saleMessageBody) 130 | 131 | return sign(bodyCell.endCell().hash(), params.keyPair.secretKey) 132 | } --------------------------------------------------------------------------------