{"_id":"kana-aggregator-sdk","_rev":"73-e7c30c67311644ece6aeb402ddbf9d45","name":"kana-aggregator-sdk","dist-tags":{"latest":"0.0.21","develop":"0.0.21-beta-2"},"versions":{"0.0.1":{"name":"kana-aggregator-sdk","version":"0.0.1","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","node-fetch":"^2.6.1"},"gitHead":"c84f726cf1fdee82272cd225bba1cd15f3a3ccb7","_id":"kana-aggregator-sdk@0.0.1","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-qpVWc1fYkl47qVUxvn67TQn79tmxdxhaJTRYQnCfIijrDOioQTHwVUtM4L15RSI+1HtIRjqb4r5TLM8ZNSYvCA==","shasum":"fabc1c61da67791e2434364469b72e42125c3789","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.1.tgz","fileCount":21,"unpackedSize":37751,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9KiXNQxjfAv1qL8tknh8Sg6LpCoAQgC3lpOWLvIyFOAiEA+KS+TKlwXx3+x/T/H1Fr+cOXMBEWUHKehS0KfvnR9sY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSSPOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6Tw/+K1Qa9oLjsRBfzxN7g4FNJl9Mdtds5x4qZSKx0KTb+ZbcLd8J\r\nuTrT3nH8FJwezOXyjgjLVuCYjiLP94Tdp1bG27FNk9y+LiwdyTreuuAtA2IL\r\n6JBuknIq//MQ1M4+EtHmBTWUGQFrfWrFx6Yo+Ti13pqbch7zJn0Lor9w7FWW\r\ncBjhMfePPi5EVMfgjO4LzfJjILB5/P7nsIfi+foSiEZDRGhyir1sIItJZsSb\r\n2h0rM3olt5v1JM377pFH7UnN3b5Igc8wygbkyjTT0IB1oLVxKPB2vK2ZDfgL\r\ntw5dH6oezuSAoNCRPSmVOLAvuiB0VkK+3g9+40c3wXHSUyAotiIe8glOnhJ9\r\np0/JeFat50rTbvJBVTPt00Eszoy+IJqKk2yIw41ie748vvo7VDLlSFvWcGN1\r\niXOTuLZh7/peV5O+RsG+c9XZAtkb6RlDIT3jmGRK1rD2BbPgLvTVWMdUlfC5\r\nEmBchUX0sPeqb1Y5328VutPbPAgHNweMmWk/tfM4d5zZggOfzCmp1HBAHXqg\r\nMbPJH/ySNPScHRn4kqz/FL3d1Nx2OWM1ubYKZpIa9NzVJkDf5p4QBHASPvB9\r\nlMBA7Bpwtrta7RHypYicHSCZdgk+sGVGGkjCdN5edtMsotxu/XIWZ+ztiEnE\r\nUZVTsFBfNnnDvRKO+bU5kaa8YA0lhmvV5gk=\r\n=9oXw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.1_1665737678098_0.6923745889688071"},"_hasShrinkwrap":false},"0.0.2":{"name":"kana-aggregator-sdk","version":"0.0.2","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","typescript":"^4.7.4","ts-node":"10.9.1"},"dependencies":{"axios":"^0.27.2","node-fetch":"^2.6.1"},"gitHead":"68b493ca0d5214010de94c2c6cd47271156e835a","_id":"kana-aggregator-sdk@0.0.2","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-EuPV8lyLgLdUh70bPzPl2PVtI5KmIpZwflRBPyW5wsENN2ljZQ88li6XXvR+NdWqyB/U37MhhKximm/7QSL1lQ==","shasum":"43d348f62389b7244298e591628b7ca0a3586f5f","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.2.tgz","fileCount":24,"unpackedSize":40093,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuNNGk0e1towOZukUyr/u/8mBB9GtpxfeY1IXRyMe89QIgI2tOU6ezl7agXggIk7mwN7BnfKkvJsJ9kMW32bp+DjI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSTfmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9XQ/8DeNFnjjZyi0KJMqYKaHI3zr+fIxaFez7vYFVMdnHT3k2VtqL\r\nqlagXgVgGFDzrkv6KGXFxElC+ZzaznF6qnJXKIGrsdtOHKsMfqhXuSDjCGwN\r\nzccKtNfH7gbpdFzwy1s4aF1ns6HVWHH0Y5k3JC7pfvKbWYvXCfVMyCYCVee6\r\n2hQL/9+bCd7vG7gSbQLOjCONzO8/TQ84fezwhFrDLiNweSqFfAX1bTu8lBou\r\ncg9BMcNjxgv7n5j1jgQkDyPVsFvLmeAyeG8wLt+n3RkSDRY7NwT6VxbUMBBC\r\njuMuvtvlN4udCwf3gyhxyEfmuUh3AQub7gLDuUvoze0p5/lAnvU89Fq+S1Cq\r\n30iOviy7zEhvStUzzoUkE2XlntAkTeLtP5HlcoenQmE0CW8Ixkbw1hh3mtXF\r\n4uJq8buLZTelZGGtUtbBiL+eFEMTWLLlmfxE0QXhQnYUiFPYkSGg+sxXv7IU\r\nZ8EfpVjTdf71LTxH4+WrXLkIWmijMFAjaGpMxZLK4xb7zkbV4hHZFoeAGqPA\r\npbtcmOndK1/J2/3BwG52J6jae7nwmLhI1b/8Y4bgn9Mn0/Y0AublHwUKWUB7\r\nss+T9iXFmtindtNHIV0f9bHlzYohcEzOcEF8VgU4oo0lcYV26ClQYNDKmOCA\r\n1aPnCqTTftsFYXaIbwvoYiZnX3nz1ObFilo=\r\n=7nQT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.2_1665742822215_0.4947776570369564"},"_hasShrinkwrap":false},"0.0.3":{"name":"kana-aggregator-sdk","version":"0.0.3","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","typescript":"^4.7.4","ts-node":"10.9.1"},"dependencies":{"axios":"^0.27.2","node-fetch":"^2.6.1"},"gitHead":"78604c749f1b34304d34d67fac07dbe9649c9891","_id":"kana-aggregator-sdk@0.0.3","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-6fiG/zPXtJTk2cCifUhx/BcRD2+LoXAn+PJTqmlN+Fk/kDNI/AmlL09ebQBZRKcQcOZJ8vtXkYW7NI/fDw6ZGA==","shasum":"df2581ceb8264d561b4be9c3805138b34e8c8bb9","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.3.tgz","fileCount":28,"unpackedSize":63207,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9oC3oVw14HKVKElpnwADCtxYi+Ja4PmtBFCbMQZ7pRgIgAYn+1aUmwrF484H19VHswFGp5dkmXlVLDk+vRC6YMBQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWP5GACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1Qg/8CJ+vX9gp30WoOn8+fETqYd/BxUVKSGTZoOxSWAMYOEmi2SPo\r\nE4uLV5Dq4FjYdD60Ja452Gb9T+WVe9Ub/LfGc4ayALHFImrWQUTXdauTBXUs\r\npGrza/Iu4bGrklcqY7MNnwxXwOfkxYahFEgfiSXD+kYf5TlF7ZKJgVY7h8Td\r\ngCNxqI6banRn1In3OAJsedNBmfaHUqZEZzjmgDLgM3JrnadTAPiujQ5KaAqp\r\nQoJ5DCZWe+gWS6pCN3N005RiLFlrwXJl2W/zymkR1tWGCeQmMmQtu4nXDHXh\r\nMJvnktXr/tPBzEpfDZYLg76exMbk/FG0yHAFgBq8FaF/vYo76YZj/Vxfz4Wh\r\nSVGeHC9GbY/+hatQFbA32UOLA+C1NSQ4VbVfODoC12Cza5ag+4AFxfPfn512\r\nzHuY5npo43OD5rjnji7CKmEwrt9oKFpKYLFz6D4BCoWL52OdtGdSXAuJ+sxR\r\nXkJSjnzjre3tWn5L1taChQb+CoLwMBlml7yo2PPC1thN3tY6uxKTElVSwPna\r\nuw4ubn2THOFlsNo0lts1+CN9cdIA6V38yM404EmZ6N5zEIZD+A+HXxJdCYZ/\r\nYcOrljNI0mNad2psYu1RvnoDzXfQfE2Y9V9XFIUIH2k615Y3SR6PXR6u8DrV\r\njpxC3FfrrrcPkadeYtSI8yid5qqBqBIjzs8=\r\n=yCmb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.3_1666776646537_0.8611560154243505"},"_hasShrinkwrap":false},"0.0.4":{"name":"kana-aggregator-sdk","version":"0.0.4","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","typescript":"^4.7.4","ts-node":"10.9.1"},"dependencies":{"axios":"^0.27.2","node-fetch":"^2.6.1"},"gitHead":"24f6f3ab7c71cc8a615c2c7d9065009ef61095f6","_id":"kana-aggregator-sdk@0.0.4","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-lnaISXg1JOLjNE9rmbbF1GLPidjxC2/Mu+vie5OwXDoXiCf5erf6OMw6zb2S/ryYcZHn9QQF8Fz3y9iE0+9i/A==","shasum":"de5f0e272e346fa9109e3941856ea5e262ea148d","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.4.tgz","fileCount":28,"unpackedSize":63438,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuAr7H2Xh5p04yxHkI7Z1f2lqtEh8yp3RTortCCPl6+QIhANjyohkrhn/RUSW2jW6S5vAKpuhq3ZOSufqN3MYRsM/D"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWQQ2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqlJw//fxE2hr336ewJqIs6ZsbOoEUQvp4OQnfmqjQkPKMCjnK3FT4Y\r\n2e9WE7lx8USB1WljiwKDmiUT7bwPHyN86S8WAOmwFEuaM9OdOwsxfK6sKP6y\r\nUyvtd35AAnQgk1obP2OibllWnHqR8U4nHDDGk5vQsHhZHE32mCuVVdiTOdTO\r\nQgvssXOmkZksZEybRSNDnqPle4lDBk7Vv3NFPHeZojPcqsqtVVEzHPIInVlp\r\nPUMF+9KgN+o7ttsyqIf6bixc4DMqL+0J1LuLbU2IlCRsGeGo+riTIMFeBKoy\r\na6MlzTDUkAEvH4GBc+sVWdJEEXIWdAQPXersxn5nJiYp6n96KkkWqxE//CGe\r\nIBkr1oLgaIPdrqGfpHAWTquxO/gynBL+DIPTHP2gF/OR+gqGtwmPsi2IhPMZ\r\n2hNbgRNyTwnwC8iWm24ozryqxgdMTm8XOjF0P9Muo/rPDStkZlgVlx4kRdcx\r\nZTPjpG0lQceeddBUCf3HI18x6oPaTWEHB3dOy0LbKpvLAHh3a0D5Sc+93BvU\r\ngSp3ASXCsoDrG1x/p4uqw1gY9/lKZunxJXKHmCZdCBRRVdpMsS+2JGByL7BJ\r\nhuTWK+C3TvC707wpYtOekppY/hg1Z4qbdH6ynftCcMIY9nZL4Z9b5DGBhwiG\r\n+qLm07Kj0IvLFazdMGS8/KwxK9Vw4GiBdkI=\r\n=q9uV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.4_1666778166077_0.38236303610225364"},"_hasShrinkwrap":false},"0.0.5":{"name":"kana-aggregator-sdk","version":"0.0.5","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"24f6f3ab7c71cc8a615c2c7d9065009ef61095f6","_id":"kana-aggregator-sdk@0.0.5","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-3n94aoaeqFRP+/vEUE+qY0YO8Pt3CS0bPq9iWcxBUflhUnsK4nOp4LUWmQFf31O6NL5r2wQuzxo2fAX3rRZgRQ==","shasum":"0dcba749f78b02db4b516d457bffdb22468de4dc","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.5.tgz","fileCount":27,"unpackedSize":59625,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTuRapN5Y/PLxCZv0v05J5mnzDP0I+j8Xwg3LjCY+njAIhAK0R0QREeBbJMA56VbT6pt1ZQ8GUI473BdhcTRAjh9Xn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYONtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmovqg/+IJGH7ZYui/z1aWc6CSK+Ysd41vC9foP58og2nlxdZCn6bDl/\r\nA9zgvVf8QXu3oVnp/Pz6kpEa4EMO5OL+LO7ih1IN7lTCieqj0zmMPQKyjHMR\r\nXzQzr7kT6xGSD+GF4wn1zRC1OteCvJ5H60Yk/LV3B0FkWtJHvdZ1ynza70o1\r\nDmRNXfFbo7h2wns4dVYECekhPurrIPM+htNXkR6FR7wXPp6q2rqKZ0tzeKMa\r\naa7qTLCrWpzB79RCaapHJrVHUDVVV8s72f+fz2oN7seZColvGppLTN5rtZEi\r\nxTDJkBKTY26huUclyCWPMkQfTahtjFYEq/5ekSRFbqGEqRNyFm+XZMOf32Z1\r\nAeo5fyahQvAfn+PfC63FeFWvf3g48leIJh7oxXtwFjIoubA7YiggRyJky220\r\nZalR0vCN4tF+JOQA9zH9G0vQicnzyvRneVtl9+ceTp1nB9SGj+r/aMPFLBh8\r\ntZQx2CddSltyWgeM+oWzVpzBUJ2FsQ4uZIleMfPrcjoDBW67Ry039glg/URH\r\ne5RV45oL9kXW7KvjARN0aZsMGeMfv7O+BLPadqUHQTszLaZnjQf68Tk2cYiv\r\njjq8kyoO7c+SVv9THnt1z+02TfuULh2aVyuFqcbA7bNdTgpkSRiwiXSGybAr\r\nABPSUJC6OT7lRmlYZ+0yB0a4QeWTRNDoBHA=\r\n=/pPt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.5_1667294061096_0.3448590922642627"},"_hasShrinkwrap":false},"0.0.6":{"name":"kana-aggregator-sdk","version":"0.0.6","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"24f6f3ab7c71cc8a615c2c7d9065009ef61095f6","_id":"kana-aggregator-sdk@0.0.6","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-lm86/qaaJvwFjjyFd8u8+ss4yaT+7F2v3hOcw7lB9ihyVeWJv4J7I9UUbBHS3slwgoFrCxgqvDEm7s390vPPxQ==","shasum":"aff9fa84baa136eee094dbf5a69c11223bef9fd2","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.6.tgz","fileCount":27,"unpackedSize":59687,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYLzLR3I8xUeGkDXe1NrajNNAMgh62y/iCMzFdXYDZYAiEAr6ze5NdYHQ1diChHxu0Wf8Lo+L7wpMx1gikoTnVvqi4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYOSuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqAg//Uq5HpR8nEtIv6BxuPYvyQHHY55qLWUsT6nUAiKMEcH2mk8KJ\r\nKGbduUD8VvRzUwj82y7VcQ89ukmQtZ+hMGgqeqI6/Mk/SCG6teP8+G7Uy+/4\r\n6FOmJLjCsnGrOTBJRGXpKBQlKfyqofEU0mCXnsscgJqd7SQFF78OtlWA/Xf4\r\nsmQDZsoR94pbmkHgsXtUgtR5ZZsc1JV5iIdl1159Sr0cnWlQO0YeTeIG8/BB\r\nMYktuWl22kjxjfruOJP5WSlDKSH7pVh+uvWhn+RacUGCphnBDLsxi0+dq7X9\r\nvQFbj3HEXUz42QnfxtS7hgniCBip8P56chfoTpDoAKBSrx3MdnPriOhyPwoY\r\nOEYizLSDjtQszorU2O5O8eLa/Riozec7ieCcXrz0M8nQ7XUUYGkWzqkR/S8c\r\n4yhLjb1O6R03b+i9y4aKrKs1/Gptyg0G/SV2nU4rQC+8N3p/SY7/Wo2y3D5a\r\naGAXULK8Um5QaKhWZN9ICMrlUDLUMx7enZ4TFbORYZyyf/vvF/O7keGuoOeH\r\nkRdRbGuld6OA5UbB9tttxUdHiKqRRB8HvxvXR4wFGU7us19CiuO9um26Ekda\r\n2KmjBmCAXduA3FktzFWLjqnZ0DjMDbi+OlARCQe/OYBa7OqDfdDNvolk3asq\r\nXQAjKuxGgQs+qINImCZgfAt1vCCqpBErjU8=\r\n=z8Uz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.6_1667294382684_0.9024495346564185"},"_hasShrinkwrap":false},"0.0.7":{"name":"kana-aggregator-sdk","version":"0.0.7","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"6269d9385208fe69e89afcda56fc4b1dec767f43","_id":"kana-aggregator-sdk@0.0.7","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-wOXHIILhHvyfYNzmbubTwTtsMReK42Yp/3caiKJ1sOTZaDMoM34YavAJkm59x0thqFGZA7aicr2Vyh8mV1Me/g==","shasum":"5ab5603393ed55cf2a447d8cc59b7fcc71611bf6","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.7.tgz","fileCount":27,"unpackedSize":59192,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYXBK3mbvUMVXOgD6kZgeups5SO9ilq7IUJhggMd+TeQIhAP6YrrsvRqIRpz8sGmoEoilDM5jTHUag3Kz8FWKaex8Z"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjaRSGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFJg/8CwFWm17X+sd5lqYu46mIVCriuSImku4CZeEdXHnZ/dp/8p7P\r\nXzdEKgOd68jg1+idkXxNpZpDZ1Nwkcl03cV0FuoelFilmrDeVOlSTkMwU4Fw\r\n8yI2s9t+FzeeePwCnvCsnSbPvPJ8TbLBO2UZIaV3p9FtPKkkhjhOdLCgo9F4\r\nWTAUfUBUpaoYBCMpNgBi5d26FDiDKqWeA4yd9y7Z5lnEYOxH+GtEITisFwOe\r\njQTvCMndcvf76ypNcKrL8Dwz27hz0oS0I9buNSbNFdjS83hiUzGWk7aA5N+J\r\nPlAYzJ96kpxElqr8tO9gkblz6NQg2yeR2mZC3QcA+TDx6w8rddDdcbph+ajr\r\nEOldrGvvsFj9isYgEwpON2198ZT6X8b/5wDjGHMIAMz9eysl1EmJmXDSaU2L\r\ngmNhrphq2GZz/wJ53Ipzhtl5t0nbpL8XDiJ4HgAAkplZwrqWQkIeR5ffz8Qx\r\neakWUsUfIXZEmqZyyAqlN+RVQ6RinvWZwMj4ZgbZaCN3P20BiKgqgpRzpXLj\r\nzjxelyclyzOwaR6ZpxpXtAsmJCxNQhGEQvSy0Gtf3akRhJpJXsnpHp+VHQbq\r\nWEUYJc7F3tlGUSkryXkvv9W0gaRwyRa3GWKUlWPjggOjTRPnZ0dyVVn70xZ9\r\nD5nsoad2vIgbDyVF64AxBhkKXswaeRYOR1M=\r\n=W2wT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.7_1667830918244_0.7126424703936927"},"_hasShrinkwrap":false},"0.0.8":{"name":"kana-aggregator-sdk","version":"0.0.8","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"6269d9385208fe69e89afcda56fc4b1dec767f43","_id":"kana-aggregator-sdk@0.0.8","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-nzIR4srMpUszWK/Zp28HkeGC5ifRAUzSO42SekK/3m9NvgxydiooUfqbcSxnIAadR2ZYWL5H9HwpHort+re19Q==","shasum":"848c169e0e53aea8fcb083adf8dcdc9b20b4629b","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.8.tgz","fileCount":27,"unpackedSize":59551,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICflY2a8m/dZP1Iehv8U1s3G/+/yINLcOP5ZGkOd68muAiB5LQ359EHRnmbzr/OovDHBu2aYCWcMO1y06/8u9Ve74A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdKo+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdqQ//XyUil5qUtTqeia0lXYkPKILxnVfp0H7BVOQng1gnJNAalHnX\r\nmnwoP3ec0ynqnOO5gC6blWsMTWBRYkxiN+alE7MAqN11gV30dyabjUMQRM3w\r\nPk24ZAGF5z6/ww72gkJkwu+FA3UrWQKe3pc7vFIpE0IjcMevso7OJF3WneWv\r\nVbYILetfnX4tr3g8D8p7EEjeviDOyK3ljgw9+ZmWOHjfwZJdUwfDgK83HXtF\r\nyUT2nRbJiy79OiwqwvjSUhpOR/7hr3Fsj2/iXYpl00AXrQ3ubHV8we4SJzBt\r\nTlgG/BrDAg0/w/EcmK1PHvkihHdbO4L1QBiGU147Xhk1w0bFMvRurkLI9BAT\r\nPGFbej3QqL6AWjKLoY0ZUXAzFlIuaUHtb1Tj3XselCKGCLBzlFFiyp96bCdC\r\n3hu1rJjk67dKXvScZgFVODj1/8aNG2sKRu9a0LhJUFS24/1rjGP1SK48K1p3\r\n8pUtszYrGXy6k2oSjc2Hp7UbV4dbI2eKkFKRzfOtPVfLcZ2gbTXZBkHRJNgC\r\nsJnI2h+D60qVYbMLkh3gFi5TIUMq+TU4nDu3Bd1YWS6kRoS/fnuUmyVpJYBC\r\nwZFq4RP5Fn4toFr7De385r92FTH0Ap9vhCnMCXu9bhAQPRXJyeuu889jupau\r\nimHKes/FKxNphDEQhqc1sJApA9ak4PHbJ5Q=\r\n=IKlD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.8_1668590142322_0.49017123504145266"},"_hasShrinkwrap":false},"0.0.9":{"name":"kana-aggregator-sdk","version":"0.0.9","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"2d8c7ba806930d9c69eda61ce2a922c02075f933","_id":"kana-aggregator-sdk@0.0.9","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-V9ce8x05KGj/o/mFoFu6dQgNcll2jVkArHpwvk/kwLNnrEzL6mHAa547PaDCJ1iJZJrOz3wrVTQZoNpWLJf5+g==","shasum":"b32c2e92f16034fa313ba249c1a62d6e12d567f3","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.9.tgz","fileCount":28,"unpackedSize":65493,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbMN/WWA2UWmRD+Q7pwZ/jUO8TncsUUqMcbe9BBlk95gIhAPRHi+WtN2Zn3Sba73rp7lvFkjXk8vMcV0Hb5+GXrryj"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfGxlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9mQ/9F1ILrkBbbNyp+svvLDR6TEJaJpZNxYSIVl4ylokqFjtCLt7P\r\nX60Sf5jwlwwZ+9oCWWZWA92/dGK6IkO7xWwKQXS6W9sTOyeswPFHoy+W64Eh\r\nhZ0TbxM4rx3Xs9NSkOCs6LbOA4FbslQUw21nNQOP83Gb5kuADAEYNQbmH18v\r\nwcDyhcvD+RCXwZKn5oBVeC08lCHvKpzIXNeX2HSCNzEw1SR6xmzvQTPi8N6P\r\nkDQzIER2QV8gvAW3j/3MZ2fh0+ttZlgZberIGvb4PXz+7t8BAbjAxF1/5gou\r\n3HKSYv94ZgSTYmKODRipm49K3l1oK0AkSry/CYuLU2GWZsyShrWDkz0Krlsd\r\n/nmwrY6RYTnRIKoXcy/rnx81sH8/5qexgQhXYKkinz3I8edHGDc+jxzotH7c\r\ns8urr2E9bV5dy1CFo1UZFLOmvAwZCEca36NHIfWAfgzVKhFXqB1B3YL+a6Ba\r\nMP5z6ADJbba73y3Yiw0OL0QjYMH87+t4PrlXwY6e6H0iv9ZXtwix2Iq6gBn1\r\nn+5/it8cqOTCPzvu1TO085xpheHoGE9d0dH719LSKsPmd/6RDUC+geCAX4UW\r\n78tUUDScRzhfcLO7OURvWt9gaWgY61o1qp8deUyHhEqZtOdz2UaoHd/RR7B+\r\nCzmqYQmj5AjIa2RywCabswSbA1Jz46Fapcw=\r\n=aZyY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.9_1669098597141_0.43055138918500746"},"_hasShrinkwrap":false},"0.0.10":{"name":"kana-aggregator-sdk","version":"0.0.10","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","quotetest":"ts-node test/quotetest.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"axios":"^0.27.2","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.10","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-qkU1ZOUiFbFpahHUEucFUf3p+SvW/WiJZ/ANvRAT8fCK8vTypgnmTZuymoVI4wjqAYqNCsnmyQwYUSqrK8HOTw==","shasum":"b28983443133c1567005cafb812d483906dcb206","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.10.tgz","fileCount":28,"unpackedSize":67699,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIeCY0eJTVRjtklH+9aN2wRWWkOOj27CQqdvfpBUwTVAiEAyX5CWKjNBmWVaesjZQdJZ5lKOS6KDt5BWvYwqX+9EQ0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfaxGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrX/hAAm6UcpH7E9+wymT55/OCOGDGzfgJbWs2muvtSB7P+YDgF15H7\r\nfri2pUvw+0xU7oyOl6sRz6GmwfK/B5dmaMiPcboKvPNRnLzLpGpXZMqsWbG2\r\nDjrD06ZfnFcjNdepzTvbAvPOnp9XFnVkZkMDQqXjrmQuG/QxwPi/XT3Xyi0E\r\nxYHtCSItfcNABEbcd/AyS+wTf3hH5JB9g/OniqarjV3efS6a7bmBfqFpjJNm\r\n9s3tBTyySAsQ/2rzIxCVjh2oC/cfsicW/7nknPWF+bHfRQ+wKTC3uKRjywrY\r\ntDveXMlWbt4QGvirBNuaDDuqgRR9BqcbGCvCRZ+CVMvsu6aQjykZiEbbJg85\r\nC7Thdkv9GBSzJmBqWaekh3XzzxNrWmleMWHYdnTzIlJoWp8TdBuGTDjo10WH\r\nXjQcYLjMlH5CZ691w9JC0I/g09Q56iLAdJ/r1dwUnHZHvXwFNPmJL3lST0G3\r\nBqVmANgul36uKFuV+Pz+wUzOScoYxO9ouu0S7FZWqTYZuYTHyY9tw/9AuDQY\r\nNi+YZ3+JREwQ54hGiFzh09mr+zYOTv3VQOghMYtA1hiycuqbAbr0L6Wb6dRz\r\n9WTeGYFGNue1OXKPRmNYTC8syAZQXW24ZQGTDyuq23FCt51PqUQkDZH+tBku\r\npyncqSCg9uBiNZokoITck/XVeCDCHDJXhCU=\r\n=IpdQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.10_1669180486248_0.2745017222782822"},"_hasShrinkwrap":false},"0.0.11":{"name":"kana-aggregator-sdk","version":"0.0.11","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.11","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-HjXHmlu4TEdr4B5wHlanDX0grxlmjIvE23lExBn/jkXHNZ3LerxxHHkbRyOcPC+cQ2U58aH4OQdy6viIghibzw==","shasum":"6e46e327e3ae3a7d9a16c1e3cca55e2a1dba111a","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.11.tgz","fileCount":33,"unpackedSize":73170,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9Alu6JuobJFuk9vv/MMdfG5CmNV1b+Rh9suaK69/QgwIhAKJAqf+xvbiq79NkQwXFWcqL6PsF2Un8l9/NA5tHBH2t"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjf25pACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdEBAAnSaNxmbe4b/Bxk1ZmNm9DATzDsA6KhTfg0zZWtu4rFj4ZOIc\r\nCsw5+fsndhnFrR6AU/hIBpVzrsD7sxZ8R6O0qn9SGuocMBin5j0NCC67wm58\r\nakT6cCb64rHVslkkP6+p3xeKUxJDnUqOg+3eVdX/t9QhOrnpnyKa0g3V0BvK\r\n2Z8mYBXnfVf3P9L7p57VXTPPFi/LSLeIIQYDIZodwLGJ+TTdBondDtcHFwd9\r\nSsUuFlbSEZpeRcCf7Nnr9XhnELoaDQomyPYecmjZEUz/rspbxGgKOdcpNj9A\r\nxCoSUwqGCDN5dTEWp+1FObykHpzbPvBSsgy0fXcW+NwmK9siBnxAmpay83tX\r\nhP5kWtvqzf6kDhTAr+u4p1KuSxju2/XBJsXtZwAhnk1ZbHoOlNfrPsxlpmE+\r\nLPfqMo3ZgtD3U6CQltW8+avyuTJ2hjMkht55P/c6J2Inb5fnEr5+V+goukd/\r\nfMPL68cEgGTAOxUG0tsfxKtc3i4z37rWO2J7Mjr3ZjZtD0nt0U7Gw035/ilX\r\ntaHggASuXdrsu/7hvia+8s+q848EXMuhB4BcWArvXf7dIHdQPzhIsc1Di94k\r\ntgbTdeg++O0wb0GvS6Nh9JBWAgmUbcXN5KClRzu1jnRAh7dir9qldmknK9j9\r\noTB7bQZ3Td6x5zU5KKpz1Ehf4lA+qdSE/Zs=\r\n=Sw7D\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.11_1669295721566_0.4905986890426337"},"_hasShrinkwrap":false},"0.0.12":{"name":"kana-aggregator-sdk","version":"0.0.12","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.12","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-vu7K1cFlq/XMsyEAZ55Hf9b7UV+Qx/hm/qtpyQmonRT9X6soTFTw1STn3BfdZaF4LQvTQwnoUmHChgEwk8FDlg==","shasum":"99d2094b67bcd945abb1f66fd17cf7494e7dee48","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.12.tgz","fileCount":32,"unpackedSize":82102,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQC1Op8XWdBZM/Yxxs4n/Ef2fL6Jpa58m46+FJe7UqmAIgOmClgBN432YzKcFCfsjp3x/O9JOWX8vmeXAX7wN7xdY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjgDJrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhQRAAjfpEMfU1CyIic8QpDnFNFcVAx70bzXkf1U190PiPADXWlWOx\r\nx2+1axJcCfo3RqyaLemo67KUdo84hGfhdpTe0B8rCRSA6dHY7YVUGY6b5mMZ\r\nrDcF9XhGDtLmFudCwZ5qIHIPdEBq++cZ2HGszoboTX22sa+QzmzCkPC1z1GV\r\nZRO9w7v8h6KDmLGSQVvQ6wLa50salIiRzkPEhShKA2/gCsBw6MhvLm2YwnBG\r\npFHpl4G9iAyAb5JtWXpwPDTRynmSp/lZOKf8fVh4LhUA+h4CJFGzGxLov8kz\r\nqFTUGthhVCPjB1zFcPMXvusWPkNehvaQq6gkh6JzaBIzx6V9CNDBexhFTznD\r\nJf8lkaGSKpWZLONNJcinCEtNZVIjlV4kggX37ZCnBBcmgyQeveVO7kvwzcg8\r\ncBS9qhYr+udGzfZcQnNO4SLZgyXKd4wlJwnIT42D5H+Hy9QH0DdOX36AWx2V\r\nSssuUPsqBuofdQDRC4ktoVTF2jCHQCVkW+gMsLkrsNWq3Gv/jxN3w9qS4cqO\r\nF0M9LDDFD7a9fLPGzzlqPsYCMFc0C4QeGX3LBEVoq1hen49HzAVS/gHxZG7E\r\nhnKUPa8OebziCsrqrLLT2RgJoIG1aIUV88xIAMFjY59KzFK8nEIRXYQbGfCT\r\nqak+Ja4d5m98CHUDJaHF2DUaoOSeC2PR8uc=\r\n=w4vq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.12_1669345898930_0.6474233907737752"},"_hasShrinkwrap":false},"0.0.13":{"name":"kana-aggregator-sdk","version":"0.0.13","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.13","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-/qxlSWtEOCPMLh9+KCrQDQmxZkmU4FRV5g6GxuqU8SNZbFEQGXOxv/brRj6aHoVAoqekiXGwVTpLitkWrKCamA==","shasum":"472002fdb0e7f6f518cb47e854222b420f1b6db7","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.13.tgz","fileCount":32,"unpackedSize":85868,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICImdNMftupqjNHNvlfrRtZVlMBMzoQN2T7odkcbTm+1AiEAnEJ81jw12LmwVFB87Fi1u1rni+sZkB6xa2msd23DoVY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjgH0DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrE2g//T9Vhpa4EK6ZJH5kVOk75jt5+a0PHznSkXTJ7ulYSuay6MBJr\r\nj9dpDa0vPosAx8LImmVDii1r7RkPL0kT7N1Hm2jQhkd2NInjzLuJrhSP5P5M\r\n2CJJfN7kB4PIs6+ia1iOQN5urRgLteptG2gk/nzDNM312QVghWmPWRN40xuS\r\nS75LHrp/Jri8gROG0D6IA+8ABDTOk30XhtoA8YalYEC5uaAM24D6TVQnDr2R\r\nPQ/J4f8l0+70qKVnGxr+ja9F7JfQOXZnIb1z5QQbfpQn675HidNPS0ouTe1L\r\nRn9iN/2tHGtBzvSNoJRwAehHl9dJk9Xsrgo9PSVUDVZioZrW99RJEhMcK+XP\r\nQJnfjBlC5xq+EylvnCX7QfK04YygvR/51xN/vTSQIm0c+ZH1o3Dt3eVQwrHn\r\n4BNhIee/lUfs/UgEsHKV/uJIrG6Rj/4xOwRN5iJzzffR+TTl8wxC0+tcJ5kf\r\nIlnMuYVDtCBJfnQXMXYGzNRw8WzzwoHTnqF/fpOYbk0s2o1cz9zwu0FHjKe4\r\nepzcxa6qdJ70Htll+yeI4pCqljLMGQ8e1Rj6ccmx4iT8ElY/nmHnOARnXKnW\r\nU9+Ot1X6XRoQ9PK2O7Nd/NaHKgwQ08vVQXyMFhf8yhakEfrZKQ+xvh5s+76y\r\nyWl4TcRjt55tkooC3T5OoC7ZaW/GWrZwzL8=\r\n=8Q8+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.13_1669364995422_0.474835623858322"},"_hasShrinkwrap":false},"0.0.13-beta":{"name":"kana-aggregator-sdk","version":"0.0.13-beta","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"readme":"# Kanalabs aggregator sdk\n\n<!-- ## Aptos -->\n\n## Description\n\n- SDK to interact with all Amm platform available on Aptos and Solana Blockchain\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n \n### Testnet TokenList\n\n```\n  //only for testnet\n  import { getTokenByChainID } from 'kana-aggregator-sdk'\n  //chainID 1 for solana and 2 for Aptos\n  let chainId = 2\n  let networkId = 2\n  const devTokens = getTokenByChainID(chainId,networkId);  //networkId is 1 for mainnet tokens and 2 for testnet\n```\n\n### Aptos Aggregator\n\n#### Using SDk\n\n```\n    import { getRoutesForSwap, getSwapIx} from 'kana-aggregator-sdk'\n    import * as aptos from 'aptos';\n    const NODE_URL = \"https://fullnode.testnet.aptoslabs.com\"; //RPC URL\n\n    let client = new aptos.AptosClient(NODE_URL);\n\n    const chainId = \"aptos\";\n    const networkId = 2 // 1 for mainnet\n    const inputCoin = \"0x1::aptos_coin::AptosCoin\";\n    const outputCoin = \"0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT\";\n    inputAmount = 100000000;\n    const slippage = 1; // Percentage\n\n\n    async function swap(){\n        // Get best routes for the given pair\n        let routeData = await getRoutesForSwap(\n            chainId,\n            inputCoin,\n            outputCoin,\n            inputAmount,\n            slippage,\n            //Fee account has to be initialized before collecting fee\n            \"0xf0dc067a835098c9232a0f3f884c801099c75e1100944974729fa131f066d11e\" . //fee account to collect integrator fee \n        );\n\n        let optimalRoute = routeData.routes[0]\n        // Get The transaction payload for transaction\n        const txnPayload = await getSwapIx(\n            chainId,\n            optimalRoute\n        )\n        const txnRequest = await client.generateTransaction(\n            account.address(),\n            txnPayload,\n            {\n                max_gas_amount: \"20000\",\n                gas_unit_price: \"100\",\n                expiration_timestamp_secs: `${new Date().getTime() / 1000 + 60}`\n            }\n        );\n        <!-- const signedTxn = await client.signTransaction(account, txnRequest);\n        const res = await client.submitTransaction(signedTxn);\n        await client.waitForTransactionWithResult(res.hash);\n        console.log(res.hash); -->\n    }\n\n    swap()\n```\n\n### Using API's\n\n\n```\nlet swapQuote = 'https://ag.kanalabs.io/stage-devquote/swapQuote'\nlet swapIx = 'https://ag.kanalabs.io/stage-devix/swapInstruction'\n\n//For example we have used AXIOS and JS you can use your preferred package or language\n\n const response = await axios.get(swapQuote, {\n      params: {\n        chainId: \"aptos\",\n        networkId: 1, // 2 for testnet\n        inputCoin: inputCoin,\n        outputCoin: outputCoin,\n        inputAmount: inputAmount,\n        slippage: slippage ? slippage : null,\n        directRoutes: directRoutes, //optional currently not suported \n      },\n  })\n\nlet swaproutes = response.data\n\nconst txnPayload = await axios.post(swapIx, {\n    networkId: 1, 2 for testnet\n    chainId: \"aptos\",\n    swapRoute: swaproutes.routes[0] ,\n})\n const txnRequest = await client.generateTransaction(\n      account.address(),\n      txnPayload,\n            {\n                max_gas_amount: \"20000\",\n                gas_unit_price: \"100\",\n                expiration_timestamp_secs: `${new Date().getTime() / 1000 + 60}`\n            }\n        );\n        <!-- const signedTxn = await client.signTransaction(account, txnRequest);\n        const res = await client.submitTransaction(signedTxn);\n        await client.waitForTransactionWithResult(res.hash);\n        console.log(res.hash); -->\n```\n\n### Outputs\n\n#### Get Quote\n\n```\nroutes [\n  {\n    RouteA: {\n      amm: 'Pontem',\n      coinX: '0x1::aptos_coin::AptosCoin',\n      coinY: '0x808b4ffe04011cd20327a910518b4bff661f73fa907e9fc41ad690f84fa6f83e::asset::WETH',\n      isXtoY: false,\n      curve: '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n      curveType: 'Uncorrelated',\n      inputAmount: 100000000,\n      outputAmount: '2575'\n    },\n    RouteB: {\n      amm: 'Pontem',\n      coinX: '0x808b4ffe04011cd20327a910518b4bff661f73fa907e9fc41ad690f84fa6f83e::asset::WETH',\n      coinY: '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT',\n      isXtoY: false,\n      curve: '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n      curveType: 'Uncorrelated',\n      inputAmount: '2575',\n      outputAmount: '876648',\n      outAmountWithSlippage: 867882\n    },\n    outAmountWithSlippage: 867882\n  },\n  {\n    amm: 'Pontem',\n    coinX: '0x1::aptos_coin::AptosCoin',\n    coinY: '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT',\n    isXtoY: false,\n    curve: '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n    curveType: 'Uncorrelated',\n    inputAmount: 100000000,\n    outputAmount: '876201',\n    outAmountWithSlippage: 867439\n  },\n]\n```\n\n\n#### Swap Instruction\n\n```\n{\n  type: 'entry_function_payload',\n  function: '0x2fd573969cf2d5f0bf8bc9ec245dec6d031f6e00e50f32785913135c318a2dcd::aggregatorv1::intermediate_route',\n  type_arguments: [\n    '0x1::aptos_coin::AptosCoin',\n    '0x808b4ffe04011cd20327a910518b4bff661f73fa907e9fc41ad690f84fa6f83e::asset::WETH',\n    '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT',\n    '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n    '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated'\n  ],\n  arguments: [ '1', '1', 'false', '1', '1', 'false', '100000000', '867882' ]\n}\n```\n","readmeFilename":"README.md","gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.13-beta","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-07b/TVva3x3lO6990IiP0nGOrEphBhOb6nbyCHyolraQEmVy9wY5FU9cmUFo0BbR+t1Nv0d6Tv6xrddU85Hswg==","shasum":"1e9cac126c460ed171ac497c3374194bd649d1e4","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.13-beta.tgz","fileCount":32,"unpackedSize":86045,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHuc9sPqarafomfeRfyStTRoYDmBW7vOd6LKBcjoBJ6CAiA+9iZJUELycrq9r2TgdcrCNRpEe4u+aW9XXdK6d6Pckw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhHsIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXZQ/+OV2dCYyQmaob0hGhy6+99q+eSqogjWl0Z/NzLCcHqlPwBCuG\r\nLGTGjJc6GE6BRcgBRmB9q2lpj0dzyPUaAjTW2LS89/pM/Zy7iz7YgZd+dzJC\r\n6sIUObol1M1DrN4MTjA7Bk9pVlRf+Dhb8Di8W9ZRpjkG2gINDmcWaa4qN1QR\r\nsmO1ZNu5mRzc2s55P1qt4QVpJ1Xf8P/7O0gIlNLEUsHwO2YadpTWB4Xgad5K\r\n5GUwbqgKrerOP8vmhsx7TAQiJ2o+6qqa3yoeppMu04nthpCCG8gwVI+3djIQ\r\nF3wuK2zIx0zwtWRFCbENBjT21+met7sHIM4oLzWyPujIVnN64sZErx0CtEIq\r\niHFBwp3lBM0Ak9u90vlAU5KOLAXlwZ5uIqHWrY2Sb2elt07LqYDN7bXJfXjo\r\nUlTpN5Od76Gp/WSdVaBSI88+OTK5eIRa7d2nOTCWaZjj4rldY3Yc7r8koVzw\r\nFhb9g7Iwc0ffKe3DxGyXLBgDnsBLuRHaUxHfIoI/Cnk6kAaaneGSJowLf8H2\r\nM3MmlQpgqS05ahEEC/3dWHuv2Q4YFH3x8TWDgqsCZo+N45z4RAY+U8eoHnSP\r\nGPo7OVvGfZOHYzJ+I/vy9sxBbKVY1SNsWGPAtPI32X7GmBsHuy3q75aNKEpb\r\nG+XqIlcT2obk15gEOXS0ZG8dMEN1k9q9Eg8=\r\n=ntsf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.13-beta_1669626631920_0.42707492596634267"},"_hasShrinkwrap":false},"0.0.13-beta.0":{"name":"kana-aggregator-sdk","version":"0.0.13-beta.0","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"readme":"# Kanalabs aggregator sdk\n\n<!-- ## Aptos -->\n\n## Description\n\n- SDK to interact with all Amm platform available on Aptos and Solana Blockchain\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n \n### Testnet TokenList\n\n```\n  //only for testnet\n  import { getTokenByChainID } from 'kana-aggregator-sdk'\n  //chainID 1 for solana and 2 for Aptos\n  let chainId = 2\n  let networkId = 2\n  const devTokens = getTokenByChainID(chainId,networkId);  //networkId is 1 for mainnet tokens and 2 for testnet\n```\n\n### Aptos Aggregator\n\n#### Using SDk\n\n```\n    import { getRoutesForSwap, getSwapIx} from 'kana-aggregator-sdk'\n    import * as aptos from 'aptos';\n    const NODE_URL = \"https://fullnode.testnet.aptoslabs.com\"; //RPC URL\n\n    let client = new aptos.AptosClient(NODE_URL);\n\n    const chainId = \"aptos\";\n    const networkId = 2 // 1 for mainnet\n    const inputCoin = \"0x1::aptos_coin::AptosCoin\";\n    const outputCoin = \"0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT\";\n    inputAmount = 100000000;\n    const slippage = 1; // Percentage\n\n\n    async function swap(){\n        // Get best routes for the given pair\n        let routeData = await getRoutesForSwap(\n            chainId,\n            inputCoin,\n            outputCoin,\n            inputAmount,\n            slippage,\n            //Fee account has to be initialized before collecting fee\n            \"0xf0dc067a835098c9232a0f3f884c801099c75e1100944974729fa131f066d11e\" . //fee account to collect integrator fee \n        );\n\n        let optimalRoute = routeData.routes[0]\n        // Get The transaction payload for transaction\n        const txnPayload = await getSwapIx(\n            chainId,\n            optimalRoute\n        )\n        const txnRequest = await client.generateTransaction(\n            account.address(),\n            txnPayload,\n            {\n                max_gas_amount: \"20000\",\n                gas_unit_price: \"100\",\n                expiration_timestamp_secs: `${new Date().getTime() / 1000 + 60}`\n            }\n        );\n        <!-- const signedTxn = await client.signTransaction(account, txnRequest);\n        const res = await client.submitTransaction(signedTxn);\n        await client.waitForTransactionWithResult(res.hash);\n        console.log(res.hash); -->\n    }\n\n    swap()\n```\n\n### Using API's\n\n\n```\nlet swapQuote = 'https://ag.kanalabs.io/stage-devquote/swapQuote'\nlet swapIx = 'https://ag.kanalabs.io/stage-devix/swapInstruction'\n\n//For example we have used AXIOS and JS you can use your preferred package or language\n\n const response = await axios.get(swapQuote, {\n      params: {\n        chainId: \"aptos\",\n        networkId: 1, // 2 for testnet\n        inputCoin: inputCoin,\n        outputCoin: outputCoin,\n        inputAmount: inputAmount,\n        slippage: slippage ? slippage : null,\n        directRoutes: directRoutes, //optional currently not suported \n      },\n  })\n\nlet swaproutes = response.data\n\nconst txnPayload = await axios.post(swapIx, {\n    networkId: 1, 2 for testnet\n    chainId: \"aptos\",\n    swapRoute: swaproutes.routes[0] ,\n})\n const txnRequest = await client.generateTransaction(\n      account.address(),\n      txnPayload,\n            {\n                max_gas_amount: \"20000\",\n                gas_unit_price: \"100\",\n                expiration_timestamp_secs: `${new Date().getTime() / 1000 + 60}`\n            }\n        );\n        <!-- const signedTxn = await client.signTransaction(account, txnRequest);\n        const res = await client.submitTransaction(signedTxn);\n        await client.waitForTransactionWithResult(res.hash);\n        console.log(res.hash); -->\n```\n\n### Outputs\n\n#### Get Quote\n\n```\nroutes [\n  {\n    RouteA: {\n      amm: 'Pontem',\n      coinX: '0x1::aptos_coin::AptosCoin',\n      coinY: '0x808b4ffe04011cd20327a910518b4bff661f73fa907e9fc41ad690f84fa6f83e::asset::WETH',\n      isXtoY: false,\n      curve: '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n      curveType: 'Uncorrelated',\n      inputAmount: 100000000,\n      outputAmount: '2575'\n    },\n    RouteB: {\n      amm: 'Pontem',\n      coinX: '0x808b4ffe04011cd20327a910518b4bff661f73fa907e9fc41ad690f84fa6f83e::asset::WETH',\n      coinY: '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT',\n      isXtoY: false,\n      curve: '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n      curveType: 'Uncorrelated',\n      inputAmount: '2575',\n      outputAmount: '876648',\n      outAmountWithSlippage: 867882\n    },\n    outAmountWithSlippage: 867882\n  },\n  {\n    amm: 'Pontem',\n    coinX: '0x1::aptos_coin::AptosCoin',\n    coinY: '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT',\n    isXtoY: false,\n    curve: '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n    curveType: 'Uncorrelated',\n    inputAmount: 100000000,\n    outputAmount: '876201',\n    outAmountWithSlippage: 867439\n  },\n]\n```\n\n\n#### Swap Instruction\n\n```\n{\n  type: 'entry_function_payload',\n  function: '0x2fd573969cf2d5f0bf8bc9ec245dec6d031f6e00e50f32785913135c318a2dcd::aggregatorv1::intermediate_route',\n  type_arguments: [\n    '0x1::aptos_coin::AptosCoin',\n    '0x808b4ffe04011cd20327a910518b4bff661f73fa907e9fc41ad690f84fa6f83e::asset::WETH',\n    '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT',\n    '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated',\n    '0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12::curves::Uncorrelated'\n  ],\n  arguments: [ '1', '1', 'false', '1', '1', 'false', '100000000', '867882' ]\n}\n```\n","readmeFilename":"README.md","gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.13-beta.0","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-5K6FcGCkymFxBc1k1oLlHprwSouKiaNDERkkvganshxdR/Gu2eKHN+GS6lP8bQgBWROWcAjxtoN3Ne1s5JvIyA==","shasum":"988209f6f6e3b91660af14b7732ecc81a5f8c66f","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.13-beta.0.tgz","fileCount":32,"unpackedSize":86047,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHFJ2+dFfCA6SUt/oozqKeVRmBiH9IKYBlmxJifpjZ3zAiEArz2eTmaNRpgF4joRV4p12dRPoTxGbE3EjfpnOuRmAzs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhIFhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqLhAAlvIwbGdzAdfAwtGWCZP9j1hhKq0fnwr98u/hWXDTfSU/jstG\r\nO4DoU8wxgA1CcySUj/jNnifGmh9jKHofKSOK9mcsugBUrnSOaPjguOKkIDcb\r\nWt4gCb/8kQtsZfy/i74UWdjOi0UIBwY/9hGR0yfc/zIE71TScRlDvaA4o2WU\r\nWFNBB2C5RQBgj37jur71pZvqGTV2HigbqI7aRpRufPLucmezttbRNZQ57cBn\r\npdeJ7U7Sbm3JldB5Rt1KeM948I61xmjiEgvWSI1ADAPirIs7COnSlpPIQ06T\r\n91/NzfklG5D4DYS7RgigoeiUvajVxEssJbluNNcyuGI3rpLBP7bP9ucdtZNr\r\nD9a2630uYPkd+NrYYAoYuAyN5XJ75Z+kziGShMTJgf5Gs7fEczdKX5vx3PgI\r\nvhhA6anideYtt+r6c7uYPMVux2ZvVxgHGdBFCElufsnqPDhQwatO7MB9Kp9d\r\nQYjPIoUPZ8I4RWJrNuKkU+1HtREYnwJSchvNbzCk4mgWSKMCCuyi8sAA5pMV\r\ngWI0D+kIGKWXOTW3kbAkXL+v+jDxayv7zbuprSf2G9jwhlQ09OoeHwOd2jh2\r\nxyavTJMMxaSJQyDrfPPiRiPDlXmYOEdtKbLhQxmBcHTP1lqTHTgSBJWEe4DM\r\nCZ7y8yilCeXAhNWtXHU8F3WTGYAy14KmqNc=\r\n=Yash\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.13-beta.0_1669628257564_0.16789721588998274"},"_hasShrinkwrap":false},"0.0.14":{"name":"kana-aggregator-sdk","version":"0.0.14","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-94+LQvMZ3+JrAGzpVQ0Hpw1Rm18+M3qN4uJukdeQQaZHDuH+lTFfxdFg1M2ZnwupCm3oK4O1KEXgdPRKNNBnnQ==","shasum":"63277b63ef4858240e4cfac8cd17b8825f20bcbe","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14.tgz","fileCount":32,"unpackedSize":86040,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/T+Qjwc19g9DucZ8xhX17gtogtiCjrYqJfCShyk28YgIhAMs479qHpsdXL8xuy5ULZmLe16aXs4fNSKMnP6p3en9c"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhIIrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrz6A/8Cj7uBg/WNd5XBRwcjGbwX3hdsOyywDV7xd3niDRp0vEE2pjY\r\nADwLAfAuskc8ba9LSovY4dm4ajnqZCCD+AaP+AnUSUXOzMaFgZ5FeN/nS39B\r\nz0cSioXhuGjhnhkbqaKcrnan8xOk9VyR7qPd7lFzlvPvm4a5+mOjEiZCqpva\r\nFm+h+xcJf8DzhjzQawQZqFCci2W68i/zRsg9yhqElVNSu86Tir0PfKnX8Ia5\r\nNn3m8Su+R9z/Tz27z2QS/UQzrDJ+85Jb29gHgNEnldb/esSy3wFIkiFb7XY1\r\n6pdHQOlcTYxICziNo90OkbJERrF0NRzgESgyU7+iRhd6jqJ7AQW7i+eMKEAd\r\n9B1/1UWqKbXpt8B7+Wesg984v0XBBzIfYK7l0e/xjqiXyYZf87c6StD6j8Ja\r\ny68XuPBnbuBfJtscb0dpxKjxaVLMbWlDrKBLODG8ZtT0psQUQ7Yd75hqpOCp\r\nquUuUjs8CVKTy6ntkjJ8RQdhFydq24Amb58os2ZDLMzsnPZRgwdixZCvwdKG\r\nmK2uucs3c5yCl+IPDtRT4g/6WNOWkRefoBwiGveIXG1mhBrnR5fH3L7zzQk0\r\nxDK8IRKnXMQnx/TB0ZH4Jge4sNEnrArbRs0/B57PVXTQ3UJWzKsVobtoWw63\r\npFux3ePqkOQZEs8CXTYytCtpVqqQ9WOj2WM=\r\n=e/hj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14_1669628459725_0.471872159553683"},"_hasShrinkwrap":false},"0.0.14-dev.1":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.1","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.1","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-z0NCXC9kAi1QxjE+uVBGlsQpL648e0q5Qw3VmaP4oq1sVXSmKHfRUSHL7PoKQBrj0+a2pMuReqBWFSyCwwsQGg==","shasum":"416b2622d04f3f390ab2eaae40ba65d6102e57ed","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.1.tgz","fileCount":32,"unpackedSize":86372,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHh1tWIJJNOah/K0lUTAM7026cOPi62jmDcW4bD9CWVVAiAdpEzLr8qaD/8VEBM8Ku4ECHbXzZgerZ4kdgSzbXpx4w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhgwxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQ2A//SQeJvIiLEM4br2O4A7ufYw1Fxe6fb/JmpoYe5VcbBY6+Tu7M\r\noQbWctFAmKcywby4hLFGfF+gA0EULzivE4y+3Jmf0ITMfmdpcqTjUN/Mh4Ip\r\nCXIevUkZl0NEsdqMhhoaF1GGqvBfCeKJJyCUP918gcPzqCNFDiofKd8nqREy\r\n0Lb7C6NkPvhAn/GeC+iBnLgtPX/IIQ4s/zLr3tgDeLC+INYsop6D0kL/YW5N\r\nH21u87HhElzbvgI6IZqd079rnhEqw5mZhtSd/gtpQBPFv9sJOiWKe7nkPxzt\r\nI7TH8WKOCavVtvtigQzZsr2qR0gkwU8XbiGQYEAn80+jchfrZLxQCdHPimvU\r\nX/ST3UWAHoCwAbIJMNHyTj4RkQl0nNkEu8SY+w9ggZ5KL5XGXguUOrTnT1vY\r\n20H3xgwp5uy2XOEdGsKbgpA5lQUARn9UVcejIJAhW5Z5E0RiRyNpMjxjmEyy\r\nbNJLWikuVaAlm5/VnXIoH/XmweM2pjw+7xqOK8Ne/ytNakR32uhzJj+Ck1uC\r\nR+M2ZHf+JCtpCnF4Ftbc8VDaodkhxoZIy+5O33SYUnegxb+Tx4zo0Thu+Gv+\r\nPkaX0qaettMfWrcCjLUTYDC1N0qB99TLOaTYy1IiPCtIyrYTncAsC3yCGt3f\r\no2vSNWKs3Xv1dhBFh9OJ4XzTQmHeVx+InQM=\r\n=bx12\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.1_1669729329785_0.832982808116957"},"_hasShrinkwrap":false},"0.0.14-dev.2":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.2","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.2","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-eeFY02lLARPROMf8yYy1PQgSq0eh1/V4J+8kF6byv8O6l3gkFWMAs47XEGG2qjYI0gxIoV0B3VklxYcT65h97Q==","shasum":"07b8d815d001772aa8b02ef9194055c516cf561a","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.2.tgz","fileCount":32,"unpackedSize":87003,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWYYST+z8eQ/MlmNQCibHmDMVCuqlin5kz4lFvSSDuFwIhAJkK0aPZa4ZF8QJ41EXj/HHDAoxoC2+EQnKoGI1v9sTu"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjh2rhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHJQ/5AT8HC8Zel8MfnDTLvOu46ogPyGBxIrmu+5HhBrAiLt0W9kmM\r\njtGRvhXNHmN+IxoOsOllLBkI/5P3a/70r8MC2If2pXCZdgJwIBuA6N1iq0mX\r\no5xv+ZMcMi4WTYf6Wcw1w6Kdzsg8nJ4ecKrnWp7kQ4TS+Lzkuf0B0Kd+jXjj\r\nXyU8mShefZMvtDiasi/V0CTB6bA+BzGxg2kWfMk9Ws/bNH1AvOUMrbuitTxT\r\nXht0F5Tf1FS/DS9g2b36WgUvOj8Jp8x/ysD3dS38BAiUhJYLMsjUfAAmp/up\r\nuzoxzNWG+bqc6u+ewA/K32OR25cia/+dQirVPCzu7JU+cThf24uvODZ+z5U4\r\nk3QSzYgXcnn2L5aVFDhLpJ9VVh6Q69EL3NRkcFdzQY6Phw5VUHO+VyvdbKk0\r\nIiO0DBn4MgAsMh/cT/tTUBa+Xt6Ug+XdDHWaJ/2mTCfEbTETFaU1Sq9sEWFF\r\nvupaagl/vLl4ahXaXQ7Z7481QN3VnHC27Qz6rddDomRlQDeIg4QjhbNaaeK0\r\nIQwbRpD215824Wu7rlxgwiqKoSZF7ah7I29bV5jidksXBJW79ZeUoE1jKzkc\r\ntSBlz84I/vboRIeFyqyQwqnzzJEI+GypJUvDC//q++qXP1TrRhAaSUkTt68V\r\nLUhfWC3zw7hI8sQEhh21/tqxb/UnbTnJqK0=\r\n=icvR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.2_1669819104929_0.11944213960980621"},"_hasShrinkwrap":false},"0.0.14-dev.3":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.3","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.3","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-qU7HEPyEcpDOBNOKT5d16mAk6fZ4eComqnGahPfiGrnSmY3u59r2zEPwotD5A/v8cnx0wNrKg2aO1DOSLKh19Q==","shasum":"d764cf214e30cb4b73b85910293db8b145c50ba9","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.3.tgz","fileCount":32,"unpackedSize":87309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw2ek3x8KjEnfVQbD+bSbUtzT5/09+rOcwF6ZSB10bUwIhAOq8+ZZ+teV17XjY0UPExDti1vlv54TOAioOFiBUx7cq"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjh241ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmokag/9Gfkz2HwVvm7/30hv6BLYxb5AQJcaxVl78g7yWJtkkGF8D0mK\r\nuj9cEjOPP0gAte582xPd12J7E7Masq/D3zBQF+iap35WXE0zxLdG7K5sVLSa\r\nEuv47ScoM8/tSxlM2GG+KXgqyqCQvnEwfRW9U+oobkAOFsjr9P3Td/e7lUIh\r\nrk+jxm6PUXEMVQaA4pcL+2So0vul3W9Mat2G62R5rqGZNEJA7uwy+KXhIZET\r\nnUe0QNLtamVbRHyZ9xibH9XPpsZghn8dAh+VI/+VmN/jrs5JSIHrMpA8WezI\r\nsCV1wYM8hkLBM8DNvvYRIGfABU1psTRynDo6eK3qczTng0zJoWTi5xh7AkSc\r\nVm6pi/IkZ1zjIP6BRFSVoatx+OMSnFZ9Ilo5xHJGjzJdHq84oMmO0l5SMmQr\r\n4888HJI9ACeQKB0JOC/SYD8qlrapMqGRR30DM6Y3Lc/EE50Gb/r5MJ9fgHjV\r\ndFRyFnRU2A0RmRPiNsdLQHsZhlOT91C9FUAXNLyBJLdQlrlm46AdKi9dFZ/O\r\nOaus6mx+oFZai3crZNepVj4CKfUiCSOPIOhTGvC4ZtOPSvXSmvjQqZd/oimy\r\nNRtMr78GT8vV/JdRd66ZsvSEi+AXMiWsI2QvgvvF34DK3Q0Sy8zuqTtlT/xd\r\nCzxowX5/mV8rV+ZWn9wVpUnYko84o8wDpmE=\r\n=BOnA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.3_1669819956792_0.06757224709127807"},"_hasShrinkwrap":false},"0.0.14-dev.4":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.4","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-jQ2lomy8sMC0tculnBvpA0Q6qaHPLM6UORwen/5w3goCL2g3cqM4m0CSwS45pBRI6H6In22WgiUvvMQ48elT2A==","shasum":"0ad817bf6ee2ca0882f4d4f83a567027e0ef2bbf","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.tgz","fileCount":32,"unpackedSize":87313,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKHCHiJBtYyeUTII1EipA3BugbRmI6Xe+KLsET1gC5GAIhALZnQ6HYMRWfJA7SH0A823ZuZR8UgwpIL19694/mjvJK"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjqWHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmriOA/7BrTXS+2SxyspspQhprtQvLRRe+tjiN6/GozWpf73QAy6wU+u\r\n4YUnEY7EpR/N+X9EcCvezPpetTeop0G+mNzIcy3+/2s5Atyl8hm6ywfCBUcl\r\nCqEXiqSHT9qv8KXnVpOc49bbBQlW0F1n5EiVpE3pQmqv0CGBW4sU922ZwyMW\r\nRjW3eeGSrtkLIvGoRvOdzMPR5Lv6jWBA1/pKnrRxYhUPuu7eJpD0O/k4EJD2\r\nfpcBC37CWu85nR/YN4vY6IlhXZ5mQKL2yhgYLR9LgF79gnnEj1SRsiopHZtp\r\nedMo6SYTjTQCzzlrrw+sr1vN4o3ZSkqWPX85ulD2xavjVMVZWvcPnaD6/lQ+\r\nIxBJwtt2EHEGXwIw+XiXSCBKex5S29PscJsZ23L+jjqt5SM/0OILZao8FLwN\r\nJzioUOZPP2sDbdjzbVf2eo2TW+BFrfgr/wIQlWdkF7vysTSYfNzWXK/GoIhB\r\n6r4yLIhnn305leZCMHN0Ko+TIjgqyoM4FG71PIwKMPw/Gx5Rf3LP+tJR95q2\r\nmPGE4pcAlKrtCPPZjQsyEwY+d5B8SpVsXQUI6yP6VjVtHgIfNQjSXp1ewU/H\r\nSl3X+2j8kBfym5ijcpmXwVzbahpViPSVgb4UEc2dYqhIEUsqLLyR9zbZk1gy\r\nPPTc/rqNRlxkb423pCFaB4TML6Tp10bx7rI=\r\n=PHAJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4_1670292871400_0.34390063036155527"},"_hasShrinkwrap":false},"0.0.14-dev.4.1":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.1","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.4.1","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-xitXR0tTCBR4QJEJLplP3Qtcbx0p5NsUfJzotTBVqnoA+t/9RmT8m0dLq1qOi0+d1V5yOeI2vEZeNrCC4MDwgA==","shasum":"778c0e3d7b372763770ccf42fefdd8f66634236a","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.1.tgz","fileCount":32,"unpackedSize":88974,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAFm54RovbqoXYpdUMWjNLIlkXLnLhusH0TWa1MRAdL+AiAnheP+DFDMR8LMG0W96ZfGH0Mc1XBcZ/P/vuzzCoTE8Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjs2NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0vQ/+LuDP17cDAu7+aGnMirjBre1yTmhvbR02EEV/hFCFmkw4+D8i\r\nLbnQe/JNtHE+yw44KYMYJsWiQFxyVjW4+FRZ1t+z45c2gSmTiZg+rodEbDxP\r\nym63KGyarFkPZ7mv1GKEBjCfKmwU3F1ZIlFn5JavMqGZbq+ED1YJKd31CO0R\r\nEI3Ka9cU+z7/HVkfySfZOdSnPqsdgQxGpNxeQK2+5/EO24kO2NmFfGNR3jN+\r\ncxql5Dcwgknx6uZgibsra7XeBpLmriaqbT2S7fwvQ8O9hjyVnLftrM8i3qEP\r\nT7fDK6lL8fitNHYZtehPuJ9jbB+lsApZhMyXpzogasTqKJaKCjX/YXaVTdTs\r\nTj0PJhGzYh7v00O3AKnh4NiqIs/Z14NlVG+bo7qavDSUaWC3gxG2kSLJNVWa\r\nPgHuEUM2zGpWmXtCZqFbeuSIzUl0THQayW9J5TyxDcIRx25/XsBUA24fZ9yP\r\nhVxfKwswjUV+YX/danP8e6u3xy0aOjA3Zxok3FGEZbOn6VaKDZCek21Sqwsn\r\nOBULNlhGYqtt+Y6XOiA01YBgJ3xrMzU5kSXxvDSOvefaz8wV6Ovtd7CQF/sE\r\nJRwZ0oUR7mHwtoWJtYw3d/X+yk5xHbusqxAZ6g4RTzpaF0Z5D0TQcazQsA6E\r\nLLsBqh/Iv+K6lPtAeCtN2ub86kz7CBLkFX8=\r\n=dbwd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.1_1670303117007_0.2986559463018481"},"_hasShrinkwrap":false},"0.0.14-dev.4.2":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.2","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.4.2","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-xzmBEkXZo1XqmFbyjGv32WYsv/dnGnJ+KccKHVO3+HhW/7H/nW0z4rZCFq844B9D+UOFXYiOC/L6JAdOxmsxHw==","shasum":"4051126f5c89c9640883e01143716ff009a94a91","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.2.tgz","fileCount":32,"unpackedSize":89204,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGT263AKB2Swo4Ckr0TWZ0enShG+6vhp9THAWMhR3Pu0AiEAgbMl7b8W5xksODJVuwoWoxMwmxbz6xhLW8p0iuE2Txc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjs8BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCVw/9Egx4Jh8Yjzjd3xbeKcTAm++WcrC/J277d42RpE80+MuoOxxI\r\n2THAGwgWQhNfF7vctRLgatgq9CDArcQGyf07qUYbjHNpx2QX7jIcADWC50et\r\nV06WWdluLIk7K7vcSqVhSknHxU7Fkbn9GJGiHAJGxYpbCj96JrqRSi2j7rx3\r\nXnyiNl9MdhBH5RBXrQc/nCiMekJfKSMglBeC5kw1bR/dDLkr9ZVpZph9cQ6V\r\nfR/Gb6HRSSpAmoe8ayFdwQb7EWIqOrngmjMM55lPS8uv2Ul/o1OLZ56oIoJR\r\n43oQOszHiBQfNbixBKlxIhl0j5MI2xevvmjeb82GWCD8iS0+QrkcQb2n+n+D\r\n/hOlMGsB0ywRWcAKeL2TY4KizHFg5Z/Sianb3bHoeVuYt3G0R/b8Y8djYZ0L\r\n1eHg2ZpmIzovXe9sDTl0p1spptIidjWDeGJ3vJiLXNa0r6WL8Vwf4YC56tze\r\neQZP1UlSUEf2Sw9aVdKRA2MuySWMi9rv+ZR344jOueFVjkzR1HCb1GBhyDRy\r\niH3URnVsuzwd30Ci26o7fw99h+JgeelvbrOIQHY8HgfymU3a9a2YDMbZ/wss\r\nI0Hk2U72Fa9zNmkpmw5eoiGOx8Cm4F4L68uJa2/cOgu4TrZDqJggxfWn/2Kp\r\nq9oEIHC7OkdxO1O/s7FZFbpqHZ9e9XfzKto=\r\n=YlLq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.2_1670303489009_0.9096386570098964"},"_hasShrinkwrap":false},"0.0.14-dev.4.3":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.3","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.4.3","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-9V0A+qkLaUBusbhIGeI67Cl/5fg+/nSzeEkSAObG9HriJPyv+14JUGysvUWAYTnuqFt0p8bLy9+AqP+oQGxHSA==","shasum":"a3cb554d45aa9c39fd342865a932be7f59220cc8","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.3.tgz","fileCount":32,"unpackedSize":89207,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAplOF6K5qW1BTkSfxAKFkAFA+G+Jt/rdR2VsZs0E2fzAiEA4i5qXGQ5wIMXFcHTtl5Cg7C8y/Urj+uaZK910HVZVGg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjtitACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmriAQ//foEwOD0T6IHCT+zsF+O9osYOmeYdyg0mZnykYSMzqcFdp7A+\r\nB6qWPPZlGMbpq1hKefn7VojvHjRZt71TRcnCWWF36KC5iHVcnumKo9TbCuPc\r\nTwssWDtEg8mh66zRqLY2PGK7/2am299XRaHyxIKTCbr0rjZOm+VS0x6V0pcs\r\n+NkoPZgQinMek+DL5ddfxLdIOnSSyaMqUA5jIheP/jUbBtv6XtdsUpUuXIEN\r\nnV9PrR4wxnifD+OirH335hWTFZeuojY9LHH33zXmGA9k3eCrY/tiVLAruTpm\r\nAuBBv98LPSBXpqWLdTf3CUJC4jjCFBW56iEWqe8seVl8ZYAKAtFg/NPTtR/2\r\nBdVdDnav4TMiZiSMGmjoRQNK7yjnrnOfJy86UyaEY3ICJZpX20Ksv8Vn6KPS\r\nMPV6M9ZJ5wJn/n5Mg/45PGiNeEDwdhmdis7FfLA3U5h3/S72CJ1jy8Q9UD0h\r\nkMxKUiALKoz82bOeZ4yD6LJmT8tIiC83yjyemVamoTKNXQk3v9UVnv0AYjEG\r\nMvtMv3DhWmHgtzwW7a07kW9bhaOf0su7R6re08/J+2ELTP50eICCue6tTvrP\r\nnQGVNyVXAt0hMXJwJmlWzIoRrBKry+W5z576Wafi5FnfdO+074aSejeX60am\r\neJFQGXtiWXw1cCJcznT5ULCrFwMEr3ZpoSs=\r\n=gm/3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.3_1670305964929_0.737647237882199"},"_hasShrinkwrap":false},"0.0.14-dev.4.4":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.4","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.4.4","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-WkRGCsuolYS+zFCA14AhVElZEVHtS9enirmHuakaFqEPD9l34AKe1mOhbTEj6TjtNlNfUegSzW0Ni0TgTYpdHA==","shasum":"407dc017e6d0f10ecdecfa78f6cf82f71eb8c2c8","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.4.tgz","fileCount":32,"unpackedSize":89746,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+OfSG5DT0MndiHAZdgFXWU/ktwHuKdrUaEoPGepB4/AiA4w+29oNXVz/GukxKaoWAmgn/vLmApdzTW3Te7Y7ZUTQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmB7XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpu1xAAkQZ0kCvpUFP/wo3zGSjs1U1fCHUvFYAkKZf9m3g01NfMJlzd\r\nM7w/OWWJXSukYfm5cc6thpM1YPCzQrNSLgx2FKVsIy4xdDmDq8dAK8FNYbAy\r\n5XQndtuimHUSDn5aprVVHRjDw/WXIYSbukIrHP7+n6JGulZ0tYUy1tigvLx6\r\nmgYQGREkefsUr+jUTSU6DNMLSEutT3totZvORZ8P95UcVDxzg2kWgD0ea3qe\r\nwYpJD+OBSTbKPycVEMDi6qvFWTbYJZEkIuIbx4aB2zlgVNOXC+k1s7oiHtdE\r\nUKpVP9HiyFeE8kyUIfwUOC86uPHc+TH6NUvU5XEA5sGxwA0tGSYm1BDD1a/J\r\naQ5v7fQjtfLV3ShtUfeewWRakyvV7peJfmfnBaiRb9iHD/iTeXcdLBxUQTRu\r\nTre7qCf0BM4NrR0F4sHphX055a2UWDASh7GZ1WrzZawOntmAS182YPagALiw\r\nIb27IHwxRpG87FTf/xM2RNiFmtKpndGA2N7cMJNcQfI3kODJm6mDQxMNpJRD\r\nTNCl5qsDsEcriAUoWI6ul5poX55PfODADvqz8AMQa4YBoZMfpqpCfZcPDRDx\r\nbQY5hCEZqJV6JtQ/MdtvpFt3lvpyMjL7z2FVAJcJa3Y2w7w3qCBS8/tlPiB+\r\nbloOlEa1zRGmz0zIOaNhGTlOUw4nqLAB+dk=\r\n=rLg4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.4_1670913751527_0.5447399232538006"},"_hasShrinkwrap":false},"0.0.14-dev.4.5":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.5","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"01230ef84c3059bbd1f6a74742e4e430114f9643","_id":"kana-aggregator-sdk@0.0.14-dev.4.5","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-qKYFYbjX94rTb1sk8fY/nes5ul/bDUeERPIPYr/0BbGUj2lU7RsaEYciqOJBRsYgboOKPYLbOThEWgT9QDSYWA==","shasum":"1c2e5b8f59c7178a5e69ab8fb5e752da2ecebd0d","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.5.tgz","fileCount":32,"unpackedSize":88601,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCckWX/ea5+L71qhsEb1aLuIRJjHHb3MNcjd3zFMjQwowIgTtnmrKrdbT2JaRhZGQPxHVOut35rpKM9c63HEgGqCzU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmI0zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7eQ//bY9lhkWyrVbFCzhlIgAloU4wIIxRO/7hBP9pAmv+Qf8gNwG/\r\nF5K7DrgtI4jpeIxJzVV+VQ4iszMduzZPhzHqIej5wdCf+z9DIy7tIModaqfl\r\n/GAxAX+C7LWDTPifF9OzpucHSzsE4+iq7AwRLolVWPyUVB/14GelmyR7NEEJ\r\nMaTc/Y3E6YKHGiCw3KUcOMY6kaRJ/48RFOT10tBz4hn8NK8skM9sH47QrlBA\r\n1F6+1wbrJeWqRPW8XwrBaqiTeNUmdEUka2KG2cr3sBlTDPWblMwo7M9HKGRi\r\n9hgdwzRnOb1wC0X2tXSVHJEhodbItT8xBhkSput/qlgvsLMcE91sA0LrwI+g\r\nOaJbrvXoSxPyncM1llZjN6OdjcJ8zOD+cB4uIQLRXdwJXMZ9/4wAFvjWnhaz\r\nHdnPVqVo8aLFg+zqeFsBM7/LdGXiyLsJCgUPF7iAlNiaNR6HaS6aLHL1cmTo\r\nyIk8Ewbu7a0PhrJnJRTFStajLNkMoJNTLOrO8ikuzsUJ+pkPy+44anWjluns\r\npLGq8jmOBHYi5MUrAL1f4YVq35JvNj7MY9MY12i02dZfC+cB7wYMIzs2i2zN\r\nNJ5dj5xQDhl7kK2Jl6divS+KLAA5xg0jLQYA8YTqE/jNksBEnm/xoAS/fNUq\r\n2FeHGrvfbE0/DrmFZXE6pU3w/JzyGqJAN+A=\r\n=M0N2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.5_1670942003246_0.44857964857916643"},"_hasShrinkwrap":false},"0.0.14-dev.4.6":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.6","description":"SDK to swap tokens on SOLANA and APTOS across multiple AMM's with best quotes","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","crosstest":"ts-node test/crosschain.ts","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' "},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"2d8b4098882ebb76df02c74d0c291c73c3069bfe","_id":"kana-aggregator-sdk@0.0.14-dev.4.6","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-HwjUh6V56SjxxodLSmfynVEQdcQseTMDfWLgogX3Cgiyl+P6VihLzf2sJzBuqsrgJbj4Bf7EmWYDmZjySE2xFA==","shasum":"030788d3428b14820b27864ff9424166856697f8","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.6.tgz","fileCount":44,"unpackedSize":108003,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHge5kd1/w7ucASbxpslu20Ob/4M+OBZATwuWtdvuRbAiBgeI37aEuHwQtAq/a9lYzMD3sNyvZX5+T2vOx19YqNmg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjn/P1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6mRAAiNaRFif4Yf7a8DPGHCaQ1+Ok5z7FMhBSnTBzSqbJdCsxrTKH\r\n+G5UpFlUQ2h1l1MzI4qL6d0txpwsFUXNsow4RqkK9TXyBOW6hHuiM+9mBZrW\r\nj6FYKCiLTOQjy6prdM4v00FZQc4u56sdYPVRT0ESwkz6emZ0BGAeemecB6ls\r\nEbfKv+VZJo8ZT6SFUpDuZU3poA1agmwdL7ub1761897Z8yn3a9IOlHcEtQ1E\r\n/0X91K3mYeG9MOd0mStsIpuWKiYSZTnIlOw/nGPOHkDbPCY4+ddv5vF1r0M5\r\nAYWxV77LkJPp03Mo9tuvuhQj5MtSUXZPEMGXMU41z56aWBaGyT/ISKAVXKeq\r\n0Mhx307LC5AMCvUI8gjFQjcJAPpyJascP6mw51Xt+4Nz9p2Fct3tPVIhTeV/\r\nF/7iP5Go9lBOD30Vqz/AJ6Uodd50xhrslcIZkohcYDfe4NBqvuS3eppnCRl/\r\nUtx1W4b0jSDQOYcVqL0BcQQAeiXvTz63YSF4XpbFE4l+R8/Kt0KdvDC1Kz5l\r\na/ZqFeuCsFyeHSIfm6dypIIpepZVT5S8KaUUjvm23N3v2509YIMa0b5bhDKY\r\nS6NSd4b91Ufviw2TGXcN+KocU6qsP4HgmvMADOTXsT7RW3Qv/jA6XhBvBfp5\r\ndiQW4cfxnOsuFU7zslS7Zit7MoSj2CcGCxg=\r\n=CVVB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.6_1671427061217_0.34649581799081663"},"_hasShrinkwrap":false},"0.0.14-dev.4.7":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.7","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","solana":"ts-node example/solanaSwap/api/index.ts","aptos":"ts-node example/aptosSwap/api/index.ts","soltoapt":"ts-node example/crosschain/SolToApt.ts","apttosol":"ts-node example/crosschain/AptToSol.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.6","@project-serum/anchor":"^0.25.0","aptos":"^1.3.17","axios":"^0.27.2","base58":"^2.0.1","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2"},"gitHead":"4fcacd849e92d73ce4430a5e91b1ab6dc0abb6c5","_id":"kana-aggregator-sdk@0.0.14-dev.4.7","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-6xAMQ9X4hkOFlSDluDhlQdX/bX2AWqjhae0uQpxhvceTz2LAUhp1wu1YaatqytxOegWUKEHd4SvckqimcJAgRg==","shasum":"ea8e0e0c67cbcb4ca5e0217842244351decff8a7","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.7.tgz","fileCount":77,"unpackedSize":141128,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrcm3bFVb3XOoUbWLc1TZ9hc4pgzgp43hliHzrfpeoHAiEAh5nyViepdNcrsjJisFJXgjk6nuJQYNGWfqYg2klYlvk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjoH4lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJzw//dipGCU8bO2AMmt2Hw/BVUFuged5nVxvq2vszdDRcMtxuOxA8\r\nrV7o1J2pKJS69j7ilaEjsAnhI4tlcSWEB4qaRhf6gr+ef8p5gtA+RK50anBF\r\nJZINjuPeyKibU3hTQPoViNtRVvVR00FNHQYiRkRxa9QrLsCYZFXiiDz52qa5\r\ncoWyxQSqnzJ3HMwD5fQTJAqracDiglz803B+mkBhdrqzkCiXZeGHIRgmVIWy\r\nNXzFABNg/wU1yLCbchRf3HbDbt8/h11Z0O5+9CHlvB/CIyNZL/BX/8DWflGq\r\nVTkggHjQGOy6rpCMNBlVIoXU4g2LpedsBm35h6zPMYKai3QEI2myjE51DUuQ\r\nCKZNvQbQ9MU1VgRh7bDIs0tX/gImngyXoUcC8A7qgKI8z0Hs77j/FNosK2el\r\nsExwBIyY7Or3grO8omNsKuYVOZKF7I99d3NivvLbxLO0XOvsphmQhcwUu82C\r\nem/OnISJsC48ldyrviaV7mwpYlKp7StWAdknSpc7kYAW94nvCfqRfhE3Rhm/\r\n7A5ewzmnUuY+UAXHnI2N0qFwfSw3D3zpBcgMg1LM/oCdO83V7HZy1A9hThjl\r\nk495SyOD9a/NFaPqCUVlFl0itrUhtIeBbOMjEZff0K+sF6g+i/Uul6+3h3mN\r\n/wRqeHcDW+EMdJdFxIIICyA0PJebzMeSm9I=\r\n=2bix\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.7_1671462437080_0.8103506052474454"},"_hasShrinkwrap":false},"0.0.14-dev.4.8":{"name":"kana-aggregator-sdk","version":"0.0.14-dev.4.8","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","solana":"ts-node example/solanaSwap/api/index.ts","aptos":"ts-node example/aptosSwap/api/index.ts","soltoapt":"ts-node example/crosschain/SolToApt.ts","apttosol":"ts-node example/crosschain/AptToSol.ts","batch":"ts-node example/crosschain/batch.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.6","@project-serum/anchor":"^0.25.0","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"4fcacd849e92d73ce4430a5e91b1ab6dc0abb6c5","_id":"kana-aggregator-sdk@0.0.14-dev.4.8","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-uqYBWXElSZCuG64G3dI9IW/H4DLmBvvU3A4cGJQmK9tr8k5KC8hf4/IgSP0tqbA/DxoFt6RS8dL4SfIdPOfLyw==","shasum":"10fae9bf526172aea13cbabf66415c498cd1f7b3","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.14-dev.4.8.tgz","fileCount":79,"unpackedSize":159711,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIVjp7tjYJp56HfQD2blHsHHhH1M+Er/de1EW2cPI4TgIgNlSUKY3gn2uw/cOie9PviSj1mzqiegJG8KiRa172b2U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjo+c6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9iw/+I2KmxwKF0ImGmg7G3kJGIj7lZEdFCO5CSm4bgECQgGYNhRnx\r\nqcLG7z8PFL1etsXjN9fw1/HaSi29qGRG5SDxI2zDoYKG/6lsORIrMdPGE6kF\r\nFJGRi45UKnWGnu92Sdi3TdnlApYP4o+uyE+3bxemdZS0GbgrtOT5R0w251gT\r\nunyYN3axZoFr0pzA/WgPPatiuzPVbvgPAplrCWwCqBT9Z2x/4CR4qYRVt3o/\r\nUfyN3PnprAGrmz/NV/3ln7DWTAAMASP8TW7peIeKpwKyBlV18XthwmNOIMoP\r\nGQ6XN4XOsmr4pEsLPqkTJzKxChPiGaeOuBcIFp2ZVsdF5ZI3WGgyecZ2s1ZS\r\n0uJm9e7BZoi7TdKxB60rfi//afPmBlAM3SrUPhrOCE75S7taKjenXdXa4Pqn\r\nKb2BbtPtmjM3tDR2KKFnvBMzIxnUeKZMdF1QRILgoE/jiO47b4I9yRWgrInp\r\nQq1YYYIW/Jw5/lk4y+cIohMQcBaFIunMotym0fFEntpPRsFZx8V6Xn7QCPlB\r\nwNTfR6q8XuroyIZ6ABrN2F66ow9Ucc+nUQyX6pxIu2VtbM4pdOh403XYEFcS\r\nX4Td4Xrfcax8mpqAlolMztLreiIKSA0d0xNOEDcmEsGXv4dECH5jzyi4ujZk\r\nZ2uoj2aubydcnlFqD6k1k0tKylsf6kC4R4M=\r\n=TgAI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.14-dev.4.8_1671685946752_0.4602512029976249"},"_hasShrinkwrap":false},"0.0.15":{"name":"kana-aggregator-sdk","version":"0.0.15","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","solana":"ts-node example/solanaSwap/api/index.ts","aptos":"ts-node example/aptosSwap/SDK/index.ts","soltoapt":"ts-node example/crosschain/SolToApt.ts","apttosol":"ts-node example/crosschain/AptToSol.ts","batch":"ts-node example/crosschain/batch.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.6","@project-serum/anchor":"^0.25.0","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","i":"^0.3.7","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"fc16a0e899fbc90371c90d2cd839b83f271266d3","_id":"kana-aggregator-sdk@0.0.15","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-O2J2vl53cRmnG+BYqiwdfhlBf+gRlvNPfXeDedFkmWjlrutiriZF1XVy5X2HJ15Yw78FRr44uFNEiPbMtiK9/w==","shasum":"85022ad0ba146ad9f1c00597d14d205efc656755","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15.tgz","fileCount":79,"unpackedSize":160469,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIQVPbJ1d+1ulcuHl0OumFM+SvKgrz03AdayGcxhCrdAiEAmWYczJ9YLj5v+sPXGxFQq8TAswMpcidN2A9Pxe/2dUs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjqXVvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrPuQ/9HP8WTBj1yu8Bh3ONf+Co0EiD3jA+hgvXAEQ1siiSEPRgbFxI\r\n6AHir0Xc1yfnEZvgxn7kEeGlUl2B2Z8JQwNgaAnljllYsXAYw760YpZtjVwy\r\nkPK7ebxCzeyIFqWyMvkLeYWRW34BK4od0jex2cTMpzMYS3atOm8IXye/MFcY\r\n7SpApepnS4eNCX0eOlThSJHzhecA/Ex5mMWPh9oF3dK/3Tm3mUYoWpYUg9z/\r\nqjPox3UKI5jFUN2x9zi0ZKDnOnapgdDiQEobFVLDp43yhA30WEcQAJc73VyY\r\nfMAlxSQPLUEGLMuAM9xST8kI9dvz7xBL+2jqQxLa5VO4C6qed1E2O0nOmVOC\r\nFAIVKzaSU2hG16a0ORsKXDp9mSodvrIykQiAB3kOLmTTUhFBCtHSWbMDOsrl\r\n5RrnnQ4B83vT9GqE0Vm6cNbPZVd/v2bEm9HjasOQDD+wwR9k/IljqboYMp9Z\r\nfxeWimPVMy8EYbSg2lvYLmT8n9ZpGcMpY70QDFJUTfvc4aLo1+TCxbvXwZX3\r\niVSPz5cdDzQJRYLMSOnG5KCEjuwb8BrxKVwMTezVEZZV+BBe+YIcBhsO46ZB\r\ngQViMzqzOoyRKLMS9j6wSMGfK3btgdxOpXYtT1uhtqMqJzpR0bqHhluWeXiu\r\nHXKooiAAuNJ1TPXEM3LziZTApTtHZUxmOPY=\r\n=C32O\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15_1672050031027_0.8933843525998479"},"_hasShrinkwrap":false},"0.0.15-beta-0":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","solana":"ts-node example/aptosSwap/sdk/index.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.6","@project-serum/anchor":"^0.25.0","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","i":"^0.3.7","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"fc16a0e899fbc90371c90d2cd839b83f271266d3","_id":"kana-aggregator-sdk@0.0.15-beta-0","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-aPf6R7ZjCZxHYHnuEKVElIfdnW1xBCBhZZ/5qql15ylHWxSmySvo+mS4X5VkY1SRQ9vlF1x/4CYOKwG3atYjbQ==","shasum":"770425c9b71b4db9c7debb001067beb5f835e235","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.tgz","fileCount":80,"unpackedSize":170531,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtACoLiYDCAI/PI2NZpjp72tgN1JAie5/ZEfIujaBIlAIhAOI21knPEpV3W8BGM2+5J8JdIxaKuWbmsPUvZsIwq0T4"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtFo+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrawQ//bJJZDfdQhQXNIs9uptEkfD5wPugxC/oCdPpFz5q+XdyPGbAu\r\ngmxmq5JPBZyMZO7BxayT+YvA4n/1iA9QRzFhnzliuwllFl44TxnZ7dYp33y5\r\nguPkBRQjW5JzqQvdhqLFnEcVg+P96x6PJhlmT7raCc3lYpuoQm7WyQ8ynXMd\r\n/g9xnaquHouuTy2SWNASlsNZq3HwJeO7NK7jdDGtAOr1CqyXqST1UxgKzNdN\r\ng+J6liPhpXA0bwvmhAYYKbNLVXl1gaXhBM7t5wXdK2CA3YgaWn1rTTCqovJI\r\nIvaCziEJ8PzUUndlLt+FUwUhtOpIXlEfiOxh3jMfDE31mpGGRvRUINZLRXd1\r\nUSlkJ3+B74LgMvWsbIfDP6wzSGZ994g13yANrRHWeP7nIspaGVfWzS1fai9e\r\nEm8dfA9ZdYbfYcDhGFpG2xzdb9ke1MxZLYoEfFuVibjnJIHwr4bwmvc+Mcom\r\nyPSW9U8Z/dl3tod9RHYmGoDuVsYrDCSCijO+YDFfvpjVP6ObdaNXSkISInzB\r\nM4bzlNwdMdWor/e1EpqNUXhM8mBUhu/n8kfEtI9yYdM+57Kb6tM5c3Axesk0\r\nKuKkOD6XbvoeCPdTCb7fmORmEXSQ4M8HH16IqfyptMy02SKlZTkF8/EcPFF1\r\nDjbHR4rZH6vsDrfzdH0qSv86fiToXo1ImoM=\r\n=rnG6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0_1672763965981_0.17133302651829818"},"_hasShrinkwrap":false},"0.0.15-beta-0.1":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.1","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/crossChain/SolApt.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.8","@project-serum/anchor":"^0.26.0","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","i":"^0.3.7","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"7c4eccc0958b6a51aacf6b577c79a9dcea966c13","_id":"kana-aggregator-sdk@0.0.15-beta-0.1","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-tPweprGmVnbRGo5gm6AzrvEnglzZxm/joAXVSuRNmFLbF79nvF09yjLjA9JQYSQpoYF/Z1L95fGo7PUjKDcWlQ==","shasum":"176aed4b8cdfc2a81dbf3490c3ee31dad523df13","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.1.tgz","fileCount":81,"unpackedSize":179888,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd7A+YoR+OB/0lW1xiPpi4cRtl/b/JwRcl6gXfMFuyqwIgOgg/Q+qNX/ELCZ9N2ngXsghFbzghjbmWSywKgvv51mo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtp2TACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoEUw//fU+5V0894iOAWccNWkjrAyFh0YG2BYTwvZBQ6to2VOMx8nVO\r\nsT9nMhbA7L+rXaTc5LR4msqQ/RQRs5ShvzDgHuLJUTJsF2Ss8dvRGx7zN8PD\r\n5u38RXovmVTbLK1xoSw4iLtJ/OAzV8AoEtEG7vKGkd7eAFK9SEMCVYV20YfD\r\nM3vvUH22ui8anwaZ9CCdc128LFW8Lt1R4qlshtI8vE8wBiARlMmbDJCv7F+Z\r\n1FUvrEGRxkhQE9gpJGoAuDH8JceMw4kjyojmN/Dbv3TeS7Pz2a7hguIVkegX\r\ndbeAt6GLmmSHw+AZSCgmY8KfzTGWLVALNQavpYsJ7Q+/ZNBxZnkT8C4gOFU3\r\na8Kg3p0w7d7BCYHol5gvuycmMAGwaG3ivc0rJsjCaqbGHvu/o3k4NniQ+RCY\r\neAQ8bRL8ExFAConNB3cmxw9rFCgOuflv5YHvYN9uYZVbaJr1GLp1ZlxEb1MZ\r\nvqaFR8Xd0wISr6JGdr5Joh1IWX33d/vaUCRFzywBjecFLDTacn3K6lwRa3W9\r\nRrPPiBVZi/L1VW7xPfFWVRMQsFLldO2t/H7MnMWN4bTZxDIEtYUuTw1xWzwi\r\nFW7UHcqaWXZuTymqJ3GG3Iu9VKH+aEKmcmHpKV1NvhSVBYuLKqeX8ZePXsSO\r\ngGE9q6jTZHmbj23aA7t1RxOmmNrYrzSVOx4=\r\n=X50f\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.1_1672912275211_0.5609534355112851"},"_hasShrinkwrap":false},"0.0.15-beta-0.2":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.2","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/cross-chain/Aptos-Solana"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.8","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"7c4eccc0958b6a51aacf6b577c79a9dcea966c13","_id":"kana-aggregator-sdk@0.0.15-beta-0.2","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-YME9XNsVIMQRYGmped1mpBo70H0fa8QztL6yfZb6alGlo5gulXGjBSEhMuhbDp2PHB8Bz591leWB7tdiMS0Guw==","shasum":"e1d0716c613336180ce6aba2473ed6a1e463ba02","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.2.tgz","fileCount":65,"unpackedSize":157208,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFlaXxehCMtnyw42k/B3sVI2D5mNEBKgTbtSfi06/ynAIhAL7loi+e5svFZj2cAc/eEKv3prCY1ljKvxOKEhZ1Hym8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvEKsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmruHA//aUtMZT5mE4OFXIdMouX+/XPlWC0mZPfNfnU+nbLulH7AFp6d\r\nsoG0eLs3jOTZod+j/5e+sCwX7AKiLG23M/FKutFdrHOj7MPzmsuPHtRrU6nn\r\npSVO/6e+bpwiWieAtRJihRG5QCojSWlB2DW8JR6k1ymwnEqqyd7knj9131Sn\r\n8Sn22XxeEOj3EjooYXyV/9PjyPAopq6oNtcJX3ZTCC53XsWuuhwwCn9D303U\r\nLBPOLbNR5pAQDO8+3WNorBgBdraxxTm8Z8cnXmi9yKdNskxebkPIoGoYqKsw\r\nBgcZD3XF22TzhK3tVr1YS9uEfn3NQAlakweDHqld/S3mNshF8ZJeajKP/hLT\r\nIXR5qEFviMt+znhUGBDDutnVca+v2d4vvp2Pl2Ar/XrZ23xspfewIztbSaTl\r\nM5ck2Z5jZnmXOY+luaZN10AX6PsOiWplZ/tMtMEXFsc9Htv9pS39DBqoDrwG\r\n4CT4R55Z+5quWKCsVgBUkeJWCC99lnnAk7o32/XQveZt3LbuxpV3DwoBVwwy\r\nyPrxqsgQioEgktX0K+vkl4tFE95rtMQvS2oWxZUDVygVCLARQkNoEloomsVM\r\ndSiRliDBxWJCiXjLZXwKr6g8RWN6EQ5kYaYAs6KwMUWr22Z8IUw+QNjd9ozD\r\nfqZRm1WfifzJ7JiZQS+zUB+K6Cn30Pr2cfU=\r\n=WpyR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.2_1673282220704_0.33382060702415384"},"_hasShrinkwrap":false},"0.0.15-beta-0.3":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.3","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Aptos"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.8","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"544d788ffb00947a7614367cb6bb5461f6f6921e","_id":"kana-aggregator-sdk@0.0.15-beta-0.3","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-orbwO5n4nk0BdqHkTiwlWu8hh9jzJ8/1pwhjZnjvrqZw6CcqT7pLh1WAeBh7ZDBqa5JxpXglyWbPpS+hfH+dsQ==","shasum":"209ed69fa170beb1a8fab1247a824686a3dbf47d","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.3.tgz","fileCount":65,"unpackedSize":159455,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIELKjYWHr9CtWfl+5OZAxwmTU1E3hiViCN/82vo7V3jAAiBl78mXzefk4uPiYRLlsmudUtnFbEohND1IpazLjZufQg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvVwRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqIAQ/+IxXGhJ3aqCooZv2UF+pQXpHO7T5GahsNaKxLwVmfectS/x99\r\nC9VmvhxWwOd/rB5xle2nhHNvuIFdEG1lH8ofR8okb4BhhYmTR78ybbfPbMmM\r\nLsAtmKNCKCH+mfk28o/vRlBWVVuAtBqX0OF/okrXCMdcdOYsdFC15PlPsFCw\r\nAikyc/fxfOwRalZ1+2s50l34zAw/uqmN5SASO6xID5CzjJyX3WEA9GtpgxuE\r\nI3t8z4ULLs8Sxwy/Oe+sG2ykIWtbE1Dad6CTXKa7OB8JnfljVc/sAlPn1ITo\r\nukbpkcc8wCQfOG7P+pQcDAGYlZsSYj0+ojDGKNCIHJmcMCn91P7Cc7BlJ5UE\r\nRW9ZwXTVZMXtsSBU81KPQnvMJCq/CjOTJrfdRYfvgdnIik5VhT9cCBiBzB4H\r\nvlfC9Nt5Lty81KOGPyEDhQnS1pOMR1RxGmQI0uUtlBW/oShpKNma8XlNIuVV\r\nWoNJ8XG9T0e22mqD2cRvpvKilzekUxohslWC6jpWHjnUHVjmY5y6UoScpyMA\r\nt53ZqST0CV19VReu1p+zXsZwJhf6QomvAOs+uOJYytMPStLw7OCq9brb7NjK\r\n7i2ZJFiwpCPTGV4Vu2Vbx88wXyD2ldMC5gKOCWhOLSdX7AaNn+XaT2+GOEvf\r\nRQwkiDN7Cwst4TjUDoHi2lXe9rZqm6eJ5UY=\r\n=6ZOp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.3_1673354256774_0.12329256528106813"},"_hasShrinkwrap":false},"0.0.15-beta-0.4":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.4","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Aptos"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.8","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"544d788ffb00947a7614367cb6bb5461f6f6921e","_id":"kana-aggregator-sdk@0.0.15-beta-0.4","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-MVXDEE4KkX4VI1U1kRvvLCOaxkWbkXlOpjGIDrGWJuxWFCfP4bKNnN/BbLsSXq9Ft97FRiEXMMZcKMHdteveyA==","shasum":"355a219c4853b4a105181cbdc445b66aec6e1842","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.4.tgz","fileCount":65,"unpackedSize":161163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwuYrBID3iAEOFhONvDzWHpZxx63bEQUr3fz99VNrAKwIhAJ7frY4nXvRfrcXwuS4aaazBaURgSgGybjXaZx8yERFT"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjv5OhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoY+A//Rw02/8KwMwyEn1Ddmfb5C4JLFMhWQoxrr5kXusTpNe8R3poa\r\n/gpAtb+KF3dlutOp5hHEj/X4iN5wt6vjcdTmRVB70ZbP7/nx1Dva91vS1DgL\r\nRqkpvqGny2Aired7CA7jMRJ+guhd9qR0zgzAWkkC9tNkH/hgm2yZBl6SKpr7\r\nKna7Hmou+VFaYLlGEVOv2KXx5HtF8oBuPmNUB46YJaU76/RlIXmXY3JdN4vZ\r\nov0iewrQY/7mfm2fNAWUrP9gz/a+L/r/AKRgz1e3MFnRExxuEgwXbAFD7NGM\r\nes64cV1WVXPVJra42fC1evSHkeU+VvP4sA+bOX/fqQ/DRM6AjKyGtmI6zb1u\r\nSQbtBVynbb+frtq4vZvt/7mfMX2A3AsvCp2/k5QMUBVVVfsjDcJOJos7ohTD\r\nXH1xFVwy/SuvYVPoJDo5q9tfXegWM/pcjoPeKjqrYbk/mztSm+lvZjoDReG1\r\nVyvnEF4AvYmBk/y72IScZvH13koLVBJTchvxpTX5QbxXG9M7P25yRmk+9p6X\r\nCz8ThSNVPDt0V3LD0GSS+fghLTl1SO+kpu8/V5mFeDUErpKWNrjF9Yk/k5IB\r\nVujcNm/uVyYGyPXebm2MX1Eowl5CmecycEUbjBnnDPZE2sNZBULxnA6to5ie\r\nMxJToocsBuswacxVicoHvfSyHWh1okl4IoA=\r\n=rvbw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.4_1673499553468_0.5727528887146964"},"_hasShrinkwrap":false},"0.0.15-beta-0.5":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.5","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/cross-chain/Redeem.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.8","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"eddc394b064fd2d7c4f25ee2afa2e371fae17b54","_id":"kana-aggregator-sdk@0.0.15-beta-0.5","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-03M19p7PisiDDT5qoDsJuJg1w3keRYNH2fkttKAo1L1Lik+8Xp44dokzfMaPq6LJq4vKPYsZ9jftOrk2twG8Wg==","shasum":"feeb0db45704d0447913c16ccfbb43740bdb825d","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.5.tgz","fileCount":66,"unpackedSize":161143,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDqTdqqw7iJiGodiNL3z90qvni0h6zxnXC4DYuAhDLuAiEAwIYRNESvR3EBHZgmojGPZSSJTvtKBbsxNCRpRLUNy9E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxtAVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrykQ//RRb5M0pfHy6Iun7R0d0aSby18YOExJsJ2FVeYVVmFOzrxfEo\r\nCiTiN1lUDGSZTtnGqn6RnSFx9QxvWaI7dw2rU76+WOblDqQJBg7pI83RJ+HR\r\niZFoet3F56FdVP7AHKKk4lRkzCyq+N4lBYUtAtKks5N+8t0dv3CLAh7xMAkp\r\njgHyGUN6g7+rt6qlX10GbVTgzcCsTSIyxaByKyj89ii4LEvczADOFnB/GdTa\r\nddfWOlcPG7PWlH6vETCu00L/bAT1JJWPJJauuJw6Upkh1BbG67GKJ6/Iv+0E\r\ngTYkBR4ys1WmPkApt8V09qbFR0Nian+3fBF2seRX0n/9fdFv3Uk4vdD5nQe0\r\nItzSLs+yrLzXASvqUU0CbdVqcnd93cqV+Uq5JVTV2pujqyd65/SVMT/ny8f8\r\nVtsj0gudsrc4jPCt5/rZ3Q3ZOwfQ3uU/r1FB1o6gDvdREWZAKez7JvosNa5X\r\nq8jyTrsC7KPGf+Kx/sDK1+z7khDwhJkQJkgj+0j8f8h5SpZK6HA5aFfevQLa\r\nug2diBWzudIf54SbRG3wLJpDWYzgckfmoRWXpWIfWmOxVjh9Ty5TNuwkel+0\r\nZjx+k07HZhRgyR3IawZIn8aPuyRxdQ6OzqFS857PHYDqOEShcDAerWaiQClY\r\n4p58wrgvTuKcC7LGATonE0AXeZosjvb7Ei4=\r\n=v6CY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.5_1673973781125_0.10486846236844793"},"_hasShrinkwrap":false},"0.0.15-beta-0.6":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.6","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/cross-chain/Redeem.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"fc01880608ad466b55a2bc6c0614c5c1d037fca8","_id":"kana-aggregator-sdk@0.0.15-beta-0.6","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-BaGl0ExY9R0S94gqRY/+URndxTcduQfvxVr7d3v6HlaeMKsGFJxLWUr0rvEWC7lXLdEMaJ89xl36dAQdIk1RIQ==","shasum":"6df8fa174c72194c6715e99d6dd2246097c34a13","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.6.tgz","fileCount":77,"unpackedSize":194162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSw7/BISRzcxzZJCV99CMDLviFkixqdwo8tYN3XhcfiAIhAP5XPeT6b0V/bMChnb+yt8cyCGFi1IeHVmmmVz+8fTbR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx9loACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo01g/9HV4vqDYU5g3Bhr4ivWS7hhmjdrHDUI/4xyX3C9DizuBJRPd1\r\nMMI008ThhClfHyCxyMYgCzD3Wb01Uf57W13AgUbCdGOySmc6whUTalIF+ghW\r\nZ9TrsG3arCTeD8PL2EmMLxoRPVTDwZcz9JSMc24RPAOaXwOaXDI98bkrS973\r\naVwDTBlLojLNb8ZIIkhfTpgr+1mdRLutl3D1VJJtL7dOtpiN0AkVGg57dStv\r\nQNMPk4xDYxP8U/NfSUlPIUmU4/VOlDRFYdLVxHPBZ625/Wv9phGmVHtwtl7Z\r\n1KAOx0OQr0V1QREYbJt8OtCG2kQwSM6dvinCOLj8HLLqhAuuzjVmz1bTsI6E\r\nLktrSYKnXuowXTTOPM/b9iQQsQdsXgCfRa3SwaorfkMHj/O7Nym0I9JVI+8W\r\n5FK6i0cPRSrTG1jasz+3HgDGuE1YyRkBK+fW0nNFbhE3OFfC036cb4whHa16\r\nC/afR/9PfC7m+8bC7niMuPXJjgSi0BjzEwdCD/VPet8LLDoU4kgizLPc/+H+\r\nID1c4LhcrmPxtv5FHWefV9YtDYIjgRqu8Zj1E5/Q/2R3idfFgy61u4p3/qay\r\nQ3b5lbdzzvxatghfTL3hCBe1Nj+bPvGaqFeQ+kT6pRXNCVhsl0AuBUowFpv1\r\nEo2+57fwUYI25VPhJAP9ldMdv7Zf5KG9Z44=\r\n=SOua\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.6_1674041704173_0.35061309682113073"},"_hasShrinkwrap":false},"0.0.15-beta-0.7":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.7","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/cross-chain/Redeem.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"8604957c464489664b2f088f761dea6557002a1d","_id":"kana-aggregator-sdk@0.0.15-beta-0.7","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ehTzNNj8Qqmd1r8/zwPFK4u46+nc0VwgR1OsZ3k4NajvRxxw+BIoUzVFAVwMBzD5n8yT1txpHpcRtJUN626Lfw==","shasum":"c7ceb68e78f6042e3153cf62ce68a7f90fefeb82","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.7.tgz","fileCount":77,"unpackedSize":195938,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDK/ea3lNCB+DqoOX9mheqylqrXst2jTc+G1c9hcIUBGAiB4DI6P7c5IRFo7WCFzicyciWbogENIhobEaLdcq3u6Jg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyQ+kACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrx7w//brplgZ5UJDfHAJS+oX1eigEpVk4Nl7nkVmsdMJLxI/GOhKM0\r\nWOWSJyAsUTS0HhpyZo5p0EpEwLDzOsFaQjqOKu/nsDHfze6ysowgukOucSia\r\nRE1paV74Vqa5dQkDXcEH44PJS9A1G0sE54QX0DbjmkF/QAfF7h3MTf+zLrgN\r\nQXGu2E5zi9FyalOEtHVsC7MlUD8km0wbV6n36cUpvLCe2IUnrLRY0jN5XxOh\r\nODsrHYMs91NRofA2ZiQaG+zPfpiMYa0/KRWSUfwPW5DcQCQttGZ8V+0L9tt4\r\nQDiAFrLCoZybYGmj46WXbq5i2Q6hGMmytjCdzPJ41meF6kv+HMwRTXQ0YNuY\r\n304bPNqF+vLAICckdikKQ+GLnUFtjQ4Kj9df2vV37azvMnh+nCgErdFRce9C\r\n2whgD6tpYIx2GoZZORxar9PjLUrtkXlrVwFq5DNUzdILxI+Xymw2bhWmiod4\r\nBQYs+SaGiaRdNZBHlvn2m6zAO9aYH+2foVJzIbtadHPWFZvhFeQD6gVeZ4nJ\r\nfisarHSz6LpwbhvvopiMdo0Tud+lNhOmtF2GwIY9roOCm7MSGMSpLvEpKUcS\r\nOIgIEfeGYjlJ+7ZPEISBL64TyHF6PYtsev01E38EoXZylxdXjcYhZ8gDLJn2\r\nXb4Rof6uNssnzbJOKIj7Brz1JUX2fVgELWI=\r\n=T4MF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.7_1674121123896_0.4179348629654791"},"_hasShrinkwrap":false},"0.0.15-beta-0.8":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.8","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/cross-chain/Redeem.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"c06c262fb9fdff3877ea93eb67ccc67756c2d788","_id":"kana-aggregator-sdk@0.0.15-beta-0.8","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-1pOF0cCoZ9aTyfHgFSbvO4zRJKCdF3D8FdRcqeBL+5qLp5HtRLfkhbdVEU7nWxJOEHGQwB8BMcyelytH9TEMjA==","shasum":"92580855f00c1cbd6edf0a0c159f46883b66c8da","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.8.tgz","fileCount":81,"unpackedSize":207471,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+vt6ricCJ05JMF/7kMvKQm1ZP38eP2MexSp9Ug9efGAiAsDIEqFliI+Go0C25cPW25NsZoeYnZ8rSNmjq8ylWaTQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjymAVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqrXw//Y1lDSSj4MMNUtFJbExY+5LbILSPtpEl1eeMaPsjfhOJ0G8IR\r\nJQUn0A7UOPdOOmWtRtGjV52a3qUbSWJn9OUOAy9UyJh8sBLuQcZbo4l4Na+5\r\n/8YH7cZySSYH+M831Q/4XRVzndjOPd1W3rDfRke8rqeo+JMwyuO8xYTC2ANy\r\nxUL6ypyYIXI7XkF8EyVritFX08SSm38BcmaVIY2kqRzGca2fGluJVIp2bEfw\r\nQJl4586fiWEFnJQUvcdnKC5W2/tUrHfcPcRsenr3YuavG+lGRTwgivBSTX+g\r\nQLufQNFjRixDD2l2MrvsYAGdjMovG3jLruW54DF5Y/HyBpgbZD2fiif5vT1w\r\nisA21XInJzg2AP4Rc3mw1klimfco2hdrQgE3jJk+/6G1r+uM40jzi2GJi7sO\r\nnbaB9OseyufQUjSRFxlxlRzw0JXb6+DGQc89OTER+wFDEZCx0JEmG8FYZG5j\r\nYwy0ppSIe1FLZJMt9y1l39c7hBCyrCryVzD+OKwrGSt0SmEhGAf62lCGCZdE\r\n+YcsrtJ2728uerk8i1dtSPzdNCAReCUtODOVObb4CDN17ed7TiobuwS7sIhe\r\nADRAuygcpKXyjbkba561pGZNJP+YmMYEnhr/DBcy7O7HPaG6TghihtVEqk87\r\nNEm1vglBXWlAdjRezqpW912iFi7zUXTO6/E=\r\n=V8si\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.8_1674207252876_0.9983355038064696"},"_hasShrinkwrap":false},"0.0.15-beta-0.9":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-0.9","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"c073725a4171e5046c441a8fd8260196071c03f1","_id":"kana-aggregator-sdk@0.0.15-beta-0.9","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-iHNdCCNaOK9iGJZBjlE8q9Wl92dWfwUv83VY0+0GmAyx6izy+aXFr32bus6B04JqUdklLz+gi7wzY/sY+xuYfw==","shasum":"a4599eafe5042a28c27b571066a6eea321996d4f","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-0.9.tgz","fileCount":82,"unpackedSize":214604,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHI/HGUTcVlmz2aNnV60Zogm1hvrQL602fsSYw6GTZX5AiEAr7+OFBDNe40vqcoaJ8+lXdzRt7hDTBUNF8UjttxA/rw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjzVmlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoHbw/+O/AkDLs8ztgDq/PpFE4bzInXakSFZF0VWoutPvfJ4Smktidq\r\njvzbR/3xGIptl16OYI9jwLcJ+Hl45MYX29McnW9S1VmeALO5hXd6oa5hXdJw\r\neNnh5ULWklbGIEtf8Wn24R6fFFnew+4UZ4YunRNgw7F+lshXFbcLg118f8qm\r\nkaD6bDwvKCCix4nAMrKbqyHIe4HQpdE6iIbdw3PIlycwIp8pkKq8/AKXpKp0\r\nowboucLE8GuHfo88/TaDbohiER2Q0Z47FBgxFVtgrg6YOUIKmIizMFAKPuYS\r\nNKhsLVtJpmPstzCxniLhrxrjAlMFl+EBhHmYazV5dVBce8b+znCy1sq+guvD\r\nE8/hUOMm722ZZ3GnQBSTjPRFac+SC4opfVzbD5sApAH5Q2aBFCki77ncJiah\r\nMnySzxgoJLa7XKmUwzcS+ak3oRLXNbLOG2wdoofIBLGO03l/t7TSI9jVFzyK\r\nrvOjspRZGL1YvwZOkUTFTUlV5hzOfXSctbEK7Nc9g9Yjwu4teTxj2SuHLgGG\r\nQPep0sMSR44uFX1Z6kYzEuc9/x9hEzkzw4yXkRNvKA+Zb+i2o3/mxGFopJxn\r\n4xZ4tTcftt8FkIXcw42IuLrqGSg2BssRmlEyFxBg9ICdvQY73Jfy8HsCZxlz\r\n/4EFY0QoQS9TENaoelzDTg7WckGnNOxCwc0=\r\n=uhqj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-0.9_1674402212821_0.1585143217859255"},"_hasShrinkwrap":false},"0.0.15-beta-1.1":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-1.1","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"c073725a4171e5046c441a8fd8260196071c03f1","_id":"kana-aggregator-sdk@0.0.15-beta-1.1","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-yOIwnOO2f179ahyUDwXl1WxmxpUT1pehyG+Z422O/s5XPRDWv2oGBPR7X6pCdFESskQ+BYX2ligdu9TlbVs/1w==","shasum":"de0ac7ecb86268b54db083ccfeb07ad6383e6b16","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-1.1.tgz","fileCount":82,"unpackedSize":214772,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcwffbtsL0jNTk2qpzDCI///UXhxJ4Sbw7xxHHwxJ1JgIgGBu1+5Yg1KL4jmKHz1nnDkYP044kF2BWj3B1bR9Gb/0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjznmwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpu9A/+LpSdTBvsLUnb4zRXqMtNDttgAhJXAPskBo3jOjLJeLCUxxYo\r\noCri6ZjSfS2k5UVyArEsw3l6t9DEx/BsYURf6mlvcEioVi2Z5ABWgK1T02aA\r\nQ4G7BY9DwksaLX1UXH8WfcHiKKhCp7qTAPa57pGXYKNKkq7ntFICdop+10K6\r\nGYWa0ZwBLDrBjWbIUPzaXltEwEMLwslYW6uwjisaV+Xjk6j4NQXkBSAziVXV\r\nYalx4oWRd3kIolZq7Xc3vGybgMqM89Vjbibnxt/fhANHFlVTP05iH0cya7bz\r\nxHfXnwQfodJVFS9W0/CB6CexKgL0KeDFURWrnkOWBmOc+Wm70Vb5bEnqxrpp\r\nxfhMYb0OL2mzmpm1HW9aunaVa4L8BbLtvXkGWIWb2e/M569V4v1s02AEbL2F\r\nsF+H2J+iKSh6al0GRq4nRJLZoVxYLOIuTFD//7i/wJwDvWxbTFrW1hTxStbl\r\nl8k9onGiONgTT1j57jETNs71mF5wZaXlSg7x8W2mslQggjmGc/3gtXLRoNnb\r\nYa9bLVavukoz8rxFDVmciwCfzBGTX3C+J4GtVx6zjW5wehxTTHw7dimREtA9\r\nzxELg2xM4Gep5aQTHeYiuJx2bl9aW4CS9PMF1NF5Qn8Vq4LuhBB1yM3npmpz\r\nhtn7cosHS5sSqaCF8SanWlD5ftCQPDMxJ2k=\r\n=GmeK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-1.1_1674475952285_0.9551230161750806"},"_hasShrinkwrap":false},"0.0.15-beta-1.2":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-1.2","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Solana.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"2e0b863c5d6bb701a929351f4e3812baa8c7c80a","_id":"kana-aggregator-sdk@0.0.15-beta-1.2","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-p7C9jnJxQZBz0As20c9GU1xK2kwxOz1XPBL+PRx7MW8tJ9fiEOFIawASuZQJuwWPm88+SQEmCvqYW+8BdN48Zw==","shasum":"bbd7f286a47e374a5a4bf061aae8ef16aa7b7806","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-1.2.tgz","fileCount":97,"unpackedSize":228804,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTY2//6Hl+dEyHjEBNzMh0rRV0vN4w+WCkX2hFBmFnbAiAexB6zfypa/BGlSelhiMGXGTPevE5Edz79Zc+ugieRrA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0NsrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+lg//ZHfZVk2GgDRZBixODf53WpFckqzMVQHPp2jsGA+F42Fe0LpX\r\niNY3aALrRJuQXC+PBksFlexUxpLe033d4Cz2mlHaD6aHqfrP3psFGghI7jH+\r\nl42G6/bYKNc4FCVEyJ/jUkZo5SN2V1JOg2+GxzB6CrAvyS8P9s9QVitVEd/t\r\nYqwtv4yPvmlFhrbgcTGqQXa5bRHPksBiCTz2cViDTPBT6bPVV944TZB+9e31\r\nqR1LCpc5uOIh2faaMd3iXRGzACNKDze26N99RlgdoYjCDWu7CoUPD8DS7NNZ\r\nd3wo117vpRjK0jg8017mvLaXzXhRnZMUdKXELHJNjntDeMVLD6Xw4WGGGhOu\r\n9I8PgDNMuZTdMhflubActFsisuaDrgfzvdvRe4ln+AcvQRgAC8sZK7gt2XgT\r\n0OWYptz2Hv0jOFLbhpYEKjnGBSSDOYqyDAYmbqyw/hS538kvPT+GyNJBCaMW\r\n+w7Jj1VaYbTSGgYjMyb9Qcg/4DoCRTqTEU0rBp1g4Refk+qZgH3Q/A6vsaBj\r\ng0c+Bts47fWLRonVNmDVt/vHhfdFvR1Jdz0JJO9kX4XDV5ZvzMnysb7XdPYw\r\nAF/Y1GiobzS8Wnor5SUdrjLgCM/t207cHb0M0AM+zztTfc7LG69l3gCPuERG\r\ncGe12EhFT/A4DKKLsjJCTuW+PlWPTLuKVtE=\r\n=PGsJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-1.2_1674631978825_0.9942702692979208"},"_hasShrinkwrap":false},"0.0.15-beta-1.3":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-1.3","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Solana.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"fb7783e39e46dd03f7dc109595c71f103556bf70","_id":"kana-aggregator-sdk@0.0.15-beta-1.3","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-4lCHBW7rOZ2LhA4M5K5hVpnI4RAanxMLLRUlTvc7KKmmXZmpCW3go3UTZGYP/8mXnUtw/lekUaKrBhFVOYj+pQ==","shasum":"c32ebe3f7ecb171d10dc6571e569392b3b4dd65e","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-1.3.tgz","fileCount":97,"unpackedSize":232963,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7X62/YehLEdRJ3YAJBIEcPLd6rMdO2258cJrrrS/s9QIgIEASTyxUh832EA6mO+Rqgb0j0F4l28X7aF5nHN8t30M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj13cVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqcHA//TYM2mUXgU+F7Hk2Ud0xYUB6OI5whkjvUeO6udt3jj++hKV5c\r\nuU3Z+Ip9/dUZbvokPWN2UcmrEc8DLGOCR3Zt7lzhKpunMcI/JFHbcIvOcfpl\r\nOIWK7a1cI9tPh8Wg6KFwvAs0CMExP1N0rx6qzvBUZtVH/2G6s7GTLGfB6fD0\r\nZJJpdr8LyzsBHDoJ+FHcz70oUnUXinYqhXg+RdxJrfJyjMO/A1r2XfSENHxd\r\n2jaNHOzfmzCOH2ajUKU9XpAgjU5VrcY7iF9IXmpDllmuzPguSKzm24n7mB9l\r\n6c75GT0BDnPPu/F0jv3+60b50S81hwiJKRrw/OBT6qf1g1hg4mebJZNRl11Y\r\nePaQIZd2zqag+QTs38h2+FDMjCO/KhOuknPeDk6xUGch6rHHRCK8AUdPMfzq\r\nJp3fHc1T7vqimxRIMsNMmbTO1aXRpaAV0n4iIHdaEAj58gjOtgOYmqsnTFtS\r\nTWcRiiPidnnHtzWMwFSrf0YKbEIfFsqq6Ht0AO6W8Gvym4NqGM5NoM5au5iH\r\nXCjUYJPPs1T+rmcDR+0P//pCXjhNi4DsKr+hvMGHlgOe1UwlPuQpmUVgrTgU\r\n7M6VkibKemVDadpk2jGKgJPn/bKJ3hYVbHtiqySvtrIDrkmVJ7GyhpLu4lJm\r\n8Q78GEAI3JOK9Y0OGtU6StbBNZ1b2gHxucg=\r\n=v4VW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-1.3_1675065108969_0.17113711211923954"},"_hasShrinkwrap":false},"0.0.15-beta-1.4":{"name":"kana-aggregator-sdk","version":"0.0.15-beta-1.4","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Solana.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"fb7783e39e46dd03f7dc109595c71f103556bf70","_id":"kana-aggregator-sdk@0.0.15-beta-1.4","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-xlsVCDNqHVG1Do4DXjanRbbY94/Lr49mvw9m5kNKtgu+I3tfzpdxLtlfGQElzWKzLQaC8NWggdOWUiJtBFIKSg==","shasum":"e8734e89506031f568b1fc3f40ac6b2ff6944755","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.15-beta-1.4.tgz","fileCount":97,"unpackedSize":230115,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0rgIGllywOIwmw0be2Im6NSYMFbY6cWH/xxcS6VsBDAiEA4uaaDK3Zd8kNl/RN/wHe+eM4B/kfJ5j8o11JDJlHTMk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1+bYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0kg/+N2+xTW1Ww4mXAaKA7tJebnTz8cJAwUdYIU++XNtnm5PjdQ66\r\nzPz137VdupN6BDxPxvRCR8FQ4tHTgHHomfCTBGtNZVu2snhXHS+6J6h6kMSW\r\nPnAkbDISayNdf3/M44NA7xl/8J9BLTBDq18WqaWD95KDFyy8qh1EBQdXmxqx\r\nCUt46aqLtlVWA/cbOVjdOJzIIWiKoL14wFOaNF3BK6/Jru9iHNGbMHWwqysh\r\n9yuWz6QI/P90lL1j4TMM1z8vwuIOYeAXifWFDLNms6zN2snv3hrSbzqrawMG\r\ndm/j5KYnEFaoisVS1875mboJJf2N7x6SZLB1xYv2a7CIQMruTsdeQ1CBMS9m\r\ngZ627SSlGbYYTbnBLFN30Ejw0y48jdfPeDwVTuA3cLgezhA7Gq9WvWee9SK7\r\nYE0Pv4PrLHlOQp1ncGN0+lL4QiReyFlDBwf/RvnSxAQJSmtse6u/9wEa/NCd\r\ncIWDP7nCiwQ4zTyigSJdGu8NxFABS/Rh5RPVVSVKS1WjQKdzUi3BEIxkfCec\r\n782NWLdoDax3pCjwl4F5ks96Zt+ZRdz5ekEiQE1JJjvx11qGTVjXlv9heFqQ\r\n1bGMMxkCORh8f4D/r1bUVBUOrYJRm3zOsnIMAt+bWCtVUvk9HEFsdG2LMkxn\r\ng8lfyVM6tOYMMVZaTSLneooSRNFrzfVdsUw=\r\n=3Zkg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.15-beta-1.4_1675093719943_0.2402172078035314"},"_hasShrinkwrap":false},"0.0.16":{"name":"kana-aggregator-sdk","version":"0.0.16","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Solana.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","kana-aggregator-sdk":"^0.0.15","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"f8ffdc7c967033a400cade1008caf17a38672e48","_id":"kana-aggregator-sdk@0.0.16","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-BPL4CWYIHs07ZmXRYmHVuHtf2PqGhayEwy48CPKyJUToeT0vXd3454W8WxYxqBtH/vO29sG8Uq5EBik1UfoHDQ==","shasum":"af2498bbfca41fa7657d30d820c7f8d83dadd08e","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.16.tgz","fileCount":97,"unpackedSize":230106,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDUtfrNTVQOAygAG6icZJ8VY2FUjOLlrS/WQ66w6wGplAiB8mduMVO4qkE3y2GfHsVmTxfB0inyhvJX/ueyLlgd00A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2AEgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqe9w/9EmhAjEfIPeDDosVMw9PtappOT2EFbbaVZo7QoDLRZ7ch7ehb\r\n88kUJeczKu0Ngqoj/ZRQ8uP7l366YdJe91CfXB7GUYuBr1zYXO2TCvdDw4zv\r\nBtpBWbj8ppD200IgH0V/PY7Ib9kBEucknl+Ug6xYfeiISC2gi7WjgmEaUjH9\r\nx8J/XmLZceb0D6YpV24CoPJIWdqi1jn43Fuw/ux5m+i9sFEDtl4SfjrAq891\r\nAcsvyPEntQ/jQ/bavxzJRPmM4CPdUDSIS5Mbch9dDqwW3iimSlEWwc2d+nml\r\nZ4CFOntFE36mP3gvBhtIdPeapKXOrxigQN0ryQFmRWn3kJAF6Im0OHx/Hp6V\r\nDAy4QiYFvajlz9jHQAXV9S+mAiVeh3wwiiOIiilL0E7muUjSsqN7VWeckjLw\r\nuA6kZZUk4AbSkxbWuFz/hTKMn4O4yTnTOjfUwZpr5GtvAd03OVn3p5d7+7ap\r\ns0eqLjdPkjnzG0dfovE7WqIEfJhnr/PAb6nZ2QxfBzFi2Bfq3xR12vbY7eR/\r\nzFjdpgMNZklf+vR8wbtP2AP1c1UTGkmvwDegNg9A0gEsaxIJ3JuxzB61q6g5\r\nZRu2inugv4YV20PGyDhWIayn87zx/acEtoZEm21cDodoTKwXoZG26bhJ7zuW\r\n0Rc6zD8UcM04CmKxArZIKVMTdXKa8kmt/zI=\r\n=IMsn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.16_1675100448358_0.7756054787314892"},"_hasShrinkwrap":false},"0.0.17":{"name":"kana-aggregator-sdk","version":"0.0.17","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"84b36c05b9d6309cc6b611177d3f0f01b627b2d9","_id":"kana-aggregator-sdk@0.0.17","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-7RcWBreHP64e4WLqcX/2/AUbhNHOIqlHBDZaAV5Z8dAYzMd/8ai2eH9gE/Nk0mGndJHG53HEaCRZPF1i7srv0w==","shasum":"473e55cb77b232430f334cbfbd6afdb71cf60afd","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17.tgz","fileCount":97,"unpackedSize":230714,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDsm3UlF6oDk801sJt/4V2SdZy7WkYhBPOtQ2VU0jVufAiB/yVQNgH+TLp1hDfx6zMETT3/0cVSE7lLKamzstRXBJA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj21ohACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLgQ//ccjEEjmz/YyC6FY1rOOosAjjoFAUkeE0weUQ6dJN7UcxfcD0\r\nP15tBmidfNwmGwe1N2cS48QFVZakVv0/bxjJaZ1LCST0xVQbesnFc1u5NqRh\r\njbGMN9/kLXmm57jXKboBJsA8v/W/UvyvfXmZtT0AViGYtBSbcGUtStjZT58N\r\n2hRGoin3fOW4ypLzs8xmVFP7RJF03s2vqxWikZ/OUikkKRPeaxB5QtHWUGYv\r\nRj+Vl0egKglmfaK5ygYWnPas1KqhAeXAPZSydalYF1smS1Qf4fS1nWcrNmW1\r\nXTp9dtyHrvsb0AoFVfIroICXGXIp4sBQ6k83Rf4Z4+GnbLbp+V1UGc0oOquH\r\nWbC3YZkpSiFyzLMyLrWOCEb5VpIoseZdO8g+WErn0Ak50Jpa7BA8fjpQfH+m\r\ne8/WqE1vCRGd5LPD/19k+lVuXJ3qT2wna75WZn7PjwBhDb2nA06zTsxiK5MD\r\nA/8HoaU6SFaAdFZpi55T/Bh1mcpJR1XRQPnKEQ6vQ3RrlbCK7YIVNZoPkPOC\r\nhCfUmpLic2LCG9VJZvp7npe3W9iKUGsoswrfr4Bhoma6u5LyZpXZD9NMrtzM\r\nXd5mWabLHOTYOsEcEL4qIu2hgXV8TjNDBXaon1JG1mfDn9U5FmRntvE+KG0B\r\nRpYLpKo+Pxnjihefpbc5LSK08CZ4fyRBCQ8=\r\n=k2ac\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17_1675319840863_0.41032065719872723"},"_hasShrinkwrap":false},"0.0.17-beta-0.1":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.1","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"9766f02801f19f8587686f9fce1da53e6d39d769","_id":"kana-aggregator-sdk@0.0.17-beta-0.1","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-OY4hOckdmES/rWqwP7zbtTo2it4i1hrlakY/bV8JLfSDkuvgjREE+oPfWfRvC5bKiq2IHzR9kGT1zZBUPdDlMw==","shasum":"d3582a2fbd59d5d57998d917dc2a6b0e3e5b3675","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.1.tgz","fileCount":97,"unpackedSize":242602,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiOgYt2KcI+q3TQ8SmisGxTv5By5XOsvej6UrtWrCYLwIgeLyz/zb4mJMgKT8D8YDqfpDv9IqWU1CHsPOb6rmhTVo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj258LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr3xRAAgQzqOQ+4KJ8Ky4zH8L32SjYQMJne2NiHjkP52Jkmv0oGmDds\r\nmxSZtEt4syrGi8ucCMYerbiYfl+cYblhXLYR6NWbMCoEl7AQulRo3C8JbbMh\r\nSMpYMo5xpLE+SG0vaOCkQ7Noe14gf/4drJ5r1ZfliKJu+A0lb5NAeMxces3v\r\nn0aBO9jvIxmOXVlEvcZ0iXZZCZPbamG/9t5p10/YCapbtoBMF8CAfMY6zVne\r\nrIaUYO7rgePkJ6k7wWgRaByheLCCFoV+czW4ob4h8LdTJNprlVU8w/txFH9A\r\ndBUNL/XVz0gzFCDP84WRsBP+Z/QmXQQE32tscIy3ilx6a/ffwMIuHAxKhcRk\r\ncPjduans/tKqgVIk55O4l6eNW0sIthwSQNL2QDk1S5RE4JXdjKGox0xvRm/l\r\nb5hkED1nnxXmGnut7N05NdpX9U70nl5sd8mUo7ysW5qt7ZehAmu5j1jmmMqS\r\n0Jh7c+bd18ErNeA/WqgWqDXDP3tvQI5AbuhBj9dnJaeCybnbsQua4caA22v0\r\nw8iYWvTqMcxPwkUN8bo0KbPTifRDxC08cMxIoCo9fQocA3KXaVOsmOL/3lwG\r\nhff9PEAyXXTeIV1mQtAJkwv0k9r2ZU9DCH7gkUqYtTAp6BBBrrT6C/a5GBR+\r\nXIR4lCTtw/bga8+8YEmwrqPe97L6H71ZJwY=\r\n=j37y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.1_1675337483388_0.06268316534449792"},"_hasShrinkwrap":false},"0.0.17-beta-0.2":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.2","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"eaa1578f1ee02e2242a1fada7f9d944088904a1c","_id":"kana-aggregator-sdk@0.0.17-beta-0.2","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-EnFmh0ErJZPbjezdiEpRPAptGLVpJOZfQpxQbru958ZHlOmPcorOx3QwtreRl+KmNIaHYgHMDE0Pti8NtbXZ4A==","shasum":"124ef2116e61c94511f2b8a6e26a3bf82e626c53","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.2.tgz","fileCount":97,"unpackedSize":250236,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpDPeDkkiwzwrXXDOU1PG+QdgNxbBDTTy0POM9li+cBAIhAOqOmqEXqx3J9VjDCFFWrY/Uwtr6BCtuQjgOlyRa4SyK"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4AcxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCVw//YOtDOlgsPDMY82gsWhEublC5r4el4Ge0oXtNl9q44VFJpoTv\r\nLrTJgVEIGhVfr+6bdkziNqW+L/aNJkWC1dRKXonyF/VfgBOh6luF56DltCoh\r\n06Nd4+i4GPBpazaZAwOWP7VQvtAf6dGQG/qCrgPx9+ndZ/Olj+hKyvu1C1jz\r\ntdoukCd8pL8xnUoREoM4DxF2NMPeXrRd+1pJbwth41sVPlwaguwIt97t95lm\r\nHdvyn5TQ8AKJtajUhnV2K/KVJ4WYDOGut7CzORaaJOER1t8nGNJNiTvx5+lV\r\nQPQx9vbWcDZmB31FOmBI3t3iRZoIdISt61JOgN9o6o+GuO9G1sEdULjbSm/G\r\nGcWIX3BjJsJ7JAWFnqSSLH+rebjbT3RMK12R2hSxKe0f1ewPYmst9QCOIZkv\r\nHDRqTeiHKPqMzyW5mqwX7JGaQucw4RyFdpaZCOvy7v16luGJiKLzgtU40J55\r\nrS4JjbjgRJCtDCG1O0rJ5/PJYV7+ZOBW70I73UukOzLlxKUjdjX8uzC8ejGe\r\ninlPi+H1cHhAeKYvBpM5SL88NLtIP0KEbFZF2gWXC+HN+3SG9H3QzDa3lTij\r\n2Nfi4VK4y5/Xa57Cb9PG7YRaBeP1LeqlbwTIKQi+SZjQbwzkXAYVRSoKMnOr\r\nFGM1WtVpq0sdTke0rmSyLhW81rqyrlkwv4M=\r\n=mMJ5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.2_1675626289507_0.22058542261795955"},"_hasShrinkwrap":false},"0.0.17-beta-0.3":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.3","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/yieldFarming/yieldPayload.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"e82b8ef45e3710384657a58858cc8e0ebc9414b7","_id":"kana-aggregator-sdk@0.0.17-beta-0.3","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-vX7SQEd2l0tT0A/eCr950BFrZUFubfFfAk8MRWDxok2ASB8HNFtV7oCj9eSEley4bfZldZCh9zWKmk1/4QERqw==","shasum":"967fb3e7c73499aaf228869f1714160f8656873a","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.3.tgz","fileCount":102,"unpackedSize":258506,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3j+vVeMSE6znaoQzIvo8WPtwP2jZDskdglAvlWXjtIQIhAN0XdOWlE/fPIj1sOIozCqLC5KCkNxbp2zfYbRzgQ2nz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4eiYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoN+Q//Sc6PbJ9s4jU/nU+QVzfZ3sQvNVAfOWvY6jQi5NBh4q6VJdcR\r\nxQwMABISfZSGE0lYhMKrTztZhrB6Gc7I8BIQRqt2nDmHDAB814W7aJemcibe\r\n2UOrIvJVp7zXv5Myy1z1puFw2LQ0F03adW5fpu6y1wWwq0lYRDIfPRVXXbxG\r\n7/Tq+i+Y3gX6jQx9UpwJE5i41HRFc4+BiCDuCBAXyBbSMMdNZnPs5HW1OUEf\r\n88vwrZ5uWzG/lPEsv/275Lb6yEAbSChZcJa0t2mk7LFKB9xEFgd8gCedGsiE\r\ngY2yT+ZkNeN9iV9wZ7qTm/gKs8WRwu4ZX8uKksVFidbccfKezGyy06tu5K/D\r\np4VP20+l6gdN5g2Qd8dp9im49RStbNHQA/gy0X1KvoMhSAcmq0+uhv4NyIi4\r\njQXDd1ER2lnEMdP2OOgHHt2tx6MP3pvOSpX40ZWAdElT9HjTN9hgawKion3K\r\nlNbL4fdmvOGVRv9mJ98PodUmY5M0eOKWrZWfQ5dJylxH+F2jikzQtuQz3Shm\r\nXy7fRHayH9zrK4fKG6x/ddBPfqmPmhfqepRla4eBdKLszI5hwT213zV8oHB0\r\nbyXmNwEukXkyPhncr0Klkvh+afHzppHl/c+siA/LqiAc/zlBQndwtjTt3PfA\r\nBvmc6pptl9O5uU9g8ueP5gWjTrxOGoSWY+w=\r\n=LUP9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.3_1675749528620_0.3525531894315306"},"_hasShrinkwrap":false},"0.0.17-beta-0.4":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.4","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/yieldFarming/yieldPayload.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"a7380b6789183f6fd35cc97c52c68b112c8196df","_id":"kana-aggregator-sdk@0.0.17-beta-0.4","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ikiOcnY+4OauSvxXTToElktGL+ciRueU2kB5EeqjyxkKyWLcAiPb2dEOzxcQbwdjpcazpW5nzn0z5H0brMFnmA==","shasum":"fc3a8dcc04e1a214824cace72e3f002511540eb4","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.4.tgz","fileCount":102,"unpackedSize":258656,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGup+w2kIs9jiF2bepXDSUTvbmYDjmzli2uj1OmV2fJTAiEAugzi3LDxKjMayvtSWWS0+OJJ22frpHID/eO4YV3Hqbg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4fL6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZLg/+ORQHUAs1gLy+nUaysUJ88YBgRvNfX62VLYug8HDh93uKNN9+\r\noPXhDhfoKdiVEt7+7TD27DYOYnxi39welauGxVeR2y4mhzGRwTHU7B/VVU1x\r\nH4flQbrGEu1322IF6xKh/FhhhPW7SDBcTBVFOu70lPanqrmbKLOKw4MoZjAN\r\n62sTYrFiVsiw4ld2w81DPPgkqcLxMoXrq9vz3CK8d0zD7ZE82qhS4vVRJNim\r\nbU24ff/mnrjPkhILtaX8fBtF1ymmnqJMTSuZDPWMwlyXWnQ8JiidBoOZCw9A\r\ng9xYTh+m/gaPotLchUMB4N9nhIxIgu5Ln1jiDc84Ir8tBp3hKI0D7nhPbZqf\r\n8CY9BXTyeSIjMCfO/z8HijrABUG/GhUAuttlFKTXHDr7uGDuq5MNWWqZ40lg\r\nvNQAwVjY8HbsiK1AcUpxLGYL7jhyoeoMleawIhs0TpREgQJjrXVluOloVTPc\r\nINTVNq8i67Aa5CeMnc3IxroTe/cPyAHSnTFYL/yQGpRVGYTXm0Q3rbrCTd3+\r\nySMzSo3GnXWLuMYj6/H5Resmy/QBXRvIh3I4aw/i5+Qpdt5J97k64mcqOr/v\r\n8qldEhqkKrMaZsIAT6Ah5byiAISqBqzNYq3aXxoZ+f0u7Utn1Ka/Vu0X6nfv\r\nW8xsPK2b+4t2AtI2+b75/oanUKwrIHnGF34=\r\n=MtLK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.4_1675752186782_0.7318395447230077"},"_hasShrinkwrap":false},"0.0.17-beta-0.5":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.5","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"d6e7061e04adf244f11e049f6231fb4ce8d22b44","_id":"kana-aggregator-sdk@0.0.17-beta-0.5","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-+PgWCLAB8xSDJIK/2c7Qk7JVOnwl+TwWmLAWCKpDEpXduaftj1jrh/RJGFEIesOTKelcdufnpwt16omnxNktZg==","shasum":"9a586a1afa55f34125d5d8a90fe4d4a5c66cd388","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.5.tgz","fileCount":103,"unpackedSize":269735,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwPEfSxbW0jakmFbxb0v1rxI0jlhOyMmdkM7whuTvYdAiEA0qKwcWp4a7kUjzZESD+tMwN4aXLnW2zWA7rdpDiO/AU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6vZyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjHRAAj3bVp7x+xBKzq3qxmLFldV6UpSBEaM77NdhcbKWIW7uAFF4j\r\nIhJRF6QNOXK2oJA8KSwL4+rpZpJmIkaP859+jdXAYFW4bg76sQwTmGQqX61Z\r\nzVToAvAIti9WnIvrpFQSV8kfk/mnUx3LgTxLPIpd+N5RuImhQgmYU+nQLZ2o\r\nMRj4gLHMPFfQQijvIxr2FNh96s9sFSpEROxRUYaNQJEn7WairxN5aL5PpesW\r\noKfi3Mv6ko0yNV2K4QO4RTKwWkVPCZwUt6IKLj6Nwbi5FnjkRVypVT+wjeIf\r\noKYG/gLDGAcorWIzdVeFd83NSHJfzp7+Q0uhVbxGSVYwrb8qDaU1G+8Tfd6m\r\nWA3A6iJTZwrirb4XUbD0TbhYhaOXR0KLHscxPVN85sgqs22snnrqkxGnSgBY\r\n92vkv5OXQIorPzOOjeFsgTEgD1SxPQE4BrJ7s7osZ2+zuOfyEtvXXm/GQHPK\r\nTiTkdQX+DhS5oTl6uXH0IJwPLIDBet5uFniSFUpZ5a9qyAgHqZ01IDSR/zM7\r\nvzpVCv3v6FXATPoEGHYUcuVqEA0f+CPBHbYCu1kwRzFtRvRAyTXhv82IBEXi\r\nqbyTtFxZcX2E6LTguQjt/uGCyNFROBIRaKu8VzsAYW797gz0KtRMWNfFSq+M\r\nGC1xF1ZwFrRnUN2vOGbb4x1W9768Pn8dv6Y=\r\n=y1Pi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.5_1676342898029_0.9757555405460971"},"_hasShrinkwrap":false},"0.0.17-beta-0.6":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.6","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}' ","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"779675858a165af67a78e9dc2e120ee3627d4047","_id":"kana-aggregator-sdk@0.0.17-beta-0.6","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-RO2x4XFpAmZSjJ3z5O2+5QRWNqGrC5Mdc+LsDXfcvz1dND0iWxtwI9q6/Ll8561fdfhTlnZtZYgnw/XMIn29iQ==","shasum":"bc621392d3ca3e6887e7386e35521a3e1eb71ec0","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.6.tgz","fileCount":103,"unpackedSize":271934,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGS8rf4O0be+aoxyEEQyPGar7NIxBavSCTrHKaSC+zkWAiEA76wPKP9O2epjs9FaabQeU58SFyVrQodWZxgvymOTKUQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9MzCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpnxw//cCEvEdNlWiiHM3FagxR19a5hU79dkYT/Npac8ZJvmnGsOOtw\r\nY5RuGVGtBEgd7ce+c3/eZC5FfP1iIzJHVONBubV8LinbdcQyRaDlddLLETOX\r\nkYq+kDKucxl5K8ateBQ2Ceg+MoNwYRX9gAmaFe7nbLrnsVuCvlaOnTRJ0SIP\r\nhxWsubzIT02FlGe4ASW2fbJWljJO0wa4hA66TZ3FtRIfPIkS9IqObYTP2Klb\r\nP6KnNw3fTYOVY3KYdIDRLgBIhr4oWa07xJmRhxc/jo7XT7PHVuEX26lpQHYr\r\nrdMkV82fwt9foXdsZZzOQOjAirpge1y9XOplsCoWg6M55UgIrI2m58xFsEDV\r\nIZXjbSfE+GKZq3yeO/XxTKQSDgvQ5E1byMFLqHkeZbH0qJRBnHgT9aq3ibcF\r\nOkczE+y3VlEbU7ywmMti52giRL+htnK2tabUCVzZCfw57zdkygMXkIGGUQoF\r\nYW8ZrbPaueM51CQjbiZ/+d5s7wCqRmzbq0rpTK4bne496oEbO8SN5ZyAk9yf\r\nR9i6xg4kkc/Yu3kHxHGICbHzR0FTbOkaXrtmPjzxABNWnS9TVD+rth2ZqTKx\r\nszU4a/C5jRhsI/VoSY4KvoIMUveHYplJ8OOBXa5m6VWZu7eXPg94Zphn0Mmr\r\no0Q4mmzb/gNcJOHYpPy8hs9XkJiY6zlJU48=\r\n=TYzQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.6_1676987586269_0.2876894098862399"},"_hasShrinkwrap":false},"0.0.17-beta-0.8":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.8","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"779675858a165af67a78e9dc2e120ee3627d4047","_id":"kana-aggregator-sdk@0.0.17-beta-0.8","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-PhX28CSO0myofP1iBc1Qmkb411QWEFoZbvNMlNlYbCqV3yrW9gF3hF837XtXDdt7DhNdyKJChV3xHn1ajPdIpQ==","shasum":"e2cd72648ad321e47baf9d0aea230ffa83560f65","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.8.tgz","fileCount":103,"unpackedSize":271969,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+GzlzxDEMZIkrkXAsKA/4BoDbidvdPm+G/4iJho75BQIgVHAntXGTHEbVKBmqk+avMgZLMOgJcdSbW0A3sxSXcq4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/bEVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp0fQ/8D1EgCnejeVZgepuXTGAnFgKcn5vqS/B/Bn10uvjL9d6KRENn\r\nmLVLL8sqeJtVGOkCobveeGBezvihVEKcNhT3EmAH9n/W4K7fnH1adSTm1fZL\r\nYJSFZ6aeeJ+dJjll/NCuvU3w/hnKhdTWjn+Uf3q0cDItSPVpK1M5WyQq+KtT\r\nZxd7vvIAawzAH46+MAWCmhd8yvJBEh/Clsl4HktyvwWYj/NNuCp3kscfIXBD\r\nLpHjk9XmzQvXv50lHRgR+eZYnH8/nwoBAZT+a4KoeCtFLDLjZuwEh7LCbVTe\r\noT31Bi6WDB3skPnj9jDoV53KRGfkkXI/Ef/XBiN+dd0FXS1wrpbuF47HWSEr\r\nW/ebE4BVdOuAl1OnzYwpg5IHz61S0+BX1F4Fi9JQ2OogDY7itrGgbykuRD3m\r\ndbdyh+QWARx6K67zBf6t/LrdyvcTD7dd7bVK750CFCtV5u5FNfhfdd2zd3da\r\nqITxT/6lQNNWG6fjcw+TPC6cFOSY/01+nzIPNfAw38OWSSSSU1v3tggpwzNX\r\nG9exZwKqyoxNE+1CwQq8V2Iq4QOHXENFw8vIUdELMW/Mq7qz7F2a0/k7ayQa\r\nvynTcr4oAbD5ozyEG1lq9RcyIYHLJ74lYwlZ2u4LLPw9s6UBQQDGNR5quYlc\r\nPIZ5sG93Csndkvp2z0Q6VYUIKxUFnuWf5bU=\r\n=eWO3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.8_1677570325377_0.15895931541581443"},"_hasShrinkwrap":false},"0.0.17-beta-0.9":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.9","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/stake/StakeData.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.7","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"779675858a165af67a78e9dc2e120ee3627d4047","_id":"kana-aggregator-sdk@0.0.17-beta-0.9","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-X9sxXYnyoZwFyBEL7uiOFC9z/HcqBmvptTy4VZ66cD36Iswxb75JoOpYl8ZyD3WIJusjmu3n/b8zzPucwma+Jw==","shasum":"db2eb5c93784086b5e71a5fa5458c5bdd061952a","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.9.tgz","fileCount":103,"unpackedSize":270124,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeJ1VH0A1mvuNj+/4WXeIvAllWR90lzSvWr7U+vZ5i1wIhAOMhVs7z7FSlXj5l2aPlLqATvBr4GEKWVQ/2Nizr8i6K"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAIcbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnUhAAnjNgeM+dh3RMguJ0yZ+V9CGLBJwlqSXih4RDk4tIjmDkDfCj\r\nDIz7h+jeMRGED0eRrxta/OtcuGZYrTl0dhiDfrs2Mp6C6dliCqjER3stpLww\r\nlo5YjorobncNpsDIPN9HAak/3pJalZ94GHWPCtTTTsskuxyqnQpmPJ6lZii4\r\nbHrCFHn6WXxez2yTevRQLTSvOETWRZhAz1qco6egeHGwLEM623CDnlTfC31O\r\n70yS/95wF/oBLHkX7z24YmLC2AQ27ZONn4PaE6MmtZaVio3SbclgoB3sKnlS\r\nXWQaFa9+jhd2icB+QM0Nh6WUXQOW0JqBN/HCNn3vyB9sidSJ+CIeUEu36eva\r\neF1CVrhD5h3/VQBlSbPReWki5YAoFreduCZn18wnMHF5zgj2PM9nGUyTifon\r\nyR4YY3tY46YbJBIt8s1EQF9XkrbguEiW897wTRNasTm/pjdTxDEHZpDbPwHY\r\nQJYLmp+LlIKjTBPHm98QnQ02cCkZIUu6Fs1SOAb/SBrCzVpmxBZitn3kgmeC\r\nxmelBRECsbYt91d7TE8lCjmAtcW2HJb98EfH8m6h14tvSqtGAe41DAfmWR6F\r\nu+YkyaNwf7eA2Ca/gRXS1Um8csxeq2idC6WOWliDR5QXpoi3mBWAshyxvCNl\r\nGvJW4VaZFnnyduo5JNltYPKirUaVfDJ5ojc=\r\n=xpy1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.9_1677756187229_0.5166772879770922"},"_hasShrinkwrap":false},"0.0.17-beta-0.10":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.10","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/vaa.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.7.6","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.7.1","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"bade4693ab3ac02e5eadc0fe6fa7e21eea59da32","_id":"kana-aggregator-sdk@0.0.17-beta-0.10","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-YraccDs8jXwE8mRy4Zre1qhRHiVJWCCxTrZY8FDLEvPHRTvzhcccfp68ESINvqY7lBlHnO8NE2K7lHSpNrWJpA==","shasum":"59490178524254c5523a6657f440081d25fd6fa5","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.10.tgz","fileCount":104,"unpackedSize":279640,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9cY73tuEkw/we3fMyhs1lSn9xGPockhPsu018mhZMvAIhAIstu4gLNtgH08Kx4C4OwTMUeIOd3ZB2yz3xpjyZ1Eok"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCaUgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4eQ/5AOIkPUqkoZN7kcOzX4lP5TlCivz92BLVTgy+RQLVP7xS9Uw7\r\nF0PV9sgOVOHFfhGPPIwqOf23Szg2MWf96mhu7awzhVJ55XKSYAR53+Gvwet8\r\nwdO10O3N/zmVPwx0fhoPQd0t8AnSVmaw1qkerMOBiYKenubqodgRceV+V1fn\r\n/AKPsYxRwlTizRJt4t75jKv4rnQuox4zbwX8xnYWbg1qnU5Qa+kzNzJsxeH6\r\nBSJbLTbHZwh+TvdGtvDvD1Uc2MR2XlJwbGt8k+JZpauqU4is7UdTFwINCgHV\r\ntkeULlCB87ZHgfw50/LWxVbiEyX8kSvanJGYTUhlRs6X1HVDwiBy7REffh9s\r\nZYVnxR/g3rBrKBstnGG4m9y6m4w8BSni41qHyUBrqAxtieiOlzkQfjckSBf9\r\n2S0A4iqrWd8KHN4FmNqbRwnWLmJQBUfO+5drkVYZRg/fXEM956HY5jgzlzpF\r\nLaj9uwD2xJ6gc7KFTJuV4cdjKhy+RZTrgSgMoRyJTIrzt+5Z4zjmMW+WSZwy\r\nxj195yhgi4G9X97Kt19WwC4SdqCBuBwx2xex1JajQ6IEkQ1bVlCzOqqq1yfO\r\nc0Tx7OmfhcwQ6CQ2k1rSEQAt5cxHHl4vUBCEzn1SUc6sqznScTXWUSrhS7n7\r\npsRL3DDkgz3L3K/d+bXFMGqsaSLG3f7XY04=\r\n=Zxi1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.10_1678353696661_0.9153386000523807"},"_hasShrinkwrap":false},"0.0.17-beta-0.12":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.12","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/fantom-binance.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.7.6","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.7.1","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"f1d6ee0b8a5db9c399e35caebae48376803f4c22","_id":"kana-aggregator-sdk@0.0.17-beta-0.12","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ngAkIc+aHdOACYC9AGMSDMH7p5WSgv00eJT9ha7WHuHAjCJqNpu+rMy8oQQ46ftu/TSwzV3liGR6HL7TO6ilZQ==","shasum":"54e64f289dbc7f6389149493206e6e3cd2e21eda","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.12.tgz","fileCount":107,"unpackedSize":295895,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSt1eItDL68zx4TeD/TL+NY3B8H4Af99wFxIVOOhdCGAiAuCv80o9cDzfJ8SQELbHB4690kaFmhgFJ8tvsoq+jXYw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEGd1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAKg/+MDYMHplpgegzAJQ/pxXb3zez51667UOWAkv8hf7W1kV896S0\r\nro+nfrj0k8FliXaJiF3pyPBV1h7RquRoWOtArbkoN3Yw5t+Sa49dANiBfMZa\r\nj/3K9jQ+dLLZE7tehxhOCgqNyMqF1quVkw5ko3OFbe755l2IDOn3st9cxwHB\r\n3LsXxE85NmirFasQCvvFa7fDIUje9XrfZ8ckvAgZKb/N42zOOKZ1vGn7kGuL\r\nEmm4LV/P5rHyg7xbEj3yQIv55ZkbFMgP51YuVgMfonjek7A0y3t3je6TKOzU\r\nk0+5ASmwTbvAKMHEgpbAaDi8xLdIeA+PNTIEFh3aHX/cf9l+SrAUFafY2MiH\r\n0Ie9Cu+9+/8Tfh/cTuGRVfyyMq4HhETvnhR05MQciPa1vw4u8DDMc7DD7s3a\r\n63iVH2cQzO90MpcJn+A4nAIF+jTO+NdXpHRZpl3XUWhHtVE4k+mvOK0OjShi\r\n2Hzg41NEqLC7R5/cbguNT9ouEHoqfEu1NjIPjBjziIxkDGtEkXK1LGL71Rgz\r\nrluWnyg8T0JOU5U6w0kFPY7/5gOCfNz2P9pB9StZ105zAktdaCvL+KX8d4rl\r\nEjlYs9KsBISv3CA8PLXU+DIN3OV0zaQEyfZmRqygHnmLB5k26qsDuK/dXHrh\r\nhNDNWsAbyQ8gKONp449JxZa8hjFCZjFhnF0=\r\n=2LGN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.12_1678796661158_0.7464175090407388"},"_hasShrinkwrap":false},"0.0.17-beta-0.13":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.13","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/fantom-binance.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.7.6","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.7.1","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"fed3975015ef8dc42a07c17aaac9ee7ce95201a5","_id":"kana-aggregator-sdk@0.0.17-beta-0.13","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-xDoTc8ow3pWUrz0naym+YnTMUs1DguYsGLxp8aUld7xJC4W8Cmn3ykpADFuW8cIIlnRXJgD7/YIRE8RmtylA8g==","shasum":"48683e7ea783095ddca4195823b8c14624bea60e","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.13.tgz","fileCount":107,"unpackedSize":295931,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICF3L8zyJSqLpfTuYg2T0EW749Qk4tvYcv79GsMr4TynAiEAidmqVNyu/ZhB5hTGlgEh5lDiJ/FNaSyxrEYEhZCi4xQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEJRJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmot4w//fx65K1eZweQdVJia5efEDiDn09tCMNm+VTRJJMRuj49GsxAm\r\nix8ZyR3FQd3cvou9ZKdlP2xU4S1rg4Y0yNlfrVDPEd1OtQiV1xtuSTJH4gVz\r\nYo5rnMm+p1WR6t3LKLb0iFdDVhUoMCfdZII4Q/3R60J0p2YGwYdYrm3C6/Mo\r\nY9+bsZhs+TWzWc0iFtWIkjK5oaPXayojDRvYtTv+HwV8mQPkqn6WAVlvw7xi\r\nP5u58rquieTZhyUjypuPxST+iLdXHlSqxO4HIzHlNP+mbGfeXJHha31/7PHp\r\n9/OIu/ipn4S1zjFp4YOHWvgQybKs2YSTSEysUIMSlKa/PZxyfC6T1jHAOeDA\r\n2WPFEV9mTjwJugqD3xk3y+mVN4qdj8KyjC4VMDMxloGkes+a8kQK4Vxjiq9x\r\nBwET0HOc4+Sqr6lufpWNWmX5k0LiBTdyRSkam1y+7ZkoMK05fnEs9qs66ohw\r\n8hIzKAioyO4Yctx49lSiv+Wbez5YLERk5nWXfzkKzB6QOJT84yRyPgidoBVO\r\nCE8Bi1S+gJ2iORh/7RJAsaCE6xz6ccHMjYsplXKp4dDTTwr/9n9tUmZhssN0\r\nUCmipcxxln261ukzeeLBNb3itFAaIzzdFQoAuHaC7fkT1DsS0yFYQc/MbZMs\r\nU+ROJFx9nxlArQC4QPc7yMnWnVzKRVYHdJ0=\r\n=Nn+e\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.13_1678808137518_0.39268112579352454"},"_hasShrinkwrap":false},"0.0.17-beta-0.14":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.14","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/fantom-binance.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.11","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.5.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"0dbfc1192820aa8a6c6c86881cadfb1b2b5c0dc8","_id":"kana-aggregator-sdk@0.0.17-beta-0.14","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-mZlrQe426gxu5VnLrpYUttiUKXIf/TysPg7yb1WoE63tJO6Zv0TLC9E4ww6Z94D60SeyWseGNcfcFX9JW5goZw==","shasum":"44bf0e6a574cae0029ecae85b61b9720635b4400","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.14.tgz","fileCount":93,"unpackedSize":267160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZTaE2+qq5uT51An9InnJi6ktggfrLkY7eTOiSL7yaYAiBiPa505a+WIYf6WmhzlYV7MVqTdBVZ0j/ePAIZJv7B3g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGecCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0wA/+PWGBFMfNM5SGLRAdMx9WCRCOY+02qxQlCrSgzriffdG0sN7E\r\nQUmfTd2aRX7ezH9ngdAF4s+CwmwmYr6NhiHyFM8K277LPXpBoG/HDM8LkDfA\r\nLfHmGHH91k/wfRMChV8UeStQqr2WW8OfS9PJvs7vpHIQTCtEcDkNRRGCS7vi\r\nZdCsBonmFia1nBMF4ny7zNn5+JD/X30qFFmFYrCHb8ubdpYJ/a+a3U9Pvyk7\r\nsm8EXKC6iT6gB4BfbA4z8wL9oaRtIVkmwmgaAIgqID6uw0DqcziHiX1mF183\r\nJcUFik5trlpOQtaA6NzWDAnV4js6FmBFTenmtqgy65YSSJbAXpM5Rthyft2o\r\nppNBfODvJBZXUgP/QrQMEM0oMmOaBdl7rFGJubx0LsYj/eLBRbDh+3bU7ljJ\r\nBWxgLAnUDmppEIVn0310rKyEw5vkpW5q2cJxQCOgXYyCrZrVUWeHPSFBYFPN\r\n4CtC67a5uhGddfo7IbQz7FY35QDZh+os67bStfFrJKZ2ta7SxL9ijPmIybS3\r\nAI+CijTQPWk7IEoDfJGjm9vw6IqrQlZmFpsoiWVL6ce3R+Rb3OVG/VYwZV46\r\nSk4wxJc7czHgG6Or4Zq60sRLNjzzQjNLK+YwWhVAatoZysVBPg9Nf63XakDT\r\n5OVA+wO6Skrm7QhPWYx93EFuF+50uk1D6YE=\r\n=8ghK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.14_1679419138693_0.7306728882351852"},"_hasShrinkwrap":false},"0.0.17-beta-0.15":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.15","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/fantom-binance.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.11","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.5.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"6e69c184bc5f34da8d0ec3e62fc2ed0ba7b63953","_id":"kana-aggregator-sdk@0.0.17-beta-0.15","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-k5QNaYAYwiNQF2mSZj/kMO0fTPMQf2E9y+mQcFStHCA2eutGY62m3sjTPH70ZY3a7W/uKXfZGJIBvXNByIJfKg==","shasum":"6a076b8d38e17cd9520f9d061a6b91794cc85b09","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.15.tgz","fileCount":93,"unpackedSize":268155,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlu5cLv1gzFx6p62mF7q1zZD86XBd1VwynQ5pHOXOK7gIhAJIKXbUP0zkCPXA9KMT4xCNa22SPI6tK58kuXL/OMQoR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGpbkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVyBAAmFwOonm/5UQyURjYtgYjQzWbsmeMklLd3hCbLljQYL0bbJ5t\r\nDqiUQo6/U2qIHQOB4eSnpk6NLYLwLtwrJMc8sDk2x7Edpkl5s/u9xqwA2IWZ\r\nlmBoCI8ReUFeXbn+O5WiKrMFBMDtZ9H7B16gbTPC9aaVT1seRy33lOeuHJL6\r\nLwRbw2tgsvnbbSLZZoj0Gmss1zNqqD4jTCzRbow1yyI/r1iQfIrJQOWGTfIW\r\neljDDmR6jjWtrWD84jKHWISccd81bFzTsG7M0/42ZJ9sC2MZovauZLnqfG5r\r\nZUW+StsyUkYTaN18UqkMp53EknjUSc60eZacVb2fky5R9t+O9SJNeId2WNzm\r\nWR1Thbgc2NIrrKkBs/xm6WqkEwf16cGyj10XVXiKwvnsm+WwsTsbxC4/QjQX\r\nfNSLborSE4IWSE+SOgu99Fj3RWPsNSZXCvCemhOVhiDDVFV0EZyi5kFnHrAc\r\n8pYxh707hD5irOffXbEvnX6zdf4tJoAIOa6h7B1cZSKGYwZv9mU1vz4xI6B0\r\nepTAYtvX8IaUsuhbfXrNzva4fFJbgThqMh1vvAXWcqq1BdxumdMk7T5g+CNQ\r\nQSY3lw9Zdx2/ZVpOMl3Nprw2LRxbybIQpmML7suE+Oofi1x3iDNfwgewBha3\r\nEVqFh199i43kX37jAKA4+GaHbLXdUKCq8iM=\r\n=hCUl\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.15_1679464164019_0.9667168576505891"},"_hasShrinkwrap":false},"0.0.17-beta-0.16":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.16","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/fantom-binance.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.11","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.5.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"148325451013b97332fad5bf3b5d3e1f88e63ab2","_id":"kana-aggregator-sdk@0.0.17-beta-0.16","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-tOywl0hdvIBuYHuxxIOU12DU4pbeejuaONpcd6wUlDGd75h6xEwdmh/fMtwobYHDqBa4EdBOwYeZ6jKrc7UUjw==","shasum":"7d2cebfcc1cca39bbf8cb52b6d88bc00cba1af46","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.16.tgz","fileCount":93,"unpackedSize":263402,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+TOeV6hArDvzE1MZvB8gUYR6BMr+J9+1nL4oGCN2bCwIhANrfTG2bsIJ5GqEs1twHL0BXOsA26KWUQaHn0tyYv3nn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGtErACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2/g/+L7t7uDL1uK8stzL80zc632PmaVdafZbKhb3Gucrf52bVT/xM\r\nxuYcOx+yrWoRJ+s/xDFdx9Bvjca6BfgYFGRmGY6G31+BzBypJSSKii1F+2CF\r\n+lQFqQr8FDqGVn4qeDYvgwfvYssrI6hmE6vReIO7UoE+GKOE2VJBcms/Lwll\r\nxPviTZ50NhkMZ2qj8YM3m6+zkmMDUGrfF3hCc0UTRsicvJ5V6riZHuJrxrYQ\r\nIcYNjBEMkq2ay/9XANoViXApIWU5dEZ0iDZmP2+u2b8Fi3E+JDZ9pc/zPDfn\r\nDzI57UwQvtrWOd348KSpREEf1v/vRndM8SkBrK6Vx7iXDRkY0yXAcmbpYKfk\r\nxp7Rv4fWdmluFqi2LL9iVyIFbHVoNXaqKHbEJv7iwcCN6UXt/M/VnSLiMSPY\r\nl5jVM0Z7S5BtNkIeWjID1MP4Y04ZFG+r6NMZtfBHC3JNL+3dqQziTb/8d2go\r\nWo6PfVtbociK+fQVztwdq/OeZGt+pXUYEq0yLgzNuusmnGoqw2wps8se/jyp\r\nAqKREJzFVtg/B+QDpkJpRtxpQ2/x3vsNGSnJTWw44jzakgshitrUDzLIjdnt\r\nZd83wuxw4m5wh0EJHOXbhYjnGUcVvcLsmx/H7w5vg5IJ/zajl2RPIQIkwT/V\r\nWchahunoyezNtmqfbkFziFJzC/CVZDb/oGU=\r\n=1DZy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.16_1679479082975_0.2467507736138328"},"_hasShrinkwrap":false},"0.0.17-beta-0.17":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.17","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/fantom-binance.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"39a57c08ca6dfc4e8b5c42c5faad1aaa6b3d8ea6","_id":"kana-aggregator-sdk@0.0.17-beta-0.17","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-OlOsFaaH7GKANU4r8otK5zPu/knK80c3neNl2zcPtoXuckvPjfbrxxdlWSgDLEY6YWEEm9QBDFGeqDZKBC/yjw==","shasum":"066d10718edaf836f45866b2dd4a017da0c7b530","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.17.tgz","fileCount":50,"unpackedSize":121262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDo0Pk5JTQSMrvz0JIKJlU8xWdqQF2Ot6jwwJQbNaZL7QIhANvjcoRKSlbi2QrLnlBEihyhdOOV/23QgFGyn9ElGedI"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHFa1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqS7A//YFn1/NoXlU8oZU0R1P5fimpk15R1pHzFUYlTYsRiiFoInjF7\r\nYai1Zg35W39/HRNUllfAv8p/D4Qw55WUDXuKT1nwNEaq0ws2nQsVOH+43wtW\r\nBvVIbRvj88khpLb6HMuqFTp0XjJkXrLKer5OIPAJdzVO9esYE6N9ey7dlQxS\r\nEkjIa9Gcqdf3wuEt9alH4SNoy2w4TmQL8Mq7PBc8f8dWS9JQiGnAxnVLy/4h\r\n7PaAKaR4NEX19/OY3z1udUjQ1uArLfHMJ/7MvLD5QqRtDx6Sx/eR7xN/H/Xx\r\nTPwcNqcPXhmp2FEAA+kZtxNLzzLxi5nCR/2SUAtIz3QeBAzz0sr6T10mfz+W\r\n3he4hb3bXty1BiZkbn6StgyXRQj/rOHEFsqfDBb50rftMG2iuXvsNQOrVnIW\r\nwY3ztVP6b+ynevbJbGbAFd859KOYoff661NAIPRu1m+2dXF6OEFYGkKBxjt1\r\n1zGNPbekTRuOFMVgBkwldn3Dj5FOywCrBGLrOXiMwwGsos56005x1qH4ZO7q\r\nihqn0vGFWWArYKHBk9T+WQAVoDhMusAcoxKFw0Wux2vw+gDoBVxru9nwZ1yv\r\n0VjAwMhskxgv5jO2/pzh8UR6p5jL2/Dj91/sAN9a2+SSThoik64fXhTeLafS\r\nVRKA3iP96CIH3W8FwWzFIiDiwwkmrEu2lt0=\r\n=mHDz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.17_1679578805678_0.5111654802546459"},"_hasShrinkwrap":false},"0.0.17-beta-0.18":{"name":"kana-aggregator-sdk","version":"0.0.17-beta-0.18","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin = '0x1::aptos_coin::AptosCoin'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 1000\n  const slippage = 5\n  const chainId = kanaChainIdList.aptos\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n\n  console.log('getting swap routes for Aptos .....')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  const optimalRoute = routes.data[0]\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimalRoute,\n    '' //will be fixed in next version\n  )\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n","readmeFilename":"README.md","gitHead":"b2b3f0fe906b5ea13226e3faef76c71aa6a0307f","_id":"kana-aggregator-sdk@0.0.17-beta-0.18","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-w1eeHCfu0ePFwzfTMiLaijud+dsUdeouMaZTvCvsFGD5L37+rqWBpG6XpFquIK9/p+VI9lion7VY2ohJQj8Jcg==","shasum":"4fc15a918af9b514d97ad530c819eac5a66cb3d2","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.17-beta-0.18.tgz","fileCount":50,"unpackedSize":123895,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGp+8iy6Qd1XialAuPMB+1aiVgdnJHaZZ9Z0IZqmnQ4KAiEA/2Qw0hmsgLTgD0sqMvkSW9UBFdVynij9CUe9kK/cs8k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIU7VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtEg/7BguAlV32OoR46wfdllbnlPu2Dphr0o8nYO7S3UewhBHI/G+w\r\n/znIrb3GXfyYyR4FyAKQ8PiJWpG4B1uYXVVdVfxJ3jZ5ymejzwmDorKePx4h\r\nbhaXVPTr8FkKRpKsFJ0q/SbtmDbxShKvFI48divYd60DOaF+glVeqzncBdqr\r\nnjslUn8QaDBAHb9Cn5wMR7r/6xqcwMh4M6PzVgnU3C4T4RR6aBVSh2Y4g1un\r\nv+4LUFOZpA4EGvc93/pGLqguit5JDfzn2lNC7iF3aAoL5kqIWhTZxibe9ZLl\r\nXJs8iQS4kDtN2yF8LTfrPt3NdyJz5GKEoJmwWfFmegGKKnThtZfpnXiRSNq5\r\n1ml4EmJOJqWSkXjG92k3LRvnRk6oKCuZVsHodD8SH5BUzapRrrE7LtHULI8M\r\n18PLfKSgFjwkmbdfTjdB+adX8LztPpKgcXasXJjUeGl09aQfqAmb4F0pTBb7\r\nzX7ya/KJpnRaVLs2gJBpI5v5tt0jEe6WF2NYx0FcjOwPZ/nZCZKE1fqYM8A3\r\nhC0UWy6ZegjhUupFqJzbqG8uWilnu1uxkuijvadEIaUMtTasneYTPrnlkp/M\r\n4zXG0448nm6wOm/pVNKfvGDAWRwh9A2ZcNVZiVXUIu/P5Bz9fDr2/giriaYE\r\nIUZzwV4T1CP5ff0K9jexjST9jzvoASVNVgI=\r\n=4rhX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.17-beta-0.18_1679904469493_0.048983876049965014"},"_hasShrinkwrap":false},"0.0.18":{"name":"kana-aggregator-sdk","version":"0.0.18","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"latest","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"gitHead":"9e41ab7fb2a3d244cb143159910483e2ff451e5d","_id":"kana-aggregator-sdk@0.0.18","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-jGLgg4E4n2SmaOFocxmGSdFnk1LGN27LW3WlaLg32M2z1fjzQf2AsOZR1GhtYXgGNZCQM5vEiJyHcSqYrqU65Q==","shasum":"31167630f2728dd9e9a77e1d75d3ff0e961fe672","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.18.tgz","fileCount":50,"unpackedSize":128970,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBOpFfwshjySm0g12RmKDVGnJFCRLAbMol4wuWpqb3BJAiEAzsZSNXk0sV/TiGB2LbHe8Yo29KBCWI9bkkw09uCOj/Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIXE0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqKw/+Peo51+jPG/KekSFUduyVBPQ4xlgxoJqxGRO0aEWqEws+JXS8\r\nZa6nRb3wck/NLiivzmBxVFZfSQDQdGIsoWr2IDDXysF3qHhE4U2yvhxHY1t5\r\nc2PnBglWWfEE5sOwUrjbI2CeO/UVPO4gEkd2aL1a5vRgCEvyz0OhuGuqfw+F\r\nhwZH4ssZW0M+m4RlzAp4RAvE2YPcfjPW+7nDTZ6hSe0UjJIdt2e8Jo7KgP90\r\nplWQsjGJZbObdBOEpa2WYyUMdshcGhuJcqnfyJ4Svkh6yw/2oLifDTG6QlSd\r\nPpnXu8vOqoABd66PHhrU27UIXYCp/z/5K/kb8Jn8RtR34n4+Gpc2NlN5GpY0\r\nsOqq5sGfqtA0eWF6gMyE9iXhP09UiWtidtPM9+/ShsCDfxtiIIZCvCIkCwJ/\r\nS2EQdlfpFEEj4KY9D+CmlwdliM5nQTFTd0z+iqjRGQu5ptWoF38LclPYA4c8\r\ncIHmowu7NB20uN+Jzd6w8DvU/dTqKMWHxsv41ZVtD2lhfGwHQ6XxcLHVuf1A\r\nXgS0hqEwZtS62N/czvAopI1X742XWjpMUMJXfRxWoTQAMHs/ZOyo/gYu6RsC\r\nZAT/Yv2+5774PXBUo2Tl6ItgsVtbBRSBytU1UemjRFw1YjfyeuqT3ABAIxbu\r\nH1PdscfnrirghvNZKBrrhL4042l7ky/tOII=\r\n=dZp7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.18_1679913268630_0.6800522527796828"},"_hasShrinkwrap":false},"0.0.18-beta-0.1":{"name":"kana-aggregator-sdk","version":"0.0.18-beta-0.1","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from 'kana-aggregator-sdk'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin =\n    '0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 100\n  const slippage = 5\n  const chain = kanaChainIdList.aptos\n\n  console.log('getting swap routes for Aptos .....')\n\n  //also you can add filter options if needed\n  const routes = await getSwapQuote(\n    apiKey,\n    chain,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    '0xc7cac4b062a5c56d86651adb2d04ed4d7456786b8fe3a084072f8fe741273907',\n    undefined,\n    undefined,\n    {\n      providers: [AmmProvider.Pontem, AmmProvider.Aux],\n    },\n    Environment.PROD\n  )\n\n  const optimalRoute = routes.data[0] as ParseAptosRoute\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    apiKey,\n    chain,\n    optimalRoute,\n    account.address().toString(),\n    AptosTxType.EntryFunction,\n    undefined,\n    undefined,\n    Environment.PROD\n  )\n\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n\n### crossChain (APTOS - POLYGON)\n\n```typescript\n  /**\n * NOTE : This is just a basic example Implementation , Please Implement the SDK according to your usecases\n */\nimport {\n  getQuotesforCrossChainSwap,\n  getBridgeinstruction,\n  getClaimSwappedInstruction,\n  kanaChainIdList,\n  Environment,\n  ParseCrossChainQuote,\n  getVaaForWormholeAptos,\n  AptosTxType,\n  CheckAllowance,\n  AmmProvider,\n} from 'kana-aggregator-sdk'\nimport * as aptos from 'aptos'\nimport { ethers } from 'ethers'\nimport 'dotenv/config'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\n\nimport { crosschainClaimSwapOnEvm } from 'kana-aggregator-sdk'\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst privateKey = process.env.EVM_PRIVATE_KEY || ''\nconst polygonRPC = `https://polygon-mainnet.g.alchemy.com/v2/${process.env.POLYGON_KEY}` //Polygon\nconst provider = new ethers.providers.JsonRpcProvider(polygonRPC)\nconst signer = new ethers.Wallet(privateKey, provider)\nconsole.log('signer address', signer.address)\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\nconsole.log('account', account.toPrivateKeyObject())\nconst apiKey = process.env.KANAAPI_KEY || ''\n\nconst transferFromAptosToPolygon = async () => {\n  //   //Required paramameters to be passed to get quote for APTOS to SOLANA\n  const swapRequestParams = {\n    apiKey: apiKey,\n    isCrossChain: true,\n    sourceChainId: kanaChainIdList.aptos,\n    targetChainId: kanaChainIdList.polygon,\n    sourceToken: '0x1::aptos_coin::AptosCoin',\n    targetToken: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n    inAmount: 1000,\n    slippage: 1,\n    networkId: 1,\n  }\n  //   // error handling requited\n  const swapQuotes = (\n    await getQuotesforCrossChainSwap(\n      swapRequestParams.apiKey,\n      swapRequestParams.sourceChainId,\n      swapRequestParams.targetChainId,\n      swapRequestParams.sourceToken,\n      swapRequestParams.targetToken,\n      swapRequestParams.inAmount,\n      swapRequestParams.slippage,\n      undefined, //network ID can be undefined (currently no support for multiple networks)\n      {\n        providers: [AmmProvider.Pontem, AmmProvider.Aux],\n      },\n      Environment.DEV\n    )\n  ).data[0] as ParseCrossChainQuote\n  console.log('AptosToPolygon swapQuotes', swapQuotes.targetRoute)\n  const bridgeRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    sourceAddress: account.address().toString(),\n    targetAddress: signer.address,\n  }\n  let isAllowed = false\n  const allowance = await CheckAllowance(\n    3,\n    swapQuotes.targetBridgeToken,\n    signer.address\n  )\n  console.log('target allowance polygon ', allowance)\n\n  if (Number(allowance) >= Number(swapQuotes.bridgeAmount)) {\n    isAllowed = true\n  }\n  const bridgeInstruction = await getBridgeinstruction(\n    bridgeRequestParams.apiKey,\n    bridgeRequestParams.crossRoute, //this is just to handle type conversions will be fixed in upcoming version\n    bridgeRequestParams.sourceAddress, //this has to be a valid and active solana address\n    bridgeRequestParams.targetAddress, //this has to be a valid and active aptos address\n    undefined,\n    isAllowed,\n    Environment.DEV\n  )\n  console.log({ bridgeInstruction })\n  //Bridge instruction has to be executed in the respective chains based on their Chain ID's\n  const serializedInstruction = bridgeInstruction.data.transferInstruction\n  const transferHash: any[] = []\n  for (let i = 0; i < serializedInstruction.length; i++) {\n    if (serializedInstruction[i].type == AptosTxType.BcsSerialized) {\n      const transferSerializedPayload =\n        aptos.TxnBuilderTypes.RawTransaction.deserialize(\n          new aptos.BCS.Deserializer(\n            new Uint8Array(bs58.decode(serializedInstruction[i].transaction))\n          )\n        )\n\n      const swapTxn = await client.signTransaction(\n        account,\n        transferSerializedPayload\n      )\n      const submitSwapTxn = await client.submitTransaction(swapTxn)\n      transferHash.push(submitSwapTxn.hash)\n    }\n  }\n  const vaa: Uint8Array = await getVaaForWormholeAptos(\n    transferHash[transferHash.length - 1],\n    client\n  )\n  console.log('vaa', vaa)\n\n  const claimRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    targetAddress: signer.address,\n    vaaBytes: vaa,\n  }\n  const claimInstruction = await getClaimSwappedInstruction(\n    claimRequestParams.apiKey,\n    claimRequestParams.crossRoute,\n    claimRequestParams.targetAddress,\n    claimRequestParams.vaaBytes,\n    undefined,\n    undefined,\n    Environment.DEV\n  )\n\n  const tx = await crosschainClaimSwapOnEvm(claimInstruction, signer, vaa)\n  console.log(tx)\n}\n\ntransferFromAptosToPolygon()\n```","readmeFilename":"README.md","gitHead":"6475913ece0e64df871b7c1c32399a667298fec7","_id":"kana-aggregator-sdk@0.0.18-beta-0.1","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-p8A0xcHBTOoFLXM9koZOnY1D9ra/RrXHHDBv4dH7FTLB5/YmmsIvZSC7ElLIFYc3Y+viCjdj/p8NkxxKE0GTog==","shasum":"5adfeb73da48e82f05d4da96cba8a70b3a2224bd","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.18-beta-0.1.tgz","fileCount":50,"unpackedSize":129172,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCt412neX8S0sOjMFeCwnNyXx8P6njxiW4nJHvCSsTX9wIhANgb3Eht5Q8tduvvDIWZd7mNt1ytbNf/e/nAGtgeNN+2"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkKn9RACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQCw//R3WRlFLkc8qUA9aTvKFlLrnwwvFHDKDruP6osK+j9A5SUYxK\r\nYxu463iRye2soZZtHbFE8u2E9k78NK8kMXATjZmew89ZtGe0Hs+tF7DQKIKX\r\nWahxAVoCPQ9dMCQnmy9DGbdbuJM3MMiG/9rmwBbkGcmqrnO3RqhWobBBuTsi\r\n51wMnXwHpA1s0BTuim9OPE3D/U1X0dDo9FzOzakliAhr8HsmI2Y4Tns6UhX7\r\nyv7yB+I0jWop9vJXBQHcCXkrq7W7Lde46XLPi8bsQnM2T8DyxfX1NLzMqTFT\r\nwlCVDyGItnd3gfkrBWQMaryV+7qow4cSkpDOCBzpousuHtNsR19j7GsIqzMp\r\no3ws6ig1nCGck13cE5q+UQUs5BFA6YuRf9SZ81Y/YKdJlg1hPG7aCAoBOmao\r\nTnLeUVvdKT9ltMYlHtG/asgmwzBo1SvqmMXpNk5I6Rp/bAvtYN9cLn/0yGuN\r\nD6dxB7fGnyKX6WEfq76nucBuJQ+nPMY3bVG+UQCaTDQtjWXNRIb+1qx4eKIh\r\nskFbDTMeuIfAbaFkhV1fXBbKSpShVnXmak10K4GdhWBkNeJt5KOBoQYY4+Di\r\nsXwa3TW+N9nJxzEOfakg96BFQXHrPtakK1GE++FSChfynQcpUmWde0uTTQPH\r\nJ9Cm4emESj3t68va9bLO52ZeJO4RkrdSEtk=\r\n=CFkG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.18-beta-0.1_1680506705207_0.45005775437023976"},"_hasShrinkwrap":false},"0.0.18-beta-0.2":{"name":"kana-aggregator-sdk","version":"0.0.18-beta-0.2","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from 'kana-aggregator-sdk'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin =\n    '0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 100\n  const slippage = 5\n  const chain = kanaChainIdList.aptos\n\n  console.log('getting swap routes for Aptos .....')\n\n  //also you can add filter options if needed\n  const routes = await getSwapQuote(\n    apiKey,\n    chain,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    '0xc7cac4b062a5c56d86651adb2d04ed4d7456786b8fe3a084072f8fe741273907',\n    undefined,\n    undefined,\n    {\n      providers: [AmmProvider.Pontem, AmmProvider.Aux],\n    },\n    Environment.PROD\n  )\n\n  const optimalRoute = routes.data[0] as ParseAptosRoute\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    apiKey,\n    chain,\n    optimalRoute,\n    account.address().toString(),\n    AptosTxType.EntryFunction,\n    undefined,\n    undefined,\n    Environment.PROD\n  )\n\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n\n### crossChain (APTOS - POLYGON)\n\n```typescript\n  /**\n * NOTE : This is just a basic example Implementation , Please Implement the SDK according to your usecases\n */\nimport {\n  getQuotesforCrossChainSwap,\n  getBridgeinstruction,\n  getClaimSwappedInstruction,\n  kanaChainIdList,\n  Environment,\n  ParseCrossChainQuote,\n  getVaaForWormholeAptos,\n  AptosTxType,\n  CheckAllowance,\n  AmmProvider,\n} from 'kana-aggregator-sdk'\nimport * as aptos from 'aptos'\nimport { ethers } from 'ethers'\nimport 'dotenv/config'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\n\nimport { crosschainClaimSwapOnEvm } from 'kana-aggregator-sdk'\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst privateKey = process.env.EVM_PRIVATE_KEY || ''\nconst polygonRPC = `https://polygon-mainnet.g.alchemy.com/v2/${process.env.POLYGON_KEY}` //Polygon\nconst provider = new ethers.providers.JsonRpcProvider(polygonRPC)\nconst signer = new ethers.Wallet(privateKey, provider)\nconsole.log('signer address', signer.address)\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\nconsole.log('account', account.toPrivateKeyObject())\nconst apiKey = process.env.KANAAPI_KEY || ''\n\nconst transferFromAptosToPolygon = async () => {\n  //   //Required paramameters to be passed to get quote for APTOS to SOLANA\n  const swapRequestParams = {\n    apiKey: apiKey,\n    isCrossChain: true,\n    sourceChainId: kanaChainIdList.aptos,\n    targetChainId: kanaChainIdList.polygon,\n    sourceToken: '0x1::aptos_coin::AptosCoin',\n    targetToken: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n    inAmount: 1000,\n    slippage: 1,\n    networkId: 1,\n  }\n  //   // error handling requited\n  const swapQuotes = (\n    await getQuotesforCrossChainSwap(\n      swapRequestParams.apiKey,\n      swapRequestParams.sourceChainId,\n      swapRequestParams.targetChainId,\n      swapRequestParams.sourceToken,\n      swapRequestParams.targetToken,\n      swapRequestParams.inAmount,\n      swapRequestParams.slippage,\n      undefined, //network ID can be undefined (currently no support for multiple networks)\n      {\n        providers: [AmmProvider.Pontem, AmmProvider.Aux],\n      },\n      Environment.DEV\n    )\n  ).data[0] as ParseCrossChainQuote\n  console.log('AptosToPolygon swapQuotes', swapQuotes.targetRoute)\n  const bridgeRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    sourceAddress: account.address().toString(),\n    targetAddress: signer.address,\n  }\n  let isAllowed = false\n  const allowance = await CheckAllowance(\n    3,\n    swapQuotes.targetBridgeToken,\n    signer.address\n  )\n  console.log('target allowance polygon ', allowance)\n\n  if (Number(allowance) >= Number(swapQuotes.bridgeAmount)) {\n    isAllowed = true\n  }\n  const bridgeInstruction = await getBridgeinstruction(\n    bridgeRequestParams.apiKey,\n    bridgeRequestParams.crossRoute, //this is just to handle type conversions will be fixed in upcoming version\n    bridgeRequestParams.sourceAddress, //this has to be a valid and active solana address\n    bridgeRequestParams.targetAddress, //this has to be a valid and active aptos address\n    undefined,\n    isAllowed,\n    Environment.DEV\n  )\n  console.log({ bridgeInstruction })\n  //Bridge instruction has to be executed in the respective chains based on their Chain ID's\n  const serializedInstruction = bridgeInstruction.data.transferInstruction\n  const transferHash: any[] = []\n  for (let i = 0; i < serializedInstruction.length; i++) {\n    if (serializedInstruction[i].type == AptosTxType.BcsSerialized) {\n      const transferSerializedPayload =\n        aptos.TxnBuilderTypes.RawTransaction.deserialize(\n          new aptos.BCS.Deserializer(\n            new Uint8Array(bs58.decode(serializedInstruction[i].transaction))\n          )\n        )\n\n      const swapTxn = await client.signTransaction(\n        account,\n        transferSerializedPayload\n      )\n      const submitSwapTxn = await client.submitTransaction(swapTxn)\n      transferHash.push(submitSwapTxn.hash)\n    }\n  }\n  const vaa: Uint8Array = await getVaaForWormholeAptos(\n    transferHash[transferHash.length - 1],\n    client\n  )\n  console.log('vaa', vaa)\n\n  const claimRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    targetAddress: signer.address,\n    vaaBytes: vaa,\n  }\n  const claimInstruction = await getClaimSwappedInstruction(\n    claimRequestParams.apiKey,\n    claimRequestParams.crossRoute,\n    claimRequestParams.targetAddress,\n    claimRequestParams.vaaBytes,\n    undefined,\n    undefined,\n    Environment.DEV\n  )\n\n  const tx = await crosschainClaimSwapOnEvm(claimInstruction, signer, vaa)\n  console.log(tx)\n}\n\ntransferFromAptosToPolygon()\n```","readmeFilename":"README.md","gitHead":"344c25ddc5cc6b6d869f17bef6be5616256a8445","_id":"kana-aggregator-sdk@0.0.18-beta-0.2","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-Y9mbL/B4S04GKZ9hYC2vxZ/fbFsMAtTez5QwMGCEm+TT2vl2N1vpnleFRNTJpO8GoLQKFKKWlnRRhbCXBuqcSQ==","shasum":"353ca57b4baca481aff8608cac19ae8923b910ab","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.18-beta-0.2.tgz","fileCount":50,"unpackedSize":128765,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBQqLmwUZpUwZG9pBivCDlSgO1MUyIfFtnx+xgF9de0EAiEAw0WPx9z5+ct9P5BiSDvwjPg/kJclwflAnxk0vwsXKAA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkK/ZmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrIxQ//UB1Se4AEVy9O4HSaMyXQ+B25uRUvOF7SlBp561pDpw1E/av7\r\nRXccKjdBUgjdeGMpi4so5V0R2jeSW9k1dEFOA9zCN4rYhoOrU/Zl1kmmK4eG\r\nktP7KgjbTp5De9ALedIkDZr2eV+qKHKIz2EvcAjfKLo43MKjmILOKojYSId3\r\nHTXjRw1ToN1/w5N3pX8llphwfp1Bzohg3XQvhkfUkmMqxVrVLt6U7MkyrvJs\r\n9mgt9fXDh7BXk0KrmQboS4MCPb4x3Peq1oU0N84w2L0nE0WgxAuM7O6meGjJ\r\nXCcVK5VLfJCFZEDfzEGRS05yCvQPFxf9wc9p6jiPODM2Qc52aIcLDt2pWcmI\r\nbyRduKlB5tugKF3jvAbtMwPi/cuLILnJ2c5H7wqrmoE6xmtRyzrreMnDQp4i\r\nD0BBDyux53lYI7bJUDp5xlEI4AQ21p85SVigemzzxsHeK3gPVDGVkZ/68Chm\r\n0Kt9lYriv6q+ZwDqMWGL+tCSbwlqOH/t6BW+Uo4fqQJ8RZUKAx7zn1LFmA9Y\r\nZIFoOvzhMG90G3/EZ6pAN0ApMkbbcabbeq+YOyl+qD1CwG7gaqLNK+n+NShD\r\nvqcdxqwlIQdhc7ihBpFjrfJyuAoCeJ0WtZNHmd0vyupoGBjIi3YcR9OdfV2P\r\nwUBKVKw0cipga+gnbFCjv4jE34hwDNf4gcU=\r\n=Cf7+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.18-beta-0.2_1680602726347_0.21207373832536391"},"_hasShrinkwrap":false},"0.0.18-beta-0.3":{"name":"kana-aggregator-sdk","version":"0.0.18-beta-0.3","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2","node-fetch":"^2.6.9","npm":"^8.19.2","sha3":"^2.1.4"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from 'kana-aggregator-sdk'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin =\n    '0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 100\n  const slippage = 5\n  const chain = kanaChainIdList.aptos\n\n  console.log('getting swap routes for Aptos .....')\n\n  //also you can add filter options if needed\n  const routes = await getSwapQuote(\n    apiKey,\n    chain,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    '0xc7cac4b062a5c56d86651adb2d04ed4d7456786b8fe3a084072f8fe741273907',\n    undefined,\n    undefined,\n    {\n      providers: [AmmProvider.Pontem, AmmProvider.Aux],\n    },\n    Environment.PROD\n  )\n\n  const optimalRoute = routes.data[0] as ParseAptosRoute\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    apiKey,\n    chain,\n    optimalRoute,\n    account.address().toString(),\n    AptosTxType.EntryFunction,\n    undefined,\n    undefined,\n    Environment.PROD\n  )\n\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n\n### crossChain (APTOS - POLYGON)\n\n```typescript\n  /**\n * NOTE : This is just a basic example Implementation , Please Implement the SDK according to your usecases\n */\nimport {\n  getQuotesforCrossChainSwap,\n  getBridgeinstruction,\n  getClaimSwappedInstruction,\n  kanaChainIdList,\n  Environment,\n  ParseCrossChainQuote,\n  getVaaForWormholeAptos,\n  AptosTxType,\n  CheckAllowance,\n  AmmProvider,\n} from 'kana-aggregator-sdk'\nimport * as aptos from 'aptos'\nimport { ethers } from 'ethers'\nimport 'dotenv/config'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\n\nimport { crosschainClaimSwapOnEvm } from 'kana-aggregator-sdk'\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst privateKey = process.env.EVM_PRIVATE_KEY || ''\nconst polygonRPC = `https://polygon-mainnet.g.alchemy.com/v2/${process.env.POLYGON_KEY}` //Polygon\nconst provider = new ethers.providers.JsonRpcProvider(polygonRPC)\nconst signer = new ethers.Wallet(privateKey, provider)\nconsole.log('signer address', signer.address)\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\nconsole.log('account', account.toPrivateKeyObject())\nconst apiKey = process.env.KANAAPI_KEY || ''\n\nconst transferFromAptosToPolygon = async () => {\n  //   //Required paramameters to be passed to get quote for APTOS to SOLANA\n  const swapRequestParams = {\n    apiKey: apiKey,\n    isCrossChain: true,\n    sourceChainId: kanaChainIdList.aptos,\n    targetChainId: kanaChainIdList.polygon,\n    sourceToken: '0x1::aptos_coin::AptosCoin',\n    targetToken: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n    inAmount: 1000,\n    slippage: 1,\n    networkId: 1,\n  }\n  //   // error handling requited\n  const swapQuotes = (\n    await getQuotesforCrossChainSwap(\n      swapRequestParams.apiKey,\n      swapRequestParams.sourceChainId,\n      swapRequestParams.targetChainId,\n      swapRequestParams.sourceToken,\n      swapRequestParams.targetToken,\n      swapRequestParams.inAmount,\n      swapRequestParams.slippage,\n      undefined, //network ID can be undefined (currently no support for multiple networks)\n      {\n        providers: [AmmProvider.Pontem, AmmProvider.Aux],\n      },\n      Environment.DEV\n    )\n  ).data[0] as ParseCrossChainQuote\n  console.log('AptosToPolygon swapQuotes', swapQuotes.targetRoute)\n  const bridgeRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    sourceAddress: account.address().toString(),\n    targetAddress: signer.address,\n  }\n  let isAllowed = false\n  const allowance = await CheckAllowance(\n    3,\n    swapQuotes.targetBridgeToken,\n    signer.address\n  )\n  console.log('target allowance polygon ', allowance)\n\n  if (Number(allowance) >= Number(swapQuotes.bridgeAmount)) {\n    isAllowed = true\n  }\n  const bridgeInstruction = await getBridgeinstruction(\n    bridgeRequestParams.apiKey,\n    bridgeRequestParams.crossRoute, //this is just to handle type conversions will be fixed in upcoming version\n    bridgeRequestParams.sourceAddress, //this has to be a valid and active solana address\n    bridgeRequestParams.targetAddress, //this has to be a valid and active aptos address\n    undefined,\n    isAllowed,\n    Environment.DEV\n  )\n  console.log({ bridgeInstruction })\n  //Bridge instruction has to be executed in the respective chains based on their Chain ID's\n  const serializedInstruction = bridgeInstruction.data.transferInstruction\n  const transferHash: any[] = []\n  for (let i = 0; i < serializedInstruction.length; i++) {\n    if (serializedInstruction[i].type == AptosTxType.BcsSerialized) {\n      const transferSerializedPayload =\n        aptos.TxnBuilderTypes.RawTransaction.deserialize(\n          new aptos.BCS.Deserializer(\n            new Uint8Array(bs58.decode(serializedInstruction[i].transaction))\n          )\n        )\n\n      const swapTxn = await client.signTransaction(\n        account,\n        transferSerializedPayload\n      )\n      const submitSwapTxn = await client.submitTransaction(swapTxn)\n      transferHash.push(submitSwapTxn.hash)\n    }\n  }\n  const vaa: Uint8Array = await getVaaForWormholeAptos(\n    transferHash[transferHash.length - 1],\n    client\n  )\n  console.log('vaa', vaa)\n\n  const claimRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    targetAddress: signer.address,\n    vaaBytes: vaa,\n  }\n  const claimInstruction = await getClaimSwappedInstruction(\n    claimRequestParams.apiKey,\n    claimRequestParams.crossRoute,\n    claimRequestParams.targetAddress,\n    claimRequestParams.vaaBytes,\n    undefined,\n    undefined,\n    Environment.DEV\n  )\n\n  const tx = await crosschainClaimSwapOnEvm(claimInstruction, signer, vaa)\n  console.log(tx)\n}\n\ntransferFromAptosToPolygon()\n```","readmeFilename":"README.md","gitHead":"d7f37e6c85dcd83567380c91b3fc76a8a72fda4d","_id":"kana-aggregator-sdk@0.0.18-beta-0.3","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-JNgOoE6/85qjU7wy6xzCVBBJ3Eur6qYsJqnRjKwmo+8U3X/J2Q+sJU52koxx5kDKtvRN+j1EmP1TgNUPksCYOA==","shasum":"f78d7cd97c6d0df8bf05ca773a13a08b306c2996","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.18-beta-0.3.tgz","fileCount":50,"unpackedSize":128866,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFB2nciN43oHs5vWRFT4BeS16uHZANCFySYTS5qJwIiQAiEAs+gE5MKGhETZxJ8i41ETOr651CNzTwon+w2GOY6YrjQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLsyUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJjg/+OM6AWteDNJkZcUZhU6768Jra2aIUSHM9dnpNf3Oj4oG6Y+Ed\r\nzffJB+VflqqrWEHoxHQvOMuflz6jilVRzswA8Is5GfLNoE/iLghCN9H2QUCy\r\n76PmvdHKVpTCcMAFAi56CY+71FAfDwOWSgAX8L33woBDSXLMZx3ew6HJG6uf\r\nc8j7M7wrmQx9IvgpDpEkpaN3X2opa5MpeErS/FmxKvFLebstPvB5OY45ySp/\r\nv97ppzPYOMZyTIxgwOdIlPHIoJdH84SXMr8kt0x4TqufoQRqY3+ALwIkCA8f\r\n/VtOcYBrnrmCsTP8LdI9jjB2Ky4bJxrRVlkmJdRWdLYUpVgWTwpAkfBbxVQ9\r\nT7Onn1cmTMHkm01NzAdVYm7n8yGK63etdkYnU2WVnR88ORAvHRcJYmlYuySO\r\nm2g+aNMGe/RYEjoH0akUQlI3hjf2Zqaezj/VfJ6waZnpdXd+pxHf17mqX1qu\r\najiKkqqLuNEjNsWYi3/T4GKl7o1Bi1RamQCpXclrpbyyNZT79giAML9XB8O+\r\nN2oMG5YxciqfQQZc/vKN8cWk8kp/ocfWBScojA+Mcy4Jf6lTO/cYoC0Si6ML\r\n74PIiIJuQjHnlgYklAMJlMZqPzh2FGfoKr57Zzsqqt+vBMJQvF3f8vfaflLY\r\nw2by61zNKWVyX+tNOCoJB4d6Smeig0F8S4I=\r\n=styM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.18-beta-0.3_1680788628120_0.7162735257366906"},"_hasShrinkwrap":false},"0.0.19":{"name":"kana-aggregator-sdk","version":"0.0.19","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from 'kana-aggregator-sdk'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin =\n    '0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 100\n  const slippage = 5\n  const chain = kanaChainIdList.aptos\n\n  console.log('getting swap routes for Aptos .....')\n\n  //also you can add filter options if needed\n  const routes = await getSwapQuote(\n    apiKey,\n    chain,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    '0xc7cac4b062a5c56d86651adb2d04ed4d7456786b8fe3a084072f8fe741273907',\n    undefined,\n    undefined,\n    {\n      providers: [AmmProvider.Pontem, AmmProvider.Aux],\n    },\n    Environment.PROD\n  )\n\n  const optimalRoute = routes.data[0] as ParseAptosRoute\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    apiKey,\n    chain,\n    optimalRoute,\n    account.address().toString(),\n    AptosTxType.EntryFunction,\n    undefined,\n    undefined,\n    Environment.PROD\n  )\n\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n\n### crossChain (APTOS - POLYGON)\n\n```typescript\n  /**\n * NOTE : This is just a basic example Implementation , Please Implement the SDK according to your usecases\n */\nimport {\n  getQuotesforCrossChainSwap,\n  getBridgeinstruction,\n  getClaimSwappedInstruction,\n  kanaChainIdList,\n  Environment,\n  ParseCrossChainQuote,\n  getVaaForWormholeAptos,\n  AptosTxType,\n  CheckAllowance,\n  AmmProvider,\n} from 'kana-aggregator-sdk'\nimport * as aptos from 'aptos'\nimport { ethers } from 'ethers'\nimport 'dotenv/config'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\n\nimport { crosschainClaimSwapOnEvm } from 'kana-aggregator-sdk'\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst privateKey = process.env.EVM_PRIVATE_KEY || ''\nconst polygonRPC = `https://polygon-mainnet.g.alchemy.com/v2/${process.env.POLYGON_KEY}` //Polygon\nconst provider = new ethers.providers.JsonRpcProvider(polygonRPC)\nconst signer = new ethers.Wallet(privateKey, provider)\nconsole.log('signer address', signer.address)\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\nconsole.log('account', account.toPrivateKeyObject())\nconst apiKey = process.env.KANAAPI_KEY || ''\n\nconst transferFromAptosToPolygon = async () => {\n  //   //Required paramameters to be passed to get quote for APTOS to SOLANA\n  const swapRequestParams = {\n    apiKey: apiKey,\n    isCrossChain: true,\n    sourceChainId: kanaChainIdList.aptos,\n    targetChainId: kanaChainIdList.polygon,\n    sourceToken: '0x1::aptos_coin::AptosCoin',\n    targetToken: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n    inAmount: 1000,\n    slippage: 1,\n    networkId: 1,\n  }\n  //   // error handling requited\n  const swapQuotes = (\n    await getQuotesforCrossChainSwap(\n      swapRequestParams.apiKey,\n      swapRequestParams.sourceChainId,\n      swapRequestParams.targetChainId,\n      swapRequestParams.sourceToken,\n      swapRequestParams.targetToken,\n      swapRequestParams.inAmount,\n      swapRequestParams.slippage,\n      undefined, //network ID can be undefined (currently no support for multiple networks)\n      {\n        providers: [AmmProvider.Pontem, AmmProvider.Aux],\n      },\n      Environment.DEV\n    )\n  ).data[0] as ParseCrossChainQuote\n  console.log('AptosToPolygon swapQuotes', swapQuotes.targetRoute)\n  const bridgeRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    sourceAddress: account.address().toString(),\n    targetAddress: signer.address,\n  }\n  let isAllowed = false\n  const allowance = await CheckAllowance(\n    3,\n    swapQuotes.targetBridgeToken,\n    signer.address\n  )\n  console.log('target allowance polygon ', allowance)\n\n  if (Number(allowance) >= Number(swapQuotes.bridgeAmount)) {\n    isAllowed = true\n  }\n  const bridgeInstruction = await getBridgeinstruction(\n    bridgeRequestParams.apiKey,\n    bridgeRequestParams.crossRoute, //this is just to handle type conversions will be fixed in upcoming version\n    bridgeRequestParams.sourceAddress, //this has to be a valid and active solana address\n    bridgeRequestParams.targetAddress, //this has to be a valid and active aptos address\n    undefined,\n    isAllowed,\n    Environment.DEV\n  )\n  console.log({ bridgeInstruction })\n  //Bridge instruction has to be executed in the respective chains based on their Chain ID's\n  const serializedInstruction = bridgeInstruction.data.transferInstruction\n  const transferHash: any[] = []\n  for (let i = 0; i < serializedInstruction.length; i++) {\n    if (serializedInstruction[i].type == AptosTxType.BcsSerialized) {\n      const transferSerializedPayload =\n        aptos.TxnBuilderTypes.RawTransaction.deserialize(\n          new aptos.BCS.Deserializer(\n            new Uint8Array(bs58.decode(serializedInstruction[i].transaction))\n          )\n        )\n\n      const swapTxn = await client.signTransaction(\n        account,\n        transferSerializedPayload\n      )\n      const submitSwapTxn = await client.submitTransaction(swapTxn)\n      transferHash.push(submitSwapTxn.hash)\n    }\n  }\n  const vaa: Uint8Array = await getVaaForWormholeAptos(\n    transferHash[transferHash.length - 1],\n    client\n  )\n  console.log('vaa', vaa)\n\n  const claimRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    targetAddress: signer.address,\n    vaaBytes: vaa,\n  }\n  const claimInstruction = await getClaimSwappedInstruction(\n    claimRequestParams.apiKey,\n    claimRequestParams.crossRoute,\n    claimRequestParams.targetAddress,\n    claimRequestParams.vaaBytes,\n    undefined,\n    undefined,\n    Environment.DEV\n  )\n\n  const tx = await crosschainClaimSwapOnEvm(claimInstruction, signer, vaa)\n  console.log(tx)\n}\n\ntransferFromAptosToPolygon()\n```","readmeFilename":"README.md","gitHead":"6bb81a3aafe8da9cb74716b78c0747210cf6de93","_id":"kana-aggregator-sdk@0.0.19","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-xk63/ePztrPxNhKST4Zzdzsc/qvPOWSKfPYkjPalKzWGBsipxp5i37CgPk5j3fwWxTvqfrMoHIFONoOgi/ZKxQ==","shasum":"3a738d35c6040b6c1cc3d030a02fd9d806d88ee5","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.19.tgz","fileCount":50,"unpackedSize":128785,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQQw8IYQeQy7yyldi+WF6Ws2fvm4TYD7N4rYGwis7jrAiEA0difp9YCueA7eb6pxKKhfr8x/tZNRcd9667MUiwM7wI="}]},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.19_1684309469689_0.6014971418705717"},"_hasShrinkwrap":false},"0.0.20":{"name":"kana-aggregator-sdk","version":"0.0.20","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"latest","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/Swap/Aptos.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2"},"gitHead":"d7308dac37f5d4e808cf3f95c5916011d6433277","_id":"kana-aggregator-sdk@0.0.20","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-rwCiVHfalycjeJkA9i3fDU5MHuJZZO8BxnwmWXQEIbPlTGFUXsm9Q/zhZcE31uFTp6n2MbnCR+vuX4pnsAlNKg==","shasum":"a3cd419cfa65c32e0ec4f84b7fbed58fd9f99417","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.20.tgz","fileCount":50,"unpackedSize":128784,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAsCp0Hk8GKqs6AOzk5MrmdYw/eig8vyIpZWYlciKhRwAiBUDXdfVH0B6OcQpI8HZbAzLVN7n6RM/TfxRx3/EuwR2g=="}]},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.20_1684310265571_0.724653188958136"},"_hasShrinkwrap":false},"0.0.20-beta-1":{"name":"kana-aggregator-sdk","version":"0.0.20-beta-1","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"latest","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/polygon-ethereum.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2"},"gitHead":"df2ae86139cb1e2929584b5b64afe2d1b6025a14","_id":"kana-aggregator-sdk@0.0.20-beta-1","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-O2T8V/QoZ54mWmwf66ti2YmImAIGlByhmrO4sPECdjHEZ872suoVbDfRUEnJZlW+0iwR/H8oCvxFy/q+xQHUJQ==","shasum":"bc2690cf85e90b71efdbe9a6474af8bb45bdba48","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.20-beta-1.tgz","fileCount":50,"unpackedSize":126088,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGD4I9mZ6V5F+ip2O4vfalJb2XUtALDytfvIrGyjCFs1AiEA3bK1O1+ZyZ0Bt1W3jBTchM7cxc1FruhFDoHidn6GTC4="}]},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.20-beta-1_1684926666849_0.1547623944589509"},"_hasShrinkwrap":false},"0.0.21":{"name":"kana-aggregator-sdk","version":"0.0.21","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"latest","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/polygon-ethereum.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2"},"gitHead":"b3a25a51747951cbb166feb5ad562f1732a7b3f2","_id":"kana-aggregator-sdk@0.0.21","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-lLX8sTtKx9ug1f6RVsEUq7MY7qWfeF804sdGt3IvP2pSBFRKPk3iijy0W0Fdtxtfua90exXxbx/VU8NrFe7Vxg==","shasum":"1c6500fb9b5ec0d1d4a487f9bd3db126b41112c8","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.21.tgz","fileCount":50,"unpackedSize":125212,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA3eiyEKY2DchdHhB+fXErqcF76knMX5cMSgAQpfWUe8AiEA9a1sbxC5obeP6A4ZrA8iBDtCoRuYJ0Q+lMcu0lzX3D0="}]},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.21_1685457657789_0.27557231386408443"},"_hasShrinkwrap":false},"0.0.21-beta-2":{"name":"kana-aggregator-sdk","version":"0.0.21-beta-2","description":"Kanalabs aggregator SDK for integrations","main":"dist/index.js","types":"dist/index.d.ts","tag":"develop","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepare":"npm run build","lint":"eslint ./ --fix","format":"prettier --write 'src/**/*.{ts,tsx}'","index":"ts-node example/cross-chain/polygon-ethereum.ts"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/node-fetch":"^2.6.2","@typescript-eslint/eslint-plugin":"^5.30.5","@typescript-eslint/parser":"^5.30.5","eslint":"^8.19.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.7.1","ts-node":"10.9.1","typescript":"^4.7.4"},"dependencies":{"@certusone/wormhole-sdk":"^0.9.9","@marinade.finance/marinade-ts-sdk":"^4.0.4","@project-serum/anchor":"^0.26.0","@solana/web3.js":"^1.43.1","aptos":"^1.4.0","axios":"^0.27.2","base58":"^2.0.1","dotenv":"^16.0.3","ethers":"^5.7.2"},"readme":"# Kanalabs aggregator sdk\n\n## Description\n\n- SDK to interact and integrate Kana aggregator platform\n\n## SDK Usage\n\n```\n1. Solana\n2. Aptos\n3. CrossChain\n```\n\n## Installation\n\nnpm i kana-aggregator-sdk\n\n## For complete example 0f cross chain swaps using SDK and API please refer to\n\nhttps://github.com/kanalabs/kanalabs-aggregator-sdk/tree/code-update/example\n\n## GitBook\n\nhttps://kana-labs.gitbook.io/kana-labs/\n\n(Complete Documentation will be available soon on GitBook)\n\n### Testnet TokenList\n\n```typescript\nimport {\n  getTokenByChainID,\n  kanaChainIdList,\n  kanaNetworkId,\n} from 'kana-aggregator-sdk'\nconst devTokens = await getTokenByChainID(\n  kanaChainIdList.solana,\n  kanaNetworkId.mainnet\n)\n```\n\n### Aptos Aggregator\n\n#### Using SDK - SOLANA\n\n```typescript\n/* Swap using solana SDK */\n\nimport {\n  Connection,\n  Keypair,\n  VersionedTransaction,\n  clusterApiUrl,\n} from '@solana/web3.js'\nimport { kanaChainIdList, kanaNetworkId } from 'kana-aggregator-sdk'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst payer = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PAYER || ''))\nconst connection = new Connection(clusterApiUrl('mainnet-beta'))\n/**\n * SWAP on solana chain\n */\nconst swapOnSolana = async () => {\n  const inputMint = 'So11111111111111111111111111111111111111112'\n  const outputmint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'\n  const amount = 1000\n  const slippage = 1\n  const chainId = kanaChainIdList.solana\n  const networkId = kanaNetworkId.mainnet\n  const isCrossChain = false\n  const directRoute = false\n  // get quotes for solana swap\n  console.log('Getting swap routes for solana .......')\n  const routes = await getSwapQuote(\n    isCrossChain,\n    chainId,\n    networkId,\n    inputMint,\n    outputmint,\n    amount,\n    slippage,\n    undefined,\n    directRoute\n  )\n  console.log(routes.data)\n  const optimaRoute = routes.data[0]\n  console.log('Selecting optimal route ....')\n  const instruction = await getSwapInstruction(\n    networkId,\n    chainId,\n    optimaRoute,\n    payer.publicKey.toString()\n  )\n  console.log('Getting swap Instruction ....')\n  const executableInstruction = instruction.data.swapInstruction\n  const swapTransactionBuf = Buffer.from(executableInstruction, 'base64')\n  const transaction = VersionedTransaction.deserialize(swapTransactionBuf)\n  console.log('Signing swap transaction ....')\n  transaction.sign([payer])\n  // Execute the transaction\n  const rawTransaction = transaction.serialize()\n  const txid = await connection.sendRawTransaction(rawTransaction, {\n    skipPreflight: true,\n    maxRetries: 2,\n  })\n  await connection.confirmTransaction(txid)\n  console.log('confirmed swap transaction successfully ...')\n  console.log(`https://solscan.io/tx/${txid}`)\n}\n\nswapOnSolana()\n```\n\n#### Using SDK - APTOS\n\n```typescript\nimport { kanaChainIdList, kanaNetworkId } from '../../common/types'\nimport * as aptos from 'aptos'\nimport 'dotenv/config'\nimport { getSwapQuote, getSwapInstruction } from 'kana-aggregator-sdk'\n\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\n\nconst swapOnAptos = async () => {\n  const inputCoin =\n    '0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T'\n  const outputCoin =\n    '0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T'\n  const amount = 100\n  const slippage = 5\n  const chain = kanaChainIdList.aptos\n\n  console.log('getting swap routes for Aptos .....')\n\n  //also you can add filter options if needed\n  const routes = await getSwapQuote(\n    apiKey,\n    chain,\n    inputCoin,\n    outputCoin,\n    amount,\n    slippage,\n    '0xc7cac4b062a5c56d86651adb2d04ed4d7456786b8fe3a084072f8fe741273907',\n    undefined,\n    undefined,\n    {\n      providers: [AmmProvider.Pontem, AmmProvider.Aux],\n    },\n    Environment.PROD\n  )\n\n  const optimalRoute = routes.data[0] as ParseAptosRoute\n  console.log('optimal route for swap found .....')\n  const instruction = await getSwapInstruction(\n    apiKey,\n    chain,\n    optimalRoute,\n    account.address().toString(),\n    AptosTxType.EntryFunction,\n    undefined,\n    undefined,\n    Environment.PROD\n  )\n\n  const swapPayload = instruction.data.swapInstruction\n  console.log('Getting payload for optimal route .....')\n\n  const txnRequest = await client.generateTransaction(\n    account.address(),\n    swapPayload,\n    {\n      max_gas_amount: '20000',\n      gas_unit_price: '100',\n    }\n  )\n  console.log('signing swap transaction .....')\n  const txn = await client.signTransaction(account, txnRequest)\n  const submit = await client.submitTransaction(txn)\n  console.log(submit.hash)\n}\n\nswapOnAptos()\n```\n\n### crossChain (APTOS - POLYGON)\n\n```typescript\n  /**\n * NOTE : This is just a basic example Implementation , Please Implement the SDK according to your usecases\n */\nimport {\n  getQuotesforCrossChainSwap,\n  getBridgeinstruction,\n  getClaimSwappedInstruction,\n  kanaChainIdList,\n  Environment,\n  ParseCrossChainQuote,\n  getVaaForWormholeAptos,\n  AptosTxType,\n  CheckAllowance,\n  AmmProvider,\n} from 'kana-aggregator-sdk'\nimport * as aptos from 'aptos'\nimport { ethers } from 'ethers'\nimport 'dotenv/config'\nimport { bs58 } from '@project-serum/anchor/dist/cjs/utils/bytes'\n\nimport { crosschainClaimSwapOnEvm } from 'kana-aggregator-sdk'\nconst NODE_URL_TEST = 'https://fullnode.mainnet.aptoslabs.com/v1'\nconst client = new aptos.AptosClient(NODE_URL_TEST)\n\nconst privateKey = process.env.EVM_PRIVATE_KEY || ''\nconst polygonRPC = `https://polygon-mainnet.g.alchemy.com/v2/${process.env.POLYGON_KEY}` //Polygon\nconst provider = new ethers.providers.JsonRpcProvider(polygonRPC)\nconst signer = new ethers.Wallet(privateKey, provider)\nconsole.log('signer address', signer.address)\nconst account = aptos.AptosAccount.fromAptosAccountObject({\n  address: process.env.APTOS_ADDRESS || '',\n  publicKeyHex: process.env.APTOS_PUBLICKEY || '',\n  privateKeyHex: process.env.APTOS_PRIVATEKEY || '',\n})\nconsole.log('account', account.toPrivateKeyObject())\nconst apiKey = process.env.KANAAPI_KEY || ''\n\nconst transferFromAptosToPolygon = async () => {\n  //   //Required paramameters to be passed to get quote for APTOS to SOLANA\n  const swapRequestParams = {\n    apiKey: apiKey,\n    isCrossChain: true,\n    sourceChainId: kanaChainIdList.aptos,\n    targetChainId: kanaChainIdList.polygon,\n    sourceToken: '0x1::aptos_coin::AptosCoin',\n    targetToken: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n    inAmount: 1000,\n    slippage: 1,\n    networkId: 1,\n  }\n  //   // error handling requited\n  const swapQuotes = (\n    await getQuotesforCrossChainSwap(\n      swapRequestParams.apiKey,\n      swapRequestParams.sourceChainId,\n      swapRequestParams.targetChainId,\n      swapRequestParams.sourceToken,\n      swapRequestParams.targetToken,\n      swapRequestParams.inAmount,\n      swapRequestParams.slippage,\n      undefined, //network ID can be undefined (currently no support for multiple networks)\n      {\n        providers: [AmmProvider.Pontem, AmmProvider.Aux],\n      },\n      Environment.DEV\n    )\n  ).data[0] as ParseCrossChainQuote\n  console.log('AptosToPolygon swapQuotes', swapQuotes.targetRoute)\n  const bridgeRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    sourceAddress: account.address().toString(),\n    targetAddress: signer.address,\n  }\n  let isAllowed = false\n  const allowance = await CheckAllowance(\n    3,\n    swapQuotes.targetBridgeToken,\n    signer.address\n  )\n  console.log('target allowance polygon ', allowance)\n\n  if (Number(allowance) >= Number(swapQuotes.bridgeAmount)) {\n    isAllowed = true\n  }\n  const bridgeInstruction = await getBridgeinstruction(\n    bridgeRequestParams.apiKey,\n    bridgeRequestParams.crossRoute, //this is just to handle type conversions will be fixed in upcoming version\n    bridgeRequestParams.sourceAddress, //this has to be a valid and active solana address\n    bridgeRequestParams.targetAddress, //this has to be a valid and active aptos address\n    undefined,\n    isAllowed,\n    Environment.DEV\n  )\n  console.log({ bridgeInstruction })\n  //Bridge instruction has to be executed in the respective chains based on their Chain ID's\n  const serializedInstruction = bridgeInstruction.data.transferInstruction\n  const transferHash: any[] = []\n  for (let i = 0; i < serializedInstruction.length; i++) {\n    if (serializedInstruction[i].type == AptosTxType.BcsSerialized) {\n      const transferSerializedPayload =\n        aptos.TxnBuilderTypes.RawTransaction.deserialize(\n          new aptos.BCS.Deserializer(\n            new Uint8Array(bs58.decode(serializedInstruction[i].transaction))\n          )\n        )\n\n      const swapTxn = await client.signTransaction(\n        account,\n        transferSerializedPayload\n      )\n      const submitSwapTxn = await client.submitTransaction(swapTxn)\n      transferHash.push(submitSwapTxn.hash)\n    }\n  }\n  const vaa: Uint8Array = await getVaaForWormholeAptos(\n    transferHash[transferHash.length - 1],\n    client\n  )\n  console.log('vaa', vaa)\n\n  const claimRequestParams = {\n    apiKey: apiKey,\n    crossRoute: swapQuotes,\n    targetAddress: signer.address,\n    vaaBytes: vaa,\n  }\n  const claimInstruction = await getClaimSwappedInstruction(\n    claimRequestParams.apiKey,\n    claimRequestParams.crossRoute,\n    claimRequestParams.targetAddress,\n    claimRequestParams.vaaBytes,\n    undefined,\n    undefined,\n    Environment.DEV\n  )\n\n  const tx = await crosschainClaimSwapOnEvm(claimInstruction, signer, vaa)\n  console.log(tx)\n}\n\ntransferFromAptosToPolygon()\n```","readmeFilename":"README.md","gitHead":"430729fdf673d8b3c9a0d5bc2d57eef30c6c0d60","_id":"kana-aggregator-sdk@0.0.21-beta-2","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-ikgP1Crm5zr1eGsUCeg8fSRcT381cfv39+m6xFZOMLGfbUsatcdB8YFz1+7LmkbLgQeBNHU7rwnWWyv49aZNAA==","shasum":"89a3c31ea97b974f2726b690d7144f4f705f9283","tarball":"https://registry.npmjs.org/kana-aggregator-sdk/-/kana-aggregator-sdk-0.0.21-beta-2.tgz","fileCount":50,"unpackedSize":125270,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv3hYQfD/vf+05lDK0j5FvjNFowktdkCwucPjrH2JtmwIgAINQanhByMYxDn6yNIdao4WbfF/0hRg56N0day/kj60="}]},"_npmUser":{"name":"kanaswap","email":"partha@tradala.in"},"directories":{},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kana-aggregator-sdk_0.0.21-beta-2_1689914632355_0.30755102221537634"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-14T08:54:38.097Z","0.0.1":"2022-10-14T08:54:38.217Z","modified":"2023-07-21T04:43:52.700Z","0.0.2":"2022-10-14T10:20:22.416Z","0.0.3":"2022-10-26T09:30:46.689Z","0.0.4":"2022-10-26T09:56:06.207Z","0.0.5":"2022-11-01T09:14:21.277Z","0.0.6":"2022-11-01T09:19:42.875Z","0.0.7":"2022-11-07T14:21:58.435Z","0.0.8":"2022-11-16T09:15:42.473Z","0.0.9":"2022-11-22T06:29:57.320Z","0.0.10":"2022-11-23T05:14:46.438Z","0.0.11":"2022-11-24T13:15:21.815Z","0.0.12":"2022-11-25T03:11:39.115Z","0.0.13":"2022-11-25T08:29:55.618Z","0.0.13-beta":"2022-11-28T09:10:32.144Z","0.0.13-beta.0":"2022-11-28T09:37:37.807Z","0.0.14":"2022-11-28T09:40:59.888Z","0.0.14-dev.1":"2022-11-29T13:42:09.953Z","0.0.14-dev.2":"2022-11-30T14:38:25.107Z","0.0.14-dev.3":"2022-11-30T14:52:36.990Z","0.0.14-dev.4":"2022-12-06T02:14:31.617Z","0.0.14-dev.4.1":"2022-12-06T05:05:17.219Z","0.0.14-dev.4.2":"2022-12-06T05:11:29.202Z","0.0.14-dev.4.3":"2022-12-06T05:52:45.169Z","0.0.14-dev.4.4":"2022-12-13T06:42:31.705Z","0.0.14-dev.4.5":"2022-12-13T14:33:23.455Z","0.0.14-dev.4.6":"2022-12-19T05:17:41.380Z","0.0.14-dev.4.7":"2022-12-19T15:07:17.246Z","0.0.14-dev.4.8":"2022-12-22T05:12:26.963Z","0.0.15":"2022-12-26T10:20:31.172Z","0.0.15-beta-0":"2023-01-03T16:39:26.173Z","0.0.15-beta-0.1":"2023-01-05T09:51:15.408Z","0.0.15-beta-0.2":"2023-01-09T16:37:00.868Z","0.0.15-beta-0.3":"2023-01-10T12:37:36.966Z","0.0.15-beta-0.4":"2023-01-12T04:59:13.609Z","0.0.15-beta-0.5":"2023-01-17T16:43:01.287Z","0.0.15-beta-0.6":"2023-01-18T11:35:04.357Z","0.0.15-beta-0.7":"2023-01-19T09:38:44.067Z","0.0.15-beta-0.8":"2023-01-20T09:34:13.024Z","0.0.15-beta-0.9":"2023-01-22T15:43:33.001Z","0.0.15-beta-1.1":"2023-01-23T12:12:32.406Z","0.0.15-beta-1.2":"2023-01-25T07:32:59.008Z","0.0.15-beta-1.3":"2023-01-30T07:51:49.140Z","0.0.15-beta-1.4":"2023-01-30T15:48:40.119Z","0.0.16":"2023-01-30T17:40:48.584Z","0.0.17":"2023-02-02T06:37:21.068Z","0.0.17-beta-0.1":"2023-02-02T11:31:23.552Z","0.0.17-beta-0.2":"2023-02-05T19:44:49.704Z","0.0.17-beta-0.3":"2023-02-07T05:58:48.779Z","0.0.17-beta-0.4":"2023-02-07T06:43:06.931Z","0.0.17-beta-0.5":"2023-02-14T02:48:18.186Z","0.0.17-beta-0.6":"2023-02-21T13:53:06.444Z","0.0.17-beta-0.7":"2023-02-28T07:40:38.615Z","0.0.17-beta-0.8":"2023-02-28T07:45:25.573Z","0.0.17-beta-0.9":"2023-03-02T11:23:07.422Z","0.0.17-beta-0.10":"2023-03-09T09:21:36.832Z","0.0.17-beta-0.12":"2023-03-14T12:24:21.305Z","0.0.17-beta-0.13":"2023-03-14T15:35:37.685Z","0.0.17-beta-0.14":"2023-03-21T17:18:58.879Z","0.0.17-beta-0.15":"2023-03-22T05:49:24.202Z","0.0.17-beta-0.16":"2023-03-22T09:58:03.128Z","0.0.17-beta-0.17":"2023-03-23T13:40:05.880Z","0.0.17-beta-0.18":"2023-03-27T08:07:49.696Z","0.0.18":"2023-03-27T10:34:28.820Z","0.0.18-beta-0.1":"2023-04-03T07:25:05.422Z","0.0.18-beta-0.2":"2023-04-04T10:05:26.560Z","0.0.18-beta-0.3":"2023-04-06T13:43:48.355Z","0.0.19":"2023-05-17T07:44:29.877Z","0.0.20":"2023-05-17T07:57:45.825Z","0.0.20-beta-1":"2023-05-24T11:11:07.030Z","0.0.21":"2023-05-30T14:40:57.955Z","0.0.21-beta-2":"2023-07-21T04:43:52.555Z"},"maintainers":[{"name":"kanaswap","email":"partha@tradala.in"}],"description":"Kanalabs aggregator SDK for integrations","keywords":[],"license":"ISC","readme":"","readmeFilename":""}