@tasknet-protocol/shared 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -54,8 +54,30 @@ declare const BADGE_TIER: {
54
54
  readonly GOLD: 2;
55
55
  };
56
56
  type BadgeTier = (typeof BADGE_TIER)[keyof typeof BADGE_TIER];
57
- declare const USDC_DECIMALS = 6;
58
- declare const API_VERSION = "0.2.0";
57
+ declare const SUI_TOKEN: {
58
+ readonly PACKAGE_ID: "0x2";
59
+ readonly MODULE: "sui";
60
+ readonly TYPE: "SUI";
61
+ readonly FULL_TYPE: "0x2::sui::SUI";
62
+ readonly DECIMALS: 9;
63
+ readonly MIST_PER_SUI: 1000000000;
64
+ readonly MIN_PAYMENT: 1000000;
65
+ };
66
+ declare const MIST_PER_SUI: bigint;
67
+ declare const SUI_DECIMALS: 9;
68
+ /**
69
+ * Convert MIST to human-readable SUI amount
70
+ * @param mist Raw MIST units (9 decimals)
71
+ * @returns Formatted string with appropriate decimal places
72
+ */
73
+ declare function formatSui(mist: bigint | number | string): string;
74
+ /**
75
+ * Convert SUI amount to raw MIST
76
+ * @param sui SUI amount (e.g., 1.5 for 1.5 SUI)
77
+ * @returns Raw MIST as bigint
78
+ */
79
+ declare function parseSui(sui: number | string): bigint;
80
+ declare const API_VERSION = "0.3.0";
59
81
  declare const NETWORKS: {
60
82
  readonly MAINNET: "mainnet";
61
83
  readonly TESTNET: "testnet";
@@ -76,13 +98,13 @@ interface AgentStats {
76
98
  workerTasksCompleted: number;
77
99
  workerTasksFailed: number;
78
100
  workerTasksExpired: number;
79
- workerTotalEarnedUsdc: bigint;
101
+ workerTotalEarnedMist: bigint;
80
102
  workerAvgCompletionSecs?: number;
81
103
  requesterTasksPosted: number;
82
104
  requesterTasksSettled: number;
83
105
  requesterTasksCancelled: number;
84
106
  requesterTasksRejected: number;
85
- requesterTotalSpentUsdc: bigint;
107
+ requesterTotalSpentMist: bigint;
86
108
  completionRate?: number;
87
109
  onTimeRate?: number;
88
110
  rejectionRate?: number;
@@ -98,8 +120,8 @@ interface Skill {
98
120
  inputSchemaHash?: string;
99
121
  outputSchemaHash?: string;
100
122
  verificationType: VerificationType;
101
- basePriceUsdc: bigint;
102
- workerBondUsdc: bigint;
123
+ basePriceMist: bigint;
124
+ workerBondMist: bigint;
103
125
  timeoutSeconds: number;
104
126
  priorityMultipliers: [number, number, number];
105
127
  metadataUri?: string;
@@ -127,7 +149,7 @@ interface Task {
127
149
  expectedOutputHash?: string;
128
150
  outputRef?: string;
129
151
  outputHash?: string;
130
- paymentAmountUsdc: bigint;
152
+ paymentAmountMist: bigint;
131
153
  workerBondAmount: bigint;
132
154
  priorityTier: PriorityTier;
133
155
  verificationType: VerificationType;
@@ -189,7 +211,7 @@ interface TaskTemplate {
189
211
  name: string;
190
212
  skillId: string;
191
213
  skillVersion: string;
192
- defaultPaymentUsdc: bigint;
214
+ defaultPaymentMist: bigint;
193
215
  defaultTimeoutSeconds: number;
194
216
  defaultPriorityTier: PriorityTier;
195
217
  inputSchema?: object;
@@ -263,4 +285,4 @@ interface WebhookPayload {
263
285
  signature: string;
264
286
  }
265
287
 
266
- export { API_VERSION, type Agent, type AgentStats, type ApiError, BADGE_TIER, type Badge, type BadgeTier, CLAIM, CLAIM_LABELS, type Claim, type ClaimType, type Composite, type CompositeStep, FULLNODE_URLS, MULTIPLIERS, NETWORKS, type Network, PRIORITY, PRIORITY_LABELS, PROTOCOL, type PaginatedResponse, type PriorityTier, STATUS, STATUS_LABELS, type Skill, type SkillCertification, type SkillMetadata, type Task, type TaskEvent, type TaskInput, type TaskOutput, type TaskStatus, type TaskTemplate, USDC_DECIMALS, VERIFICATION, VERIFICATION_LABELS, type VerificationType, type Webhook, type WebhookPayload };
288
+ export { API_VERSION, type Agent, type AgentStats, type ApiError, BADGE_TIER, type Badge, type BadgeTier, CLAIM, CLAIM_LABELS, type Claim, type ClaimType, type Composite, type CompositeStep, FULLNODE_URLS, MIST_PER_SUI, MULTIPLIERS, NETWORKS, type Network, PRIORITY, PRIORITY_LABELS, PROTOCOL, type PaginatedResponse, type PriorityTier, STATUS, STATUS_LABELS, SUI_DECIMALS, SUI_TOKEN, type Skill, type SkillCertification, type SkillMetadata, type Task, type TaskEvent, type TaskInput, type TaskOutput, type TaskStatus, type TaskTemplate, VERIFICATION, VERIFICATION_LABELS, type VerificationType, type Webhook, type WebhookPayload, formatSui, parseSui };
package/dist/index.d.ts CHANGED
@@ -54,8 +54,30 @@ declare const BADGE_TIER: {
54
54
  readonly GOLD: 2;
55
55
  };
56
56
  type BadgeTier = (typeof BADGE_TIER)[keyof typeof BADGE_TIER];
57
- declare const USDC_DECIMALS = 6;
58
- declare const API_VERSION = "0.2.0";
57
+ declare const SUI_TOKEN: {
58
+ readonly PACKAGE_ID: "0x2";
59
+ readonly MODULE: "sui";
60
+ readonly TYPE: "SUI";
61
+ readonly FULL_TYPE: "0x2::sui::SUI";
62
+ readonly DECIMALS: 9;
63
+ readonly MIST_PER_SUI: 1000000000;
64
+ readonly MIN_PAYMENT: 1000000;
65
+ };
66
+ declare const MIST_PER_SUI: bigint;
67
+ declare const SUI_DECIMALS: 9;
68
+ /**
69
+ * Convert MIST to human-readable SUI amount
70
+ * @param mist Raw MIST units (9 decimals)
71
+ * @returns Formatted string with appropriate decimal places
72
+ */
73
+ declare function formatSui(mist: bigint | number | string): string;
74
+ /**
75
+ * Convert SUI amount to raw MIST
76
+ * @param sui SUI amount (e.g., 1.5 for 1.5 SUI)
77
+ * @returns Raw MIST as bigint
78
+ */
79
+ declare function parseSui(sui: number | string): bigint;
80
+ declare const API_VERSION = "0.3.0";
59
81
  declare const NETWORKS: {
60
82
  readonly MAINNET: "mainnet";
61
83
  readonly TESTNET: "testnet";
@@ -76,13 +98,13 @@ interface AgentStats {
76
98
  workerTasksCompleted: number;
77
99
  workerTasksFailed: number;
78
100
  workerTasksExpired: number;
79
- workerTotalEarnedUsdc: bigint;
101
+ workerTotalEarnedMist: bigint;
80
102
  workerAvgCompletionSecs?: number;
81
103
  requesterTasksPosted: number;
82
104
  requesterTasksSettled: number;
83
105
  requesterTasksCancelled: number;
84
106
  requesterTasksRejected: number;
85
- requesterTotalSpentUsdc: bigint;
107
+ requesterTotalSpentMist: bigint;
86
108
  completionRate?: number;
87
109
  onTimeRate?: number;
88
110
  rejectionRate?: number;
@@ -98,8 +120,8 @@ interface Skill {
98
120
  inputSchemaHash?: string;
99
121
  outputSchemaHash?: string;
100
122
  verificationType: VerificationType;
101
- basePriceUsdc: bigint;
102
- workerBondUsdc: bigint;
123
+ basePriceMist: bigint;
124
+ workerBondMist: bigint;
103
125
  timeoutSeconds: number;
104
126
  priorityMultipliers: [number, number, number];
105
127
  metadataUri?: string;
@@ -127,7 +149,7 @@ interface Task {
127
149
  expectedOutputHash?: string;
128
150
  outputRef?: string;
129
151
  outputHash?: string;
130
- paymentAmountUsdc: bigint;
152
+ paymentAmountMist: bigint;
131
153
  workerBondAmount: bigint;
132
154
  priorityTier: PriorityTier;
133
155
  verificationType: VerificationType;
@@ -189,7 +211,7 @@ interface TaskTemplate {
189
211
  name: string;
190
212
  skillId: string;
191
213
  skillVersion: string;
192
- defaultPaymentUsdc: bigint;
214
+ defaultPaymentMist: bigint;
193
215
  defaultTimeoutSeconds: number;
194
216
  defaultPriorityTier: PriorityTier;
195
217
  inputSchema?: object;
@@ -263,4 +285,4 @@ interface WebhookPayload {
263
285
  signature: string;
264
286
  }
265
287
 
266
- export { API_VERSION, type Agent, type AgentStats, type ApiError, BADGE_TIER, type Badge, type BadgeTier, CLAIM, CLAIM_LABELS, type Claim, type ClaimType, type Composite, type CompositeStep, FULLNODE_URLS, MULTIPLIERS, NETWORKS, type Network, PRIORITY, PRIORITY_LABELS, PROTOCOL, type PaginatedResponse, type PriorityTier, STATUS, STATUS_LABELS, type Skill, type SkillCertification, type SkillMetadata, type Task, type TaskEvent, type TaskInput, type TaskOutput, type TaskStatus, type TaskTemplate, USDC_DECIMALS, VERIFICATION, VERIFICATION_LABELS, type VerificationType, type Webhook, type WebhookPayload };
288
+ export { API_VERSION, type Agent, type AgentStats, type ApiError, BADGE_TIER, type Badge, type BadgeTier, CLAIM, CLAIM_LABELS, type Claim, type ClaimType, type Composite, type CompositeStep, FULLNODE_URLS, MIST_PER_SUI, MULTIPLIERS, NETWORKS, type Network, PRIORITY, PRIORITY_LABELS, PROTOCOL, type PaginatedResponse, type PriorityTier, STATUS, STATUS_LABELS, SUI_DECIMALS, SUI_TOKEN, type Skill, type SkillCertification, type SkillMetadata, type Task, type TaskEvent, type TaskInput, type TaskOutput, type TaskStatus, type TaskTemplate, VERIFICATION, VERIFICATION_LABELS, type VerificationType, type Webhook, type WebhookPayload, formatSui, parseSui };
package/dist/index.js CHANGED
@@ -25,6 +25,7 @@ __export(index_exports, {
25
25
  CLAIM: () => CLAIM,
26
26
  CLAIM_LABELS: () => CLAIM_LABELS,
27
27
  FULLNODE_URLS: () => FULLNODE_URLS,
28
+ MIST_PER_SUI: () => MIST_PER_SUI,
28
29
  MULTIPLIERS: () => MULTIPLIERS,
29
30
  NETWORKS: () => NETWORKS,
30
31
  PRIORITY: () => PRIORITY,
@@ -32,9 +33,12 @@ __export(index_exports, {
32
33
  PROTOCOL: () => PROTOCOL,
33
34
  STATUS: () => STATUS,
34
35
  STATUS_LABELS: () => STATUS_LABELS,
35
- USDC_DECIMALS: () => USDC_DECIMALS,
36
+ SUI_DECIMALS: () => SUI_DECIMALS,
37
+ SUI_TOKEN: () => SUI_TOKEN,
36
38
  VERIFICATION: () => VERIFICATION,
37
- VERIFICATION_LABELS: () => VERIFICATION_LABELS
39
+ VERIFICATION_LABELS: () => VERIFICATION_LABELS,
40
+ formatSui: () => formatSui,
41
+ parseSui: () => parseSui
38
42
  });
39
43
  module.exports = __toCommonJS(index_exports);
40
44
 
@@ -123,8 +127,32 @@ var BADGE_TIER = {
123
127
  SILVER: 1,
124
128
  GOLD: 2
125
129
  };
126
- var USDC_DECIMALS = 6;
127
- var API_VERSION = "0.2.0";
130
+ var SUI_TOKEN = {
131
+ PACKAGE_ID: "0x2",
132
+ MODULE: "sui",
133
+ TYPE: "SUI",
134
+ FULL_TYPE: "0x2::sui::SUI",
135
+ DECIMALS: 9,
136
+ MIST_PER_SUI: 1e9,
137
+ // 10^9 - 1 SUI = 1_000_000_000 MIST
138
+ MIN_PAYMENT: 1e6
139
+ // 0.001 SUI
140
+ };
141
+ var MIST_PER_SUI = BigInt(SUI_TOKEN.MIST_PER_SUI);
142
+ var SUI_DECIMALS = SUI_TOKEN.DECIMALS;
143
+ function formatSui(mist) {
144
+ const value = typeof mist === "bigint" ? mist : BigInt(mist);
145
+ const whole = value / MIST_PER_SUI;
146
+ const fraction = value % MIST_PER_SUI;
147
+ const fractionStr = fraction.toString().padStart(9, "0").slice(0, 4);
148
+ const trimmed = fractionStr.replace(/0+$/, "") || "0";
149
+ return `${whole}.${trimmed} SUI`;
150
+ }
151
+ function parseSui(sui) {
152
+ const value = typeof sui === "string" ? parseFloat(sui) : sui;
153
+ return BigInt(Math.round(value * SUI_TOKEN.MIST_PER_SUI));
154
+ }
155
+ var API_VERSION = "0.3.0";
128
156
  var NETWORKS = {
129
157
  MAINNET: "mainnet",
130
158
  TESTNET: "testnet",
@@ -144,6 +172,7 @@ var FULLNODE_URLS = {
144
172
  CLAIM,
145
173
  CLAIM_LABELS,
146
174
  FULLNODE_URLS,
175
+ MIST_PER_SUI,
147
176
  MULTIPLIERS,
148
177
  NETWORKS,
149
178
  PRIORITY,
@@ -151,8 +180,11 @@ var FULLNODE_URLS = {
151
180
  PROTOCOL,
152
181
  STATUS,
153
182
  STATUS_LABELS,
154
- USDC_DECIMALS,
183
+ SUI_DECIMALS,
184
+ SUI_TOKEN,
155
185
  VERIFICATION,
156
- VERIFICATION_LABELS
186
+ VERIFICATION_LABELS,
187
+ formatSui,
188
+ parseSui
157
189
  });
158
190
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/constants.ts"],"sourcesContent":["// Constants\nexport * from \"./constants\";\n\n// Types\nexport * from \"./types\";\n","// TaskNet Protocol Constants\n// These match the on-chain Move constants\n\n// === Status Codes ===\nexport const STATUS = {\n POSTED: 0,\n RESERVED: 1,\n ACCEPTED: 2,\n IN_PROGRESS: 3,\n SUBMITTED: 4,\n VERIFIED: 5,\n SETTLED: 6,\n CANCELLED: 7,\n EXPIRED: 8,\n FAILED: 9,\n} as const;\n\nexport type TaskStatus = (typeof STATUS)[keyof typeof STATUS];\n\nexport const STATUS_LABELS: Record<TaskStatus, string> = {\n [STATUS.POSTED]: \"Posted\",\n [STATUS.RESERVED]: \"Reserved\",\n [STATUS.ACCEPTED]: \"Accepted\",\n [STATUS.IN_PROGRESS]: \"InProgress\",\n [STATUS.SUBMITTED]: \"Submitted\",\n [STATUS.VERIFIED]: \"Verified\",\n [STATUS.SETTLED]: \"Settled\",\n [STATUS.CANCELLED]: \"Cancelled\",\n [STATUS.EXPIRED]: \"Expired\",\n [STATUS.FAILED]: \"Failed\",\n};\n\n// === Verification Types ===\nexport const VERIFICATION = {\n DETERMINISTIC: 0,\n REQUESTER_CONFIRM: 1,\n TIME_BOUND: 2,\n} as const;\n\nexport type VerificationType = (typeof VERIFICATION)[keyof typeof VERIFICATION];\n\nexport const VERIFICATION_LABELS: Record<VerificationType, string> = {\n [VERIFICATION.DETERMINISTIC]: \"Deterministic\",\n [VERIFICATION.REQUESTER_CONFIRM]: \"RequesterConfirm\",\n [VERIFICATION.TIME_BOUND]: \"TimeBoundCompletion\",\n};\n\n// === Claim Types ===\nexport const CLAIM = {\n PENDING: 0,\n X_VERIFIED: 1,\n MOLTBOOK_VERIFIED: 2,\n GITHUB_VERIFIED: 3,\n WALLET_SIGNED: 4,\n} as const;\n\nexport type ClaimType = (typeof CLAIM)[keyof typeof CLAIM];\n\nexport const CLAIM_LABELS: Record<ClaimType, string> = {\n [CLAIM.PENDING]: \"Pending\",\n [CLAIM.X_VERIFIED]: \"X\",\n [CLAIM.MOLTBOOK_VERIFIED]: \"Moltbook\",\n [CLAIM.GITHUB_VERIFIED]: \"GitHub\",\n [CLAIM.WALLET_SIGNED]: \"WalletSigned\",\n};\n\n// === Priority Tiers ===\nexport const PRIORITY = {\n STANDARD: 0,\n PRIORITY: 1,\n URGENT: 2,\n} as const;\n\nexport type PriorityTier = (typeof PRIORITY)[keyof typeof PRIORITY];\n\nexport const PRIORITY_LABELS: Record<PriorityTier, string> = {\n [PRIORITY.STANDARD]: \"Standard\",\n [PRIORITY.PRIORITY]: \"Priority\",\n [PRIORITY.URGENT]: \"Urgent\",\n};\n\n// === Protocol Constants ===\nexport const PROTOCOL = {\n FEE_BPS: 200, // 2%\n MIN_FEE_BPS: 50, // 0.5%\n MAX_FEE_BPS: 500, // 5%\n BPS_DENOMINATOR: 10_000,\n RESERVATION_DURATION_MS: 60_000, // 60 seconds\n FEE_CHANGE_TIMELOCK_MS: 604_800_000, // 7 days\n} as const;\n\n// === Priority Multipliers (default) ===\nexport const MULTIPLIERS = {\n STANDARD: 10_000, // 1.0x\n PRIORITY: 15_000, // 1.5x\n URGENT: 25_000, // 2.5x\n} as const;\n\n// === Badge Tiers ===\nexport const BADGE_TIER = {\n BRONZE: 0,\n SILVER: 1,\n GOLD: 2,\n} as const;\n\nexport type BadgeTier = (typeof BADGE_TIER)[keyof typeof BADGE_TIER];\n\n// === USDC ===\nexport const USDC_DECIMALS = 6;\n\n// === API ===\nexport const API_VERSION = \"0.2.0\";\n\n// === Networks ===\nexport const NETWORKS = {\n MAINNET: \"mainnet\",\n TESTNET: \"testnet\",\n DEVNET: \"devnet\",\n LOCALNET: \"localnet\",\n} as const;\n\nexport type Network = (typeof NETWORKS)[keyof typeof NETWORKS];\n\nexport const FULLNODE_URLS: Record<Network, string> = {\n mainnet: \"https://fullnode.mainnet.sui.io:443\",\n testnet: \"https://fullnode.testnet.sui.io:443\",\n devnet: \"https://fullnode.devnet.sui.io:443\",\n localnet: \"http://127.0.0.1:9000\",\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACIO,IAAM,SAAS;AAAA,EACpB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AACV;AAIO,IAAM,gBAA4C;AAAA,EACvD,CAAC,OAAO,MAAM,GAAG;AAAA,EACjB,CAAC,OAAO,QAAQ,GAAG;AAAA,EACnB,CAAC,OAAO,QAAQ,GAAG;AAAA,EACnB,CAAC,OAAO,WAAW,GAAG;AAAA,EACtB,CAAC,OAAO,SAAS,GAAG;AAAA,EACpB,CAAC,OAAO,QAAQ,GAAG;AAAA,EACnB,CAAC,OAAO,OAAO,GAAG;AAAA,EAClB,CAAC,OAAO,SAAS,GAAG;AAAA,EACpB,CAAC,OAAO,OAAO,GAAG;AAAA,EAClB,CAAC,OAAO,MAAM,GAAG;AACnB;AAGO,IAAM,eAAe;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,YAAY;AACd;AAIO,IAAM,sBAAwD;AAAA,EACnE,CAAC,aAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,aAAa,iBAAiB,GAAG;AAAA,EAClC,CAAC,aAAa,UAAU,GAAG;AAC7B;AAGO,IAAM,QAAQ;AAAA,EACnB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,eAAe;AACjB;AAIO,IAAM,eAA0C;AAAA,EACrD,CAAC,MAAM,OAAO,GAAG;AAAA,EACjB,CAAC,MAAM,UAAU,GAAG;AAAA,EACpB,CAAC,MAAM,iBAAiB,GAAG;AAAA,EAC3B,CAAC,MAAM,eAAe,GAAG;AAAA,EACzB,CAAC,MAAM,aAAa,GAAG;AACzB;AAGO,IAAM,WAAW;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AACV;AAIO,IAAM,kBAAgD;AAAA,EAC3D,CAAC,SAAS,QAAQ,GAAG;AAAA,EACrB,CAAC,SAAS,QAAQ,GAAG;AAAA,EACrB,CAAC,SAAS,MAAM,GAAG;AACrB;AAGO,IAAM,WAAW;AAAA,EACtB,SAAS;AAAA;AAAA,EACT,aAAa;AAAA;AAAA,EACb,aAAa;AAAA;AAAA,EACb,iBAAiB;AAAA,EACjB,yBAAyB;AAAA;AAAA,EACzB,wBAAwB;AAAA;AAC1B;AAGO,IAAM,cAAc;AAAA,EACzB,UAAU;AAAA;AAAA,EACV,UAAU;AAAA;AAAA,EACV,QAAQ;AAAA;AACV;AAGO,IAAM,aAAa;AAAA,EACxB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AACR;AAKO,IAAM,gBAAgB;AAGtB,IAAM,cAAc;AAGpB,IAAM,WAAW;AAAA,EACtB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AACZ;AAIO,IAAM,gBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AACZ;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/constants.ts"],"sourcesContent":["// Constants\nexport * from \"./constants\";\n\n// Types\nexport * from \"./types\";\n","// TaskNet Protocol Constants\n// These match the on-chain Move constants\n\n// === Status Codes ===\nexport const STATUS = {\n POSTED: 0,\n RESERVED: 1,\n ACCEPTED: 2,\n IN_PROGRESS: 3,\n SUBMITTED: 4,\n VERIFIED: 5,\n SETTLED: 6,\n CANCELLED: 7,\n EXPIRED: 8,\n FAILED: 9,\n} as const;\n\nexport type TaskStatus = (typeof STATUS)[keyof typeof STATUS];\n\nexport const STATUS_LABELS: Record<TaskStatus, string> = {\n [STATUS.POSTED]: \"Posted\",\n [STATUS.RESERVED]: \"Reserved\",\n [STATUS.ACCEPTED]: \"Accepted\",\n [STATUS.IN_PROGRESS]: \"InProgress\",\n [STATUS.SUBMITTED]: \"Submitted\",\n [STATUS.VERIFIED]: \"Verified\",\n [STATUS.SETTLED]: \"Settled\",\n [STATUS.CANCELLED]: \"Cancelled\",\n [STATUS.EXPIRED]: \"Expired\",\n [STATUS.FAILED]: \"Failed\",\n};\n\n// === Verification Types ===\nexport const VERIFICATION = {\n DETERMINISTIC: 0,\n REQUESTER_CONFIRM: 1,\n TIME_BOUND: 2,\n} as const;\n\nexport type VerificationType = (typeof VERIFICATION)[keyof typeof VERIFICATION];\n\nexport const VERIFICATION_LABELS: Record<VerificationType, string> = {\n [VERIFICATION.DETERMINISTIC]: \"Deterministic\",\n [VERIFICATION.REQUESTER_CONFIRM]: \"RequesterConfirm\",\n [VERIFICATION.TIME_BOUND]: \"TimeBoundCompletion\",\n};\n\n// === Claim Types ===\nexport const CLAIM = {\n PENDING: 0,\n X_VERIFIED: 1,\n MOLTBOOK_VERIFIED: 2,\n GITHUB_VERIFIED: 3,\n WALLET_SIGNED: 4,\n} as const;\n\nexport type ClaimType = (typeof CLAIM)[keyof typeof CLAIM];\n\nexport const CLAIM_LABELS: Record<ClaimType, string> = {\n [CLAIM.PENDING]: \"Pending\",\n [CLAIM.X_VERIFIED]: \"X\",\n [CLAIM.MOLTBOOK_VERIFIED]: \"Moltbook\",\n [CLAIM.GITHUB_VERIFIED]: \"GitHub\",\n [CLAIM.WALLET_SIGNED]: \"WalletSigned\",\n};\n\n// === Priority Tiers ===\nexport const PRIORITY = {\n STANDARD: 0,\n PRIORITY: 1,\n URGENT: 2,\n} as const;\n\nexport type PriorityTier = (typeof PRIORITY)[keyof typeof PRIORITY];\n\nexport const PRIORITY_LABELS: Record<PriorityTier, string> = {\n [PRIORITY.STANDARD]: \"Standard\",\n [PRIORITY.PRIORITY]: \"Priority\",\n [PRIORITY.URGENT]: \"Urgent\",\n};\n\n// === Protocol Constants ===\nexport const PROTOCOL = {\n FEE_BPS: 200, // 2%\n MIN_FEE_BPS: 50, // 0.5%\n MAX_FEE_BPS: 500, // 5%\n BPS_DENOMINATOR: 10_000,\n RESERVATION_DURATION_MS: 60_000, // 60 seconds\n FEE_CHANGE_TIMELOCK_MS: 604_800_000, // 7 days\n} as const;\n\n// === Priority Multipliers (default) ===\nexport const MULTIPLIERS = {\n STANDARD: 10_000, // 1.0x\n PRIORITY: 15_000, // 1.5x\n URGENT: 25_000, // 2.5x\n} as const;\n\n// === Badge Tiers ===\nexport const BADGE_TIER = {\n BRONZE: 0,\n SILVER: 1,\n GOLD: 2,\n} as const;\n\nexport type BadgeTier = (typeof BADGE_TIER)[keyof typeof BADGE_TIER];\n\n// === SUI (Native Token) ===\n// TaskNet uses native SUI for all payments\n// SUI has 9 decimals (1 SUI = 1_000_000_000 MIST)\nexport const SUI_TOKEN = {\n PACKAGE_ID: \"0x2\",\n MODULE: \"sui\",\n TYPE: \"SUI\",\n FULL_TYPE: \"0x2::sui::SUI\",\n DECIMALS: 9,\n MIST_PER_SUI: 1_000_000_000, // 10^9 - 1 SUI = 1_000_000_000 MIST\n MIN_PAYMENT: 1_000_000, // 0.001 SUI\n} as const;\n\n// Convenience re-exports (matching @mysten/sui/utils)\nexport const MIST_PER_SUI = BigInt(SUI_TOKEN.MIST_PER_SUI);\nexport const SUI_DECIMALS = SUI_TOKEN.DECIMALS;\n\n/**\n * Convert MIST to human-readable SUI amount\n * @param mist Raw MIST units (9 decimals)\n * @returns Formatted string with appropriate decimal places\n */\nexport function formatSui(mist: bigint | number | string): string {\n const value = typeof mist === 'bigint' ? mist : BigInt(mist);\n const whole = value / MIST_PER_SUI;\n const fraction = value % MIST_PER_SUI;\n const fractionStr = fraction.toString().padStart(9, '0').slice(0, 4);\n // Remove trailing zeros\n const trimmed = fractionStr.replace(/0+$/, '') || '0';\n return `${whole}.${trimmed} SUI`;\n}\n\n/**\n * Convert SUI amount to raw MIST\n * @param sui SUI amount (e.g., 1.5 for 1.5 SUI)\n * @returns Raw MIST as bigint\n */\nexport function parseSui(sui: number | string): bigint {\n const value = typeof sui === 'string' ? parseFloat(sui) : sui;\n return BigInt(Math.round(value * SUI_TOKEN.MIST_PER_SUI));\n}\n\n// === API ===\nexport const API_VERSION = \"0.3.0\";\n\n// === Networks ===\nexport const NETWORKS = {\n MAINNET: \"mainnet\",\n TESTNET: \"testnet\",\n DEVNET: \"devnet\",\n LOCALNET: \"localnet\",\n} as const;\n\nexport type Network = (typeof NETWORKS)[keyof typeof NETWORKS];\n\nexport const FULLNODE_URLS: Record<Network, string> = {\n mainnet: \"https://fullnode.mainnet.sui.io:443\",\n testnet: \"https://fullnode.testnet.sui.io:443\",\n devnet: \"https://fullnode.devnet.sui.io:443\",\n localnet: \"http://127.0.0.1:9000\",\n};\n"],"mappings":"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","names":[]}
package/dist/index.mjs CHANGED
@@ -83,8 +83,32 @@ var BADGE_TIER = {
83
83
  SILVER: 1,
84
84
  GOLD: 2
85
85
  };
86
- var USDC_DECIMALS = 6;
87
- var API_VERSION = "0.2.0";
86
+ var SUI_TOKEN = {
87
+ PACKAGE_ID: "0x2",
88
+ MODULE: "sui",
89
+ TYPE: "SUI",
90
+ FULL_TYPE: "0x2::sui::SUI",
91
+ DECIMALS: 9,
92
+ MIST_PER_SUI: 1e9,
93
+ // 10^9 - 1 SUI = 1_000_000_000 MIST
94
+ MIN_PAYMENT: 1e6
95
+ // 0.001 SUI
96
+ };
97
+ var MIST_PER_SUI = BigInt(SUI_TOKEN.MIST_PER_SUI);
98
+ var SUI_DECIMALS = SUI_TOKEN.DECIMALS;
99
+ function formatSui(mist) {
100
+ const value = typeof mist === "bigint" ? mist : BigInt(mist);
101
+ const whole = value / MIST_PER_SUI;
102
+ const fraction = value % MIST_PER_SUI;
103
+ const fractionStr = fraction.toString().padStart(9, "0").slice(0, 4);
104
+ const trimmed = fractionStr.replace(/0+$/, "") || "0";
105
+ return `${whole}.${trimmed} SUI`;
106
+ }
107
+ function parseSui(sui) {
108
+ const value = typeof sui === "string" ? parseFloat(sui) : sui;
109
+ return BigInt(Math.round(value * SUI_TOKEN.MIST_PER_SUI));
110
+ }
111
+ var API_VERSION = "0.3.0";
88
112
  var NETWORKS = {
89
113
  MAINNET: "mainnet",
90
114
  TESTNET: "testnet",
@@ -103,6 +127,7 @@ export {
103
127
  CLAIM,
104
128
  CLAIM_LABELS,
105
129
  FULLNODE_URLS,
130
+ MIST_PER_SUI,
106
131
  MULTIPLIERS,
107
132
  NETWORKS,
108
133
  PRIORITY,
@@ -110,8 +135,11 @@ export {
110
135
  PROTOCOL,
111
136
  STATUS,
112
137
  STATUS_LABELS,
113
- USDC_DECIMALS,
138
+ SUI_DECIMALS,
139
+ SUI_TOKEN,
114
140
  VERIFICATION,
115
- VERIFICATION_LABELS
141
+ VERIFICATION_LABELS,
142
+ formatSui,
143
+ parseSui
116
144
  };
117
145
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["// TaskNet Protocol Constants\n// These match the on-chain Move constants\n\n// === Status Codes ===\nexport const STATUS = {\n POSTED: 0,\n RESERVED: 1,\n ACCEPTED: 2,\n IN_PROGRESS: 3,\n SUBMITTED: 4,\n VERIFIED: 5,\n SETTLED: 6,\n CANCELLED: 7,\n EXPIRED: 8,\n FAILED: 9,\n} as const;\n\nexport type TaskStatus = (typeof STATUS)[keyof typeof STATUS];\n\nexport const STATUS_LABELS: Record<TaskStatus, string> = {\n [STATUS.POSTED]: \"Posted\",\n [STATUS.RESERVED]: \"Reserved\",\n [STATUS.ACCEPTED]: \"Accepted\",\n [STATUS.IN_PROGRESS]: \"InProgress\",\n [STATUS.SUBMITTED]: \"Submitted\",\n [STATUS.VERIFIED]: \"Verified\",\n [STATUS.SETTLED]: \"Settled\",\n [STATUS.CANCELLED]: \"Cancelled\",\n [STATUS.EXPIRED]: \"Expired\",\n [STATUS.FAILED]: \"Failed\",\n};\n\n// === Verification Types ===\nexport const VERIFICATION = {\n DETERMINISTIC: 0,\n REQUESTER_CONFIRM: 1,\n TIME_BOUND: 2,\n} as const;\n\nexport type VerificationType = (typeof VERIFICATION)[keyof typeof VERIFICATION];\n\nexport const VERIFICATION_LABELS: Record<VerificationType, string> = {\n [VERIFICATION.DETERMINISTIC]: \"Deterministic\",\n [VERIFICATION.REQUESTER_CONFIRM]: \"RequesterConfirm\",\n [VERIFICATION.TIME_BOUND]: \"TimeBoundCompletion\",\n};\n\n// === Claim Types ===\nexport const CLAIM = {\n PENDING: 0,\n X_VERIFIED: 1,\n MOLTBOOK_VERIFIED: 2,\n GITHUB_VERIFIED: 3,\n WALLET_SIGNED: 4,\n} as const;\n\nexport type ClaimType = (typeof CLAIM)[keyof typeof CLAIM];\n\nexport const CLAIM_LABELS: Record<ClaimType, string> = {\n [CLAIM.PENDING]: \"Pending\",\n [CLAIM.X_VERIFIED]: \"X\",\n [CLAIM.MOLTBOOK_VERIFIED]: \"Moltbook\",\n [CLAIM.GITHUB_VERIFIED]: \"GitHub\",\n [CLAIM.WALLET_SIGNED]: \"WalletSigned\",\n};\n\n// === Priority Tiers ===\nexport const PRIORITY = {\n STANDARD: 0,\n PRIORITY: 1,\n URGENT: 2,\n} as const;\n\nexport type PriorityTier = (typeof PRIORITY)[keyof typeof PRIORITY];\n\nexport const PRIORITY_LABELS: Record<PriorityTier, string> = {\n [PRIORITY.STANDARD]: \"Standard\",\n [PRIORITY.PRIORITY]: \"Priority\",\n [PRIORITY.URGENT]: \"Urgent\",\n};\n\n// === Protocol Constants ===\nexport const PROTOCOL = {\n FEE_BPS: 200, // 2%\n MIN_FEE_BPS: 50, // 0.5%\n MAX_FEE_BPS: 500, // 5%\n BPS_DENOMINATOR: 10_000,\n RESERVATION_DURATION_MS: 60_000, // 60 seconds\n FEE_CHANGE_TIMELOCK_MS: 604_800_000, // 7 days\n} as const;\n\n// === Priority Multipliers (default) ===\nexport const MULTIPLIERS = {\n STANDARD: 10_000, // 1.0x\n PRIORITY: 15_000, // 1.5x\n URGENT: 25_000, // 2.5x\n} as const;\n\n// === Badge Tiers ===\nexport const BADGE_TIER = {\n BRONZE: 0,\n SILVER: 1,\n GOLD: 2,\n} as const;\n\nexport type BadgeTier = (typeof BADGE_TIER)[keyof typeof BADGE_TIER];\n\n// === USDC ===\nexport const USDC_DECIMALS = 6;\n\n// === API ===\nexport const API_VERSION = \"0.2.0\";\n\n// === Networks ===\nexport const NETWORKS = {\n MAINNET: \"mainnet\",\n TESTNET: \"testnet\",\n DEVNET: \"devnet\",\n LOCALNET: \"localnet\",\n} as const;\n\nexport type Network = (typeof NETWORKS)[keyof typeof NETWORKS];\n\nexport const FULLNODE_URLS: Record<Network, string> = {\n mainnet: \"https://fullnode.mainnet.sui.io:443\",\n testnet: \"https://fullnode.testnet.sui.io:443\",\n devnet: \"https://fullnode.devnet.sui.io:443\",\n localnet: \"http://127.0.0.1:9000\",\n};\n"],"mappings":";AAIO,IAAM,SAAS;AAAA,EACpB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AACV;AAIO,IAAM,gBAA4C;AAAA,EACvD,CAAC,OAAO,MAAM,GAAG;AAAA,EACjB,CAAC,OAAO,QAAQ,GAAG;AAAA,EACnB,CAAC,OAAO,QAAQ,GAAG;AAAA,EACnB,CAAC,OAAO,WAAW,GAAG;AAAA,EACtB,CAAC,OAAO,SAAS,GAAG;AAAA,EACpB,CAAC,OAAO,QAAQ,GAAG;AAAA,EACnB,CAAC,OAAO,OAAO,GAAG;AAAA,EAClB,CAAC,OAAO,SAAS,GAAG;AAAA,EACpB,CAAC,OAAO,OAAO,GAAG;AAAA,EAClB,CAAC,OAAO,MAAM,GAAG;AACnB;AAGO,IAAM,eAAe;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,YAAY;AACd;AAIO,IAAM,sBAAwD;AAAA,EACnE,CAAC,aAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,aAAa,iBAAiB,GAAG;AAAA,EAClC,CAAC,aAAa,UAAU,GAAG;AAC7B;AAGO,IAAM,QAAQ;AAAA,EACnB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,eAAe;AACjB;AAIO,IAAM,eAA0C;AAAA,EACrD,CAAC,MAAM,OAAO,GAAG;AAAA,EACjB,CAAC,MAAM,UAAU,GAAG;AAAA,EACpB,CAAC,MAAM,iBAAiB,GAAG;AAAA,EAC3B,CAAC,MAAM,eAAe,GAAG;AAAA,EACzB,CAAC,MAAM,aAAa,GAAG;AACzB;AAGO,IAAM,WAAW;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AACV;AAIO,IAAM,kBAAgD;AAAA,EAC3D,CAAC,SAAS,QAAQ,GAAG;AAAA,EACrB,CAAC,SAAS,QAAQ,GAAG;AAAA,EACrB,CAAC,SAAS,MAAM,GAAG;AACrB;AAGO,IAAM,WAAW;AAAA,EACtB,SAAS;AAAA;AAAA,EACT,aAAa;AAAA;AAAA,EACb,aAAa;AAAA;AAAA,EACb,iBAAiB;AAAA,EACjB,yBAAyB;AAAA;AAAA,EACzB,wBAAwB;AAAA;AAC1B;AAGO,IAAM,cAAc;AAAA,EACzB,UAAU;AAAA;AAAA,EACV,UAAU;AAAA;AAAA,EACV,QAAQ;AAAA;AACV;AAGO,IAAM,aAAa;AAAA,EACxB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AACR;AAKO,IAAM,gBAAgB;AAGtB,IAAM,cAAc;AAGpB,IAAM,WAAW;AAAA,EACtB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AACZ;AAIO,IAAM,gBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AACZ;","names":[]}
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["// TaskNet Protocol Constants\n// These match the on-chain Move constants\n\n// === Status Codes ===\nexport const STATUS = {\n POSTED: 0,\n RESERVED: 1,\n ACCEPTED: 2,\n IN_PROGRESS: 3,\n SUBMITTED: 4,\n VERIFIED: 5,\n SETTLED: 6,\n CANCELLED: 7,\n EXPIRED: 8,\n FAILED: 9,\n} as const;\n\nexport type TaskStatus = (typeof STATUS)[keyof typeof STATUS];\n\nexport const STATUS_LABELS: Record<TaskStatus, string> = {\n [STATUS.POSTED]: \"Posted\",\n [STATUS.RESERVED]: \"Reserved\",\n [STATUS.ACCEPTED]: \"Accepted\",\n [STATUS.IN_PROGRESS]: \"InProgress\",\n [STATUS.SUBMITTED]: \"Submitted\",\n [STATUS.VERIFIED]: \"Verified\",\n [STATUS.SETTLED]: \"Settled\",\n [STATUS.CANCELLED]: \"Cancelled\",\n [STATUS.EXPIRED]: \"Expired\",\n [STATUS.FAILED]: \"Failed\",\n};\n\n// === Verification Types ===\nexport const VERIFICATION = {\n DETERMINISTIC: 0,\n REQUESTER_CONFIRM: 1,\n TIME_BOUND: 2,\n} as const;\n\nexport type VerificationType = (typeof VERIFICATION)[keyof typeof VERIFICATION];\n\nexport const VERIFICATION_LABELS: Record<VerificationType, string> = {\n [VERIFICATION.DETERMINISTIC]: \"Deterministic\",\n [VERIFICATION.REQUESTER_CONFIRM]: \"RequesterConfirm\",\n [VERIFICATION.TIME_BOUND]: \"TimeBoundCompletion\",\n};\n\n// === Claim Types ===\nexport const CLAIM = {\n PENDING: 0,\n X_VERIFIED: 1,\n MOLTBOOK_VERIFIED: 2,\n GITHUB_VERIFIED: 3,\n WALLET_SIGNED: 4,\n} as const;\n\nexport type ClaimType = (typeof CLAIM)[keyof typeof CLAIM];\n\nexport const CLAIM_LABELS: Record<ClaimType, string> = {\n [CLAIM.PENDING]: \"Pending\",\n [CLAIM.X_VERIFIED]: \"X\",\n [CLAIM.MOLTBOOK_VERIFIED]: \"Moltbook\",\n [CLAIM.GITHUB_VERIFIED]: \"GitHub\",\n [CLAIM.WALLET_SIGNED]: \"WalletSigned\",\n};\n\n// === Priority Tiers ===\nexport const PRIORITY = {\n STANDARD: 0,\n PRIORITY: 1,\n URGENT: 2,\n} as const;\n\nexport type PriorityTier = (typeof PRIORITY)[keyof typeof PRIORITY];\n\nexport const PRIORITY_LABELS: Record<PriorityTier, string> = {\n [PRIORITY.STANDARD]: \"Standard\",\n [PRIORITY.PRIORITY]: \"Priority\",\n [PRIORITY.URGENT]: \"Urgent\",\n};\n\n// === Protocol Constants ===\nexport const PROTOCOL = {\n FEE_BPS: 200, // 2%\n MIN_FEE_BPS: 50, // 0.5%\n MAX_FEE_BPS: 500, // 5%\n BPS_DENOMINATOR: 10_000,\n RESERVATION_DURATION_MS: 60_000, // 60 seconds\n FEE_CHANGE_TIMELOCK_MS: 604_800_000, // 7 days\n} as const;\n\n// === Priority Multipliers (default) ===\nexport const MULTIPLIERS = {\n STANDARD: 10_000, // 1.0x\n PRIORITY: 15_000, // 1.5x\n URGENT: 25_000, // 2.5x\n} as const;\n\n// === Badge Tiers ===\nexport const BADGE_TIER = {\n BRONZE: 0,\n SILVER: 1,\n GOLD: 2,\n} as const;\n\nexport type BadgeTier = (typeof BADGE_TIER)[keyof typeof BADGE_TIER];\n\n// === SUI (Native Token) ===\n// TaskNet uses native SUI for all payments\n// SUI has 9 decimals (1 SUI = 1_000_000_000 MIST)\nexport const SUI_TOKEN = {\n PACKAGE_ID: \"0x2\",\n MODULE: \"sui\",\n TYPE: \"SUI\",\n FULL_TYPE: \"0x2::sui::SUI\",\n DECIMALS: 9,\n MIST_PER_SUI: 1_000_000_000, // 10^9 - 1 SUI = 1_000_000_000 MIST\n MIN_PAYMENT: 1_000_000, // 0.001 SUI\n} as const;\n\n// Convenience re-exports (matching @mysten/sui/utils)\nexport const MIST_PER_SUI = BigInt(SUI_TOKEN.MIST_PER_SUI);\nexport const SUI_DECIMALS = SUI_TOKEN.DECIMALS;\n\n/**\n * Convert MIST to human-readable SUI amount\n * @param mist Raw MIST units (9 decimals)\n * @returns Formatted string with appropriate decimal places\n */\nexport function formatSui(mist: bigint | number | string): string {\n const value = typeof mist === 'bigint' ? mist : BigInt(mist);\n const whole = value / MIST_PER_SUI;\n const fraction = value % MIST_PER_SUI;\n const fractionStr = fraction.toString().padStart(9, '0').slice(0, 4);\n // Remove trailing zeros\n const trimmed = fractionStr.replace(/0+$/, '') || '0';\n return `${whole}.${trimmed} SUI`;\n}\n\n/**\n * Convert SUI amount to raw MIST\n * @param sui SUI amount (e.g., 1.5 for 1.5 SUI)\n * @returns Raw MIST as bigint\n */\nexport function parseSui(sui: number | string): bigint {\n const value = typeof sui === 'string' ? parseFloat(sui) : sui;\n return BigInt(Math.round(value * SUI_TOKEN.MIST_PER_SUI));\n}\n\n// === API ===\nexport const API_VERSION = \"0.3.0\";\n\n// === Networks ===\nexport const NETWORKS = {\n MAINNET: \"mainnet\",\n TESTNET: \"testnet\",\n DEVNET: \"devnet\",\n LOCALNET: \"localnet\",\n} as const;\n\nexport type Network = (typeof NETWORKS)[keyof typeof NETWORKS];\n\nexport const FULLNODE_URLS: Record<Network, string> = {\n mainnet: \"https://fullnode.mainnet.sui.io:443\",\n testnet: \"https://fullnode.testnet.sui.io:443\",\n devnet: \"https://fullnode.devnet.sui.io:443\",\n localnet: \"http://127.0.0.1:9000\",\n};\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasknet-protocol/shared",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared types and constants for TaskNet Protocol",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",