UNPKG

anchor-sdk

Version:

TypeScript SDK for interacting with Anchor ecosystem - badge minting, payment processing, and ERC1155 token management

280 lines (279 loc) 9.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnchorApiClient = void 0; const AnchorApiHttpClient_1 = require("./api/AnchorApiHttpClient"); /** * Anchor API 客户端 * 用于与 Anchor API 服务进行交互 */ class AnchorApiClient { /** * 创建 Anchor API 客户端 * @param config 客户端配置 */ constructor(config) { this.network = config.network; this.apiHttpClient = new AnchorApiHttpClient_1.AnchorApiHttpClient({ baseUrl: config.apiBaseUrl, authToken: config.authToken, projectId: config.projectId, chainId: config.network.id.toString(), onTokenExpired: config.onTokenExpired, }); } /** * 设置认证令牌 * @param token 认证令牌 */ setAuthToken(token) { this.apiHttpClient.setAuthToken(token); } /** * 设置 Token 过期回调 * @param callback Token 过期回调函数 */ setTokenExpiredCallback(callback) { this.apiHttpClient.setTokenExpiredCallback(callback); } /** * 设置项目 ID * @param projectId 项目 ID */ setProjectId(projectId) { this.apiHttpClient.setProjectId(projectId); } /** * 设置链 ID * @param chainId 链 ID */ setChainId(chainId) { this.apiHttpClient.setChainId(chainId); } // ==================== V2 API Methods ==================== /** * 获取徽章系列列表 * @param status 系列状态过滤器 * @param group 系列组过滤器 * @param limit 每页项目数 * @param nextToken 分页令牌 * @returns 徽章系列响应 */ async getBadgeSeries(status, group, limit, nextToken) { return this.apiHttpClient.getBadgeSeries(status, group, limit, nextToken); } /** * 获取徽章系列详情 * @param seriesId 系列标识符 * @returns 徽章系列详情响应 */ async getBadgeSeriesDetail(seriesId) { return this.apiHttpClient.getBadgeSeriesDetail(seriesId); } /** * 获取用户徽章 * @param status 徽章状态过滤器 * @param strategy 返回策略 * @param series 徽章系列过滤器 * @param limit 每页项目数 * @param nextToken 分页令牌 * @returns 徽章响应 */ async getBadges(status, strategy, series, limit, nextToken) { return this.apiHttpClient.getBadges(status, strategy, series, limit, nextToken); } /** * 获取徽章详情 * @param badgeId 徽章标识符 * @returns 徽章详情响应 */ async getBadgeDetail(badgeId) { return this.apiHttpClient.getBadgeDetail(badgeId); } /** * 检查单个徽章可领取状态 * @param badgeId 徽章标识符 * @returns 徽章可领取响应 */ async checkSingleBadgeClaimable(badgeId) { return this.apiHttpClient.checkSingleBadgeClaimable(badgeId); } /** * 获取用户徽章资产 * @param status 徽章状态过滤器 * @param strategy 返回策略 * @param series 徽章系列过滤器 * @param limit 每页项目数 * @param nextToken 分页令牌 * @returns 徽章资产响应 */ async getUserBadgeAssets(status, strategy, series, limit, nextToken) { return this.apiHttpClient.getUserBadgeAssets(status, strategy, series, limit, nextToken); } /** * 检查用户可领取徽章 * @param data 徽章检查请求 * @returns 徽章检查响应 */ async checkUserClaimableBadges(data) { return this.apiHttpClient.checkUserClaimableBadges(data); } /** * 获取用户可领取徽章 * @param series 徽章系列过滤器 * @param limit 每页项目数 * @param nextToken 分页令牌 * @returns 徽章可领取列表响应 */ async getUserClaimableBadges(series, limit, nextToken) { return this.apiHttpClient.getUserClaimableBadges(series, limit, nextToken); } /** * 获取徽章领取签名 * @param customerAddress 客户钱包地址 * @param badgeIds 要领取的徽章 ID 列表 * @returns 徽章领取签名响应 */ async getBadgeClaimSignatures(customerAddress, badgeIds) { const data = { customerAddress, badgeIds, }; return this.apiHttpClient.getBadgeClaimSignatures(data); } /** * 查询资产 * @param customerIds 用户 ID 列表 * @param status 资产状态 * @param strategy 返回策略 * @param limit 返回数量限制 * @returns 资产徽章响应 */ async getUserAssets(customerIds, status = "claimable", strategy = "all", limit = 100) { return this.apiHttpClient.getUserAssets(customerIds, status, strategy, limit); } // ==================== Legacy V1 API Methods (Deprecated) ==================== /** * 授予徽章 (Legacy) * @param data 授予徽章请求数据 * @returns 授予徽章响应 */ async grantBadge(data) { return this.apiHttpClient.grantBadge(data); } /** * 查询用户可领取或已领取的徽章 (Legacy) * @param customerId 客户 ID * @param status NFT 状态,值(claimable、claimed) * @param strategy 返回数据的策略(all:返回所有徽章, max:仅返回同系列等级最高的徽章) * @returns 徽章响应 */ async getBadgeAssets(customerId, status, strategy) { return this.apiHttpClient.badgeAssets(customerId, status, strategy); } /** * 获取 NFT 系列 (Legacy) * @returns NFT 系列响应 */ async getNftSeries() { return this.apiHttpClient.nftSeries("badge"); } /** * 通过 ID 获取 NFT 系列 (Legacy) * @param series NFT 系列 * @param customerId 用户 ID * @returns NFT 系列详情响应 */ async getNftSeriesById(series, customerId) { return this.apiHttpClient.getNftSeriesById("badge", series, customerId); } /** * 检查徽章 (Legacy) * @returns 检查响应 */ async checkBadge() { return this.apiHttpClient.check("badge"); } /** * 获取徽章检查结果 (Legacy) * @returns 检查结果响应 */ async getBadgeCheckResult() { return this.apiHttpClient.getCheckResult("badge"); } /** * 处理用户操作哈希 (Legacy) * @param userOperationHash 用户操作哈希 * @param processType 处理类型,默认为 ERC20_TRANSFER * @returns 处理响应 */ async processUserOpHash(userOperationHash, processType = "ERC20_TRANSFER") { const data = { userOperationHash, processType, }; return this.apiHttpClient.processUserOpHash(data); } /** * 加快交易处理 (Legacy) * @param txHash 交易哈希 * @returns 处理响应 */ async processTransactionHash(txHash) { return this.apiHttpClient.processTransactionHash(txHash); } // ==================== Deprecated Methods (Will be removed) ==================== /** * @deprecated 使用 getBadgeClaimSignatures 替代 * 铸造徽章 * @param customerAddress 客户地址 * @param contractAddress NFT 地址 * @param claimableIds 可领取 ID 列表 * @returns NFT 铸造响应 */ async mintBadge(customerAddress, contractAddress, claimableIds) { console.warn("mintBadge method is deprecated, use getBadgeClaimSignatures instead"); const mintRequest = { customerAddress, nftType: "badge", contractAddress, claimableIds, }; return this.apiHttpClient.mint("badge", mintRequest); } /** * @deprecated 使用 getBadgeClaimSignatures 替代 * 使用 V2 API 铸造徽章 * @param customerAddress 客户地址 * @param contractAddress NFT 地址 * @param claimableIds 可领取 ID 列表 * @returns 铸造响应 */ async mintBadgeV2(customerAddress, contractAddress, claimableIds) { console.warn("mintBadgeV2 method is deprecated, use getBadgeClaimSignatures instead"); const mintRequest = { customerAddress, nftType: "badge", contractAddress, claimableIds, }; return this.apiHttpClient.mintV2("badge", mintRequest); } /** * @deprecated 使用 checkUserClaimableBadges 替代 * 批量铸造徽章(V2) * @param customerAddress 客户地址 * @param contractAddress NFT 合约地址 * @param tokenIds 代币 ID 列表 * @returns 批量铸造响应 */ async batchMintBadge(customerAddress, contractAddress, tokenIds) { console.warn("batchMintBadge method is deprecated, use checkUserClaimableBadges instead"); const batchMintRequest = { customerAddress, contractAddress, tokenIds, }; return this.apiHttpClient.batchMint("badge", batchMintRequest); } } exports.AnchorApiClient = AnchorApiClient;