Skip to content

Commit 2b1f7d3

Browse files
authored
Implement 3 Web4 domain API methods matching node implementation (#34)
New methods: - registerWeb4Domain() - Register domain with content and signature - resolveWeb4Domain() - Resolve domain to owner and timestamps - getWeb4Domain() - Get full domain record with content mappings Paths match node (web4/mod.rs): - POST /api/v1/web4/domains/register - GET /api/v1/web4/resolve/{domain} - GET /api/v1/web4/domains/{domain} Added types: Web4RegisterRequest, Web4RegisterResponse, Web4ResolveResponse, Web4DomainLookupResponse, Web4DomainRecord, ContentMapping Note: Issue #25 paths don't match actual node implementation. Implemented based on node source (web4/mod.rs and web4/domains.rs). Closes #25
1 parent a09d015 commit 2b1f7d3

File tree

8 files changed

+181
-4
lines changed

8 files changed

+181
-4
lines changed

dist/core/types.d.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,4 +522,48 @@ export interface ProtocolStatsResponse {
522522
average_response_time: number;
523523
error_rate: number;
524524
}
525+
export interface ContentMapping {
526+
content: string;
527+
content_type: string;
528+
}
529+
export interface Web4RegisterRequest {
530+
domain: string;
531+
owner: string;
532+
content_mappings: Record<string, ContentMapping>;
533+
metadata?: Record<string, any>;
534+
signature: string;
535+
timestamp: number;
536+
fee?: number;
537+
}
538+
export interface Web4RegisterResponse {
539+
success: boolean;
540+
domain: string;
541+
owner: string;
542+
content_mappings: Record<string, string>;
543+
fees_charged: number;
544+
registered_at: number;
545+
message: string;
546+
blockchain_transaction?: string;
547+
contract_deployed?: boolean;
548+
}
549+
export interface Web4ResolveResponse {
550+
status: string;
551+
domain: string;
552+
owner: string;
553+
registered_at: number;
554+
expires_at: number;
555+
note?: string;
556+
}
557+
export interface Web4DomainRecord {
558+
domain: string;
559+
owner: string;
560+
registered_at: number;
561+
expires_at: number;
562+
content_mappings: Record<string, string>;
563+
}
564+
export interface Web4DomainLookupResponse {
565+
found: boolean;
566+
record?: Web4DomainRecord;
567+
content_mappings: Record<string, string>;
568+
}
525569
//# sourceMappingURL=types.d.ts.map

dist/core/types.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core/zhtp-api-methods.d.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* All API method implementations for various operations
44
*/
55
import { ZhtpApiCore } from './zhtp-api-core';
6-
import { Identity, Wallet, NetworkStatus, DaoProposal, DaoStats, Transaction, Delegate, ProposalDetails, TreasuryRecord, DApp, SmartContract, ContractDeploymentResult, ContractExecutionResult, Asset, NodeStatus, SignupRequest, LoginRequest, BackupData, BackupVerification, BackupStatus, ImportBackupResponse, SeedVerification, SeedPhrases, Guardian, GuardianResponse, RecoverySession, RecoveryStatus, CitizenshipResult, ProofData, GenerateProofRequest, VerifyProofResponse, WalletListResponse, WalletBalanceResponse, SimpleSendRequest, CrossWalletTransferRequest, TransactionHistoryResponse, NetworkPeersResponse, NetworkStatsResponse, GasInfoResponse, AddPeerRequest, AddPeerResponse, ProtocolInfoResponse, HealthCheckResponse, VersionResponse, CapabilitiesResponse, ProtocolStatsResponse } from './types';
6+
import { Identity, Wallet, NetworkStatus, DaoProposal, DaoStats, Transaction, Delegate, ProposalDetails, TreasuryRecord, DApp, SmartContract, ContractDeploymentResult, ContractExecutionResult, Asset, NodeStatus, SignupRequest, LoginRequest, BackupData, BackupVerification, BackupStatus, ImportBackupResponse, SeedVerification, SeedPhrases, Guardian, GuardianResponse, RecoverySession, RecoveryStatus, CitizenshipResult, ProofData, GenerateProofRequest, VerifyProofResponse, WalletListResponse, WalletBalanceResponse, SimpleSendRequest, CrossWalletTransferRequest, TransactionHistoryResponse, NetworkPeersResponse, NetworkStatsResponse, GasInfoResponse, AddPeerRequest, AddPeerResponse, ProtocolInfoResponse, HealthCheckResponse, VersionResponse, CapabilitiesResponse, ProtocolStatsResponse, Web4RegisterRequest, Web4RegisterResponse, Web4ResolveResponse, Web4DomainLookupResponse } from './types';
77
export declare abstract class ZhtpApiMethods extends ZhtpApiCore {
88
signIn(did: string, passphrase: string): Promise<Identity>;
99
createIdentity(data: any): Promise<Identity>;
@@ -242,6 +242,24 @@ export declare abstract class ZhtpApiMethods extends ZhtpApiCore {
242242
getContractByHash(hash: string): Promise<SmartContract>;
243243
getContractById(contractId: string): Promise<SmartContract>;
244244
resolveDomain(domainName: string): Promise<DApp>;
245+
/**
246+
* Register a new Web4 domain with content
247+
* @param request - Domain registration request with owner, content, signature, fee
248+
* @returns Registration response with domain details and transaction hash
249+
*/
250+
registerWeb4Domain(request: Web4RegisterRequest): Promise<Web4RegisterResponse>;
251+
/**
252+
* Resolve Web4 domain to owner and registration details
253+
* @param domain - Domain name (e.g., "example.zhtp")
254+
* @returns Domain resolution with owner DID and registration timestamps
255+
*/
256+
resolveWeb4Domain(domain: string): Promise<Web4ResolveResponse>;
257+
/**
258+
* Get full Web4 domain information including content mappings
259+
* @param domain - Domain name (e.g., "example.zhtp")
260+
* @returns Complete domain record with content hashes
261+
*/
262+
getWeb4Domain(domain: string): Promise<Web4DomainLookupResponse>;
245263
/**
246264
* Resolve Web4 domain via DHT network
247265
* @param domain - Domain name (e.g., "example.zhtp")

0 commit comments

Comments
 (0)