{"_id":"@3land/listings-sdk","_rev":"6-d742b14be33b0ddbafa0c9d02189e2fc","name":"@3land/listings-sdk","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"@3land/listings-sdk","version":"0.0.1","author":{"name":"biccs"},"license":"ISC","_id":"@3land/listings-sdk@0.0.1","maintainers":[{"name":"3land","email":"dev@3.land"}],"dist":{"shasum":"b7c66bfbf028a6fc0dad5ebc47430955d24432e0","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.1.tgz","fileCount":212,"integrity":"sha512-R9BmxZM/mpwOvLPg+Ye90IZluxveYU97WvoiZWIX/AAARac3VYevM/+NgluVQUeYp3QMs1e4Tzh+Ex4aGCbESQ==","signatures":[{"sig":"MEQCICc/FF7XjdsGXxmY776gmL8wsY0vZSfbK5LCEZbHz00aAiB/jbpnxF3s8mUrveo6EMzoD/S2yAIQxzzXfBizh2A8/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":814915},"main":"./src/library/examples/storeExample.ts","type":"module","gitHead":"5e617abcba07fb998ce29e7e2ba4e9138d0931b6","private":false,"scripts":{"test":"npx tsx ./src/library/examples/storeExample.ts"},"_npmUser":{"name":"3land","email":"dev@3.land"},"_npmVersion":"9.8.1","description":"sdk for interacting with 3land's solana program","directories":{},"_nodeVersion":"18.18.2","dependencies":{"bn":"^1.0.5","fs":"^0.0.1-security","irys":"^0.0.1","bn.js":"^5.2.1","cyrb53":"^1.0.0","ts-node":"^10.9.2","@irys/sdk":"^0.2.11","tweetnacl":"^1.0.3","node-fetch":"^3.3.2","@solana/web3.js":"^1.95.4","@coral-xyz/borsh":"^0.30.1","@project-serum/anchor":"^0.26.0","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","typescript":"^5.6.3","@types/node":"^22.7.7","@types/bn.js":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/listings-sdk_0.0.1_1735946322605_0.553746829777729","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@3land/listings-sdk","version":"0.0.2","author":{"name":"biccs"},"license":"ISC","_id":"@3land/listings-sdk@0.0.2","maintainers":[{"name":"3land","email":"dev@3.land"}],"dist":{"shasum":"21e71055524e740134fe463f933e67d4ff41080f","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.2.tgz","fileCount":1138,"integrity":"sha512-KBWHMH0PGGyY8cz3Vj5btmaj1724+wBW9DTvShCrzdhEtoQsc8OOhWJ1qNRaPJ+PXylomfSVu25ORAZItidkpQ==","signatures":[{"sig":"MEUCIF5kv6cDoYjVvJ9fxR6n44Glo9KQ9lX1fdcmD+vYFmloAiEAteASeh18LZrWF+EvQwehnBAoOXcfpSlnTbBx5etgXsQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21119798},"main":"./dist/library/implementation/storeImplementation.js","types":"./dist/library/implementation/storeImplementation.d.ts","gitHead":"6a68125be3da389aa7c5135d64a4cf3accd59e3a","scripts":{"test":"npx tsx ./src/index.ts","build:cjs":"tsc --module CommonJS --outDir dist"},"_npmUser":{"name":"3land","email":"dev@3.land"},"_npmVersion":"9.8.1","description":"sdk for interacting with 3land's solana program","directories":{},"_nodeVersion":"18.18.2","dependencies":{"bn":"^1.0.5","fs":"^0.0.1-security","bs58":"^6.0.0","irys":"^0.0.1","bn.js":"^5.2.1","cyrb53":"^1.0.0","ts-node":"^10.9.2","@irys/sdk":"^0.2.11","tweetnacl":"^1.0.3","node-fetch":"^3.3.2","@solana/web3.js":"^1.95.4","@coral-xyz/borsh":"^0.30.1","@project-serum/anchor":"^0.26.0","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","typescript":"^5.6.3","@types/node":"^22.7.7","@types/bn.js":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/listings-sdk_0.0.2_1736025097150_0.6631078242260184","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@3land/listings-sdk","version":"0.0.3","author":{"name":"biccs"},"license":"ISC","_id":"@3land/listings-sdk@0.0.3","maintainers":[{"name":"3land","email":"dev@3.land"}],"dist":{"shasum":"4b4cd5f40c999b9c67992cc9b3b462b0165c6dd0","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.3.tgz","fileCount":1138,"integrity":"sha512-nEv2c6VgXLTZ/Gw0UuYq0VqVkoDW8LP3rNrX5S+ROgsttWsju8C5joLbDKVgSARDzhajvlvCoXWSzh+C0dsL/Q==","signatures":[{"sig":"MEQCIGonH++0Pv1PntbNJTHaThp1T3BR5VdbARU0C5X4m+ZAAiBB/0PfENlTBXWlfwVahLfyMXRJbi1SN38rfRxri0+gsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21119797},"main":"./dist/library/implementation/storeImplementation.js","types":"./dist/library/implementation/storeImplementation.d.ts","gitHead":"856e977ea0408a59edb5e403f461a32518a44d29","scripts":{"test":"npx tsx ./src/index.ts","build:cjs":"tsc --module CommonJS --outDir dist"},"_npmUser":{"name":"3land","email":"dev@3.land"},"_npmVersion":"9.8.1","description":"sdk for interacting with 3land's solana program","directories":{},"_nodeVersion":"18.18.2","dependencies":{"bn":"^1.0.5","fs":"^0.0.1-security","bs58":"^6.0.0","irys":"^0.0.1","bn.js":"^5.2.1","cyrb53":"^1.0.0","ts-node":"^10.9.2","@irys/sdk":"^0.2.11","tweetnacl":"^1.0.3","node-fetch":"^3.3.2","@solana/web3.js":"^1.95.4","@coral-xyz/borsh":"^0.30.1","@project-serum/anchor":"^0.26.0","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","typescript":"^5.6.3","@types/node":"^22.7.7","@types/bn.js":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/listings-sdk_0.0.3_1736025923457_0.03524627270958658","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@3land/listings-sdk","version":"0.0.4","author":{"name":"biccs"},"license":"ISC","_id":"@3land/listings-sdk@0.0.4","maintainers":[{"name":"3land","email":"dev@3.land"}],"dist":{"shasum":"59f01a20d8967fa5dc6aa8dc84575f7fd1b58cb0","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.4.tgz","fileCount":1138,"integrity":"sha512-Ljq8R4e7y+wl4m8BGhiInFPCHEzHZZFz1qghnbc8B3bLEKXWM9+2gZOCAa84rdUKuLfzenEdeS2LclTKhdKTFQ==","signatures":[{"sig":"MEUCIQCia+DUQSYCOBhJj8egv90Rn7bp7gO98xlddJ403A1ozgIgXx1Iv70ULJ4yxVpkOe3YN9DkneeV1kEHbeHyutdt8EY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21124691},"main":"./dist/library/implementation/storeImplementation.js","types":"./dist/library/implementation/storeImplementation.d.ts","gitHead":"56623d439cc3787b1b74160d8da0b14d470cbe65","scripts":{"test":"npx tsx ./src/index.ts","build:cjs":"tsc --module CommonJS --outDir dist"},"_npmUser":{"name":"3land","email":"dev@3.land"},"_npmVersion":"9.8.1","description":"sdk for interacting with 3land's solana program","directories":{},"_nodeVersion":"18.18.2","dependencies":{"bn":"^1.0.5","fs":"^0.0.1-security","bs58":"^6.0.0","irys":"^0.0.1","bn.js":"^5.2.1","cyrb53":"^1.0.0","ts-node":"^10.9.2","@irys/sdk":"^0.2.11","tweetnacl":"^1.0.3","node-fetch":"^3.3.2","@solana/web3.js":"^1.95.4","@coral-xyz/borsh":"^0.30.1","@project-serum/anchor":"^0.26.0","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","typescript":"^5.6.3","@types/node":"^22.7.7","@types/bn.js":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/listings-sdk_0.0.4_1736203664597_0.5868383777436874","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@3land/listings-sdk","version":"0.0.5","author":{"name":"biccs"},"license":"ISC","_id":"@3land/listings-sdk@0.0.5","maintainers":[{"name":"3land","email":"dev@3.land"}],"dist":{"shasum":"0c4ebb7b76dcdf1be4fb74ee678f6e99264936a4","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.5.tgz","fileCount":1208,"integrity":"sha512-Q2VViKKgJoe6/JzTucPXuFk9WTGbKtHlNFAKKQDLcyWdcoXa4cUD2l5qrgXv0t9jlVjXFyyCVGpiBG4QWVgVjA==","signatures":[{"sig":"MEUCIQDj1oBjvZRizoSEhORwvukOL23PZxsCMW2KUWQ0pdZg0gIgN+7JSCLHBN4brFDf0tsw9ug9Mzu0XVj5kOyAimuGgYc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21260641},"main":"./dist/library/implementation/storeImplementation.js","types":"./dist/library/implementation/storeImplementation.d.ts","gitHead":"f64e3dc4ad3e22b34e04bc633e8e23c0bb742d0e","scripts":{"test":"npx tsx ./src/index.ts","build:cjs":"tsc --module CommonJS --outDir dist","generate:from:idl":"anchor-client-gen idl.json src/types"},"_npmUser":{"name":"3land","email":"dev@3.land"},"_npmVersion":"9.8.1","description":"sdk for interacting with 3land's solana program","directories":{},"_nodeVersion":"18.18.2","dependencies":{"bn":"^1.0.5","fs":"^0.0.1-security","bs58":"^6.0.0","irys":"^0.0.1","bn.js":"^5.2.1","cyrb53":"^1.0.0","ts-node":"^10.9.2","@irys/sdk":"^0.2.11","tweetnacl":"^1.0.3","node-fetch":"^3.3.2","buffer-layout":"^1.2.2","@solana/web3.js":"^1.95.4","@coral-xyz/borsh":"^0.30.1","anchor-client-gen":"^0.28.1","@project-serum/anchor":"^0.26.0","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","typescript":"^5.6.3","@types/node":"^22.7.7","@types/bn.js":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/listings-sdk_0.0.5_1736960114337_0.7809951481543527","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@3land/listings-sdk","version":"0.0.6","author":{"name":"biccs"},"license":"ISC","_id":"@3land/listings-sdk@0.0.6","maintainers":[{"name":"3land","email":"dev@3.land"}],"dist":{"shasum":"719965523a46310501202ecda915323ae25e5898","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.6.tgz","fileCount":1208,"integrity":"sha512-1OG4qddbij7kLGcyRvwA9WUiif7DJi2gEWODHF4NnfgQHRl22yLSFHZeHPLlo9mE1T2LZnn0I6HtUxvUtCHCAQ==","signatures":[{"sig":"MEUCIGtKO6zWvL6U1SBqgYT7ktvp2UI9l3Q7GSilqDXAVmgtAiEAt8CzT8w5qjOhhAfucjxGDCjzL3j6gIwIQoKgQSZv8FE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21262142},"main":"./dist/library/implementation/storeImplementation.js","types":"./dist/library/implementation/storeImplementation.d.ts","gitHead":"c2eb7a66300af0c3871aed236f7c79e05fec4d49","scripts":{"test":"npx tsx ./src/index.ts","build:cjs":"tsc --module CommonJS --outDir dist","generate:from:idl":"anchor-client-gen idl.json src/types"},"_npmUser":{"name":"3land","email":"dev@3.land"},"_npmVersion":"9.8.1","description":"sdk for interacting with 3land's solana program","directories":{},"_nodeVersion":"18.18.2","dependencies":{"bn":"^1.0.5","fs":"^0.0.1-security","bs58":"^6.0.0","irys":"^0.0.1","bn.js":"^5.2.1","cyrb53":"^1.0.0","ts-node":"^10.9.2","@irys/sdk":"^0.2.11","tweetnacl":"^1.0.3","node-fetch":"^3.3.2","buffer-layout":"^1.2.2","@solana/web3.js":"^1.95.4","@coral-xyz/borsh":"^0.30.1","@solana/spl-token":"^0.2.0","anchor-client-gen":"^0.28.1","@project-serum/anchor":"^0.26.0","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","typescript":"^5.6.3","@types/node":"^22.7.7","@types/bn.js":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/listings-sdk_0.0.6_1737070104026_0.09921290903067348","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@3land/listings-sdk","version":"0.0.7","description":"sdk for interacting with 3land's solana program","main":"./dist/library/implementation/storeImplementation.js","types":"./dist/library/implementation/storeImplementation.d.ts","scripts":{"build:cjs":"tsc --module CommonJS --outDir dist","test":"npx tsx ./src/index.ts","generate:from:idl":"anchor-client-gen idl.json src/types"},"author":{"name":"biccs"},"license":"ISC","dependencies":{"@coral-xyz/borsh":"^0.30.1","@irys/sdk":"^0.2.11","@metaplex-foundation/beet":"^0.7.2","@metaplex-foundation/mpl-token-metadata":"^2.13.0","@project-serum/anchor":"^0.26.0","@solana/spl-token":"^0.2.0","@solana/web3.js":"^1.95.4","anchor-client-gen":"^0.28.1","bn":"^1.0.5","bn.js":"^5.2.1","bs58":"^6.0.0","buffer-layout":"^1.2.2","cyrb53":"^1.0.0","fs":"^0.0.1-security","irys":"^0.0.1","node-fetch":"^3.3.2","ts-node":"^10.9.2","tweetnacl":"^1.0.3"},"devDependencies":{"@types/bn.js":"^5.1.6","@types/node":"^22.7.7","tsx":"^4.19.1","typescript":"^5.6.3"},"_id":"@3land/listings-sdk@0.0.7","gitHead":"4186c59d5d94c93aa0204f62238a9f007d5c6941","_nodeVersion":"18.18.2","_npmVersion":"9.8.1","dist":{"integrity":"sha512-7hEgqBcYFTF15OzXKliG8JuO3SKKDTkFZDgyldxXwPX/HSwvVEGjnX+LorGDhhWt/9YazV7K5iEC3qyeuqibIA==","shasum":"3e8e709d5f29cf6e107e04d05d7d473ae07757b9","tarball":"https://registry.npmjs.org/@3land/listings-sdk/-/listings-sdk-0.0.7.tgz","fileCount":1208,"unpackedSize":21265418,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCnEQxZQPk5wKppUjTrPcuPy12Ktq7zYa/+QQ2DTo2Q4QIhAMbwKLoSVLAFOFpB+gBGaJbVVtaLO0Fn3F4hpIVD87ZR"}]},"_npmUser":{"name":"3land","email":"dev@3.land"},"directories":{},"maintainers":[{"name":"3land","email":"dev@3.land"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/listings-sdk_0.0.7_1737739567923_0.03788754537284533"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-03T23:18:42.472Z","modified":"2025-01-24T17:26:08.553Z","0.0.1":"2025-01-03T23:18:42.838Z","0.0.2":"2025-01-04T21:11:37.604Z","0.0.3":"2025-01-04T21:25:23.809Z","0.0.4":"2025-01-06T22:47:45.069Z","0.0.5":"2025-01-15T16:55:14.725Z","0.0.6":"2025-01-16T23:28:24.499Z","0.0.7":"2025-01-24T17:26:08.392Z"},"author":{"name":"biccs"},"license":"ISC","description":"sdk for interacting with 3land's solana program","maintainers":[{"name":"3land","email":"dev@3.land"}],"readme":"# 3Land Solana SDK\n\nA Node.js SDK for interacting with 3Land's Solana programs. This SDK provides a simple and intuitive way to integrate with 3Land's smart contracts on the Solana blockchain.\n\n## Table of Contents\n\n1. [Prerequisites](#prerequisites)\n2. [Installation](#installation)\n3. [Network Configuration](#network-configuration)\n   - [Basic Network Selection](#basic-network-selection)\n   - [Custom Configuration](#custom-configuration)\n   - [Environment Setup](#environment-specific-setup)\n4. [Wallet Setup](#wallet-setup)\n   - [Devnet Setup](#devnet-wallet-setup)\n   - [Mainnet Setup](#mainnet-wallet-setup)\n5. [Usage](#usage)\n   - [Creating a Store](#creating-a-store)\n   - [Creating a Collection](#creating-a-collection)\n   - [Creating a Single Edition NFT](#creating-a-single-edition-nft)\n   - [Buying an NFT](#buying-an-nft)\n6. [Features](#features)\n7. [Error Handling](#error-handling)\n8. [Contributing](#contributing)\n9. [Support](#support)\n10. [License](#license)\n\n## Prerequisites\n\nBefore using this SDK, ensure you have the following installed:\n\n- Node.js (v16 or higher)\n- npm or yarn\n- [Solana CLI Tools](https://docs.solana.com/cli/install-solana-cli-tools)\n\n## Installation\n\nClone the repo\n\n```bash\ngit clone https://github.com/biccsdev/3land_sdk.git\n# or\nnpm install 3land_sdk\n```\n\nRun this command to install all the packages needed for the sdk\n\n```bash\nnpm install\n# or\nyarn add\n```\n\n## Network Configuration\n\n### Basic Network Selection\n\n```typescript\nimport { Store, NetworkType } from \"@3land/solana-sdk\";\n\n// For Devnet (default)\nconst devnetStore = new Store();\n\n// For Mainnet\nconst mainnetStore = new Store({\n  network: NetworkType.MAINNET,\n});\n```\n\n### Custom Configuration\n\n```typescript\n// Using custom RPC endpoint\nconst store = new Store({\n  network: NetworkType.MAINNET,\n  customEndpoint: \"https://your-custom-rpc.com\",\n});\n\n// Using custom configuration\nconst storeWithCustomConfig = new Store({\n  network: NetworkType.MAINNET,\n  customConfig: {\n    programId: \"your_custom_program_id\",\n    // other config options...\n  },\n});\n```\n\n### Environment-Specific Setup\n\n```typescript\nimport dotenv from \"dotenv\";\ndotenv.config();\n\nconst store = new Store({\n  network: (process.env.SOLANA_NETWORK as NetworkType) || NetworkType.DEVNET,\n  customEndpoint: process.env.SOLANA_RPC_ENDPOINT,\n  customConfig: {\n    programId: process.env.PROGRAM_ID,\n  },\n});\n```\n\nExample `.env` file:\n\n```env\nSOLANA_NETWORK=mainnet-beta\nSOLANA_RPC_ENDPOINT=https://your-custom-rpc.com\nPROGRAM_ID=your_program_id\n```\n\n## Wallet Setup\n\n### Devnet Wallet Setup\n\n```bash\nsolana-keygen new --outfile ~/.config/solana/devnet-wallet.json\nsolana config set --url https://api.devnet.solana.com\nsolana config set --keypair ~/.config/solana/devnet-wallet.json\nsolana airdrop 2\n```\n\n### Mainnet Wallet Setup\n\n```bash\nsolana-keygen new --outfile ~/.config/solana/mainnet-wallet.json\nsolana config set --url https://api.mainnet-beta.solana.com\nsolana config set --keypair ~/.config/solana/mainnet-wallet.json\n```\n\n## Usage\n\n### Creating a Store\n\n```typescript\nimport { StoreConfig, FeeType } from \"@3land/solana-sdk\";\nimport { BN } from \"bn.js\";\n\ntry {\n  const storeConfig: StoreConfig = {\n    fee: new BN(1000000), // Fee in lamports\n    feePercentage: 5, // Must be between 0-100\n    feeType: new FeeType.AllMints(),\n    trust: payer.publicKey,\n    rules: [],\n  };\n\n  // Creator and storeId are optional, will default to payer.publicKey and random number\n  const createStoreTxId = await store.createStore(\n    walletKeypair,\n    \"My 3Land Store\",\n    storeConfig\n  );\n\n  console.log(\"Store created successfully:\", createStoreTxId);\n} catch (error) {\n  if (error.name === \"ValidationError\") {\n    console.error(\"Invalid parameters:\", error.message);\n  } else {\n    console.error(\"Store creation failed:\", error);\n  }\n}\n```\n\n### Creating a Collection\n\n```typescript\ntry {\n  const creator = new Creator({\n    address: payer.publicKey,\n    verified: false,\n    share: 100,\n  });\n\n  const metadata = {\n    symbol: \"LAND\", // Max 10 characters\n    name: \"3Land Collection\", // Max 32 characters\n    uri: \"\",\n    sellerFeeBasisPoints: new BN(0),\n    creators: [creator],\n    collection: null,\n    uses: null,\n  };\n\n  / Prepare your image files\n  const imageBuffer = fs.readFileSync(\"path/to/image.gif\").buffer;\n  const coverBuffer = fs.readFileSync(\"path/to/cover.jpeg\").buffer;\n\n  const collectionOptions = {\n    symbol: \"SDK\",\n    metadata: {\n      name: metadata.name,\n      description: \"3Land Collection Description\",\n      files: {\n        file: {\n          arrayBuffer() {\n            return imageBuffer;\n          },\n          type: \"image/png\",\n        },\n        cover: {\n          arrayBuffer() {\n            return coverBuffer;\n          },\n          type: \"image/png\",\n        },\n      },\n    },\n    creators: metadata.creators,\n    traits: [{ attribute1: \"value1\" }, { attribute2: \"value2\" }],\n    sellerFeeBasisPoints: metadata.sellerFeeBasisPoints,\n  };\n\n  const collectionTx = await store.createCollection(\n    walletKeypair,\n    { __kind: \"V1\", size: 0 },\n    metadata,\n    {\n      options: collectionOptions\n    },\n    false, // Mutable flag (optional)\n    0 // Supply (optional)\n  );\n\n  console.log(\"Collection created successfully:\", collectionTx);\n} catch (error) {\n  console.error(\"Collection creation failed:\", error);\n}\n```\n\n### Creating a Single Edition NFT\n\n```typescript\ntry {\n  const metadata = {\n    name: \"My 3Land NFT\",\n    uri: \"\",\n    uriType: 1,\n    sellerFeeBasisPoints: 500,\n    collection: collectionPublicKey,\n    creators: [creator],\n  };\n\n  const saleConfig = {\n    prices: [\n      {\n        amount: new BN(1000000),\n        priceType: new CurrencyType.Native(),\n      },\n    ],\n    priceType: new PriceRule.None(),\n    rules: [],\n    sendToVault: 0,\n    saleType: new SaleType.Normal(),\n  };\n\n  const singleEditionTx = await store.createSingleEdition(\n    walletKeypair,\n    storeAccount,\n    100, // Supply\n    metadata,\n    saleConfig,\n    [1, 0, 0], // Category\n    [1, 0], // Super Category\n    0, // Event Category\n    12345, // Hash Traits\n    collectionPublicKey,\n    {\n      options: nftOptions,\n    }\n  );\n\n  console.log(\"Single edition created successfully:\", singleEditionTx);\n} catch (error) {\n  console.error(\"Single edition creation failed:\", error);\n}\n```\n\n### Buying an NFT\n\n```typescript\ntry {\n  // Most parameters are optional and have default values\n  const buyTx = await store.buySingleEdition(\n    walletKeypair,\n    [0, 0, 0, 0, 0, 0], // Distribution bumps\n    itemAddress // The NFT's item account address\n  );\n\n  console.log(\"Purchase successful:\", buyTx);\n} catch (error) {\n  console.error(\"Purchase failed:\", error);\n}\n```\n\n## Features\n\n- **Store Management**\n  - Create and configure NFT stores\n  - Set custom fee structures\n- **Collection Management**\n  - Create NFT collections\n  - Configure collection metadata\n- **NFT Operations**\n  - Mint single edition NFTs\n  - Configure NFT metadata\n  - Set pricing and sale rules\n  - Handle NFT purchases\n- **Built-in Validations**\n  - Input parameter validation\n  - Transaction error handling\n  - Comprehensive error messages\n- **Decentralized Storage**\n  - Integrated with Irys for metadata storage\n  - Support for various file types (jpeg, png, glb, mp3, mp4)\n  - Automatic URI generation\n\n### Error Types\n\n```typescript\ntry {\n  // SDK operations\n} catch (error) {\n  if (error.name === \"ValidationError\") {\n    // Handle validation errors\n    console.error(\"Invalid parameters:\", error.message);\n  } else if (error instanceof SendTransactionError) {\n    // Handle Solana transaction errors\n    console.error(\"Transaction failed:\", error.logs);\n  } else {\n    // Handle other errors\n    console.error(\"Operation failed:\", error);\n  }\n}\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## Support\n\nFor support, please create an issue in the GitHub repository or contact the 3Land team directly.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n","readmeFilename":"README.md"}