{"version":3,"sources":["../../src/api/coin.ts"],"sourcesContent":["// Copyright © Endless\n// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AccountAddress, AccountAddressInput } from \"../core\";\nimport { transferCoinTransaction, getCoinData, getCoinListDataById, getCoinHolders, getCoinsList } from \"../internal/coin\";\nimport { SimpleTransaction } from \"../transactions/instances/simpleTransaction\";\nimport { InputGenerateTransactionOptions } from \"../transactions/types\";\nimport {\n  AnyNumber,\n  MoveStructId,\n  GetCoinDataResponse,\n  PageableFungibleAssetMetadataResponse,\n  PageableHoldersItem,\n  PaginationArgsOfIndexer,\n} from \"../types\";\nimport { EndlessConfig } from \"./endlessConfig\";\n\n/**\n * A class to handle all `Coin` operations\n */\nexport class Coin {\n  constructor(readonly config: EndlessConfig) { }\n\n  /**\n   * Generate a transfer coin transaction that can be simulated and/or signed and submitted\n   *\n   * @example\n   * const transferCoinTransaction = await endless.transferCoinTransaction({\n   * sender: \"0x123\",\n   * recipient:\"0x456\",\n   * amount: 10,\n   * })\n   *\n   * @param args.sender The sender account\n   * @param args.recipient The recipient address\n   * @param args.amount The amount to transfer\n   * @param args.coinType optional. The coin struct type to transfer. Defaults to 0x1::endless_coin::EndlessCoin\n   *\n   * @returns SimpleTransaction\n   */\n  async transferCoinTransaction(args: {\n    sender: AccountAddressInput;\n    fungibleAssetMetadataAddress: AccountAddress;\n    recipient: AccountAddress;\n    amount: AnyNumber;\n    coinType?: MoveStructId;\n    options?: InputGenerateTransactionOptions;\n  }): Promise<SimpleTransaction> {\n    return transferCoinTransaction({ endlessConfig: this.config, ...args });\n  }\n\n  /**\n   * @param args.coinAddress The coin address\n   *\n   * @returns GetCoinDataResponse\n   */\n  async getCoinData(coinAddress: AccountAddressInput): Promise<GetCoinDataResponse> {\n    return getCoinData(this.config, coinAddress);\n  }\n\n  /**\n   * @param args.coinListAddress The coin list address\n   *\n   * @returns GetCoinDataResponse[]\n   */\n  async getCoinListDataById(coinListAddress: AccountAddressInput[]): Promise<GetCoinDataResponse[]> {\n    return getCoinListDataById(this.config, coinListAddress);\n  }\n\n  /**\n   * Get coin holders\n   *\n   * @param coinAddress The coin address\n   * @param options.page The page number, default is 0\n   * @param options.pageSize The page size, default is 30, max is 200\n   *\n   * @returns PageableHoldersItem\n   */\n  async getCoinHolders(coinAddress: AccountAddressInput, options?: PaginationArgsOfIndexer): Promise<PageableHoldersItem> {\n    return getCoinHolders(this.config, coinAddress, options);\n  }\n\n  /**\n   * Get all coins from indexer\n   *\n   * @param options.page The page number, default is 0\n   * @param options.pageSize The page size, default is 30, max is 200\n   *\n   * @returns PageableFungibleAssetMetadataResponse\n   */\n  async getCoinsList(options?: PaginationArgsOfIndexer): Promise<PageableFungibleAssetMetadataResponse> {\n    return getCoinsList(this.config, options);\n  }\n}\n"],"mappings":"qEAqBO,IAAMA,EAAN,KAAW,CAChB,YAAqBC,EAAuB,CAAvB,YAAAA,CAAyB,CAmB9C,MAAM,wBAAwBC,EAOC,CAC7B,OAAOC,EAAwB,CAAE,cAAe,KAAK,OAAQ,GAAGD,CAAK,CAAC,CACxE,CAOA,MAAM,YAAYE,EAAgE,CAChF,OAAOC,EAAY,KAAK,OAAQD,CAAW,CAC7C,CAOA,MAAM,oBAAoBE,EAAwE,CAChG,OAAOC,EAAoB,KAAK,OAAQD,CAAe,CACzD,CAWA,MAAM,eAAeF,EAAkCI,EAAiE,CACtH,OAAOC,EAAe,KAAK,OAAQL,EAAaI,CAAO,CACzD,CAUA,MAAM,aAAaA,EAAmF,CACpG,OAAOE,EAAa,KAAK,OAAQF,CAAO,CAC1C,CACF","names":["Coin","config","args","transferCoinTransaction","coinAddress","getCoinData","coinListAddress","getCoinListDataById","options","getCoinHolders","getCoinsList"]}