program.ts 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706
  1. import { PublicKey } from "@solana/web3.js";
  2. import { Program, AnchorProvider } from "@project-serum/anchor";
  3. import { SplTokenCoder } from "./coder";
  4. export const SPL_TOKEN_PROGRAM_ID = new PublicKey(
  5. "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
  6. );
  7. interface GetProgramParams {
  8. programId?: PublicKey;
  9. provider?: AnchorProvider;
  10. }
  11. export function splTokenProgram(params?: GetProgramParams): Program<SplToken> {
  12. return new Program<SplToken>(
  13. IDL,
  14. params?.programId ?? SPL_TOKEN_PROGRAM_ID,
  15. params?.provider,
  16. new SplTokenCoder(IDL)
  17. );
  18. }
  19. type SplToken = {
  20. version: "3.3.0";
  21. name: "spl_token";
  22. instructions: [
  23. {
  24. name: "initializeMint";
  25. accounts: [
  26. {
  27. name: "mint";
  28. isMut: true;
  29. isSigner: false;
  30. },
  31. {
  32. name: "rent";
  33. isMut: false;
  34. isSigner: false;
  35. }
  36. ];
  37. args: [
  38. {
  39. name: "decimals";
  40. type: "u8";
  41. },
  42. {
  43. name: "mintAuthority";
  44. type: "publicKey";
  45. },
  46. {
  47. name: "freezeAuthority";
  48. type: {
  49. defined: "COption<Pubkey>";
  50. };
  51. }
  52. ];
  53. },
  54. {
  55. name: "initializeAccount";
  56. accounts: [
  57. {
  58. name: "account";
  59. isMut: true;
  60. isSigner: false;
  61. },
  62. {
  63. name: "mint";
  64. isMut: false;
  65. isSigner: false;
  66. },
  67. {
  68. name: "owner";
  69. isMut: false;
  70. isSigner: false;
  71. },
  72. {
  73. name: "rent";
  74. isMut: false;
  75. isSigner: false;
  76. }
  77. ];
  78. args: [];
  79. },
  80. {
  81. name: "initializeMultisig";
  82. accounts: [
  83. {
  84. name: "multisig";
  85. isMut: true;
  86. isSigner: false;
  87. },
  88. {
  89. name: "rent";
  90. isMut: false;
  91. isSigner: false;
  92. }
  93. ];
  94. args: [
  95. {
  96. name: "m";
  97. type: "u8";
  98. }
  99. ];
  100. },
  101. {
  102. name: "transfer";
  103. accounts: [
  104. {
  105. name: "source";
  106. isMut: true;
  107. isSigner: false;
  108. },
  109. {
  110. name: "destination";
  111. isMut: true;
  112. isSigner: false;
  113. },
  114. {
  115. name: "authority";
  116. isMut: false;
  117. isSigner: true;
  118. }
  119. ];
  120. args: [
  121. {
  122. name: "amount";
  123. type: "u64";
  124. }
  125. ];
  126. },
  127. {
  128. name: "approve";
  129. accounts: [
  130. {
  131. name: "source";
  132. isMut: true;
  133. isSigner: false;
  134. },
  135. {
  136. name: "delegate";
  137. isMut: false;
  138. isSigner: false;
  139. },
  140. {
  141. name: "owner";
  142. isMut: false;
  143. isSigner: true;
  144. }
  145. ];
  146. args: [
  147. {
  148. name: "amount";
  149. type: "u64";
  150. }
  151. ];
  152. },
  153. {
  154. name: "revoke";
  155. accounts: [
  156. {
  157. name: "source";
  158. isMut: true;
  159. isSigner: false;
  160. },
  161. {
  162. name: "owner";
  163. isMut: false;
  164. isSigner: true;
  165. }
  166. ];
  167. args: [];
  168. },
  169. {
  170. name: "setAuthority";
  171. accounts: [
  172. {
  173. name: "owned";
  174. isMut: true;
  175. isSigner: false;
  176. },
  177. {
  178. name: "owner";
  179. isMut: false;
  180. isSigner: true;
  181. },
  182. {
  183. name: "signer";
  184. isMut: false;
  185. isSigner: true;
  186. }
  187. ];
  188. args: [
  189. {
  190. name: "authorityType";
  191. type: {
  192. defined: "AuthorityType";
  193. };
  194. },
  195. {
  196. name: "newAuthority";
  197. type: {
  198. defined: "COption<Pubkey>";
  199. };
  200. }
  201. ];
  202. },
  203. {
  204. name: "mintTo";
  205. accounts: [
  206. {
  207. name: "mint";
  208. isMut: true;
  209. isSigner: false;
  210. },
  211. {
  212. name: "account";
  213. isMut: true;
  214. isSigner: false;
  215. },
  216. {
  217. name: "owner";
  218. isMut: false;
  219. isSigner: true;
  220. }
  221. ];
  222. args: [
  223. {
  224. name: "amount";
  225. type: "u64";
  226. }
  227. ];
  228. },
  229. {
  230. name: "burn";
  231. accounts: [
  232. {
  233. name: "account";
  234. isMut: true;
  235. isSigner: false;
  236. },
  237. {
  238. name: "mint";
  239. isMut: true;
  240. isSigner: false;
  241. },
  242. {
  243. name: "authority";
  244. isMut: false;
  245. isSigner: true;
  246. }
  247. ];
  248. args: [
  249. {
  250. name: "amount";
  251. type: "u64";
  252. }
  253. ];
  254. },
  255. {
  256. name: "closeAccount";
  257. accounts: [
  258. {
  259. name: "account";
  260. isMut: true;
  261. isSigner: false;
  262. },
  263. {
  264. name: "destination";
  265. isMut: true;
  266. isSigner: false;
  267. },
  268. {
  269. name: "owner";
  270. isMut: false;
  271. isSigner: true;
  272. }
  273. ];
  274. args: [];
  275. },
  276. {
  277. name: "freezeAccount";
  278. accounts: [
  279. {
  280. name: "account";
  281. isMut: true;
  282. isSigner: false;
  283. },
  284. {
  285. name: "mint";
  286. isMut: false;
  287. isSigner: false;
  288. },
  289. {
  290. name: "owner";
  291. isMut: false;
  292. isSigner: true;
  293. }
  294. ];
  295. args: [];
  296. },
  297. {
  298. name: "thawAccount";
  299. accounts: [
  300. {
  301. name: "account";
  302. isMut: true;
  303. isSigner: false;
  304. },
  305. {
  306. name: "mint";
  307. isMut: false;
  308. isSigner: false;
  309. },
  310. {
  311. name: "owner";
  312. isMut: false;
  313. isSigner: true;
  314. }
  315. ];
  316. args: [];
  317. },
  318. {
  319. name: "transferChecked";
  320. accounts: [
  321. {
  322. name: "source";
  323. isMut: true;
  324. isSigner: false;
  325. },
  326. {
  327. name: "mint";
  328. isMut: false;
  329. isSigner: false;
  330. },
  331. {
  332. name: "destination";
  333. isMut: true;
  334. isSigner: false;
  335. },
  336. {
  337. name: "authority";
  338. isMut: false;
  339. isSigner: true;
  340. }
  341. ];
  342. args: [
  343. {
  344. name: "amount";
  345. type: "u64";
  346. },
  347. {
  348. name: "decimals";
  349. type: "u8";
  350. }
  351. ];
  352. },
  353. {
  354. name: "approveChecked";
  355. accounts: [
  356. {
  357. name: "source";
  358. isMut: true;
  359. isSigner: false;
  360. },
  361. {
  362. name: "mint";
  363. isMut: false;
  364. isSigner: false;
  365. },
  366. {
  367. name: "delegate";
  368. isMut: false;
  369. isSigner: false;
  370. },
  371. {
  372. name: "owner";
  373. isMut: false;
  374. isSigner: true;
  375. }
  376. ];
  377. args: [
  378. {
  379. name: "amount";
  380. type: "u64";
  381. },
  382. {
  383. name: "decimals";
  384. type: "u8";
  385. }
  386. ];
  387. },
  388. {
  389. name: "mintToChecked";
  390. accounts: [
  391. {
  392. name: "mint";
  393. isMut: true;
  394. isSigner: false;
  395. },
  396. {
  397. name: "account";
  398. isMut: true;
  399. isSigner: false;
  400. },
  401. {
  402. name: "owner";
  403. isMut: false;
  404. isSigner: true;
  405. }
  406. ];
  407. args: [
  408. {
  409. name: "amount";
  410. type: "u64";
  411. },
  412. {
  413. name: "decimals";
  414. type: "u8";
  415. }
  416. ];
  417. },
  418. {
  419. name: "burnChecked";
  420. accounts: [
  421. {
  422. name: "account";
  423. isMut: true;
  424. isSigner: false;
  425. },
  426. {
  427. name: "mint";
  428. isMut: true;
  429. isSigner: false;
  430. },
  431. {
  432. name: "authority";
  433. isMut: false;
  434. isSigner: true;
  435. }
  436. ];
  437. args: [
  438. {
  439. name: "amount";
  440. type: "u64";
  441. },
  442. {
  443. name: "decimals";
  444. type: "u8";
  445. }
  446. ];
  447. },
  448. {
  449. name: "initializeAccount2";
  450. accounts: [
  451. {
  452. name: "account";
  453. isMut: true;
  454. isSigner: false;
  455. },
  456. {
  457. name: "mint";
  458. isMut: false;
  459. isSigner: false;
  460. },
  461. {
  462. name: "rent";
  463. isMut: false;
  464. isSigner: false;
  465. }
  466. ];
  467. args: [
  468. {
  469. name: "owner";
  470. type: "publicKey";
  471. }
  472. ];
  473. },
  474. {
  475. name: "syncNative";
  476. accounts: [
  477. {
  478. name: "account";
  479. isMut: true;
  480. isSigner: false;
  481. }
  482. ];
  483. args: [];
  484. },
  485. {
  486. name: "initializeAccount3";
  487. accounts: [
  488. {
  489. name: "account";
  490. isMut: true;
  491. isSigner: false;
  492. },
  493. {
  494. name: "mint";
  495. isMut: false;
  496. isSigner: false;
  497. }
  498. ];
  499. args: [
  500. {
  501. name: "owner";
  502. type: "publicKey";
  503. }
  504. ];
  505. },
  506. {
  507. name: "initializeMultisig2";
  508. accounts: [
  509. {
  510. name: "multisig";
  511. isMut: true;
  512. isSigner: false;
  513. },
  514. {
  515. name: "signer";
  516. isMut: false;
  517. isSigner: false;
  518. }
  519. ];
  520. args: [
  521. {
  522. name: "m";
  523. type: "u8";
  524. }
  525. ];
  526. },
  527. {
  528. name: "initializeMint2";
  529. accounts: [
  530. {
  531. name: "mint";
  532. isMut: true;
  533. isSigner: false;
  534. }
  535. ];
  536. args: [
  537. {
  538. name: "decimals";
  539. type: "u8";
  540. },
  541. {
  542. name: "mintAuthority";
  543. type: "publicKey";
  544. },
  545. {
  546. name: "freezeAuthority";
  547. type: {
  548. defined: "COption<Pubkey>";
  549. };
  550. }
  551. ];
  552. },
  553. {
  554. name: "getAccountDataSize";
  555. accounts: [
  556. {
  557. name: "mint";
  558. isMut: false;
  559. isSigner: false;
  560. }
  561. ];
  562. args: [];
  563. },
  564. {
  565. name: "initializeImmutableOwner";
  566. accounts: [
  567. {
  568. name: "account";
  569. isMut: true;
  570. isSigner: false;
  571. }
  572. ];
  573. args: [];
  574. },
  575. {
  576. name: "amountToUiAmount";
  577. accounts: [
  578. {
  579. name: "mint";
  580. isMut: false;
  581. isSigner: false;
  582. }
  583. ];
  584. args: [
  585. {
  586. name: "amount";
  587. type: "u64";
  588. }
  589. ];
  590. },
  591. {
  592. name: "uiAmountToAmount";
  593. accounts: [
  594. {
  595. name: "mint";
  596. isMut: false;
  597. isSigner: false;
  598. }
  599. ];
  600. args: [
  601. {
  602. name: "uiAmount";
  603. type: {
  604. defined: "&'astr";
  605. };
  606. }
  607. ];
  608. }
  609. ];
  610. accounts: [
  611. {
  612. name: "mint";
  613. type: {
  614. kind: "struct";
  615. fields: [
  616. {
  617. name: "mintAuthority";
  618. type: {
  619. defined: "COption<Pubkey>";
  620. };
  621. },
  622. {
  623. name: "supply";
  624. type: "u64";
  625. },
  626. {
  627. name: "decimals";
  628. type: "u8";
  629. },
  630. {
  631. name: "isInitialized";
  632. type: "bool";
  633. },
  634. {
  635. name: "freezeAuthority";
  636. type: {
  637. defined: "COption<Pubkey>";
  638. };
  639. }
  640. ];
  641. };
  642. },
  643. {
  644. name: "account";
  645. type: {
  646. kind: "struct";
  647. fields: [
  648. {
  649. name: "mint";
  650. type: "publicKey";
  651. },
  652. {
  653. name: "owner";
  654. type: "publicKey";
  655. },
  656. {
  657. name: "amount";
  658. type: "u64";
  659. },
  660. {
  661. name: "delegate";
  662. type: {
  663. defined: "COption<Pubkey>";
  664. };
  665. },
  666. {
  667. name: "state";
  668. type: {
  669. defined: "AccountState";
  670. };
  671. },
  672. {
  673. name: "isNative";
  674. type: {
  675. defined: "COption<u64>";
  676. };
  677. },
  678. {
  679. name: "delegatedAmount";
  680. type: "u64";
  681. },
  682. {
  683. name: "closeAuthority";
  684. type: {
  685. defined: "COption<Pubkey>";
  686. };
  687. }
  688. ];
  689. };
  690. },
  691. {
  692. name: "multisig";
  693. type: {
  694. kind: "struct";
  695. fields: [
  696. {
  697. name: "m";
  698. type: "u8";
  699. },
  700. {
  701. name: "n";
  702. type: "u8";
  703. },
  704. {
  705. name: "isInitialized";
  706. type: "bool";
  707. },
  708. {
  709. name: "signers";
  710. type: {
  711. array: ["publicKey", 11];
  712. };
  713. }
  714. ];
  715. };
  716. }
  717. ];
  718. types: [
  719. {
  720. name: "AccountState";
  721. type: {
  722. kind: "enum";
  723. variants: [
  724. {
  725. name: "Uninitialized";
  726. },
  727. {
  728. name: "Initialized";
  729. },
  730. {
  731. name: "Frozen";
  732. }
  733. ];
  734. };
  735. },
  736. {
  737. name: "AuthorityType";
  738. type: {
  739. kind: "enum";
  740. variants: [
  741. {
  742. name: "MintTokens";
  743. },
  744. {
  745. name: "FreezeAccount";
  746. },
  747. {
  748. name: "AccountOwner";
  749. },
  750. {
  751. name: "CloseAccount";
  752. }
  753. ];
  754. };
  755. }
  756. ];
  757. errors: [
  758. {
  759. code: 0;
  760. name: "NotRentExempt";
  761. msg: "Lamport balance below rent-exempt threshold";
  762. },
  763. {
  764. code: 1;
  765. name: "InsufficientFunds";
  766. msg: "Insufficient funds";
  767. },
  768. {
  769. code: 2;
  770. name: "InvalidMint";
  771. msg: "Invalid Mint";
  772. },
  773. {
  774. code: 3;
  775. name: "MintMismatch";
  776. msg: "Account not associated with this Mint";
  777. },
  778. {
  779. code: 4;
  780. name: "OwnerMismatch";
  781. msg: "Owner does not match";
  782. },
  783. {
  784. code: 5;
  785. name: "FixedSupply";
  786. msg: "Fixed supply";
  787. },
  788. {
  789. code: 6;
  790. name: "AlreadyInUse";
  791. msg: "Already in use";
  792. },
  793. {
  794. code: 7;
  795. name: "InvalidNumberOfProvidedSigners";
  796. msg: "Invalid number of provided signers";
  797. },
  798. {
  799. code: 8;
  800. name: "InvalidNumberOfRequiredSigners";
  801. msg: "Invalid number of required signers";
  802. },
  803. {
  804. code: 9;
  805. name: "UninitializedState";
  806. msg: "State is unititialized";
  807. },
  808. {
  809. code: 10;
  810. name: "NativeNotSupported";
  811. msg: "Instruction does not support native tokens";
  812. },
  813. {
  814. code: 11;
  815. name: "NonNativeHasBalance";
  816. msg: "Non-native account can only be closed if its balance is zero";
  817. },
  818. {
  819. code: 12;
  820. name: "InvalidInstruction";
  821. msg: "Invalid instruction";
  822. },
  823. {
  824. code: 13;
  825. name: "InvalidState";
  826. msg: "State is invalid for requested operation";
  827. },
  828. {
  829. code: 14;
  830. name: "Overflow";
  831. msg: "Operation overflowed";
  832. },
  833. {
  834. code: 15;
  835. name: "AuthorityTypeNotSupported";
  836. msg: "Account does not support specified authority type";
  837. },
  838. {
  839. code: 16;
  840. name: "MintCannotFreeze";
  841. msg: "This token mint cannot freeze accounts";
  842. },
  843. {
  844. code: 17;
  845. name: "AccountFrozen";
  846. msg: "Account is frozen";
  847. },
  848. {
  849. code: 18;
  850. name: "MintDecimalsMismatch";
  851. msg: "The provided decimals value different from the Mint decimals";
  852. },
  853. {
  854. code: 19;
  855. name: "NonNativeNotSupported";
  856. msg: "Instruction does not support non-native tokens";
  857. }
  858. ];
  859. };
  860. const IDL: SplToken = {
  861. version: "3.3.0",
  862. name: "spl_token",
  863. instructions: [
  864. {
  865. name: "initializeMint",
  866. accounts: [
  867. {
  868. name: "mint",
  869. isMut: true,
  870. isSigner: false,
  871. },
  872. {
  873. name: "rent",
  874. isMut: false,
  875. isSigner: false,
  876. },
  877. ],
  878. args: [
  879. {
  880. name: "decimals",
  881. type: "u8",
  882. },
  883. {
  884. name: "mintAuthority",
  885. type: "publicKey",
  886. },
  887. {
  888. name: "freezeAuthority",
  889. type: {
  890. defined: "COption<Pubkey>",
  891. },
  892. },
  893. ],
  894. },
  895. {
  896. name: "initializeAccount",
  897. accounts: [
  898. {
  899. name: "account",
  900. isMut: true,
  901. isSigner: false,
  902. },
  903. {
  904. name: "mint",
  905. isMut: false,
  906. isSigner: false,
  907. },
  908. {
  909. name: "owner",
  910. isMut: false,
  911. isSigner: false,
  912. },
  913. {
  914. name: "rent",
  915. isMut: false,
  916. isSigner: false,
  917. },
  918. ],
  919. args: [],
  920. },
  921. {
  922. name: "initializeMultisig",
  923. accounts: [
  924. {
  925. name: "multisig",
  926. isMut: true,
  927. isSigner: false,
  928. },
  929. {
  930. name: "rent",
  931. isMut: false,
  932. isSigner: false,
  933. },
  934. ],
  935. args: [
  936. {
  937. name: "m",
  938. type: "u8",
  939. },
  940. ],
  941. },
  942. {
  943. name: "transfer",
  944. accounts: [
  945. {
  946. name: "source",
  947. isMut: true,
  948. isSigner: false,
  949. },
  950. {
  951. name: "destination",
  952. isMut: true,
  953. isSigner: false,
  954. },
  955. {
  956. name: "authority",
  957. isMut: false,
  958. isSigner: true,
  959. },
  960. ],
  961. args: [
  962. {
  963. name: "amount",
  964. type: "u64",
  965. },
  966. ],
  967. },
  968. {
  969. name: "approve",
  970. accounts: [
  971. {
  972. name: "source",
  973. isMut: true,
  974. isSigner: false,
  975. },
  976. {
  977. name: "delegate",
  978. isMut: false,
  979. isSigner: false,
  980. },
  981. {
  982. name: "owner",
  983. isMut: false,
  984. isSigner: true,
  985. },
  986. ],
  987. args: [
  988. {
  989. name: "amount",
  990. type: "u64",
  991. },
  992. ],
  993. },
  994. {
  995. name: "revoke",
  996. accounts: [
  997. {
  998. name: "source",
  999. isMut: true,
  1000. isSigner: false,
  1001. },
  1002. {
  1003. name: "owner",
  1004. isMut: false,
  1005. isSigner: true,
  1006. },
  1007. ],
  1008. args: [],
  1009. },
  1010. {
  1011. name: "setAuthority",
  1012. accounts: [
  1013. {
  1014. name: "owned",
  1015. isMut: true,
  1016. isSigner: false,
  1017. },
  1018. {
  1019. name: "owner",
  1020. isMut: false,
  1021. isSigner: true,
  1022. },
  1023. {
  1024. name: "signer",
  1025. isMut: false,
  1026. isSigner: true,
  1027. },
  1028. ],
  1029. args: [
  1030. {
  1031. name: "authorityType",
  1032. type: {
  1033. defined: "AuthorityType",
  1034. },
  1035. },
  1036. {
  1037. name: "newAuthority",
  1038. type: {
  1039. defined: "COption<Pubkey>",
  1040. },
  1041. },
  1042. ],
  1043. },
  1044. {
  1045. name: "mintTo",
  1046. accounts: [
  1047. {
  1048. name: "mint",
  1049. isMut: true,
  1050. isSigner: false,
  1051. },
  1052. {
  1053. name: "account",
  1054. isMut: true,
  1055. isSigner: false,
  1056. },
  1057. {
  1058. name: "owner",
  1059. isMut: false,
  1060. isSigner: true,
  1061. },
  1062. ],
  1063. args: [
  1064. {
  1065. name: "amount",
  1066. type: "u64",
  1067. },
  1068. ],
  1069. },
  1070. {
  1071. name: "burn",
  1072. accounts: [
  1073. {
  1074. name: "account",
  1075. isMut: true,
  1076. isSigner: false,
  1077. },
  1078. {
  1079. name: "mint",
  1080. isMut: true,
  1081. isSigner: false,
  1082. },
  1083. {
  1084. name: "authority",
  1085. isMut: false,
  1086. isSigner: true,
  1087. },
  1088. ],
  1089. args: [
  1090. {
  1091. name: "amount",
  1092. type: "u64",
  1093. },
  1094. ],
  1095. },
  1096. {
  1097. name: "closeAccount",
  1098. accounts: [
  1099. {
  1100. name: "account",
  1101. isMut: true,
  1102. isSigner: false,
  1103. },
  1104. {
  1105. name: "destination",
  1106. isMut: true,
  1107. isSigner: false,
  1108. },
  1109. {
  1110. name: "owner",
  1111. isMut: false,
  1112. isSigner: true,
  1113. },
  1114. ],
  1115. args: [],
  1116. },
  1117. {
  1118. name: "freezeAccount",
  1119. accounts: [
  1120. {
  1121. name: "account",
  1122. isMut: true,
  1123. isSigner: false,
  1124. },
  1125. {
  1126. name: "mint",
  1127. isMut: false,
  1128. isSigner: false,
  1129. },
  1130. {
  1131. name: "owner",
  1132. isMut: false,
  1133. isSigner: true,
  1134. },
  1135. ],
  1136. args: [],
  1137. },
  1138. {
  1139. name: "thawAccount",
  1140. accounts: [
  1141. {
  1142. name: "account",
  1143. isMut: true,
  1144. isSigner: false,
  1145. },
  1146. {
  1147. name: "mint",
  1148. isMut: false,
  1149. isSigner: false,
  1150. },
  1151. {
  1152. name: "owner",
  1153. isMut: false,
  1154. isSigner: true,
  1155. },
  1156. ],
  1157. args: [],
  1158. },
  1159. {
  1160. name: "transferChecked",
  1161. accounts: [
  1162. {
  1163. name: "source",
  1164. isMut: true,
  1165. isSigner: false,
  1166. },
  1167. {
  1168. name: "mint",
  1169. isMut: false,
  1170. isSigner: false,
  1171. },
  1172. {
  1173. name: "destination",
  1174. isMut: true,
  1175. isSigner: false,
  1176. },
  1177. {
  1178. name: "authority",
  1179. isMut: false,
  1180. isSigner: true,
  1181. },
  1182. ],
  1183. args: [
  1184. {
  1185. name: "amount",
  1186. type: "u64",
  1187. },
  1188. {
  1189. name: "decimals",
  1190. type: "u8",
  1191. },
  1192. ],
  1193. },
  1194. {
  1195. name: "approveChecked",
  1196. accounts: [
  1197. {
  1198. name: "source",
  1199. isMut: true,
  1200. isSigner: false,
  1201. },
  1202. {
  1203. name: "mint",
  1204. isMut: false,
  1205. isSigner: false,
  1206. },
  1207. {
  1208. name: "delegate",
  1209. isMut: false,
  1210. isSigner: false,
  1211. },
  1212. {
  1213. name: "owner",
  1214. isMut: false,
  1215. isSigner: true,
  1216. },
  1217. ],
  1218. args: [
  1219. {
  1220. name: "amount",
  1221. type: "u64",
  1222. },
  1223. {
  1224. name: "decimals",
  1225. type: "u8",
  1226. },
  1227. ],
  1228. },
  1229. {
  1230. name: "mintToChecked",
  1231. accounts: [
  1232. {
  1233. name: "mint",
  1234. isMut: true,
  1235. isSigner: false,
  1236. },
  1237. {
  1238. name: "account",
  1239. isMut: true,
  1240. isSigner: false,
  1241. },
  1242. {
  1243. name: "owner",
  1244. isMut: false,
  1245. isSigner: true,
  1246. },
  1247. ],
  1248. args: [
  1249. {
  1250. name: "amount",
  1251. type: "u64",
  1252. },
  1253. {
  1254. name: "decimals",
  1255. type: "u8",
  1256. },
  1257. ],
  1258. },
  1259. {
  1260. name: "burnChecked",
  1261. accounts: [
  1262. {
  1263. name: "account",
  1264. isMut: true,
  1265. isSigner: false,
  1266. },
  1267. {
  1268. name: "mint",
  1269. isMut: true,
  1270. isSigner: false,
  1271. },
  1272. {
  1273. name: "authority",
  1274. isMut: false,
  1275. isSigner: true,
  1276. },
  1277. ],
  1278. args: [
  1279. {
  1280. name: "amount",
  1281. type: "u64",
  1282. },
  1283. {
  1284. name: "decimals",
  1285. type: "u8",
  1286. },
  1287. ],
  1288. },
  1289. {
  1290. name: "initializeAccount2",
  1291. accounts: [
  1292. {
  1293. name: "account",
  1294. isMut: true,
  1295. isSigner: false,
  1296. },
  1297. {
  1298. name: "mint",
  1299. isMut: false,
  1300. isSigner: false,
  1301. },
  1302. {
  1303. name: "rent",
  1304. isMut: false,
  1305. isSigner: false,
  1306. },
  1307. ],
  1308. args: [
  1309. {
  1310. name: "owner",
  1311. type: "publicKey",
  1312. },
  1313. ],
  1314. },
  1315. {
  1316. name: "syncNative",
  1317. accounts: [
  1318. {
  1319. name: "account",
  1320. isMut: true,
  1321. isSigner: false,
  1322. },
  1323. ],
  1324. args: [],
  1325. },
  1326. {
  1327. name: "initializeAccount3",
  1328. accounts: [
  1329. {
  1330. name: "account",
  1331. isMut: true,
  1332. isSigner: false,
  1333. },
  1334. {
  1335. name: "mint",
  1336. isMut: false,
  1337. isSigner: false,
  1338. },
  1339. ],
  1340. args: [
  1341. {
  1342. name: "owner",
  1343. type: "publicKey",
  1344. },
  1345. ],
  1346. },
  1347. {
  1348. name: "initializeMultisig2",
  1349. accounts: [
  1350. {
  1351. name: "multisig",
  1352. isMut: true,
  1353. isSigner: false,
  1354. },
  1355. {
  1356. name: "signer",
  1357. isMut: false,
  1358. isSigner: false,
  1359. },
  1360. ],
  1361. args: [
  1362. {
  1363. name: "m",
  1364. type: "u8",
  1365. },
  1366. ],
  1367. },
  1368. {
  1369. name: "initializeMint2",
  1370. accounts: [
  1371. {
  1372. name: "mint",
  1373. isMut: true,
  1374. isSigner: false,
  1375. },
  1376. ],
  1377. args: [
  1378. {
  1379. name: "decimals",
  1380. type: "u8",
  1381. },
  1382. {
  1383. name: "mintAuthority",
  1384. type: "publicKey",
  1385. },
  1386. {
  1387. name: "freezeAuthority",
  1388. type: {
  1389. defined: "COption<Pubkey>",
  1390. },
  1391. },
  1392. ],
  1393. },
  1394. {
  1395. name: "getAccountDataSize",
  1396. accounts: [
  1397. {
  1398. name: "mint",
  1399. isMut: false,
  1400. isSigner: false,
  1401. },
  1402. ],
  1403. args: [],
  1404. },
  1405. {
  1406. name: "initializeImmutableOwner",
  1407. accounts: [
  1408. {
  1409. name: "account",
  1410. isMut: true,
  1411. isSigner: false,
  1412. },
  1413. ],
  1414. args: [],
  1415. },
  1416. {
  1417. name: "amountToUiAmount",
  1418. accounts: [
  1419. {
  1420. name: "mint",
  1421. isMut: false,
  1422. isSigner: false,
  1423. },
  1424. ],
  1425. args: [
  1426. {
  1427. name: "amount",
  1428. type: "u64",
  1429. },
  1430. ],
  1431. },
  1432. {
  1433. name: "uiAmountToAmount",
  1434. accounts: [
  1435. {
  1436. name: "mint",
  1437. isMut: false,
  1438. isSigner: false,
  1439. },
  1440. ],
  1441. args: [
  1442. {
  1443. name: "uiAmount",
  1444. type: {
  1445. defined: "&'astr",
  1446. },
  1447. },
  1448. ],
  1449. },
  1450. ],
  1451. accounts: [
  1452. {
  1453. name: "mint",
  1454. type: {
  1455. kind: "struct",
  1456. fields: [
  1457. {
  1458. name: "mintAuthority",
  1459. type: {
  1460. defined: "COption<Pubkey>",
  1461. },
  1462. },
  1463. {
  1464. name: "supply",
  1465. type: "u64",
  1466. },
  1467. {
  1468. name: "decimals",
  1469. type: "u8",
  1470. },
  1471. {
  1472. name: "isInitialized",
  1473. type: "bool",
  1474. },
  1475. {
  1476. name: "freezeAuthority",
  1477. type: {
  1478. defined: "COption<Pubkey>",
  1479. },
  1480. },
  1481. ],
  1482. },
  1483. },
  1484. {
  1485. name: "account",
  1486. type: {
  1487. kind: "struct",
  1488. fields: [
  1489. {
  1490. name: "mint",
  1491. type: "publicKey",
  1492. },
  1493. {
  1494. name: "owner",
  1495. type: "publicKey",
  1496. },
  1497. {
  1498. name: "amount",
  1499. type: "u64",
  1500. },
  1501. {
  1502. name: "delegate",
  1503. type: {
  1504. defined: "COption<Pubkey>",
  1505. },
  1506. },
  1507. {
  1508. name: "state",
  1509. type: {
  1510. defined: "AccountState",
  1511. },
  1512. },
  1513. {
  1514. name: "isNative",
  1515. type: {
  1516. defined: "COption<u64>",
  1517. },
  1518. },
  1519. {
  1520. name: "delegatedAmount",
  1521. type: "u64",
  1522. },
  1523. {
  1524. name: "closeAuthority",
  1525. type: {
  1526. defined: "COption<Pubkey>",
  1527. },
  1528. },
  1529. ],
  1530. },
  1531. },
  1532. {
  1533. name: "multisig",
  1534. type: {
  1535. kind: "struct",
  1536. fields: [
  1537. {
  1538. name: "m",
  1539. type: "u8",
  1540. },
  1541. {
  1542. name: "n",
  1543. type: "u8",
  1544. },
  1545. {
  1546. name: "isInitialized",
  1547. type: "bool",
  1548. },
  1549. {
  1550. name: "signers",
  1551. type: {
  1552. array: ["publicKey", 11],
  1553. },
  1554. },
  1555. ],
  1556. },
  1557. },
  1558. ],
  1559. types: [
  1560. {
  1561. name: "AccountState",
  1562. type: {
  1563. kind: "enum",
  1564. variants: [
  1565. {
  1566. name: "Uninitialized",
  1567. },
  1568. {
  1569. name: "Initialized",
  1570. },
  1571. {
  1572. name: "Frozen",
  1573. },
  1574. ],
  1575. },
  1576. },
  1577. {
  1578. name: "AuthorityType",
  1579. type: {
  1580. kind: "enum",
  1581. variants: [
  1582. {
  1583. name: "MintTokens",
  1584. },
  1585. {
  1586. name: "FreezeAccount",
  1587. },
  1588. {
  1589. name: "AccountOwner",
  1590. },
  1591. {
  1592. name: "CloseAccount",
  1593. },
  1594. ],
  1595. },
  1596. },
  1597. ],
  1598. errors: [
  1599. {
  1600. code: 0,
  1601. name: "NotRentExempt",
  1602. msg: "Lamport balance below rent-exempt threshold",
  1603. },
  1604. {
  1605. code: 1,
  1606. name: "InsufficientFunds",
  1607. msg: "Insufficient funds",
  1608. },
  1609. {
  1610. code: 2,
  1611. name: "InvalidMint",
  1612. msg: "Invalid Mint",
  1613. },
  1614. {
  1615. code: 3,
  1616. name: "MintMismatch",
  1617. msg: "Account not associated with this Mint",
  1618. },
  1619. {
  1620. code: 4,
  1621. name: "OwnerMismatch",
  1622. msg: "Owner does not match",
  1623. },
  1624. {
  1625. code: 5,
  1626. name: "FixedSupply",
  1627. msg: "Fixed supply",
  1628. },
  1629. {
  1630. code: 6,
  1631. name: "AlreadyInUse",
  1632. msg: "Already in use",
  1633. },
  1634. {
  1635. code: 7,
  1636. name: "InvalidNumberOfProvidedSigners",
  1637. msg: "Invalid number of provided signers",
  1638. },
  1639. {
  1640. code: 8,
  1641. name: "InvalidNumberOfRequiredSigners",
  1642. msg: "Invalid number of required signers",
  1643. },
  1644. {
  1645. code: 9,
  1646. name: "UninitializedState",
  1647. msg: "State is unititialized",
  1648. },
  1649. {
  1650. code: 10,
  1651. name: "NativeNotSupported",
  1652. msg: "Instruction does not support native tokens",
  1653. },
  1654. {
  1655. code: 11,
  1656. name: "NonNativeHasBalance",
  1657. msg: "Non-native account can only be closed if its balance is zero",
  1658. },
  1659. {
  1660. code: 12,
  1661. name: "InvalidInstruction",
  1662. msg: "Invalid instruction",
  1663. },
  1664. {
  1665. code: 13,
  1666. name: "InvalidState",
  1667. msg: "State is invalid for requested operation",
  1668. },
  1669. {
  1670. code: 14,
  1671. name: "Overflow",
  1672. msg: "Operation overflowed",
  1673. },
  1674. {
  1675. code: 15,
  1676. name: "AuthorityTypeNotSupported",
  1677. msg: "Account does not support specified authority type",
  1678. },
  1679. {
  1680. code: 16,
  1681. name: "MintCannotFreeze",
  1682. msg: "This token mint cannot freeze accounts",
  1683. },
  1684. {
  1685. code: 17,
  1686. name: "AccountFrozen",
  1687. msg: "Account is frozen",
  1688. },
  1689. {
  1690. code: 18,
  1691. name: "MintDecimalsMismatch",
  1692. msg: "The provided decimals value different from the Mint decimals",
  1693. },
  1694. {
  1695. code: 19,
  1696. name: "NonNativeNotSupported",
  1697. msg: "Instruction does not support non-native tokens",
  1698. },
  1699. ],
  1700. };