facinet 1.0.0 → 2.0.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/README.md CHANGED
@@ -1,25 +1,193 @@
1
- # Facinet CLI
1
+ # Facinet
2
2
 
3
- > Command-line tool for the x402 Facilitator Network
3
+ > JavaScript SDK and CLI tool for the x402 Facilitator Network
4
4
 
5
- Make payments and manage facilitators on the x402 decentralized payment network powered by Avalanche.
5
+ Make gasless USDC payments and manage facilitators on the x402 decentralized payment network powered by Avalanche.
6
6
 
7
7
  ## Features
8
8
 
9
- - 💳 **Make Payments** - Pay via x402 using gasless USDC transfers
9
+ - 💳 **Make Payments** - Gasless USDC transfers via ERC-3009
10
10
  - 🎲 **Random Facilitator Selection** - Fair distribution across network
11
- - 🚀 **Create Facilitators** - Set up your own payment facilitator
12
- - 📊 **Manage & Monitor** - Check status, balance, and activity
13
- - 🔐 **Secure** - Local wallet management with encryption
11
+ - 🌐 **Multi-Platform** - Works in browser (MetaMask) and Node.js
12
+ - 🚀 **Easy Integration** - Simple SDK for developers
13
+ - 📊 **CLI Tool** - Command-line interface for payments and management
14
+ - 🔐 **Secure** - Wallet management with encryption
14
15
  - ⚡ **Fast** - Built on Avalanche for sub-second finality
15
16
 
16
17
  ## Installation
17
18
 
19
+ ### As a Library (SDK)
20
+
21
+ ```bash
22
+ npm install facinet
23
+ ```
24
+
25
+ ### As a CLI Tool
26
+
18
27
  ```bash
19
28
  npm install -g facinet
20
29
  ```
21
30
 
