Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
186 lines (168 loc) · 51.3 KB
/
Copy pathindex.html
File metadata and controls
186 lines (168 loc) · 51.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Dorisio SDK - v0.1.0</title><meta name="description" content="Documentation for Dorisio SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script><script async src="assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
<div class="tsd-toolbar-contents container"><a href="index.html" class="title">Dorisio SDK - v0.1.0</a>
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
<ul role="listbox" id="tsd-search-results"></ul>
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header>
<div class="container container-main">
<div class="col-content">
<div class="tsd-page-title">
<h1>Dorisio SDK - v0.1.0</h1></div>
<div class="tsd-panel tsd-typography"><h1 id="dorisio-sdk" class="tsd-anchor-link">Dorisio SDK<a href="#dorisio-sdk" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1>
<p>Platform-agnostic client library for payment and tipping infrastructure on Stellar.</p>
<h2 id="features" class="tsd-anchor-link">Features<a href="#features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<ul>
<li>🌐 <strong>Platform-Agnostic</strong>: Embeddable in any platform with REST API support</li>
<li>💰 <strong>Tip Management</strong>: Create, build, submit, and confirm tips on Stellar network</li>
<li>🔐 <strong>Wallet Verification</strong>: Challenge-response flow with Freighter wallet support</li>
<li>⚛️ <strong>React Hooks</strong>: First-class React integration with hooks layer</li>
<li>📦 <strong>TypeScript</strong>: Full type safety with comprehensive interfaces</li>
<li>🔄 <strong>Transaction Lifecycle</strong>: Complete payment flow from creation to confirmation</li>
</ul>
<h2 id="installation" class="tsd-anchor-link">Installation<a href="#installation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<pre><code class="bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">install</span><span class="hl-1"> </span><span class="hl-2">dorisio-sdk</span>
</code><button type="button">Copy</button></pre>
<h2 id="quick-start" class="tsd-anchor-link">Quick Start<a href="#quick-start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<h3 id="vanilla-client" class="tsd-anchor-link">Vanilla Client<a href="#vanilla-client" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-3">import</span><span class="hl-1"> { </span><span class="hl-4">DorisioClient</span><span class="hl-1"> } </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'dorisio-sdk'</span><span class="hl-1">;</span><br/><br/><span class="hl-5">// Initialize client</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">DorisioClient</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">baseUrl:</span><span class="hl-1"> </span><span class="hl-2">'https://api.example.com'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">token:</span><span class="hl-1"> </span><span class="hl-2">'your-auth-token'</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Create a tip</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">tip</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">createTip</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">creatorId:</span><span class="hl-1"> </span><span class="hl-2">'creator-123'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">amount:</span><span class="hl-1"> </span><span class="hl-8">100</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">message:</span><span class="hl-1"> </span><span class="hl-2">'Great content!'</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-4">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-2">'Tip created:'</span><span class="hl-1">, </span><span class="hl-4">tip</span><span class="hl-1">.</span><span class="hl-4">id</span><span class="hl-1">);</span>
</code><button type="button">Copy</button></pre>
<h3 id="react-integration" class="tsd-anchor-link">React Integration<a href="#react-integration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-3">import</span><span class="hl-1"> { </span><span class="hl-4">DorisioProvider</span><span class="hl-1">, </span><span class="hl-4">useCreateTip</span><span class="hl-1">, </span><span class="hl-4">useWallet</span><span class="hl-1"> } </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'dorisio-sdk/react'</span><span class="hl-1">;</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">App</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">DorisioClient</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">baseUrl:</span><span class="hl-1"> </span><span class="hl-2">'https://api.example.com'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">token:</span><span class="hl-1"> </span><span class="hl-4">userToken</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-3">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> <</span><span class="hl-4">DorisioProvider</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">={</span><span class="hl-4">client</span><span class="hl-1">} </span><span class="hl-4">config</span><span class="hl-1">={client.getConfig()}></span><br/><span class="hl-1"> <</span><span class="hl-4">YourApp</span><span class="hl-1"> /></span><br/><span class="hl-1"> </</span><span class="hl-4">DorisioProvider</span><span class="hl-1">></span><br/><span class="hl-1"> );</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">TipComponent</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">createTip</span><span class="hl-1">, </span><span class="hl-7">buildTransaction</span><span class="hl-1">, </span><span class="hl-7">submitTransaction</span><span class="hl-1">, </span><span class="hl-7">confirmTransaction</span><span class="hl-1">, </span><span class="hl-7">state</span><span class="hl-1"> } = </span><span class="hl-0">useCreateTip</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">generateNonce</span><span class="hl-1">, </span><span class="hl-7">getChallenge</span><span class="hl-1">, </span><span class="hl-7">verifyWallet</span><span class="hl-1"> } = </span><span class="hl-0">useWallet</span><span class="hl-1">();</span><br/><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-0">handleSendTip</span><span class="hl-1"> = </span><span class="hl-6">async</span><span class="hl-1"> () </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">// Step 1: Create tip</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">tip</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">createTip</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">creatorId:</span><span class="hl-1"> </span><span class="hl-2">'creator-123'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">amount:</span><span class="hl-1"> </span><span class="hl-8">100</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 2: Generate wallet nonce</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">nonce</span><span class="hl-1"> } = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">generateNonce</span><span class="hl-1">(</span><span class="hl-4">userPublicKey</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 3: Get challenge transaction</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">challenge</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">getChallenge</span><span class="hl-1">(</span><span class="hl-4">nonce</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 4: Sign with Freighter (pseudocode)</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">signedChallenge</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">signWithFreighter</span><span class="hl-1">(</span><span class="hl-4">challenge</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 5: Verify wallet (links wallet and signs challenge)</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">wallet</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">verifyWallet</span><span class="hl-1">(</span><span class="hl-4">userPublicKey</span><span class="hl-1">, </span><span class="hl-4">nonce</span><span class="hl-1">, </span><span class="hl-4">signedChallenge</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 6: Build payment transaction</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">transactionEnvelope</span><span class="hl-1"> } = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">buildTransaction</span><span class="hl-1">(</span><span class="hl-4">tip</span><span class="hl-1">.</span><span class="hl-4">id</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">senderPublicKey:</span><span class="hl-1"> </span><span class="hl-4">wallet</span><span class="hl-1">.</span><span class="hl-4">publicKey</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">creatorPublicKey:</span><span class="hl-1"> </span><span class="hl-4">creatorWallet</span><span class="hl-1">.</span><span class="hl-4">publicKey</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">amount:</span><span class="hl-1"> </span><span class="hl-2">'100'</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 7: Sign with Freighter</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">signedTx</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">signWithFreighter</span><span class="hl-1">(</span><span class="hl-4">transactionEnvelope</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 8: Submit signed transaction</span><br/><span class="hl-1"> </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">submitTransaction</span><span class="hl-1">(</span><span class="hl-4">tip</span><span class="hl-1">.</span><span class="hl-4">id</span><span class="hl-1">, </span><span class="hl-4">signedTx</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-5">// Step 9: Confirm on blockchain</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">confirmed</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-0">confirmTransaction</span><span class="hl-1">(</span><span class="hl-4">tip</span><span class="hl-1">.</span><span class="hl-4">id</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-2">'Tip confirmed:'</span><span class="hl-1">, </span><span class="hl-4">confirmed</span><span class="hl-1">);</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-3">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> <</span><span class="hl-9">div</span><span class="hl-1">></span><br/><span class="hl-1"> {</span><span class="hl-4">state</span><span class="hl-1">.</span><span class="hl-4">loading</span><span class="hl-1"> && <</span><span class="hl-4">p</span><span class="hl-1">></span><span class="hl-4">Processing</span><span class="hl-1">...</</span><span class="hl-4">p</span><span class="hl-1">>}</span><br/><span class="hl-1"> {</span><span class="hl-4">state</span><span class="hl-1">.</span><span class="hl-4">error</span><span class="hl-1"> && <</span><span class="hl-4">p</span><span class="hl-1">></span><span class="hl-4">Error</span><span class="hl-1">: {</span><span class="hl-4">state</span><span class="hl-1">.</span><span class="hl-4">error</span><span class="hl-1">}</</span><span class="hl-4">p</span><span class="hl-1">>}</span><br/><span class="hl-1"> <</span><span class="hl-4">button</span><span class="hl-1"> </span><span class="hl-4">onClick</span><span class="hl-1">={</span><span class="hl-4">handleSendTip</span><span class="hl-1">}></span><span class="hl-4">Send</span><span class="hl-1"> </span><span class="hl-4">Tip</span><span class="hl-1"></</span><span class="hl-4">button</span><span class="hl-1">></span><br/><span class="hl-1"> </</span><span class="hl-4">div</span><span class="hl-1">></span><br/><span class="hl-1"> );</span><br/><span class="hl-1">}</span>
</code><button type="button">Copy</button></pre>
<h2 id="client-api" class="tsd-anchor-link">Client API<a href="#client-api" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<h3 id="tip-management" class="tsd-anchor-link">Tip Management<a href="#tip-management" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-5">// Create a tip (initial step)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">tip</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">createTip</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">creatorId:</span><span class="hl-1"> </span><span class="hl-4">string</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">amount</span><span class="hl-1">: </span><span class="hl-4">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">message</span><span class="hl-1">?: </span><span class="hl-4">string</span><span class="hl-1">;</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Get tip status</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">tip</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">getTipStatus</span><span class="hl-1">(</span><span class="hl-4">tipId</span><span class="hl-1">);</span><br/><br/><span class="hl-5">// Get transaction history</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">history</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">getTransactionHistory</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">page:</span><span class="hl-1"> </span><span class="hl-8">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">pageSize:</span><span class="hl-1"> </span><span class="hl-8">10</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Get tips received by creator</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">creatorTips</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">getCreatorTipsReceived</span><span class="hl-1">(</span><span class="hl-4">creatorId</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">page:</span><span class="hl-1"> </span><span class="hl-8">1</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">pageSize:</span><span class="hl-1"> </span><span class="hl-8">20</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
</code><button type="button">Copy</button></pre>
<h3 id="stellar-transaction-building" class="tsd-anchor-link">Stellar Transaction Building<a href="#stellar-transaction-building" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-5">// Build unsigned transaction for frontend signing</span><br/><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">transactionEnvelope</span><span class="hl-1">, </span><span class="hl-7">tipId</span><span class="hl-1">, </span><span class="hl-7">fee</span><span class="hl-1"> } = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">buildPaymentTransaction</span><span class="hl-1">(</span><span class="hl-4">tipId</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">senderPublicKey:</span><span class="hl-1"> </span><span class="hl-2">'GAA...'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">creatorPublicKey:</span><span class="hl-1"> </span><span class="hl-2">'GAB...'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">amount:</span><span class="hl-1"> </span><span class="hl-2">'100'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">assetCode:</span><span class="hl-1"> </span><span class="hl-2">'USDC'</span><span class="hl-1">, </span><span class="hl-5">// optional</span><br/><span class="hl-1"> </span><span class="hl-4">assetIssuer:</span><span class="hl-1"> </span><span class="hl-2">'GA...'</span><span class="hl-1">, </span><span class="hl-5">// optional</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Submit signed transaction to network</span><br/><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">transactionHash</span><span class="hl-1">, </span><span class="hl-7">status</span><span class="hl-1"> } = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">submitPaymentTransaction</span><span class="hl-1">(</span><span class="hl-4">tipId</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">transactionEnvelope:</span><span class="hl-1"> </span><span class="hl-4">signedXdr</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Check confirmation status on Horizon</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">confirmed</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">checkTransactionConfirmation</span><span class="hl-1">(</span><span class="hl-4">tipId</span><span class="hl-1">);</span>
</code><button type="button">Copy</button></pre>
<h3 id="wallet-management" class="tsd-anchor-link">Wallet Management<a href="#wallet-management" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-5">// Generate nonce for wallet verification</span><br/><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">nonce</span><span class="hl-1"> } = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">generateNonce</span><span class="hl-1">(</span><span class="hl-4">publicKey</span><span class="hl-1">);</span><br/><br/><span class="hl-5">// Get challenge transaction (sign this with Freighter)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">challenge</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">getChallenge</span><span class="hl-1">(</span><span class="hl-4">nonce</span><span class="hl-1">);</span><br/><br/><span class="hl-5">// Verify wallet signature and link to account</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">wallet</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">verifyWallet</span><span class="hl-1">(</span><span class="hl-4">publicKey</span><span class="hl-1">, </span><span class="hl-4">nonce</span><span class="hl-1">, </span><span class="hl-4">signedChallenge</span><span class="hl-1">);</span><br/><br/><span class="hl-5">// List user's verified wallets</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">wallets</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">listWallets</span><span class="hl-1">();</span><br/><br/><span class="hl-5">// Unlink wallet</span><br/><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">unlinkWallet</span><span class="hl-1">(</span><span class="hl-4">walletId</span><span class="hl-1">);</span><br/><br/><span class="hl-5">// Get wallet balance</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">balance</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">getWalletBalance</span><span class="hl-1">(</span><span class="hl-4">walletId</span><span class="hl-1">);</span>
</code><button type="button">Copy</button></pre>
<h2 id="react-hooks" class="tsd-anchor-link">React Hooks<a href="#react-hooks" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<h3 id="dorisioprovider" class="tsd-anchor-link">DorisioProvider<a href="#dorisioprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-1"><</span><span class="hl-4">DorisioProvider</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">={</span><span class="hl-4">client</span><span class="hl-1">} </span><span class="hl-4">config</span><span class="hl-1">={client.getConfig()}></span><br/><span class="hl-1"> <</span><span class="hl-4">YourApp</span><span class="hl-1"> /></span><br/><span class="hl-1"></</span><span class="hl-4">DorisioProvider</span><span class="hl-1">></span>
</code><button type="button">Copy</button></pre>
<p><strong>Context provides:</strong></p>
<ul>
<li><code>client</code>: DorisioClient instance</li>
<li><code>auth</code>: Authentication state</li>
<li><code>error</code>: Global error state</li>
<li><code>isLoading</code>: Global loading state</li>
<li><code>setError()</code>, <code>clearError()</code>: Error management</li>
<li><code>setIsLoading()</code>: Loading state management</li>
</ul>
<h3 id="usecreatetip" class="tsd-anchor-link">useCreateTip<a href="#usecreatetip" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-6">const</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">createTip</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">buildTransaction</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">submitTransaction</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">confirmTransaction</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">state</span><span class="hl-1">: { </span><span class="hl-7">loading</span><span class="hl-1">, </span><span class="hl-7">error</span><span class="hl-1">, </span><span class="hl-7">step</span><span class="hl-1">, </span><span class="hl-7">data</span><span class="hl-1"> },</span><br/><span class="hl-1">} = </span><span class="hl-0">useCreateTip</span><span class="hl-1">();</span>
</code><button type="button">Copy</button></pre>
<p><strong>Steps:</strong> <code>idle</code> → <code>creating</code> → <code>building</code> → <code>submitting</code> → <code>confirming</code> → <code>success</code></p>
<h3 id="usewallet" class="tsd-anchor-link">useWallet<a href="#usewallet" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-6">const</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">generateNonce</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">getChallenge</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">verifyWallet</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">listWallets</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">selectWallet</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">unlinkWallet</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">renameWallet</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">getBalance</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">wallets</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">selectedWallet</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">loading</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1">,</span><br/><span class="hl-1">} = </span><span class="hl-0">useWallet</span><span class="hl-1">();</span>
</code><button type="button">Copy</button></pre>
<h3 id="usecreatorbalance" class="tsd-anchor-link">useCreatorBalance<a href="#usecreatorbalance" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-6">const</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">fetchBalance</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">refetch</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">balance</span><span class="hl-1">: { </span><span class="hl-7">totalEarnings</span><span class="hl-1">, </span><span class="hl-7">pendingBalance</span><span class="hl-1">, </span><span class="hl-7">lumens</span><span class="hl-1">, </span><span class="hl-7">usdc</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">loading</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1">,</span><br/><span class="hl-1">} = </span><span class="hl-0">useCreatorBalance</span><span class="hl-1">(</span><span class="hl-4">creatorId</span><span class="hl-1">);</span>
</code><button type="button">Copy</button></pre>
<h3 id="usetransactionhistory" class="tsd-anchor-link">useTransactionHistory<a href="#usetransactionhistory" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<pre><code class="typescript"><span class="hl-6">const</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">fetchHistory</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">transactions</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">total</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">page</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">pageSize</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">goToPage</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">nextPage</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">prevPage</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">setPageSize</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">loading</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1">,</span><br/><span class="hl-1">} = </span><span class="hl-0">useTransactionHistory</span><span class="hl-1">({ </span><span class="hl-4">page:</span><span class="hl-1"> </span><span class="hl-8">1</span><span class="hl-1">, </span><span class="hl-4">pageSize:</span><span class="hl-1"> </span><span class="hl-8">10</span><span class="hl-1"> });</span>
</code><button type="button">Copy</button></pre>
<h2 id="platform-configuration" class="tsd-anchor-link">Platform Configuration<a href="#platform-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<p>The SDK is platform-agnostic and can be integrated into any platform with a REST API.</p>
<h3 id="required-endpoints" class="tsd-anchor-link">Required Endpoints<a href="#required-endpoints" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<p>Your backend must implement these endpoints (as specified in backend documentation):</p>
<pre><code><span class="hl-7">POST</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/</span><span class="hl-4">tip</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/:</span><span class="hl-4">id</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/</span><span class="hl-4">history</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/</span><span class="hl-4">creator</span><span class="hl-1">/:</span><span class="hl-4">creatorId</span><br/><span class="hl-7">PATCH</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/:</span><span class="hl-4">id</span><span class="hl-1">/</span><span class="hl-4">status</span><br/><span class="hl-7">POST</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/:</span><span class="hl-4">id</span><span class="hl-1">/</span><span class="hl-4">build</span><br/><span class="hl-7">POST</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/:</span><span class="hl-4">id</span><span class="hl-1">/</span><span class="hl-4">submit</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">transactions</span><span class="hl-1">/:</span><span class="hl-4">id</span><span class="hl-1">/</span><span class="hl-4">confirm</span><br/><br/><span class="hl-7">POST</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/</span><span class="hl-4">nonce</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/</span><span class="hl-4">challenge</span><span class="hl-1">/:</span><span class="hl-4">nonce</span><br/><span class="hl-7">POST</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/</span><span class="hl-4">verify</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/</span><span class="hl-4">list</span><br/><span class="hl-7">DELETE</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/:</span><span class="hl-4">walletId</span><br/><span class="hl-7">PATCH</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/:</span><span class="hl-4">walletId</span><span class="hl-1">/</span><span class="hl-4">name</span><br/><span class="hl-7">GET</span><span class="hl-1"> /</span><span class="hl-4">api</span><span class="hl-1">/</span><span class="hl-4">v1</span><span class="hl-1">/</span><span class="hl-4">wallet</span><span class="hl-1">/:</span><span class="hl-4">walletId</span><span class="hl-1">/</span><span class="hl-4">balance</span>
</code><button>Copy</button></pre>
<h3 id="wallet-verification-flow" class="tsd-anchor-link">Wallet Verification Flow<a href="#wallet-verification-flow" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
<p>The SDK implements a secure challenge-response flow:</p>
<ol>
<li><strong>Generate Nonce</strong>: <code>POST /api/v1/wallet/nonce</code> → get random nonce</li>
<li><strong>Get Challenge</strong>: <code>GET /api/v1/wallet/challenge/{nonce}</code> → get transaction to sign</li>
<li><strong>Sign Challenge</strong>: User signs with Freighter wallet (frontend)</li>
<li><strong>Verify Signature</strong>: <code>POST /api/v1/wallet/verify</code> → backend verifies and links wallet</li>
</ol>
<p>See <code>DECOUPLING_VERIFICATION.md</code> for platform integration examples.</p>
<h2 id="authentication" class="tsd-anchor-link">Authentication<a href="#authentication" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<p>The SDK uses bearer token authentication:</p>
<pre><code class="typescript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">DorisioClient</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">baseUrl:</span><span class="hl-1"> </span><span class="hl-2">'https://api.example.com'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">token:</span><span class="hl-1"> </span><span class="hl-2">'your-jwt-or-bearer-token'</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">// Update token</span><br/><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">setToken</span><span class="hl-1">(</span><span class="hl-2">'new-token'</span><span class="hl-1">);</span><br/><br/><span class="hl-5">// Clear token</span><br/><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">clearToken</span><span class="hl-1">();</span>
</code><button type="button">Copy</button></pre>
<h2 id="error-handling" class="tsd-anchor-link">Error Handling<a href="#error-handling" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<pre><code class="typescript"><span class="hl-3">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">tip</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">createTip</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">creatorId:</span><span class="hl-1"> </span><span class="hl-2">'creator-123'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">amount:</span><span class="hl-1"> </span><span class="hl-8">100</span><span class="hl-1">,</span><br/><span class="hl-1"> });</span><br/><span class="hl-1">} </span><span class="hl-3">catch</span><span class="hl-1"> (</span><span class="hl-4">error</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-4">console</span><span class="hl-1">.</span><span class="hl-0">error</span><span class="hl-1">(</span><span class="hl-2">'Error creating tip:'</span><span class="hl-1">, </span><span class="hl-4">error</span><span class="hl-1">.</span><span class="hl-4">message</span><span class="hl-1">);</span><br/><span class="hl-1">}</span>
</code><button type="button">Copy</button></pre>
<p>React hooks provide error state:</p>
<pre><code class="typescript"><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">error</span><span class="hl-1">, </span><span class="hl-7">setError</span><span class="hl-1">, </span><span class="hl-7">clearError</span><span class="hl-1"> } = </span><span class="hl-0">useDorisio</span><span class="hl-1">();</span><br/><br/><span class="hl-3">if</span><span class="hl-1"> (</span><span class="hl-4">error</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-4">console</span><span class="hl-1">.</span><span class="hl-0">error</span><span class="hl-1">(</span><span class="hl-2">`[</span><span class="hl-6">${</span><span class="hl-4">error</span><span class="hl-10">.</span><span class="hl-4">code</span><span class="hl-6">}</span><span class="hl-2">] </span><span class="hl-6">${</span><span class="hl-4">error</span><span class="hl-10">.</span><span class="hl-4">message</span><span class="hl-6">}</span><span class="hl-2">`</span><span class="hl-1">);</span><br/><span class="hl-1">}</span>
</code><button type="button">Copy</button></pre>
<h2 id="advanced-configuration" class="tsd-anchor-link">Advanced Configuration<a href="#advanced-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<pre><code class="typescript"><span class="hl-3">import</span><span class="hl-1"> { </span><span class="hl-4">setConfig</span><span class="hl-1"> } </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'dorisio-sdk'</span><span class="hl-1">;</span><br/><br/><span class="hl-0">setConfig</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">apiUrl:</span><span class="hl-1"> </span><span class="hl-2">'https://api.example.com'</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">timeout:</span><span class="hl-1"> </span><span class="hl-8">60000</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">retryAttempts:</span><span class="hl-1"> </span><span class="hl-8">3</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">retryDelay:</span><span class="hl-1"> </span><span class="hl-8">2000</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">debug:</span><span class="hl-1"> </span><span class="hl-6">true</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
</code><button type="button">Copy</button></pre>
<h2 id="development" class="tsd-anchor-link">Development<a href="#development" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<pre><code class="bash"><span class="hl-5"># Install dependencies</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">install</span><br/><br/><span class="hl-5"># Run tests (86 tests: 46 client + 40 hooks)</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">test</span><br/><br/><span class="hl-5"># Watch mode for development</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">test:watch</span><br/><br/><span class="hl-5"># Build SDK</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">build</span><br/><br/><span class="hl-5"># Watch mode build</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">dev</span><br/><br/><span class="hl-5"># Lint</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">lint</span><br/><br/><span class="hl-5"># Type check</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">type-check</span>
</code><button type="button">Copy</button></pre>
<p><strong>Test Coverage:</strong></p>
<ul>
<li>Client methods: All auth, creator, and transaction methods with success/error scenarios</li>
<li>React hooks: All hooks with state management, pagination, error handling</li>
<li>100% test success rate</li>
</ul>
<h2 id="publishing" class="tsd-anchor-link">Publishing<a href="#publishing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<pre><code class="bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">publish</span>
</code><button type="button">Copy</button></pre>
<p>This publishes as <code>dorisio-sdk@0.1.0</code> with:</p>
<ul>
<li>Main export: <code>dist/index.js</code></li>
<li>React export: <code>dist/react/index.js</code></li>
<li>TypeScript types included</li>
</ul>
<h2 id="license" class="tsd-anchor-link">License<a href="#license" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
<p>MIT</p>
</div></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>
<h3>Settings</h3></summary>
<div class="tsd-accordion-details">
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
<ul id="tsd-filter-options">
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div>
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div>
<details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg>
<h3>On This Page</h3></summary>
<div class="tsd-accordion-details"><a href="#dorisio-sdk"><span>Dorisio <wbr/>SDK</span></a>
<ul>
<li><a href="#features"><span>Features</span></a></li>
<li><a href="#installation"><span>Installation</span></a></li>
<li><a href="#quick-start"><span>Quick <wbr/>Start</span></a></li>
<li>
<ul>
<li><a href="#vanilla-client"><span>Vanilla <wbr/>Client</span></a></li>
<li><a href="#react-integration"><span>React <wbr/>Integration</span></a></li></ul></li>
<li><a href="#client-api"><span>Client <wbr/>API</span></a></li>
<li>
<ul>
<li><a href="#tip-management"><span>Tip <wbr/>Management</span></a></li>
<li><a href="#stellar-transaction-building"><span>Stellar <wbr/>Transaction <wbr/>Building</span></a></li>
<li><a href="#wallet-management"><span>Wallet <wbr/>Management</span></a></li></ul></li>
<li><a href="#react-hooks"><span>React <wbr/>Hooks</span></a></li>
<li>
<ul>
<li><a href="#dorisioprovider"><span>Dorisio<wbr/>Provider</span></a></li>
<li><a href="#usecreatetip"><span>use<wbr/>Create<wbr/>Tip</span></a></li>
<li><a href="#usewallet"><span>use<wbr/>Wallet</span></a></li>
<li><a href="#usecreatorbalance"><span>use<wbr/>Creator<wbr/>Balance</span></a></li>
<li><a href="#usetransactionhistory"><span>use<wbr/>Transaction<wbr/>History</span></a></li></ul></li>
<li><a href="#platform-configuration"><span>Platform <wbr/>Configuration</span></a></li>
<li>
<ul>
<li><a href="#required-endpoints"><span>Required <wbr/>Endpoints</span></a></li>
<li><a href="#wallet-verification-flow"><span>Wallet <wbr/>Verification <wbr/>Flow</span></a></li></ul></li>
<li><a href="#authentication"><span>Authentication</span></a></li>
<li><a href="#error-handling"><span>Error <wbr/>Handling</span></a></li>
<li><a href="#advanced-configuration"><span>Advanced <wbr/>Configuration</span></a></li>
<li><a href="#development"><span>Development</span></a></li>
<li><a href="#publishing"><span>Publishing</span></a></li>
<li><a href="#license"><span>License</span></a></li></ul></div></details></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="modules.html">Dorisio SDK - v0.1.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
<li>Loading...</li></ul></nav></div></div></div><footer>
<p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer>
<div class="overlay"></div></body></html>