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
JavaScript
"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;