{"version":3,"sources":["../../src/api/ans.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Account } from \"../account\";\nimport { AccountAddress, AccountAddressInput } from \"../core\";\nimport {\n  RegisterNameParameters,\n  getExpiration,\n  getOwnerAddress,\n  registerName,\n  getPrimaryName,\n  setPrimaryName,\n  getTargetAddress,\n  setTargetAddress,\n  renewDomain,\n  getName,\n  getAccountDomains,\n  GetAccountDomainsArgs,\n  GetAccountSubdomainsArgs,\n  getAccountSubdomains,\n  getAccountNames,\n  GetAccountNamesArgs,\n  getDomainSubdomains,\n  GetDomainSubdomainsArgs,\n} from \"../internal/ans\";\nimport { GetANSNameResponse } from \"../types\";\nimport { InputGenerateTransactionOptions } from \"../transactions/types\";\nimport { AptosConfig } from \"./aptosConfig\";\nimport { SimpleTransaction } from \"../transactions/instances/simpleTransaction\";\n\n/**\n * A class to handle all `ANS` operations\n */\nexport class ANS {\n  constructor(readonly config: AptosConfig) {}\n\n  /**\n   * Retrieve the owner address of a domain name or subdomain name from the contract.\n   *\n   * @example\n   * // Will return the owner address of \"test.aptos.apt\" or undefined\n   * const owner = await aptos.getOwnerAddress({name: \"test.aptos\"})\n   * // owner = 0x123...\n   *\n   * @param args.name - A string of the name to retrieve\n   *\n   * @returns AccountAddress if the name is owned, undefined otherwise\n   */\n  async getOwnerAddress(args: { name: string }): Promise<AccountAddress | undefined> {\n    return getOwnerAddress({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Retrieve the expiration time of a domain name or subdomain name from the contract.\n   *\n   * @example\n   * // Will return the expiration of \"test.aptos.apt\" or undefined\n   * const exp = await aptos.getExpiration({name: \"test.aptos\"})\n   * // new Date(exp) would give you the date in question: 2021-01-01T00:00:00.000Z\n   *\n   * @param args.name - A string of the name to retrieve\n   *\n   * @returns number as a unix timestamp in milliseconds.\n   */\n  async getExpiration(args: { name: string }): Promise<number | undefined> {\n    return getExpiration({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Retrieve the target address of a domain or subdomain name. This is the\n   * address the name points to for use on chain. Note, the target address can\n   * point to addresses that are not the owner of the name\n   *\n   * @example\n   * const targetAddr = await aptos.getTargetAddress({name: \"test.aptos\"})\n   * // targetAddr = 0x123...\n   *\n   * @param args.name - A string of the name: primary, primary.apt, secondary.primary, secondary.primary.apt, etc.\n   *\n   * @returns AccountAddress if the name has a target, undefined otherwise\n   */\n  async getTargetAddress(args: { name: string }): Promise<AccountAddress | undefined> {\n    return getTargetAddress({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Sets the target address of a domain or subdomain name. This is the\n   * address the name points to for use on chain. Note, the target address can\n   * point to addresses that are not the owner of the name\n   *\n   * @example\n   * await aptos.setTargetAddress({sender: alice, name: \"test.aptos\", address: bob.accountAddress})\n   * const address = await aptos.getTargetAddress({name: \"test.aptos\"})\n   * // address = bob.accountAddress\n   *\n   * @param args.name - A string of the name: test.aptos.apt, test.apt, test, test.aptos, etc.\n   * @param args.address - A AccountAddressInput of the address to set the domain or subdomain to\n   *\n   * @returns SimpleTransaction\n   */\n  async setTargetAddress(args: {\n    sender: Account;\n    name: string;\n    address: AccountAddressInput;\n    options?: InputGenerateTransactionOptions;\n  }): Promise<SimpleTransaction> {\n    return setTargetAddress({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Retrieve the primary name for an account. An account can have\n   * multiple names that target it, but only a single name that is primary. An\n   * account also may not have a primary name.\n   *\n   * @example\n   * const name = await aptos.getPrimaryName({address: alice.accountAddress})\n   * // name = test.aptos\n   *\n   * @param args.address - A AccountAddressInput (address) of the account\n   *\n   * @returns a string if the account has a primary name, undefined otherwise\n   */\n  async getPrimaryName(args: { address: AccountAddressInput }): Promise<string | undefined> {\n    return getPrimaryName({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Sets the primary name for the sender. An account can have\n   * multiple names that target it, but only a single name that is primary. An\n   * account also may not have a primary name.\n   *\n   * @example\n   * await aptos.setPrimaryName({sender: alice, name: \"test.aptos\"})\n   * const primaryName = await aptos.getPrimaryName({address: alice.accountAddress})\n   * // primaryName = test.aptos\n   *\n   * @param args.sender - The sender account\n   * @param args.name - A string of the name: test, test.apt, test.aptos, test.aptos.apt, etc.\n   *\n   * @returns SimpleTransaction\n   */\n  async setPrimaryName(args: {\n    sender: Account;\n    name?: string;\n    options?: InputGenerateTransactionOptions;\n  }): Promise<SimpleTransaction> {\n    return setPrimaryName({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Registers a new name\n   *\n   * @example\n   * // An example of registering a subdomain name assuming def.apt is already registered\n   * // and belongs to the sender alice.\n   *  const txn = aptos.registerName({\n   *    sender: alice,\n   *    name: \"test.aptos.apt\",\n   *    expiration: {\n   *      policy: \"subdomain:independent\",\n   *      expirationDate: Date.now() + 30 * 24 * 60 * 60 * 1000,\n   *    },\n   *  });\n   *\n   * @param args.sender - The sender account\n   * @param args.name - A string of the name to register. This can be inclusive or exclusive of the .apt suffix.\n   * Examples include: \"test\", \"test.apt\", \"test.aptos.apt\", etc.\n   * @param args.expiration  - An object with the expiration policy of the name.\n   * @param args.expiration.policy - 'domain' | 'subdomain:follow-domain' | 'subdomain:independent'\n   * - domain: Years is required and the name will expire after the given number of years.\n   * - subdomain:follow-domain: The name will expire at the same time as the domain name.\n   * - subdomain:independent: The name will expire at the given date.\n   * @param args.expiration.expirationDate - An epoch number in milliseconds of\n   * the date when the subdomain will expire. Only applicable when the policy is\n   * set to 'subdomain:independent'.\n   * @param args.transferable  - Determines if the subdomain being minted is soul-bound. Applicable only to subdomains.\n   * @param args.targetAddress optional - The address the domain name will resolve to. If not provided,\n   * the sender's address will be used.\n   * @param args.toAddress optional - The address to send the domain name to. If not provided,\n   * the transaction will be sent to the router.\n   *\n   * @returns SimpleTransaction\n   */\n  async registerName(args: Omit<RegisterNameParameters, \"aptosConfig\">): Promise<SimpleTransaction> {\n    return registerName({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Renews a domain name\n   *\n   * Note: If a domain name was minted with V1 of the contract, it will automatically be upgraded to V2 via this transaction.\n   *\n   * @example\n   * await aptos.renewDomain({sender: alice, name: \"test\"})\n   * // test.apt will be renewed for one year\n   *\n   * @param args.sender - The sender account\n   * @param args.name - A string of the domain the subdomain will be under. The signer must be the domain owner.\n   * Subdomains cannot be renewed.\n   * @param args.years - The number of years to renew the name. Currently only one year is permitted.\n   *\n   * @returns SimpleTransaction\n   */\n  async renewDomain(args: {\n    sender: Account;\n    name: string;\n    years?: 1;\n    options?: InputGenerateTransactionOptions;\n  }): Promise<SimpleTransaction> {\n    return renewDomain({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Fetches a single name from the indexer\n   * @param args.name - A string of the name to retrieve, e.g. \"test.aptos.apt\"\n   * or \"test.apt\" or \"test\". Can be inclusive or exclusive of the .apt suffix.\n   * Can be a subdomain.\n   *\n   * @returns A promise of an ANSName or undefined\n   */\n  async getName(args: { name: string }): Promise<GetANSNameResponse[0] | undefined> {\n    return getName({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Fetches all  names for an account (both top level domains and subdomains)\n   *\n   * @param args\n   * @param args.accountAddress - A AccountAddressInput of the address to retrieve names for.\n   * @param args.options.offset - Optional, the offset to start from when fetching names\n   * @param args.options.limit - Optional, A number of the names to fetch per request\n   * @param args.options.orderBy - The order to sort the names by\n   * @param args.options.where - Additional filters to apply to the query\n   *\n   * @returns a promise of an array of ANSName\n   */\n  async getAccountNames(args: GetAccountNamesArgs): Promise<GetANSNameResponse> {\n    return getAccountNames({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Fetches all top level domain names for an account\n   *\n   * @param args\n   * @param args.accountAddress - A AccountAddressInput of the address to retrieve domain names for.\n   * @param args.options.offset - Optional, the offset to start from when fetching names\n   * @param args.options.limit - Optional, A number of the names to fetch per request\n   * @param args.options.orderBy - The order to sort the names by\n   * @param args.options.where - Additional filters to apply to the query\n   *\n   * @returns a promise of an array of ANSName\n   */\n  async getAccountDomains(args: GetAccountDomainsArgs): Promise<GetANSNameResponse> {\n    return getAccountDomains({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Fetches all subdomains names for an account\n   *\n   * @param args\n   * @param args.accountAddress - A AccountAddressInput of the address to retrieve subdomains names for.\n   * @param args.options.offset - Optional, the offset to start from when fetching names\n   * @param args.options.limit - Optional, A number of the names to fetch per request\n   * @param args.options.orderBy - The order to sort the names by\n   * @param args.options.where - Additional filters to apply to the query\n   *\n   * @returns a promise of an array of ANSName\n   */\n  async getAccountSubdomains(args: GetAccountSubdomainsArgs): Promise<GetANSNameResponse> {\n    return getAccountSubdomains({ aptosConfig: this.config, ...args });\n  }\n\n  /**\n   * Fetches all subdomains names for a given domain. Note, this will not return the domain itself.\n   *\n   * @param args\n   * @param args.domain - A string of the domain name: eg. \"test.apt\" or \"test\" (without the suffix of .apt)\n   * @param args.options.offset - Optional, the offset to start from when fetching names\n   * @param args.options.limit - Optional, A number of the names to fetch per request\n   * @param args.options.orderBy - The order to sort the names by\n   * @param args.options.where - Additional filters to apply to the query\n   *\n   * @returns a promise of an array of ANSName\n   */\n  async getDomainSubdomains(args: GetDomainSubdomainsArgs): Promise<GetANSNameResponse> {\n    return getDomainSubdomains({ aptosConfig: this.config, ...args });\n  }\n}\n"],"mappings":"wHAiCO,IAAMA,EAAN,KAAU,CACf,YAAqBC,EAAqB,CAArB,YAAAA,CAAsB,CAc3C,MAAM,gBAAgBC,EAA6D,CACjF,OAAOC,EAAgB,CAAE,YAAa,KAAK,OAAQ,GAAGD,CAAK,CAAC,CAC9D,CAcA,MAAM,cAAcA,EAAqD,CACvE,OAAOE,EAAc,CAAE,YAAa,KAAK,OAAQ,GAAGF,CAAK,CAAC,CAC5D,CAeA,MAAM,iBAAiBA,EAA6D,CAClF,OAAOG,EAAiB,CAAE,YAAa,KAAK,OAAQ,GAAGH,CAAK,CAAC,CAC/D,CAiBA,MAAM,iBAAiBA,EAKQ,CAC7B,OAAOI,EAAiB,CAAE,YAAa,KAAK,OAAQ,GAAGJ,CAAK,CAAC,CAC/D,CAeA,MAAM,eAAeA,EAAqE,CACxF,OAAOK,EAAe,CAAE,YAAa,KAAK,OAAQ,GAAGL,CAAK,CAAC,CAC7D,CAiBA,MAAM,eAAeA,EAIU,CAC7B,OAAOM,EAAe,CAAE,YAAa,KAAK,OAAQ,GAAGN,CAAK,CAAC,CAC7D,CAoCA,MAAM,aAAaA,EAA+E,CAChG,OAAOO,EAAa,CAAE,YAAa,KAAK,OAAQ,GAAGP,CAAK,CAAC,CAC3D,CAkBA,MAAM,YAAYA,EAKa,CAC7B,OAAOQ,EAAY,CAAE,YAAa,KAAK,OAAQ,GAAGR,CAAK,CAAC,CAC1D,CAUA,MAAM,QAAQA,EAAoE,CAChF,OAAOS,EAAQ,CAAE,YAAa,KAAK,OAAQ,GAAGT,CAAK,CAAC,CACtD,CAcA,MAAM,gBAAgBA,EAAwD,CAC5E,OAAOU,EAAgB,CAAE,YAAa,KAAK,OAAQ,GAAGV,CAAK,CAAC,CAC9D,CAcA,MAAM,kBAAkBA,EAA0D,CAChF,OAAOW,EAAkB,CAAE,YAAa,KAAK,OAAQ,GAAGX,CAAK,CAAC,CAChE,CAcA,MAAM,qBAAqBA,EAA6D,CACtF,OAAOY,EAAqB,CAAE,YAAa,KAAK,OAAQ,GAAGZ,CAAK,CAAC,CACnE,CAcA,MAAM,oBAAoBA,EAA4D,CACpF,OAAOa,EAAoB,CAAE,YAAa,KAAK,OAAQ,GAAGb,CAAK,CAAC,CAClE,CACF","names":["ANS","config","args","getOwnerAddress","getExpiration","getTargetAddress","setTargetAddress","getPrimaryName","setPrimaryName","registerName","renewDomain","getName","getAccountNames","getAccountDomains","getAccountSubdomains","getDomainSubdomains"]}