22
- ## Quick Start
31
+ ## SDK Usage
32
+
33
+ ### Browser (with MetaMask)
34
+
35
+ ```typescript
36
+ import { Facinet } from 'facinet';
37
+
38
+ // Initialize SDK
39
+ const facinet = new Facinet({
40
+ network: 'avalanche', // or 'ethereum', 'polygon'
41
+ });
42
+
43
+ // Make a payment (MetaMask will prompt for signature)
44
+ const result = await facinet.pay({
45
+ amount: '1', // Amount in USDC
46
+ recipient: '0xYourMerchantAddress', // Where you want to receive payment
47
+ });
48
+
49
+ console.log('Payment successful!', result.txHash);
50
+ console.log('Processed by:', result.facilitator.name);
51
+ ```
52
+
53
+ ### Node.js (with Private Key)
54
+
55
+ ```typescript
56
+ import { Facinet } from 'facinet';
57
+
58
+ // Initialize with private key
59
+ const facinet = new Facinet({
60
+ privateKey: process.env.PRIVATE_KEY,
61
+ network: 'avalanche',
62
+ });
63
+
64
+ // Make a payment
65
+ const result = await facinet.pay({
66
+ amount: '5',
67
+ recipient: '0xYourMerchantAddress',
68
+ });
69
+
70
+ console.log('Transaction:', result.txHash);
71
+ ```
72
+
73
+ ### Quick One-Liner
74
+
75
+ ```typescript
76
+ import { Facinet } from 'facinet';
77
+
78
+ // Quick payment without creating instance
79
+ await Facinet.quickPay({
80
+ amount: '1',
81
+ recipient: '0xMerchantAddress',
82
+ privateKey: process.env.PRIVATE_KEY,
83
+ });
84
+ ```
85
+
86
+ ### Get Available Facilitators
87
+
88
+ ```typescript
89
+ const facinet = new Facinet();
90
+
91
+ // Get all active facilitators
92
+ const facilitators = await facinet.getFacilitators();
93
+ console.log(`${facilitators.length} active facilitators`);
94
+
95
+ // Get a random facilitator
96
+ const randomFacilitator = await facinet.selectRandomFacilitator();
97
+ console.log('Selected:', randomFacilitator.name);
98
+ ```
99
+
100
+ ### SDK Configuration Options
101
+
102
+ ```typescript
103
+ interface FacinetConfig {
104
+ apiUrl?: string; // Default: 'https://x402-avalanche-chi.vercel.app'
105
+ privateKey?: string; // For Node.js (not needed in browser)
106
+ network?: 'avalanche' | 'ethereum' | 'polygon'; // Default: 'avalanche'
107
+ rpcUrl?: string; // Custom RPC URL (optional)
108
+ }
109
+ ```
110
+
111
+ ### TypeScript Support
112
+
113
+ Facinet is written in TypeScript and includes full type definitions:
114
+
115
+ ```typescript
116
+ import type {
117
+ FacinetConfig,
118
+ PaymentParams,
119
+ PaymentResult,
120
+ Facilitator
121
+ } from 'facinet';
122
+
123
+ const config: FacinetConfig = {
124
+ network: 'avalanche',
125
+ };
126
+
127
+ const params: PaymentParams = {
128
+ amount: '1',
129
+ recipient: '0x...',
130
+ };
131
+ ```
132
+
133
+ ### React Example
134
+
135
+ ```tsx
136
+ import { useState } from 'react';
137
+ import { Facinet } from 'facinet';
138
+
139
+ function PaymentButton() {
140
+ const [loading, setLoading] = useState(false);
141
+ const [txHash, setTxHash] = useState('');
142
+
143
+ const handlePayment = async () => {
144
+ setLoading(true);
145
+ try {
146
+ const facinet = new Facinet({ network: 'avalanche' });
147
+
148
+ const result = await facinet.pay({
149
+ amount: '1',
150
+ recipient: '0xYourMerchantAddress',
151
+ });
152
+
153
+ setTxHash(result.txHash);
154
+ alert('Payment successful!');
155
+ } catch (error) {
156
+ console.error('Payment failed:', error);
157
+ alert('Payment failed');
158
+ } finally {
159
+ setLoading(false);
160
+ }
161
+ };
162
+
163
+ return (
164
+ <div>
165
+ <button onClick={handlePayment} disabled={loading}>
166
+ {loading ? 'Processing...' : 'Pay 1 USDC'}
167
+ </button>
168
+ {txHash && (
169
+ <p>Transaction: <a href={`https://testnet.snowtrace.io/tx/${txHash}`} target="_blank">
170
+ {txHash.slice(0, 10)}...
171
+ </a></p>
172
+ )}
173
+ </div>
174
+ );
175
+ }
176
+ ```
177
+
178
+ ### How SDK Payments Work
179
+
180
+ 1. **Initialize SDK** - Create Facinet instance with your config
181
+ 2. **Random Facilitator** - SDK automatically picks random active facilitator
182
+ 3. **Sign Authorization** - User signs ERC-3009 authorization (gasless!)
183
+ 4. **Facilitator Executes** - Facilitator submits transaction and pays gas
184
+ 5. **Payment Complete** - USDC transferred to YOUR merchant address
185
+
186
+ **Key Point:** The `recipient` you specify in `pay()` is where YOU receive payment. The SDK automatically handles facilitator selection and gas payment.
187
+
188
+ ## CLI Usage
189
+
190
+ ### Quick Start
23
191
 
24
192
  ### 1. Connect Your Wallet
25
193
 
@@ -219,6 +387,9 @@ facinet --help
219
387
  ```
220
388
  facinet/
221
389
  ├── src/
390
+ │ ├── sdk/
391
+ │ │ ├── Facinet.ts # Main SDK class
392
+ │ │ └── types.ts # TypeScript types
222
393
  │ ├── commands/
223
394
  │ │ ├── connect.ts # Wallet connection
224
395
  │ │ ├── pay.ts # Payment processing
@@ -226,7 +397,9 @@ facinet/
226
397
  │ ├── utils/
227
398
  │ │ ├── config.ts # Configuration management
228
399
  │ │ └── api.ts # API client
400
+ │ ├── sdk.ts # SDK exports
229
401
  │ └── index.ts # CLI entry point
402
+ ├── dist/ # Compiled JavaScript
230
403
  ├── package.json
231
404
  ├── tsconfig.json
232
405
  └── README.md
