@campnetwork/origin 0.0.4 → 0.0.6
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 +27 -27
- package/dist/core.cjs +83 -62
- package/dist/core.d.ts +2 -5
- package/dist/core.esm.d.ts +2 -5
- package/dist/core.esm.js +89 -68
- package/dist/react/index.esm.d.ts +2 -5
- package/dist/react/index.esm.js +749 -604
- package/package.json +3 -3
package/dist/core.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"axios";import{custom as t,createWalletClient as n,createPublicClient as i,http as a,erc20Abi as r,getAbiItem as s,encodeFunctionData as o,zeroAddress as d}from"viem";import{toAccount as u}from"viem/accounts";import{createSiweMessage as l}from"viem/siwe";
|
|
2
2
|
/******************************************************************************
|
|
3
3
|
Copyright (c) Microsoft Corporation.
|
|
4
4
|
|
|
@@ -13,7 +13,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
***************************************************************************** */
|
|
16
|
-
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */function p(t,
|
|
16
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */function p(e,t,n,i){return new(n||(n=Promise))((function(a,r){function s(e){try{d(i.next(e))}catch(e){r(e)}}function o(e){try{d(i.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}d((i=i.apply(e,t||[])).next())}))}function c(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function y(e,t,n,i,a){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?a.call(e,n):a?a.value=n:t.set(e,n),n}"function"==typeof SuppressedError&&SuppressedError;class h extends Error{constructor(e,t){super(e),this.name="APIError",this.statusCode=t||500,Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:this.statusCode||500}}}
|
|
17
17
|
/**
|
|
18
18
|
* Makes a GET request to the given URL with the provided headers.
|
|
19
19
|
*
|
|
@@ -21,7 +21,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
21
21
|
* @param {object} headers - The headers to include in the request.
|
|
22
22
|
* @returns {Promise<object>} - The response data.
|
|
23
23
|
* @throws {APIError} - Throws an error if the request fails.
|
|
24
|
-
*/function m(
|
|
24
|
+
*/function m(t){return p(this,arguments,void 0,(function*(t,n={}){try{return(yield e.get(t,{headers:n})).data}catch(e){if(e.response)throw new h(e.response.data.message||"API request failed",e.response.status);throw new h("Network error or server is unavailable",500)}}))}
|
|
25
25
|
/**
|
|
26
26
|
* Constructs a query string from an object of query parameters.
|
|
27
27
|
*
|
|
@@ -35,7 +35,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
35
35
|
* @param {object} params - An object representing query parameters.
|
|
36
36
|
* @returns {string} - The complete URL with query string.
|
|
37
37
|
*/
|
|
38
|
-
function f(t
|
|
38
|
+
function f(e,t={}){const n=function(e={}){return Object.keys(e).map((t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&")}(t);return n?`${e}?${n}`:e}const w="https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev/twitter",v="https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev/spotify";
|
|
39
39
|
/**
|
|
40
40
|
* The TwitterAPI class.
|
|
41
41
|
* @class
|
|
@@ -47,13 +47,13 @@ class T{
|
|
|
47
47
|
* @param {object} options - The options object.
|
|
48
48
|
* @param {string} options.apiKey - The API key. (Needed for data fetching)
|
|
49
49
|
*/
|
|
50
|
-
constructor({apiKey:
|
|
50
|
+
constructor({apiKey:e}){this.apiKey=e}
|
|
51
51
|
/**
|
|
52
52
|
* Fetch Twitter user details by username.
|
|
53
53
|
* @param {string} twitterUserName - The Twitter username.
|
|
54
54
|
* @returns {Promise<object>} - The user details.
|
|
55
55
|
* @throws {APIError} - Throws an error if the request fails.
|
|
56
|
-
*/fetchUserByUsername(
|
|
56
|
+
*/fetchUserByUsername(e){return p(this,void 0,void 0,(function*(){const t=f(`${w}/user`,{twitterUserName:e});return this._fetchDataWithAuth(t)}))}
|
|
57
57
|
/**
|
|
58
58
|
* Fetch tweets by Twitter username.
|
|
59
59
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -61,7 +61,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
61
61
|
* @param {number} limit - The number of items per page.
|
|
62
62
|
* @returns {Promise<object>} - The tweets.
|
|
63
63
|
* @throws {APIError} - Throws an error if the request fails.
|
|
64
|
-
*/fetchTweetsByUsername(
|
|
64
|
+
*/fetchTweetsByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/tweets`,{twitterUserName:e,page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
65
65
|
/**
|
|
66
66
|
* Fetch followers by Twitter username.
|
|
67
67
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -69,7 +69,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
69
69
|
* @param {number} limit - The number of items per page.
|
|
70
70
|
* @returns {Promise<object>} - The followers.
|
|
71
71
|
* @throws {APIError} - Throws an error if the request fails.
|
|
72
|
-
*/fetchFollowersByUsername(
|
|
72
|
+
*/fetchFollowersByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/followers`,{twitterUserName:e,page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
73
73
|
/**
|
|
74
74
|
* Fetch following by Twitter username.
|
|
75
75
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -77,13 +77,13 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
77
77
|
* @param {number} limit - The number of items per page.
|
|
78
78
|
* @returns {Promise<object>} - The following.
|
|
79
79
|
* @throws {APIError} - Throws an error if the request fails.
|
|
80
|
-
*/fetchFollowingByUsername(
|
|
80
|
+
*/fetchFollowingByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/following`,{twitterUserName:e,page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
81
81
|
/**
|
|
82
82
|
* Fetch tweet by tweet ID.
|
|
83
83
|
* @param {string} tweetId - The tweet ID.
|
|
84
84
|
* @returns {Promise<object>} - The tweet.
|
|
85
85
|
* @throws {APIError} - Throws an error if the request fails.
|
|
86
|
-
*/fetchTweetById(
|
|
86
|
+
*/fetchTweetById(e){return p(this,void 0,void 0,(function*(){const t=f(`${w}/getTweetById`,{tweetId:e});return this._fetchDataWithAuth(t)}))}
|
|
87
87
|
/**
|
|
88
88
|
* Fetch user by wallet address.
|
|
89
89
|
* @param {string} walletAddress - The wallet address.
|
|
@@ -91,7 +91,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
91
91
|
* @param {number} limit - The number of items per page.
|
|
92
92
|
* @returns {Promise<object>} - The user data.
|
|
93
93
|
* @throws {APIError} - Throws an error if the request fails.
|
|
94
|
-
*/fetchUserByWalletAddress(
|
|
94
|
+
*/fetchUserByWalletAddress(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/wallet-twitter-data`,{walletAddress:e,page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
95
95
|
/**
|
|
96
96
|
* Fetch reposted tweets by Twitter username.
|
|
97
97
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -99,7 +99,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
99
99
|
* @param {number} limit - The number of items per page.
|
|
100
100
|
* @returns {Promise<object>} - The reposted tweets.
|
|
101
101
|
* @throws {APIError} - Throws an error if the request fails.
|
|
102
|
-
*/fetchRepostedByUsername(
|
|
102
|
+
*/fetchRepostedByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/reposted`,{twitterUserName:e,page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
103
103
|
/**
|
|
104
104
|
* Fetch replies by Twitter username.
|
|
105
105
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -107,7 +107,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
107
107
|
* @param {number} limit - The number of items per page.
|
|
108
108
|
* @returns {Promise<object>} - The replies.
|
|
109
109
|
* @throws {APIError} - Throws an error if the request fails.
|
|
110
|
-
*/fetchRepliesByUsername(
|
|
110
|
+
*/fetchRepliesByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/replies`,{twitterUserName:e,page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
111
111
|
/**
|
|
112
112
|
* Fetch likes by Twitter username.
|
|
113
113
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -115,7 +115,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
115
115
|
* @param {number} limit - The number of items per page.
|
|
116
116
|
* @returns {Promise<object>} - The likes.
|
|
117
117
|
* @throws {APIError} - Throws an error if the request fails.
|
|
118
|
-
*/fetchLikesByUsername(
|
|
118
|
+
*/fetchLikesByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/event/likes/${e}`,{page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
119
119
|
/**
|
|
120
120
|
* Fetch follows by Twitter username.
|
|
121
121
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -123,7 +123,7 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
123
123
|
* @param {number} limit - The number of items per page.
|
|
124
124
|
* @returns {Promise<object>} - The follows.
|
|
125
125
|
* @throws {APIError} - Throws an error if the request fails.
|
|
126
|
-
*/fetchFollowsByUsername(
|
|
126
|
+
*/fetchFollowsByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/event/follows/${e}`,{page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
127
127
|
/**
|
|
128
128
|
* Fetch viewed tweets by Twitter username.
|
|
129
129
|
* @param {string} twitterUserName - The Twitter username.
|
|
@@ -131,13 +131,13 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
131
131
|
* @param {number} limit - The number of items per page.
|
|
132
132
|
* @returns {Promise<object>} - The viewed tweets.
|
|
133
133
|
* @throws {APIError} - Throws an error if the request fails.
|
|
134
|
-
*/fetchViewedTweetsByUsername(
|
|
134
|
+
*/fetchViewedTweetsByUsername(e){return p(this,arguments,void 0,(function*(e,t=1,n=10){const i=f(`${w}/event/viewed-tweets/${e}`,{page:t,limit:n});return this._fetchDataWithAuth(i)}))}
|
|
135
135
|
/**
|
|
136
136
|
* Private method to fetch data with authorization header.
|
|
137
137
|
* @param {string} url - The URL to fetch.
|
|
138
138
|
* @returns {Promise<object>} - The response data.
|
|
139
139
|
* @throws {APIError} - Throws an error if the request fails.
|
|
140
|
-
*/_fetchDataWithAuth(
|
|
140
|
+
*/_fetchDataWithAuth(e){return p(this,void 0,void 0,(function*(){if(!this.apiKey)throw new h("API key is required for fetching data",401);try{return yield m(e,{"x-api-key":this.apiKey})}catch(e){throw new h(e.message,e.statusCode)}}))}}
|
|
141
141
|
/**
|
|
142
142
|
* The SpotifyAPI class.
|
|
143
143
|
* @class
|
|
@@ -149,59 +149,59 @@ constructor({apiKey:t}){this.apiKey=t}
|
|
|
149
149
|
* @param {string} options.apiKey - The Spotify API key.
|
|
150
150
|
* @throws {Error} - Throws an error if the API key is not provided.
|
|
151
151
|
*/
|
|
152
|
-
constructor(
|
|
152
|
+
constructor(e){this.apiKey=e.apiKey}
|
|
153
153
|
/**
|
|
154
154
|
* Fetch the user's saved tracks by Spotify user ID.
|
|
155
155
|
* @param {string} spotifyId - The user's Spotify ID.
|
|
156
156
|
* @returns {Promise<object>} - The saved tracks.
|
|
157
157
|
* @throws {APIError} - Throws an error if the request fails.
|
|
158
|
-
*/fetchSavedTracksById(
|
|
158
|
+
*/fetchSavedTracksById(e){return p(this,void 0,void 0,(function*(){const t=f(`${v}/save-tracks`,{spotifyId:e});return this._fetchDataWithAuth(t)}))}
|
|
159
159
|
/**
|
|
160
160
|
* Fetch the played tracks of a user by Spotify ID.
|
|
161
161
|
* @param {string} spotifyId - The user's Spotify ID.
|
|
162
162
|
* @returns {Promise<object>} - The played tracks.
|
|
163
163
|
* @throws {APIError} - Throws an error if the request fails.
|
|
164
|
-
*/fetchPlayedTracksById(
|
|
164
|
+
*/fetchPlayedTracksById(e){return p(this,void 0,void 0,(function*(){const t=f(`${v}/played-tracks`,{spotifyId:e});return this._fetchDataWithAuth(t)}))}
|
|
165
165
|
/**
|
|
166
166
|
* Fetch the user's saved albums by Spotify user ID.
|
|
167
167
|
* @param {string} spotifyId - The user's Spotify ID.
|
|
168
168
|
* @returns {Promise<object>} - The saved albums.
|
|
169
169
|
* @throws {APIError} - Throws an error if the request fails.
|
|
170
|
-
*/fetchSavedAlbumsById(
|
|
170
|
+
*/fetchSavedAlbumsById(e){return p(this,void 0,void 0,(function*(){const t=f(`${v}/saved-albums`,{spotifyId:e});return this._fetchDataWithAuth(t)}))}
|
|
171
171
|
/**
|
|
172
172
|
* Fetch the user's saved playlists by Spotify user ID.
|
|
173
173
|
* @param {string} spotifyId - The user's Spotify ID.
|
|
174
174
|
* @returns {Promise<object>} - The saved playlists.
|
|
175
175
|
* @throws {APIError} - Throws an error if the request fails.
|
|
176
|
-
*/fetchSavedPlaylistsById(
|
|
176
|
+
*/fetchSavedPlaylistsById(e){return p(this,void 0,void 0,(function*(){const t=f(`${v}/saved-playlists`,{spotifyId:e});return this._fetchDataWithAuth(t)}))}
|
|
177
177
|
/**
|
|
178
178
|
* Fetch the tracks of an album by album ID.
|
|
179
179
|
* @param {string} spotifyId - The Spotify ID of the user.
|
|
180
180
|
* @param {string} albumId - The album ID.
|
|
181
181
|
* @returns {Promise<object>} - The tracks in the album.
|
|
182
182
|
* @throws {APIError} - Throws an error if the request fails.
|
|
183
|
-
*/fetchTracksInAlbum(t
|
|
183
|
+
*/fetchTracksInAlbum(e,t){return p(this,void 0,void 0,(function*(){const n=f(`${v}/album/tracks`,{spotifyId:e,albumId:t});return this._fetchDataWithAuth(n)}))}
|
|
184
184
|
/**
|
|
185
185
|
* Fetch the tracks in a playlist by playlist ID.
|
|
186
186
|
* @param {string} spotifyId - The Spotify ID of the user.
|
|
187
187
|
* @param {string} playlistId - The playlist ID.
|
|
188
188
|
* @returns {Promise<object>} - The tracks in the playlist.
|
|
189
189
|
* @throws {APIError} - Throws an error if the request fails.
|
|
190
|
-
*/fetchTracksInPlaylist(t
|
|
190
|
+
*/fetchTracksInPlaylist(e,t){return p(this,void 0,void 0,(function*(){const n=f(`${v}/playlist/tracks`,{spotifyId:e,playlistId:t});return this._fetchDataWithAuth(n)}))}
|
|
191
191
|
/**
|
|
192
192
|
* Fetch the user's Spotify data by wallet address.
|
|
193
193
|
* @param {string} walletAddress - The wallet address.
|
|
194
194
|
* @returns {Promise<object>} - The user's Spotify data.
|
|
195
195
|
* @throws {APIError} - Throws an error if the request fails.
|
|
196
|
-
*/fetchUserByWalletAddress(
|
|
196
|
+
*/fetchUserByWalletAddress(e){return p(this,void 0,void 0,(function*(){const t=f(`${v}/wallet-spotify-data`,{walletAddress:e});return this._fetchDataWithAuth(t)}))}
|
|
197
197
|
/**
|
|
198
198
|
* Private method to fetch data with authorization header.
|
|
199
199
|
* @param {string} url - The URL to fetch.
|
|
200
200
|
* @returns {Promise<object>} - The response data.
|
|
201
201
|
* @throws {APIError} - Throws an error if the request fails.
|
|
202
|
-
*/_fetchDataWithAuth(
|
|
202
|
+
*/_fetchDataWithAuth(e){return p(this,void 0,void 0,(function*(){if(!this.apiKey)throw new h("API key is required for fetching data",401);try{return yield m(e,{"x-api-key":this.apiKey})}catch(e){throw new h(e.message,e.statusCode)}}))}}const g={id:123420001114,name:"Basecamp",nativeCurrency:{decimals:18,name:"Camp",symbol:"CAMP"},rpcUrls:{default:{http:["https://rpc-campnetwork.xyz","https://rpc.basecamp.t.raas.gelato.cloud"]}},blockExplorers:{default:{name:"Explorer",url:"https://basecamp.cloud.blockscout.com/"}}};
|
|
203
203
|
// @ts-ignore
|
|
204
|
-
let I=null,k=null;const A=()=>(k||(k=i({chain:g,transport:a()})),k);var C="Connect with Camp Network",M="https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",E={USER_CONNECTED:"ed42542d-b676-4112-b6d9-6db98048b2e0",USER_DISCONNECTED:"20af31ac-e602-442e-9e0e-b589f4dd4016",TWITTER_LINKED:"7fbea086-90ef-4679-ba69-f47f9255b34c",DISCORD_LINKED:"d73f5ae3-a8e8-48f2-8532-85e0c7780d6a",SPOTIFY_LINKED:"fc1788b4-c984-42c8-96f4-c87f6bb0b8f7",TIKTOK_LINKED:"4a2ffdd3-f0e9-4784-8b49-ff76ec1c0a6a",TELEGRAM_LINKED:"9006bc5d-bcc9-4d01-a860-4f1a201e8e47"},x="0xd064817Dc0Af032c3fb5dd4671fd10E0a5F0515D",S="0x3B782d053de8910cC0EF3DC09EEA055229a70c6b";let $=[];const D=()=>$,F=t=>{function e(e){$.some((t=>t.info.uuid===e.detail.info.uuid))||($=[...$,e.detail],t($))}if("undefined"!=typeof window)return window.addEventListener("eip6963:announceProvider",e),window.dispatchEvent(new Event("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",e)};var j=[{inputs:[{internalType:"string",name:"_name",type:"string"},{internalType:"string",name:"_symbol",type:"string"},{internalType:"string",name:"_baseURI",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"DurationZero",type:"error"},{inputs:[{internalType:"uint16",name:"royaltyBps",type:"uint16"}],name:"InvalidRoyalty",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"caller",type:"address"}],name:"NotTokenOwner",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"TokenAlreadyExists",type:"error"},{inputs:[],name:"URIQueryForNonexistentToken",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Verifier_InvalidDeadline",type:"error"},{inputs:[],name:"Verifier_InvalidSignature",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint32",name:"periods",type:"uint32"},{indexed:!1,internalType:"uint64",name:"newExpiry",type:"uint64"},{indexed:!1,internalType:"uint256",name:"amountPaid",type:"uint256"}],name:"AccessPurchased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"DataDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"}],name:"DataDeletionRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"DataMinted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"royaltyAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolAmount",type:"uint256"}],name:"RoyaltyPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint128",name:"newPrice",type:"uint128"},{indexed:!1,internalType:"uint32",name:"newDuration",type:"uint32"},{indexed:!1,internalType:"uint16",name:"newRoyaltyBps",type:"uint16"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"}],name:"TermsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"creator",type:"address"}],name:"addCreator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pauser",type:"address"}],name:"addPauser",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"baseURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"contentHash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"creators",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"dataStatus",outputs:[{internalType:"enum DataNFT.DataStatus",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"finalizeDelete",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getTerms",outputs:[{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],internalType:"struct DataNFT.LicenseTerms",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes32",name:"hash",type:"bytes32"},{internalType:"string",name:"uri",type:"string"},{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],internalType:"struct DataNFT.LicenseTerms",name:"licenseTerms",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"mintWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"pausers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"creator",type:"address"}],name:"removeCreator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pauser",type:"address"}],name:"removePauser",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"requestDelete",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"salePrice",type:"uint256"}],name:"royaltyInfo",outputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"royaltyAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"royaltyPercentages",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"royaltyReceivers",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"terms",outputs:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],internalType:"struct DataNFT.LicenseTerms",name:"newTerms",type:"tuple"}],name:"updateTerms",outputs:[],stateMutability:"nonpayable",type:"function"}];
|
|
204
|
+
let I=null,k=null;const A=()=>(k||(k=i({chain:g,transport:a()})),k);var C="Connect with Camp Network",E="https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",x={USER_CONNECTED:"ed42542d-b676-4112-b6d9-6db98048b2e0",USER_DISCONNECTED:"20af31ac-e602-442e-9e0e-b589f4dd4016",TWITTER_LINKED:"7fbea086-90ef-4679-ba69-f47f9255b34c",DISCORD_LINKED:"d73f5ae3-a8e8-48f2-8532-85e0c7780d6a",SPOTIFY_LINKED:"fc1788b4-c984-42c8-96f4-c87f6bb0b8f7",TIKTOK_LINKED:"4a2ffdd3-f0e9-4784-8b49-ff76ec1c0a6a",TELEGRAM_LINKED:"9006bc5d-bcc9-4d01-a860-4f1a201e8e47"},M="0x3bd5C81a8Adf3355078Dc5F73c41d3194B316690",S="0xAc79E9Ef69021F9bf7Ccb175611F3115Ff65A44D";let O=[];const $=()=>O,F=e=>{function t(t){O.some((e=>e.info.uuid===t.detail.info.uuid))||(O=[...O,t.detail],e(O))}if("undefined"!=typeof window)return window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",t)};var j=[{inputs:[{internalType:"string",name:"_name",type:"string"},{internalType:"string",name:"_symbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"DurationZero",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],name:"ERC721IncorrectOwner",type:"error"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ERC721InsufficientApproval",type:"error"},{inputs:[{internalType:"address",name:"approver",type:"address"}],name:"ERC721InvalidApprover",type:"error"},{inputs:[{internalType:"address",name:"operator",type:"address"}],name:"ERC721InvalidOperator",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"ERC721InvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"ERC721InvalidReceiver",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"ERC721InvalidSender",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ERC721NonexistentToken",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[],name:"InvalidDeadline",type:"error"},{inputs:[{internalType:"uint16",name:"royaltyBps",type:"uint16"}],name:"InvalidRoyalty",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"caller",type:"address"}],name:"NotTokenOwner",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"SignatureAlreadyUsed",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"TokenAlreadyExists",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint32",name:"periods",type:"uint32"},{indexed:!1,internalType:"uint256",name:"newExpiry",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amountPaid",type:"uint256"}],name:"AccessPurchased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"}],name:"DataDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"DataMinted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"royaltyAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolAmount",type:"uint256"}],name:"RoyaltyPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint128",name:"newPrice",type:"uint128"},{indexed:!1,internalType:"uint32",name:"newDuration",type:"uint32"},{indexed:!1,internalType:"uint16",name:"newRoyaltyBps",type:"uint16"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"}],name:"TermsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"contentHash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"dataStatus",outputs:[{internalType:"enum IpNFT.DataStatus",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"finalizeDelete",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getTerms",outputs:[{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],internalType:"struct IpNFT.LicenseTerms",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes32",name:"creatorContentHash",type:"bytes32"},{internalType:"string",name:"uri",type:"string"},{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],internalType:"struct IpNFT.LicenseTerms",name:"licenseTerms",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"mintWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"salePrice",type:"uint256"}],name:"royaltyInfo",outputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"royaltyAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"royaltyPercentages",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"royaltyReceivers",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"terms",outputs:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"_royaltyReceiver",type:"address"},{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"}],internalType:"struct IpNFT.LicenseTerms",name:"newTerms",type:"tuple"}],name:"updateTerms",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"usedNonces",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];
|
|
205
205
|
/**
|
|
206
206
|
* Mints a Data NFT with a signature.
|
|
207
207
|
* @param to The address to mint the NFT to.
|
|
@@ -212,14 +212,14 @@ let I=null,k=null;const A=()=>(k||(k=i({chain:g,transport:a()})),k);var C="Conne
|
|
|
212
212
|
* @param deadline The deadline for the minting operation.
|
|
213
213
|
* @param signature The signature for the minting operation.
|
|
214
214
|
* @returns A promise that resolves when the minting is complete.
|
|
215
|
-
*/function
|
|
215
|
+
*/function P(e,t,n,i,a,r,s){return p(this,void 0,void 0,(function*(){return yield this.callContractMethod(M,j,"mintWithSignature",[e,t,n,i,a,r,s],{waitForReceipt:!0})}))}
|
|
216
216
|
/**
|
|
217
217
|
* Registers a Data NFT with the Origin service in order to obtain a signature for minting.
|
|
218
218
|
* @param source The source of the Data NFT (e.g., "spotify", "twitter", "tiktok", or "file").
|
|
219
219
|
* @param deadline The deadline for the registration operation.
|
|
220
220
|
* @param fileKey Optional file key for file uploads.
|
|
221
221
|
* @return A promise that resolves with the registration data.
|
|
222
|
-
*/function
|
|
222
|
+
*/function U(e,t,n){return p(this,void 0,void 0,(function*(){const i={source:e,deadline:t.toString()};void 0!==n&&(i.fileKey=n);const a=yield fetch(`${E}/auth/origin/register`,{method:"POST",headers:{Authorization:`Bearer ${this.getJwt()}`},body:JSON.stringify(i)});if(!a.ok)throw new Error(`Failed to get signature: ${a.statusText}`);const r=yield a.json();if(r.isError)throw new Error(`Failed to get signature: ${r.message}`);return r.data}))}function N(e,t){return this.callContractMethod(M,j,"updateTerms",[e,t],{waitForReceipt:!0})}function D(e){return this.callContractMethod(M,j,"requestDelete",[e])}function B(e){return this.callContractMethod(M,j,"getTerms",[e])}function _(e){return this.callContractMethod(M,j,"ownerOf",[e])}function W(e){return this.callContractMethod(M,j,"balanceOf",[e])}function R(e){return this.callContractMethod(M,j,"contentHash",[e])}function q(e){return this.callContractMethod(M,j,"tokenURI",[e])}function z(e){return this.callContractMethod(M,j,"dataStatus",[e])}function L(e,t){return p(this,void 0,void 0,(function*(){return this.callContractMethod(M,j,"royaltyInfo",[e,t])}))}function K(e){return this.callContractMethod(M,j,"getApproved",[e])}function J(e,t){return this.callContractMethod(M,j,"isApprovedForAll",[e,t])}function H(e,t,n){return this.callContractMethod(M,j,"transferFrom",[e,t,n])}function G(e,t,n,i){const a=i?[e,t,n,i]:[e,t,n];return this.callContractMethod(M,j,"safeTransferFrom",a)}function V(e,t){return this.callContractMethod(M,j,"approve",[e,t])}function Z(e,t){return this.callContractMethod(M,j,"setApprovalForAll",[e,t])}var Y,Q,X,ee,te,ne,ie,ae,re,se,oe,de,ue,le,pe,ce=[{inputs:[{internalType:"address",name:"dataNFT_",type:"address"},{internalType:"uint16",name:"protocolFeeBps_",type:"uint16"},{internalType:"address",name:"treasury_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[{internalType:"uint256",name:"expected",type:"uint256"},{internalType:"uint256",name:"actual",type:"uint256"}],name:"InvalidPayment",type:"error"},{inputs:[{internalType:"uint32",name:"periods",type:"uint32"}],name:"InvalidPeriods",type:"error"},{inputs:[{internalType:"uint16",name:"royaltyBps",type:"uint16"}],name:"InvalidRoyalty",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint32",name:"periods",type:"uint32"},{indexed:!1,internalType:"uint256",name:"newExpiry",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amountPaid",type:"uint256"}],name:"AccessPurchased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"}],name:"DataDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"DataMinted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"royaltyAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolAmount",type:"uint256"}],name:"RoyaltyPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint128",name:"newPrice",type:"uint128"},{indexed:!1,internalType:"uint32",name:"newDuration",type:"uint32"},{indexed:!1,internalType:"uint16",name:"newRoyaltyBps",type:"uint16"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"}],name:"TermsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[{internalType:"address",name:"feeManager",type:"address"}],name:"addFeeManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint32",name:"periods",type:"uint32"}],name:"buyAccess",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"dataNFT",outputs:[{internalType:"contract IpNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"feeManagers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"hasAccess",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFeeBps",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"feeManager",type:"address"}],name:"removeFeeManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"subscriptionExpiry",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"treasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"newFeeBps",type:"uint16"}],name:"updateProtocolFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newTreasury",type:"address"}],name:"updateTreasury",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];function ye(e,t,n){return this.callContractMethod(S,ce,"buyAccess",[e,t],{waitForReceipt:!0,value:n})}function he(e,t,n,i){return this.callContractMethod(S,ce,"renewAccess",[e,t,n],void 0!==i?{value:i}:void 0)}function me(e,t){return this.callContractMethod(S,ce,"hasAccess",[e,t])}function fe(e,t){return this.callContractMethod(S,ce,"subscriptionExpiry",[e,t])}
|
|
223
223
|
/**
|
|
224
224
|
* Approves a spender to spend a specified amount of tokens on behalf of the owner.
|
|
225
225
|
* If the current allowance is less than the specified amount, it will perform the approval.
|
|
@@ -229,35 +229,35 @@ let I=null,k=null;const A=()=>(k||(k=i({chain:g,transport:a()})),k);var C="Conne
|
|
|
229
229
|
* The Origin class
|
|
230
230
|
* Handles the upload of files to Origin, as well as querying the user's stats
|
|
231
231
|
*/
|
|
232
|
-
class
|
|
233
|
-
if(!s||!o||!d||void 0===u
|
|
234
|
-
return n?n.tokenId.toString():(console.error("Failed to register DataNFT"),null)}catch(
|
|
232
|
+
class we{constructor(t,n){Y.add(this),Q.set(this,(e=>p(this,void 0,void 0,(function*(){const t=yield fetch(`${E}/auth/origin/upload-url`,{method:"POST",body:JSON.stringify({name:e.name,type:e.type}),headers:{Authorization:`Bearer ${this.jwt}`}}),n=yield t.json();return n.isError?n.message:n.data})))),X.set(this,((e,t)=>p(this,void 0,void 0,(function*(){(yield fetch(`${E}/auth/origin/update-status`,{method:"PATCH",body:JSON.stringify({status:t,fileKey:e}),headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}})).ok||console.error("Failed to update origin status")})))),this.uploadFile=(t,n)=>p(this,void 0,void 0,(function*(){const i=yield c(this,Q,"f").call(this,t);if(i){try{yield((t,n,i)=>new Promise(((a,r)=>{e.put(n,t,Object.assign({headers:{"Content-Type":t.type}},"undefined"!=typeof window&&"function"==typeof i?{onUploadProgress:e=>{if(e.total){const t=e.loaded/e.total*100;i(t)}}}:{})).then((e=>{a(e.data)})).catch((e=>{var t;const n=(null===(t=null==e?void 0:e.response)||void 0===t?void 0:t.data)||(null==e?void 0:e.message)||"Upload failed";r(n)}))})))(t,i.url,(null==n?void 0:n.progressCallback)||(()=>{}))}catch(e){throw yield c(this,X,"f").call(this,i.key,"failed"),new Error("Failed to upload file: "+e)}return yield c(this,X,"f").call(this,i.key,"success"),i}console.error("Failed to generate upload URL")})),this.mintFile=(e,t,n)=>p(this,void 0,void 0,(function*(){if(!this.viemClient)throw new Error("WalletClient not connected.");try{const i=yield this.uploadFile(e,n);if(!i||!i.key)return console.error("Invalid upload info:",i),null;const a=BigInt(Math.floor(Date.now()/1e3)+600),r=yield this.registerDataNFT("file",a,i.key),{tokenId:s,signerAddress:o,hash:d,signature:u}=r;// 10 minutes from now
|
|
233
|
+
if(!s||!o||!d||void 0===u)return console.error("Invalid registration data:",r),null;const[l]=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});yield this.mintWithSignature(l,s,d,i.url,t,a,u);return s.toString()}catch(e){return console.error("Failed to upload file:",e),null}})),this.mintSocial=e=>p(this,void 0,void 0,(function*(){try{const t=BigInt(Math.floor(Date.now()/1e3)+600),n=yield this.registerDataNFT(e,t);// 10 minutes from now (temp)
|
|
234
|
+
return n?n.tokenId.toString():(console.error("Failed to register DataNFT"),null)}catch(e){return console.error("Failed to mint social DataNFT:",e),null}})),this.getOriginUploads=()=>p(this,void 0,void 0,(function*(){const e=yield fetch(`${E}/auth/origin/files`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`}});if(!e.ok)return console.error("Failed to get origin uploads"),null;return(yield e.json()).data})),this.jwt=t,this.viemClient=n,
|
|
235
235
|
// DataNFT methods
|
|
236
|
-
this.mintWithSignature=
|
|
236
|
+
this.mintWithSignature=P.bind(this),this.registerDataNFT=U.bind(this),this.updateTerms=N.bind(this),this.requestDelete=D.bind(this),this.getTerms=B.bind(this),this.ownerOf=_.bind(this),this.balanceOf=W.bind(this),this.contentHash=R.bind(this),this.tokenURI=q.bind(this),this.dataStatus=z.bind(this),this.royaltyInfo=L.bind(this),this.getApproved=K.bind(this),this.isApprovedForAll=J.bind(this),this.transferFrom=H.bind(this),this.safeTransferFrom=G.bind(this),this.approve=V.bind(this),this.setApprovalForAll=Z.bind(this),
|
|
237
237
|
// Marketplace methods
|
|
238
|
-
this.buyAccess=
|
|
238
|
+
this.buyAccess=ye.bind(this),this.renewAccess=he.bind(this),this.hasAccess=me.bind(this),this.subscriptionExpiry=fe.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.viemClient=e}
|
|
239
239
|
/**
|
|
240
240
|
* Get the user's Origin stats (multiplier, consent, usage, etc.).
|
|
241
241
|
* @returns {Promise<OriginUsageReturnType>} A promise that resolves with the user's Origin stats.
|
|
242
|
-
*/getOriginUsage(){return p(this,void 0,void 0,(function*(){const
|
|
242
|
+
*/getOriginUsage(){return p(this,void 0,void 0,(function*(){const e=yield fetch(`${E}/auth/origin/usage`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,
|
|
243
243
|
// "x-client-id": this.clientId,
|
|
244
|
-
"Content-Type":"application/json"}}).then((
|
|
244
|
+
"Content-Type":"application/json"}}).then((e=>e.json()));if(!e.isError&&e.data.user)return e;throw new h(e.message||"Failed to fetch Origin usage")}))}
|
|
245
245
|
/**
|
|
246
246
|
* Set the user's consent for Origin usage.
|
|
247
247
|
* @param {boolean} consent The user's consent.
|
|
248
248
|
* @returns {Promise<void>}
|
|
249
249
|
* @throws {Error|APIError} - Throws an error if the user is not authenticated. Also throws an error if the consent is not provided.
|
|
250
|
-
*/setOriginConsent(
|
|
250
|
+
*/setOriginConsent(e){return p(this,void 0,void 0,(function*(){if(void 0===e)throw new h("Consent is required");const t=yield fetch(`${E}/auth/origin/status`,{method:"PATCH",headers:{Authorization:`Bearer ${this.jwt}`,
|
|
251
251
|
// "x-client-id": this.clientId,
|
|
252
|
-
"Content-Type":"application/json"},body:JSON.stringify({active:
|
|
252
|
+
"Content-Type":"application/json"},body:JSON.stringify({active:e})}).then((e=>e.json()));if(t.isError)throw new h(t.message||"Failed to set Origin consent")}))}
|
|
253
253
|
/**
|
|
254
254
|
* Set the user's Origin multiplier.
|
|
255
255
|
* @param {number} multiplier The user's Origin multiplier.
|
|
256
256
|
* @returns {Promise<void>}
|
|
257
257
|
* @throws {Error|APIError} - Throws an error if the user is not authenticated. Also throws an error if the multiplier is not provided.
|
|
258
|
-
*/setOriginMultiplier(
|
|
258
|
+
*/setOriginMultiplier(e){return p(this,void 0,void 0,(function*(){if(void 0===e)throw new h("Multiplier is required");const t=yield fetch(`${E}/auth/origin/multiplier`,{method:"PATCH",headers:{Authorization:`Bearer ${this.jwt}`,
|
|
259
259
|
// "x-client-id": this.clientId,
|
|
260
|
-
"Content-Type":"application/json"},body:JSON.stringify({multiplier:
|
|
260
|
+
"Content-Type":"application/json"},body:JSON.stringify({multiplier:e})}).then((e=>e.json()));if(t.isError)throw new h(t.message||"Failed to set Origin multiplier")}))}
|
|
261
261
|
/**
|
|
262
262
|
* Call a contract method.
|
|
263
263
|
* @param {string} contractAddress The contract address.
|
|
@@ -267,23 +267,23 @@ this.buyAccess=yt.bind(this),this.renewAccess=ht.bind(this),this.hasAccess=mt.bi
|
|
|
267
267
|
* @param {CallOptions} [options] The call options.
|
|
268
268
|
* @returns {Promise<any>} A promise that resolves with the result of the contract call or transaction hash.
|
|
269
269
|
* @throws {Error} - Throws an error if the wallet client is not connected and the method is not a view function.
|
|
270
|
-
*/callContractMethod(t,
|
|
270
|
+
*/callContractMethod(e,t,n,i){return p(this,arguments,void 0,(function*(e,t,n,i,a={}){const r=s({abi:t,name:n}),d=r&&"stateMutability"in r&&("view"===r.stateMutability||"pure"===r.stateMutability);if(!d&&!this.viemClient)throw new Error("WalletClient not connected.");if(d){const a=A();return(yield a.readContract({address:e,abi:t,functionName:n,args:i}))||null}{const[r]=yield this.viemClient.request({method:"eth_requestAccounts",params:[]}),s=o({abi:t,functionName:n,args:i});yield c(this,Y,"m",te).call(this,g);try{const t=yield this.viemClient.sendTransaction({to:e,data:s,account:r,value:a.value,gas:a.gas});if("string"!=typeof t)throw new Error("Transaction failed to send.");if(!a.waitForReceipt)return t;return yield c(this,Y,"m",ee).call(this,t)}catch(e){throw console.error("Transaction failed:",e),new Error("Transaction failed: "+e)}}}))}
|
|
271
271
|
/**
|
|
272
272
|
* Buy access to an asset by first checking its price via getTerms, then calling buyAccess.
|
|
273
273
|
* @param {bigint} tokenId The token ID of the asset.
|
|
274
274
|
* @param {number} periods The number of periods to buy access for.
|
|
275
275
|
* @returns {Promise<any>} The result of the buyAccess call.
|
|
276
|
-
*/buyAccessSmart(t
|
|
276
|
+
*/buyAccessSmart(e,t){return p(this,void 0,void 0,(function*(){if(!this.viemClient)throw new Error("WalletClient not connected.");const n=yield this.getTerms(e);if(!n)throw new Error("Failed to fetch terms for asset");const{price:i,paymentToken:a}=n;if(void 0===i||void 0===a)throw new Error("Terms missing price or paymentToken");const s=i*BigInt(t);if(a===d)return this.buyAccess(e,t,s);const o=yield this.viemClient.getAddress();return yield function(e){return p(this,arguments,void 0,(function*({walletClient:e,publicClient:t,tokenAddress:n,owner:i,spender:a,amount:s}){(yield t.readContract({address:n,abi:r,functionName:"allowance",args:[i,a]}))<s&&(yield e.writeContract({address:n,account:i,abi:r,functionName:"approve",args:[a,s],chain:g}))}))}({walletClient:this.viemClient,publicClient:A(),tokenAddress:a,owner:o,spender:S,amount:s}),this.buyAccess(e,t)}))}getData(e){return p(this,void 0,void 0,(function*(){const t=yield fetch(`${E}/auth/origin/data/${e}`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!t.ok)throw new Error("Failed to fetch data");return t.json()}))}}Q=new WeakMap,X=new WeakMap,Y=new WeakSet,ee=function(e){return p(this,void 0,void 0,(function*(){if(!this.viemClient)throw new Error("WalletClient not connected.");for(;;){const t=yield this.viemClient.request({method:"eth_getTransactionReceipt",params:[e]});if(t&&t.blockNumber)return t;yield new Promise((e=>setTimeout(e,1e3)))}}))},te=function(e){return p(this,void 0,void 0,(function*(){
|
|
277
277
|
// return;
|
|
278
|
-
if(!this.viemClient)throw new Error("WalletClient not connected.");let
|
|
278
|
+
if(!this.viemClient)throw new Error("WalletClient not connected.");let t=yield this.viemClient.request({method:"eth_chainId",params:[]});if("string"==typeof t&&(t=parseInt(t,16)),t!==e.id)try{yield this.viemClient.request({method:"wallet_switchEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16)}]})}catch(t){
|
|
279
279
|
// Unrecognized chain
|
|
280
|
-
if(4902!==
|
|
280
|
+
if(4902!==t.code)throw t;yield this.viemClient.request({method:"wallet_addEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16),chainName:e.name,rpcUrls:e.rpcUrls.default.http,nativeCurrency:e.nativeCurrency}]}),yield this.viemClient.request({method:"wallet_switchEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16)}]})}}))};
|
|
281
281
|
/**
|
|
282
282
|
* The Auth class.
|
|
283
283
|
* @class
|
|
284
284
|
* @classdesc The Auth class is used to authenticate the user.
|
|
285
285
|
*/
|
|
286
|
-
class
|
|
286
|
+
class ve{
|
|
287
287
|
/**
|
|
288
288
|
* Constructor for the Auth class.
|
|
289
289
|
* @param {object} options The options object.
|
|
@@ -293,11 +293,11 @@ class vt{
|
|
|
293
293
|
* @param {object} [options.ackeeInstance] The Ackee instance.
|
|
294
294
|
* @throws {APIError} - Throws an error if the clientId is not provided.
|
|
295
295
|
*/
|
|
296
|
-
constructor({clientId:
|
|
296
|
+
constructor({clientId:e,redirectUri:t,allowAnalytics:n=!0,ackeeInstance:i}){if(ne.add(this),ie.set(this,void 0),ae.set(this,void 0),!e)throw new Error("clientId is required");this.viem=null,
|
|
297
297
|
// if (typeof window !== "undefined") {
|
|
298
298
|
// if (window.ethereum) this.viem = getClient(window.ethereum);
|
|
299
299
|
// }
|
|
300
|
-
this.redirectUri=(
|
|
300
|
+
this.redirectUri=(e=>{const t=["twitter","discord","spotify"];return"object"==typeof e?t.reduce(((t,n)=>(t[n]=e[n]||("undefined"!=typeof window?window.location.href:""),t)),{}):"string"==typeof e?t.reduce(((t,n)=>(t[n]=e,t)),{}):e?{}:t.reduce(((e,t)=>(e[t]="undefined"!=typeof window?window.location.href:"",e)),{})})(t),i&&y(this,ae,i,"f"),n&&c(this,ae,"f"),this.clientId=e,this.isAuthenticated=!1,this.jwt=null,this.origin=null,this.walletAddress=null,this.userId=null,y(this,ie,{},"f"),F((e=>{c(this,ne,"m",re).call(this,"providers",e)})),c(this,ne,"m",se).call(this)}
|
|
301
301
|
/**
|
|
302
302
|
* Subscribe to an event. Possible events are "state", "provider", "providers", and "viem".
|
|
303
303
|
* @param {("state"|"provider"|"providers"|"viem")} event The event.
|
|
@@ -307,32 +307,34 @@ this.redirectUri=(t=>{const e=["twitter","discord","spotify"];return"object"==ty
|
|
|
307
307
|
* auth.on("state", (state) => {
|
|
308
308
|
* console.log(state);
|
|
309
309
|
* });
|
|
310
|
-
*/on(t
|
|
310
|
+
*/on(e,t){c(this,ie,"f")[e]||(c(this,ie,"f")[e]=[]),c(this,ie,"f")[e].push(t),"providers"===e&&t($())}
|
|
311
311
|
/**
|
|
312
312
|
* Set the loading state.
|
|
313
313
|
* @param {boolean} loading The loading state.
|
|
314
314
|
* @returns {void}
|
|
315
|
-
*/setLoading(
|
|
315
|
+
*/setLoading(e){c(this,ne,"m",re).call(this,"state",e?"loading":this.isAuthenticated?"authenticated":"unauthenticated")}
|
|
316
316
|
/**
|
|
317
317
|
* Set the provider. This is useful for setting the provider when the user selects a provider from the UI or when dApp wishes to use a specific provider.
|
|
318
318
|
* @param {object} options The options object. Includes the provider and the provider info.
|
|
319
319
|
* @returns {void}
|
|
320
320
|
* @throws {APIError} - Throws an error if the provider is not provided.
|
|
321
|
-
*/setProvider({provider:
|
|
321
|
+
*/setProvider({provider:e,info:i,address:a}){if(!e)throw new h("provider is required");this.viem=((e,i="window.ethereum",a)=>{var r;if(!e&&!I)return console.warn("Provider is required to create a client."),null;if(!I||I.transport.name!==i&&e||a!==(null===(r=I.account)||void 0===r?void 0:r.address)&&e){const r={chain:g,transport:t(e,{name:i})};a&&(r.account=u(a)),I=n(r)}return I})(e,i.name,a),this.origin&&this.origin.setViemClient(this.viem),
|
|
322
|
+
// TODO: only use one of these
|
|
323
|
+
c(this,ne,"m",re).call(this,"viem",this.viem),c(this,ne,"m",re).call(this,"provider",{provider:e,info:i})}
|
|
322
324
|
/**
|
|
323
325
|
* Set the wallet address. This is useful for edge cases where the provider can't return the wallet address. Don't use this unless you know what you're doing.
|
|
324
326
|
* @param {string} walletAddress The wallet address.
|
|
325
327
|
* @returns {void}
|
|
326
|
-
*/setWalletAddress(
|
|
328
|
+
*/setWalletAddress(e){this.walletAddress=e}recoverProvider(){return p(this,void 0,void 0,(function*(){var e,t,n;if(!this.walletAddress)return void console.warn("No wallet address found in local storage. Please connect your wallet again.");let i;const a=null!==(e=$())&&void 0!==e?e:[];for(const e of a)try{if((null===(t=(yield e.provider.request({method:"eth_requestAccounts"}))[0])||void 0===t?void 0:t.toLowerCase())===(null===(n=this.walletAddress)||void 0===n?void 0:n.toLowerCase())){i=e;break}}catch(e){console.warn("Failed to fetch accounts from provider:",e)}i?this.setProvider({provider:i.provider,info:i.info||{name:"Unknown"},address:this.walletAddress}):console.warn("No matching provider found for the stored wallet address. Please connect your wallet again.")}))}
|
|
327
329
|
/**
|
|
328
330
|
* Disconnect the user.
|
|
329
331
|
* @returns {Promise<void>}
|
|
330
|
-
*/disconnect(){return p(this,void 0,void 0,(function*(){this.isAuthenticated&&(c(this,
|
|
332
|
+
*/disconnect(){return p(this,void 0,void 0,(function*(){this.isAuthenticated&&(c(this,ne,"m",re).call(this,"state","unauthenticated"),this.isAuthenticated=!1,this.walletAddress=null,this.userId=null,this.jwt=null,this.origin=null,localStorage.removeItem("camp-sdk:wallet-address"),localStorage.removeItem("camp-sdk:user-id"),localStorage.removeItem("camp-sdk:jwt"))}))}
|
|
331
333
|
/**
|
|
332
334
|
* Connect the user's wallet and sign the message.
|
|
333
335
|
* @returns {Promise<{ success: boolean; message: string; walletAddress: string }>} A promise that resolves with the authentication result.
|
|
334
336
|
* @throws {APIError} - Throws an error if the user cannot be authenticated.
|
|
335
|
-
*/connect(){return p(this,void 0,void 0,(function*(){c(this,
|
|
337
|
+
*/connect(){return p(this,void 0,void 0,(function*(){c(this,ne,"m",re).call(this,"state","loading");try{this.walletAddress||(yield c(this,ne,"m",oe).call(this));const e=yield c(this,ne,"m",de).call(this),t=c(this,ne,"m",le).call(this,e),n=yield this.viem.signMessage({account:this.walletAddress,message:t}),i=yield c(this,ne,"m",ue).call(this,t,n);if(i.success)return this.isAuthenticated=!0,this.userId=i.userId,this.jwt=i.token,this.origin=new we(this.jwt,this.viem),localStorage.setItem("camp-sdk:jwt",this.jwt),localStorage.setItem("camp-sdk:wallet-address",this.walletAddress),localStorage.setItem("camp-sdk:user-id",this.userId),c(this,ne,"m",re).call(this,"state","authenticated"),yield c(this,ne,"m",pe).call(this,x.USER_CONNECTED,"User Connected"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,c(this,ne,"m",re).call(this,"state","unauthenticated"),new h("Failed to authenticate")}catch(e){throw this.isAuthenticated=!1,c(this,ne,"m",re).call(this,"state","unauthenticated"),new h(e)}}))}
|
|
336
338
|
/**
|
|
337
339
|
* Get the user's linked social accounts.
|
|
338
340
|
* @returns {Promise<Record<string, boolean>>} A promise that resolves with the user's linked social accounts.
|
|
@@ -341,7 +343,7 @@ this.redirectUri=(t=>{const e=["twitter","discord","spotify"];return"object"==ty
|
|
|
341
343
|
* const auth = new Auth({ clientId: "your-client-id" });
|
|
342
344
|
* const socials = await auth.getLinkedSocials();
|
|
343
345
|
* console.log(socials);
|
|
344
|
-
*/getLinkedSocials(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");const
|
|
346
|
+
*/getLinkedSocials(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");const e=yield fetch(`${E}/auth/client-user/connections-sdk`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"}}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to fetch connections");{const t={};return Object.keys(e.data.data).forEach((n=>{t[n.split("User")[0]]=e.data.data[n]})),t}}))}
|
|
345
347
|
/**
|
|
346
348
|
* Link the user's Twitter account.
|
|
347
349
|
* @returns {Promise<void>}
|
|
@@ -351,7 +353,7 @@ this.redirectUri=(t=>{const e=["twitter","discord","spotify"];return"object"==ty
|
|
|
351
353
|
// constants.ACKEE_EVENTS.TWITTER_LINKED,
|
|
352
354
|
// "Twitter Linked"
|
|
353
355
|
// );
|
|
354
|
-
window.location.href=`${
|
|
356
|
+
window.location.href=`${E}/twitter/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.twitter}`}))}
|
|
355
357
|
/**
|
|
356
358
|
* Link the user's Discord account.
|
|
357
359
|
* @returns {Promise<void>}
|
|
@@ -361,7 +363,7 @@ window.location.href=`${M}/twitter/connect?clientId=${this.clientId}&userId=${th
|
|
|
361
363
|
// constants.ACKEE_EVENTS.DISCORD_LINKED,
|
|
362
364
|
// "Discord Linked"
|
|
363
365
|
// );
|
|
364
|
-
window.location.href=`${
|
|
366
|
+
window.location.href=`${E}/discord/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.discord}`}))}
|
|
365
367
|
/**
|
|
366
368
|
* Link the user's Spotify account.
|
|
367
369
|
* @returns {Promise<void>}
|
|
@@ -371,19 +373,19 @@ window.location.href=`${M}/discord/connect?clientId=${this.clientId}&userId=${th
|
|
|
371
373
|
// constants.ACKEE_EVENTS.SPOTIFY_LINKED,
|
|
372
374
|
// "Spotify Linked"
|
|
373
375
|
// );
|
|
374
|
-
window.location.href=`${
|
|
376
|
+
window.location.href=`${E}/spotify/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.spotify}`}))}
|
|
375
377
|
/**
|
|
376
378
|
* Link the user's TikTok account.
|
|
377
379
|
* @param {string} handle The user's TikTok handle.
|
|
378
380
|
* @returns {Promise<any>} A promise that resolves with the TikTok account data.
|
|
379
381
|
* @throws {Error|APIError} - Throws an error if the user is not authenticated.
|
|
380
|
-
*/linkTikTok(
|
|
382
|
+
*/linkTikTok(e){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");const t=yield fetch(`${E}/tiktok/connect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userHandle:e,clientId:this.clientId,userId:this.userId})}).then((e=>e.json()));if(t.isError)throw"Request failed with status code 502"===t.message?new h("TikTok service is currently unavailable, try again later"):new h(t.message||"Failed to link TikTok account");return c(this,ne,"m",pe).call(this,x.TIKTOK_LINKED,"TikTok Linked"),t.data}))}
|
|
381
383
|
/**
|
|
382
384
|
* Send an OTP to the user's Telegram account.
|
|
383
385
|
* @param {string} phoneNumber The user's phone number.
|
|
384
386
|
* @returns {Promise<any>} A promise that resolves with the OTP data.
|
|
385
387
|
* @throws {Error|APIError} - Throws an error if the user is not authenticated.
|
|
386
|
-
*/sendTelegramOTP(
|
|
388
|
+
*/sendTelegramOTP(e){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");if(!e)throw new h("Phone number is required");yield this.unlinkTelegram();const t=yield fetch(`${E}/telegram/sendOTP-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({phone:e})}).then((e=>e.json()));if(t.isError)throw new h(t.message||"Failed to send Telegram OTP");return t.data}))}
|
|
387
389
|
/**
|
|
388
390
|
* Link the user's Telegram account.
|
|
389
391
|
* @param {string} phoneNumber The user's phone number.
|
|
@@ -391,40 +393,59 @@ window.location.href=`${M}/spotify/connect?clientId=${this.clientId}&userId=${th
|
|
|
391
393
|
* @param {string} phoneCodeHash The phone code hash.
|
|
392
394
|
* @returns {Promise<object>} A promise that resolves with the Telegram account data.
|
|
393
395
|
* @throws {APIError|Error} - Throws an error if the user is not authenticated. Also throws an error if the phone number, OTP, and phone code hash are not provided.
|
|
394
|
-
*/linkTelegram(t,
|
|
396
|
+
*/linkTelegram(e,t,n){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");if(!e||!t||!n)throw new h("Phone number, OTP, and phone code hash are required");const i=yield fetch(`${E}/telegram/signIn-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({phone:e,code:t,phone_code_hash:n,userId:this.userId,clientId:this.clientId})}).then((e=>e.json()));if(i.isError)throw new h(i.message||"Failed to link Telegram account");return c(this,ne,"m",pe).call(this,x.TELEGRAM_LINKED,"Telegram Linked"),i.data}))}
|
|
395
397
|
/**
|
|
396
398
|
* Unlink the user's Twitter account.
|
|
397
399
|
* @returns {Promise<any>} A promise that resolves with the unlink result.
|
|
398
400
|
* @throws {Error} - Throws an error if the user is not authenticated.
|
|
399
401
|
* @throws {APIError} - Throws an error if the request fails.
|
|
400
|
-
*/unlinkTwitter(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");const
|
|
402
|
+
*/unlinkTwitter(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new Error("User needs to be authenticated");const e=yield fetch(`${E}/twitter/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink Twitter account");return e.data}))}
|
|
401
403
|
/**
|
|
402
404
|
* Unlink the user's Discord account.
|
|
403
405
|
* @returns {Promise<any>} A promise that resolves with the unlink result.
|
|
404
406
|
* @throws {Error} - Throws an error if the user is not authenticated.
|
|
405
407
|
* @throws {APIError} - Throws an error if the request fails.
|
|
406
|
-
*/unlinkDiscord(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const
|
|
408
|
+
*/unlinkDiscord(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const e=yield fetch(`${E}/discord/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink Discord account");return e.data}))}
|
|
407
409
|
/**
|
|
408
410
|
* Unlink the user's Spotify account.
|
|
409
411
|
* @returns {Promise<any>} A promise that resolves with the unlink result.
|
|
410
412
|
* @throws {Error} - Throws an error if the user is not authenticated.
|
|
411
413
|
* @throws {APIError} - Throws an error if the request fails.
|
|
412
|
-
*/unlinkSpotify(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const
|
|
414
|
+
*/unlinkSpotify(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const e=yield fetch(`${E}/spotify/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink Spotify account");return e.data}))}
|
|
413
415
|
/**
|
|
414
416
|
* Unlink the user's TikTok account.
|
|
415
417
|
* @returns {Promise<any>} A promise that resolves with the unlink result.
|
|
416
418
|
* @throws {Error} - Throws an error if the user is not authenticated.
|
|
417
419
|
* @throws {APIError} - Throws an error if the request fails.
|
|
418
|
-
*/unlinkTikTok(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const
|
|
420
|
+
*/unlinkTikTok(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const e=yield fetch(`${E}/tiktok/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userId:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink TikTok account");return e.data}))}
|
|
419
421
|
/**
|
|
420
422
|
* Unlink the user's Telegram account.
|
|
421
423
|
* @returns {Promise<any>} A promise that resolves with the unlink result.
|
|
422
424
|
* @throws {Error} - Throws an error if the user is not authenticated.
|
|
423
425
|
* @throws {APIError} - Throws an error if the request fails.
|
|
424
|
-
*/unlinkTelegram(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const
|
|
425
|
-
|
|
426
|
-
|
|
426
|
+
*/unlinkTelegram(){return p(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new h("User needs to be authenticated");const e=yield fetch(`${E}/telegram/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userId:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink Telegram account");return e.data}))}}ie=new WeakMap,ae=new WeakMap,ne=new WeakSet,re=function(e,t){c(this,ie,"f")[e]&&c(this,ie,"f")[e].forEach((e=>e(t)))},se=function(e){return p(this,void 0,void 0,(function*(){if("undefined"==typeof localStorage)return;const t=null===localStorage||void 0===localStorage?void 0:localStorage.getItem("camp-sdk:wallet-address"),n=null===localStorage||void 0===localStorage?void 0:localStorage.getItem("camp-sdk:user-id"),i=null===localStorage||void 0===localStorage?void 0:localStorage.getItem("camp-sdk:jwt");t&&n&&i?(this.walletAddress=t,this.userId=n,this.jwt=i,this.origin=new we(this.jwt),this.isAuthenticated=!0,
|
|
427
|
+
/*
|
|
428
|
+
let selectedProvider = provider;
|
|
429
|
+
|
|
430
|
+
if (!selectedProvider) {
|
|
431
|
+
const providers = providerStore.value() ?? [];
|
|
432
|
+
for (const p of providers) {
|
|
433
|
+
try {
|
|
434
|
+
const accounts = await p.provider.request({
|
|
435
|
+
method: "eth_requestAccounts",
|
|
436
|
+
});
|
|
437
|
+
if (accounts[0]?.toLowerCase() === walletAddress.toLowerCase()) {
|
|
438
|
+
selectedProvider = p;
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
} catch (err) {
|
|
442
|
+
console.warn("Failed to fetch accounts from provider:", err);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
*/
|
|
447
|
+
e?this.setProvider({provider:e.provider,info:e.info||{name:"Unknown"},address:t}):(console.warn("No matching provider was given for the stored wallet address. Trying to recover provider."),yield this.recoverProvider())):this.isAuthenticated=!1}))},oe=function(){return p(this,void 0,void 0,(function*(){try{const[e]=yield this.viem.requestAddresses();return this.walletAddress=e,e}catch(e){throw new h(e)}}))},de=function(){return p(this,void 0,void 0,(function*(){try{const e=yield fetch(`${E}/auth/client-user/nonce`,{method:"POST",headers:{"Content-Type":"application/json","x-client-id":this.clientId},body:JSON.stringify({walletAddress:this.walletAddress})}),t=yield e.json();return 200!==e.status?Promise.reject(t.message||"Failed to fetch nonce"):t.data}catch(e){throw new Error(e)}}))},ue=function(e,t){return p(this,void 0,void 0,(function*(){try{const n=yield fetch(`${E}/auth/client-user/verify`,{method:"POST",headers:{"Content-Type":"application/json","x-client-id":this.clientId},body:JSON.stringify({message:e,signature:t,walletAddress:this.walletAddress})}),i=yield n.json(),a=i.data.split(".")[1],r=JSON.parse(atob(a));return{success:!i.isError,userId:r.id,token:i.data}}catch(e){throw new h(e)}}))},le=function(e){return l({domain:window.location.host,address:this.walletAddress,statement:C,uri:window.location.origin,version:"1",chainId:this.viem.chain.id,nonce:e})},pe=function(e,t){return p(this,arguments,void 0,(function*(e,t,n=1){
|
|
427
448
|
// if (this.#ackeeInstance)
|
|
428
449
|
// await sendAnalyticsEvent(this.#ackeeInstance, event, message, count);
|
|
429
450
|
// else return;
|
|
430
|
-
}))};export{
|
|
451
|
+
}))};export{ve as Auth,b as SpotifyAPI,T as TwitterAPI};
|