@@ -83,7 +83,7 @@ async function payCommand(options) {
83
83
  let spinner = (0, ora_1.default)('Selecting random facilitator...').start();
84
84
  try {
85
85
  // Get random facilitator
86
- const facilitator = await (0, api_1.selectRandomFacilitator)(config.apiUrl || 'http://localhost:3000');
86
+ const facilitator = await (0, api_1.selectRandomFacilitator)(config.apiUrl || options.network || 'https://x402-avalanche-chi.vercel.app');
87
87
  spinner.succeed(`Selected facilitator: ${chalk_1.default.green(facilitator.name)}`);
88
88
  // Initialize wallet and provider
89
89
  spinner = (0, ora_1.default)('Preparing transaction...').start();
@@ -1 +1 @@
1
- {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Facinet SDK - Main Class
3
+ *
4
+ * JavaScript/TypeScript SDK for integrating x402 payments
5
+ */
6
+ import type { FacinetConfig, PaymentParams, PaymentResult, Facilitator } from './types';
7
+ export declare class Facinet {
8
+ private config;
9
+ private chain;
10
+ private wallet?;
11
+ constructor(config?: FacinetConfig);
12
+ /**
13
+ * Make a payment via x402 facilitator network
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const facinet = new Facinet();
18
+ * const result = await facinet.pay({
19
+ * amount: '1',
20
+ * recipient: '0xMerchantAddress',
21
+ * payerAddress: '0xCustomerAddress'
22
+ * });
23
+ * console.log('Payment successful!', result.txHash);
24
+ * ```
25
+ */
26
+ pay(params: PaymentParams): Promise<PaymentResult>;
27
+ /**
28
+ * Get all active facilitators
29
+ */
30
+ getFacilitators(): Promise<Facilitator[]>;
31
+ /**
32
+ * Select a random active facilitator
33
+ */
34
+ selectRandomFacilitator(): Promise<Facilitator>;
35
+ /**
36
+ * Quick payment helper (static method)
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * await Facinet.quickPay({
41
+ * amount: '1',
42
+ * recipient: '0xMerchantAddress',
43
+ * privateKey: process.env.PRIVATE_KEY
44
+ * });
45
+ * ```
46
+ */
47
+ static quickPay(params: PaymentParams & {
48
+ privateKey?: string;
49
+ }): Promise<PaymentResult>;
50
+ }
51
+ //# sourceMappingURL=Facinet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Facinet.d.ts","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAC;AAiCjB,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,GAAE,aAAkB;IAsBtC;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAyIxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAc/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAWrD;;;;;;;;;;;OAWG;WACU,QAAQ,CACnB,MAAM,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,aAAa,CAAC;CAW1B"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * Facinet SDK - Main Class
4
+ *
5
+ * JavaScript/TypeScript SDK for integrating x402 payments
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Facinet = void 0;
12
+ const axios_1 = __importDefault(require("axios"));
13
+ const ethers_1 = require("ethers");
14
+ const CHAINS = {
15
+ avalanche: {
16
+ name: 'Avalanche Fuji',
17
+ chainId: 43113,
18
+ rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',
19
+ usdcAddress: '0x5425890298aed601595a70AB815c96711a31Bc65',
20
+ gasToken: 'AVAX',
21
+ blockExplorer: 'https://testnet.snowtrace.io',
22
+ },
23
+ ethereum: {
24
+ name: 'Ethereum Sepolia',
25
+ chainId: 11155111,
26
+ rpcUrl: 'https://rpc.sepolia.org',
27
+ usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
28
+ gasToken: 'ETH',
29
+ blockExplorer: 'https://sepolia.etherscan.io',
30
+ },
31
+ polygon: {
32
+ name: 'Polygon Mumbai',
33
+ chainId: 80001,
34
+ rpcUrl: 'https://rpc-mumbai.maticvigil.com',
35
+ usdcAddress: '0x9999f7Fea5938fD3b1E26A12c3f2fb024e194f97',
36
+ gasToken: 'MATIC',
37
+ blockExplorer: 'https://mumbai.polygonscan.com',
38
+ },
39
+ };
40
+ const ERC3009_ABI = [
41
+ 'function transferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce, uint8 v, bytes32 r, bytes32 s) external',
42
+ ];
43
+ class Facinet {
44
+ constructor(config = {}) {
45
+ this.config = {
46
+ apiUrl: config.apiUrl || 'https://x402-avalanche-chi.vercel.app',
47
+ privateKey: config.privateKey || '',
48
+ network: config.network || 'avalanche',
49
+ rpcUrl: config.rpcUrl || '',
50
+ };
51
+ this.chain = CHAINS[this.config.network];
52
+ if (!this.chain) {
53
+ throw new Error(`Unsupported network: ${this.config.network}`);
54
+ }
55
+ // Initialize wallet if private key provided (Node.js)
56
+ if (this.config.privateKey) {
57
+ const provider = new ethers_1.JsonRpcProvider(this.config.rpcUrl || this.chain.rpcUrl);
58
+ this.wallet = new ethers_1.Wallet(this.config.privateKey, provider);
59
+ }
60
+ }
61
+ /**
62
+ * Make a payment via x402 facilitator network
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const facinet = new Facinet();
67
+ * const result = await facinet.pay({
68
+ * amount: '1',
69
+ * recipient: '0xMerchantAddress',
70
+ * payerAddress: '0xCustomerAddress'
71
+ * });
72
+ * console.log('Payment successful!', result.txHash);
73
+ * ```
74
+ */
75
+ async pay(params) {
76
+ // Validate parameters
77
+ if (!params.amount || parseFloat(params.amount) <= 0) {
78
+ throw new Error('Invalid amount');
79
+ }
80
+ if (!params.recipient.match(/^0x[a-fA-F0-9]{40}$/)) {
81
+ throw new Error('Invalid recipient address');
82
+ }
83
+ // Get payer address
84
+ let payerAddress = params.payerAddress || '';
85
+ if (!payerAddress) {
86
+ if (this.wallet) {
87
+ payerAddress = this.wallet.address;
88
+ }
89
+ else if (typeof window !== 'undefined' && window.ethereum) {
90
+ // Browser - get from MetaMask
91
+ const accounts = await window.ethereum.request({
92
+ method: 'eth_requestAccounts',
93
+ });
94
+ payerAddress = accounts[0];
95
+ }
96
+ else {
97
+ throw new Error('No payer address provided and no wallet available. Provide payerAddress or privateKey in config.');
98
+ }
99
+ }
100
+ // Select random facilitator
101
+ const facilitator = await this.selectRandomFacilitator();
102
+ // Create ERC-3009 authorization
103
+ const amount = BigInt(parseFloat(params.amount) * 1000000); // 6 decimals
104
+ const validAfter = Math.floor(Date.now() / 1000) - 60;
105
+ const validBefore = validAfter + 3600; // 1 hour
106
+ const nonce = '0x' +
107
+ Array.from({ length: 64 }, () => Math.floor(Math.random() * 16).toString(16)).join('');
108
+ // EIP-712 Domain
109
+ const domain = {
110
+ name: 'USD Coin',
111
+ version: '2',
112
+ chainId: this.chain.chainId,
113
+ verifyingContract: this.chain.usdcAddress,
114
+ };
115
+ const types = {
116
+ TransferWithAuthorization: [
117
+ { name: 'from', type: 'address' },
118
+ { name: 'to', type: 'address' },
119
+ { name: 'value', type: 'uint256' },
120
+ { name: 'validAfter', type: 'uint256' },
121
+ { name: 'validBefore', type: 'uint256' },
122
+ { name: 'nonce', type: 'bytes32' },
123
+ ],
124
+ };
125
+ const value = {
126
+ from: payerAddress,
127
+ to: params.recipient, // Payment goes to merchant's address!
128
+ value: amount,
129
+ validAfter: validAfter,
130
+ validBefore: validBefore,
131
+ nonce: nonce,
132
+ };
133
+ // Sign authorization
134
+ let signature;
135
+ if (this.wallet) {
136
+ // Node.js - sign with wallet
137
+ signature = await this.wallet.signTypedData(domain, types, value);
138
+ }
139
+ else if (typeof window !== 'undefined' && window.ethereum) {
140
+ // Browser - sign with MetaMask
141
+ signature = await window.ethereum.request({
142
+ method: 'eth_signTypedData_v4',
143
+ params: [
144
+ payerAddress,
145
+ JSON.stringify({
146
+ domain,
147
+ types,
148
+ primaryType: 'TransferWithAuthorization',
149
+ message: value,
150
+ }),
151
+ ],
152
+ });
153
+ }
154
+ else {
155
+ throw new Error('No signing method available');
156
+ }
157
+ // Submit to facilitator
158
+ const paymentPayload = {
159
+ signature,
160
+ authorization: {
161
+ from: payerAddress,
162
+ to: params.recipient,
163
+ value: amount.toString(),
164
+ validAfter: validAfter.toString(),
165
+ validBefore: validBefore.toString(),
166
+ nonce: nonce,
167
+ },
168
+ };
169
+ const response = await axios_1.default.post(`${this.config.apiUrl}/api/x402/settle-custom`, {
170
+ facilitatorId: facilitator.id,
171
+ paymentPayload: {
172
+ payload: paymentPayload,
173
+ },
174
+ });
175
+ if (!response.data.success) {
176
+ throw new Error('Payment failed: ' + (response.data.error || 'Unknown error'));
177
+ }
178
+ return {
179
+ success: true,
180
+ txHash: response.data.txHash,
181
+ facilitator: {
182
+ id: facilitator.id,
183
+ name: facilitator.name,
184
+ wallet: facilitator.facilitatorWallet,
185
+ },
186
+ payment: {
187
+ from: payerAddress,
188
+ to: params.recipient,
189
+ amount: params.amount,
190
+ network: this.config.network,
191
+ },
192
+ };
193
+ }
194
+ /**
195
+ * Get all active facilitators
196
+ */
197
+ async getFacilitators() {
198
+ const response = await axios_1.default.get(`${this.config.apiUrl}/api/facilitator/list`);
199
+ if (response.data.success) {
200
+ return response.data.facilitators.filter((f) => f.status === 'active');
201
+ }
202
+ return [];
203
+ }
204
+ /**
205
+ * Select a random active facilitator
206
+ */
207
+ async selectRandomFacilitator() {
208
+ const facilitators = await this.getFacilitators();
209
+ if (facilitators.length === 0) {
210
+ throw new Error('No active facilitators available');
211
+ }
212
+ const randomIndex = Math.floor(Math.random() * facilitators.length);
213
+ return facilitators[randomIndex];
214
+ }
215
+ /**
216
+ * Quick payment helper (static method)
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * await Facinet.quickPay({
221
+ * amount: '1',
222
+ * recipient: '0xMerchantAddress',
223
+ * privateKey: process.env.PRIVATE_KEY
224
+ * });
225
+ * ```
226
+ */
227
+ static async quickPay(params) {
228
+ const facinet = new Facinet({
229
+ privateKey: params.privateKey,
230
+ });
231
+ return facinet.pay({
232
+ amount: params.amount,
233
+ recipient: params.recipient,
234
+ payerAddress: params.payerAddress,
235
+ });
236
+ }
237
+ }
238
+ exports.Facinet = Facinet;
239
+ //# sourceMappingURL=Facinet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Facinet.js","sourceRoot":"","sources":["../../src/sdk/Facinet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * SDK Type Definitions
3
+ */
4
+ export interface FacinetConfig {
5
+ /**
6
+ * API URL for x402 facilitator network
7
+ * @default 'https://x402-avalanche-chi.vercel.app'
8
+ */
9
+ apiUrl?: string;
10
+ /**
11
+ * Private key for signing transactions (Node.js only)
12
+ * Not needed for browser - uses window.ethereum
13
+ */
14
+ privateKey?: string;
15
+ /**
16
+ * Network to use
17
+ * @default 'avalanche'
18
+ */
19
+ network?: 'avalanche' | 'ethereum' | 'polygon';
20
+ /**
21
+ * Custom RPC URL (optional)
22
+ */
23
+ rpcUrl?: string;
24
+ }
25
+ export interface PaymentParams {
26
+ /**
27
+ * Payment amount in USDC
28
+ * @example '1'
29
+ */
30
+ amount: string;
31
+ /**
32
+ * Recipient address (where USDC goes)
33
+ * This is YOUR merchant address
34
+ */
35
+ recipient: `0x${string}`;
36
+ /**
37
+ * Payer address (customer wallet)
38
+ * Optional - if not provided, uses connected wallet or privateKey
39
+ */
40
+ payerAddress?: `0x${string}`;
41
+ }
42
+ export interface PaymentResult {
43
+ /**
44
+ * Whether payment was successful
45
+ */
46
+ success: boolean;
47
+ /**
48
+ * Transaction hash
49
+ */
50
+ txHash: string;
51
+ /**
52
+ * Facilitator that processed the payment
53
+ */
54
+ facilitator: {
55
+ id: string;
56
+ name: string;
57
+ wallet: string;
58
+ };
59
+ /**
60
+ * Payment details
61
+ */
62
+ payment: {
63
+ from: string;
64
+ to: string;
65
+ amount: string;
66
+ network: string;
67
+ };
68
+ }
69
+ export interface Facilitator {
70
+ id: string;
71
+ name: string;
72
+ facilitatorWallet: string;
73
+ paymentRecipient: string;
74
+ status: 'active' | 'inactive' | 'needs_funding';
75
+ totalPayments: number;
76
+ gasBalance?: string;
77
+ }
78
+ export interface ChainConfig {
79
+ name: string;
80
+ chainId: number;
81
+ rpcUrl: string;
82
+ usdcAddress: `0x${string}`;
83
+ gasToken: string;
84
+ blockExplorer: string;
85
+ }
86
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAE/C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,WAAW,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;OAEG;IACH,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * SDK Type Definitions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}