@zoralabs/coins-sdk 0.2.4 → 0.2.5

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/actions/createCoin.d.ts +1 -1
  3. package/dist/actions/createCoin.d.ts.map +1 -1
  4. package/dist/api/api-key.d.ts +2 -1
  5. package/dist/api/api-key.d.ts.map +1 -1
  6. package/dist/api/internal.d.ts +2 -2
  7. package/dist/api/internal.d.ts.map +1 -1
  8. package/dist/index.cjs +242 -1
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +241 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/metadata/cleanAndValidateMetadataURI.d.ts +1 -1
  15. package/dist/metadata/cleanAndValidateMetadataURI.d.ts.map +1 -1
  16. package/dist/metadata/index.d.ts +1 -1
  17. package/dist/metadata/index.d.ts.map +1 -1
  18. package/dist/metadata/validateMetadataURIContent.d.ts +1 -1
  19. package/dist/metadata/validateMetadataURIContent.d.ts.map +1 -1
  20. package/dist/uploader/index.d.ts +10 -0
  21. package/dist/uploader/index.d.ts.map +1 -0
  22. package/dist/uploader/metadata.d.ts +44 -0
  23. package/dist/uploader/metadata.d.ts.map +1 -0
  24. package/dist/uploader/providers/zora.d.ts +18 -0
  25. package/dist/uploader/providers/zora.d.ts.map +1 -0
  26. package/dist/uploader/types.d.ts +21 -0
  27. package/dist/uploader/types.d.ts.map +1 -0
  28. package/package.json +1 -1
  29. package/src/actions/createCoin.ts +2 -1
  30. package/src/api/api-key.ts +5 -1
  31. package/src/api/internal.ts +3 -3
  32. package/src/index.ts +3 -0
  33. package/src/metadata/cleanAndValidateMetadataURI.ts +1 -5
  34. package/src/metadata/index.ts +1 -4
  35. package/src/metadata/validateMetadataURIContent.ts +2 -4
  36. package/src/uploader/index.ts +16 -0
  37. package/src/uploader/metadata.ts +214 -0
  38. package/src/uploader/providers/zora.ts +86 -0
  39. package/src/uploader/tests/metadata.test.ts +331 -0
  40. package/src/uploader/tests/providers.test.ts +131 -0
  41. package/src/uploader/types.ts +27 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @zoralabs/coins-sdk
2
2
 
3
+ ## 0.2.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 4153eddc: Added metadata uploading feature
8
+
3
9
  ## 0.2.4
4
10
 
5
11
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  import { coinFactoryABI as zoraFactoryImplABI } from "@zoralabs/protocol-deployments";
2
2
  import { Address, TransactionReceipt, WalletClient, SimulateContractParameters, ContractEventArgsFromTopics, Account } from "viem";
3
3
  import { GenericPublicClient } from "../utils/genericPublicClient";
4
- import { ValidMetadataURI } from "../metadata";
4
+ import { ValidMetadataURI } from "../uploader/types";
5
5
  export type CoinDeploymentLogArgs = ContractEventArgsFromTopics<typeof zoraFactoryImplABI, "CoinCreatedV4">;
6
6
  export declare enum DeployCurrency {
7
7
  ZORA = 1,
@@ -1 +1 @@
1
- {"version":3,"file":"createCoin.d.ts","sourceRoot":"","sources":["../../src/actions/createCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,0BAA0B,EAC1B,2BAA2B,EAM3B,OAAO,EACR,MAAM,MAAM,CAAC;AAId,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAA8B,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ3E,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,CAC7D,OAAO,kBAAkB,EACzB,eAAe,CAChB,CAAC;AAEF,oBAAY,cAAc;IACxB,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED,oBAAY,uBAAuB;IACjC,GAAG,IAAI;CAER;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,eAAe,CAAC,EAAE;QAChB,QAAQ,EAAE,uBAAuB,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAqBF,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,GAAG,EACH,MAAM,EACN,eAAe,EACf,QAAQ,EACR,OAAiB,EACjB,gBAA+D,EAC/D,eAAe,GAChB,EAAE,cAAc,GAAG,OAAO,CACzB,0BAA0B,CAAC,OAAO,kBAAkB,EAAE,QAAQ,CAAC,CAChE,CA8CA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,GAC1B,qBAAqB,GAAG,SAAS,CAOnC;AAGD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,mBAAmB,EACjC,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;;;;;;;;;;;;;;;;;;;;;;;GAyBF"}
1
+ {"version":3,"file":"createCoin.d.ts","sourceRoot":"","sources":["../../src/actions/createCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,0BAA0B,EAC1B,2BAA2B,EAM3B,OAAO,EACR,MAAM,MAAM,CAAC;AAId,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,CAC7D,OAAO,kBAAkB,EACzB,eAAe,CAChB,CAAC;AAEF,oBAAY,cAAc;IACxB,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED,oBAAY,uBAAuB;IACjC,GAAG,IAAI;CAER;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,eAAe,CAAC,EAAE;QAChB,QAAQ,EAAE,uBAAuB,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAqBF,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,GAAG,EACH,MAAM,EACN,eAAe,EACf,QAAQ,EACR,OAAiB,EACjB,gBAA+D,EAC/D,eAAe,GAChB,EAAE,cAAc,GAAG,OAAO,CACzB,0BAA0B,CAAC,OAAO,kBAAkB,EAAE,QAAQ,CAAC,CAChE,CA8CA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,GAC1B,qBAAqB,GAAG,SAAS,CAOnC;AAGD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,mBAAmB,EACjC,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;;;;;;;;;;;;;;;;;;;;;;;GAyBF"}
@@ -1,4 +1,5 @@
1
- export declare function setApiKey(key: string): void;
1
+ export declare function setApiKey(key: string | undefined): void;
2
+ export declare function getApiKey(): string | undefined;
2
3
  export declare function getApiKeyMeta(): {
3
4
  headers?: undefined;
4
5
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/api/api-key.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,QAEpC;AAED,wBAAgB,aAAa;;;;;;EAS5B"}
1
+ {"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/api/api-key.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,QAEhD;AAED,wBAAgB,SAAS,uBAExB;AAED,wBAAgB,aAAa;;;;;;EAS5B"}
@@ -1,8 +1,8 @@
1
1
  import { SetCreateUploadJwtData, SetCreateUploadJwtResponse } from "../client/types.gen";
2
2
  import { RequestOptionsType } from "./query-types";
3
3
  import { RequestResult } from "@hey-api/client-fetch";
4
- type SetCreateUploadJwtQuery = SetCreateUploadJwtData["query"];
4
+ type SetCreateUploadJwtQuery = SetCreateUploadJwtData["body"];
5
5
  export type { SetCreateUploadJwtQuery, SetCreateUploadJwtData };
6
6
  export type { SetCreateUploadJwtResponse } from "../client/types.gen";
7
- export declare const setCreateUploadJwt: (query: SetCreateUploadJwtQuery, options?: RequestOptionsType<SetCreateUploadJwtData>) => Promise<RequestResult<SetCreateUploadJwtResponse>>;
7
+ export declare const setCreateUploadJwt: (body: SetCreateUploadJwtQuery, options?: RequestOptionsType<SetCreateUploadJwtData>) => Promise<RequestResult<SetCreateUploadJwtResponse>>;
8
8
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/api/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,KAAK,uBAAuB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC/D,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,uBAAuB,EAC9B,UAAU,kBAAkB,CAAC,sBAAsB,CAAC,KACnD,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAMnD,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/api/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,KAAK,uBAAuB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC9D,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,eAAO,MAAM,kBAAkB,GAC7B,MAAM,uBAAuB,EAC7B,UAAU,kBAAkB,CAAC,sBAAsB,CAAC,KACnD,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAMnD,CAAC"}
package/dist/index.cjs CHANGED
@@ -580,6 +580,22 @@ var getCoins = (options) => {
580
580
  ...options
581
581
  });
582
582
  };
583
+ var setCreateUploadJwt = (options) => {
584
+ return (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _11 => _11.client]), () => ( client))).post({
585
+ security: [
586
+ {
587
+ name: "api-key",
588
+ type: "apiKey"
589
+ }
590
+ ],
591
+ url: "/createUploadJWT",
592
+ ...options,
593
+ headers: {
594
+ "Content-Type": "application/json",
595
+ ..._optionalChain([options, 'optionalAccess', _12 => _12.headers])
596
+ }
597
+ });
598
+ };
583
599
  var getExplore = (options) => {
584
600
  return (_nullishCoalesce(options.client, () => ( client))).get({
585
601
  security: [
@@ -634,6 +650,9 @@ var apiKey;
634
650
  function setApiKey(key) {
635
651
  apiKey = key;
636
652
  }
653
+ function getApiKey() {
654
+ return apiKey;
655
+ }
637
656
  function getApiKeyMeta() {
638
657
  if (!apiKey) {
639
658
  return {};
@@ -704,6 +723,228 @@ var getCoinsNew = (query = {}, options) => createExploreQuery(query, "NEW", opti
704
723
  var getCoinsLastTraded = (query = {}, options) => createExploreQuery(query, "LAST_TRADED", options);
705
724
  var getCoinsLastTradedUnique = (query = {}, options) => createExploreQuery(query, "LAST_TRADED_UNIQUE", options);
706
725
 
726
+ // src/uploader/metadata.ts
727
+ function validateImageMimeType(mimeType) {
728
+ if (![
729
+ "image/png",
730
+ "image/jpeg",
731
+ "image/jpg",
732
+ "image/gif",
733
+ "image/svg+xml"
734
+ ].includes(mimeType)) {
735
+ throw new Error("Image must be a PNG, JPEG, JPG, GIF or SVG");
736
+ }
737
+ }
738
+ function getURLFromUploadResult(uploadResult) {
739
+ return new URL(uploadResult.url);
740
+ }
741
+ var CoinMetadataBuilder = class {
742
+ withName(name) {
743
+ this.name = name;
744
+ if (typeof name !== "string") {
745
+ throw new Error("Name must be a string");
746
+ }
747
+ return this;
748
+ }
749
+ withSymbol(symbol) {
750
+ this.symbol = symbol;
751
+ if (typeof symbol !== "string") {
752
+ throw new Error("Symbol must be a string");
753
+ }
754
+ return this;
755
+ }
756
+ withDescription(description) {
757
+ this.description = description;
758
+ if (typeof description !== "string") {
759
+ throw new Error("Description must be a string");
760
+ }
761
+ return this;
762
+ }
763
+ withImage(image) {
764
+ if (this.imageURL) {
765
+ throw new Error("Image URL already set");
766
+ }
767
+ if (!(image instanceof File)) {
768
+ throw new Error("Image must be a File");
769
+ }
770
+ validateImageMimeType(image.type);
771
+ this.imageFile = image;
772
+ return this;
773
+ }
774
+ withImageURI(imageURI) {
775
+ if (this.imageFile) {
776
+ throw new Error("Image file already set");
777
+ }
778
+ if (typeof imageURI !== "string") {
779
+ throw new Error("Image URI must be a string");
780
+ }
781
+ const url = new URL(imageURI);
782
+ this.imageURL = url;
783
+ return this;
784
+ }
785
+ withProperties(properties) {
786
+ for (const [key, value] of Object.entries(properties)) {
787
+ if (typeof key !== "string") {
788
+ throw new Error("Property key must be a string");
789
+ }
790
+ if (typeof value !== "string") {
791
+ throw new Error("Property value must be a string");
792
+ }
793
+ }
794
+ if (!this.properties) {
795
+ this.properties = {};
796
+ }
797
+ this.properties = { ...this.properties, ...properties };
798
+ return this;
799
+ }
800
+ withMedia(media) {
801
+ if (this.mediaURL) {
802
+ throw new Error("Media URL already set");
803
+ }
804
+ if (!(media instanceof File)) {
805
+ throw new Error("Media must be a File");
806
+ }
807
+ this.mediaMimeType = media.type;
808
+ this.mediaFile = media;
809
+ return this;
810
+ }
811
+ withMediaURI(mediaURI, mediaMimeType) {
812
+ if (this.mediaFile) {
813
+ throw new Error("Media file already set");
814
+ }
815
+ if (typeof mediaURI !== "string") {
816
+ throw new Error("Media URI must be a string");
817
+ }
818
+ const url = new URL(mediaURI);
819
+ this.mediaURL = url;
820
+ this.mediaMimeType = mediaMimeType;
821
+ return this;
822
+ }
823
+ validate() {
824
+ if (!this.name) {
825
+ throw new Error("Name is required");
826
+ }
827
+ if (!this.symbol) {
828
+ throw new Error("Symbol is required");
829
+ }
830
+ if (!this.imageFile && !this.imageURL) {
831
+ throw new Error("Image is required");
832
+ }
833
+ return this;
834
+ }
835
+ generateMetadata() {
836
+ return {
837
+ name: this.name,
838
+ symbol: this.symbol,
839
+ description: this.description,
840
+ image: this.imageURL.toString(),
841
+ animation_url: _optionalChain([this, 'access', _13 => _13.mediaURL, 'optionalAccess', _14 => _14.toString, 'call', _15 => _15()]),
842
+ content: this.mediaURL ? {
843
+ uri: _optionalChain([this, 'access', _16 => _16.mediaURL, 'optionalAccess', _17 => _17.toString, 'call', _18 => _18()]),
844
+ mime: this.mediaMimeType
845
+ } : void 0,
846
+ properties: this.properties
847
+ };
848
+ }
849
+ async upload(uploader) {
850
+ this.validate();
851
+ if (this.imageFile) {
852
+ const uploadResult2 = await uploader.upload(this.imageFile);
853
+ this.imageURL = getURLFromUploadResult(uploadResult2);
854
+ }
855
+ if (this.mediaFile) {
856
+ const uploadResult2 = await uploader.upload(this.mediaFile);
857
+ this.mediaURL = getURLFromUploadResult(uploadResult2);
858
+ }
859
+ const metadata = this.generateMetadata();
860
+ const uploadResult = await uploader.upload(
861
+ new File([JSON.stringify(metadata)], "metadata.json", {
862
+ type: "application/json"
863
+ })
864
+ );
865
+ return {
866
+ url: getURLFromUploadResult(uploadResult).toString(),
867
+ createMetadataParameters: {
868
+ name: this.name,
869
+ symbol: this.symbol,
870
+ uri: uploadResult.url
871
+ },
872
+ metadata
873
+ };
874
+ }
875
+ };
876
+ function createMetadataBuilder() {
877
+ return new CoinMetadataBuilder();
878
+ }
879
+
880
+ // src/api/internal.ts
881
+ var setCreateUploadJwt2 = async (body, options) => {
882
+ return await setCreateUploadJwt({
883
+ body,
884
+ ...getApiKeyMeta(),
885
+ ...options
886
+ });
887
+ };
888
+
889
+ // src/uploader/providers/zora.ts
890
+ var ZoraUploader = class {
891
+ constructor(creatorAddress) {
892
+ this.creatorAddress = creatorAddress;
893
+ if (!getApiKey()) {
894
+ throw new Error("API key is required for metadata interactions");
895
+ }
896
+ }
897
+ async getJWTApiKey() {
898
+ if (this.jwtApiKey && this.jwtApiKeyExpiresAt && this.jwtApiKeyExpiresAt > Date.now()) {
899
+ return this.jwtApiKey;
900
+ }
901
+ this.jwtApiKeyExpiresAt = Date.now() + 1e3 * 60 * 60;
902
+ const response = await setCreateUploadJwt2({
903
+ creatorAddress: this.creatorAddress
904
+ });
905
+ this.jwtApiKey = _optionalChain([response, 'access', _19 => _19.data, 'optionalAccess', _20 => _20.createUploadJwtFromApiKey]);
906
+ if (!this.jwtApiKey) {
907
+ throw new Error("Failed to create upload JWT");
908
+ }
909
+ return this.jwtApiKey;
910
+ }
911
+ async upload(file) {
912
+ const jwtApiKey = await this.getJWTApiKey();
913
+ const formData = new FormData();
914
+ formData.append("file", file, file.name);
915
+ const response = await fetch(
916
+ "https://ipfs-uploader.zora.co/api/v0/add?cid-version=1",
917
+ {
918
+ method: "POST",
919
+ headers: {
920
+ Authorization: `Bearer ${jwtApiKey}`,
921
+ Accept: "*/*"
922
+ },
923
+ body: formData
924
+ }
925
+ );
926
+ if (!response.ok) {
927
+ console.error(await response.text());
928
+ throw new Error(`Failed to upload file: ${response.statusText}`);
929
+ }
930
+ const data = await response.json();
931
+ return {
932
+ url: `ipfs://${data.cid}`,
933
+ size: data.size,
934
+ mimeType: data.mimeType
935
+ };
936
+ }
937
+ };
938
+ function createZoraUploaderForCreator(creatorAddress) {
939
+ return new ZoraUploader(creatorAddress);
940
+ }
941
+
942
+
943
+
944
+
945
+
946
+
947
+
707
948
 
708
949
 
709
950
 
@@ -730,5 +971,5 @@ var getCoinsLastTradedUnique = (query = {}, options) => createExploreQuery(query
730
971
 
731
972
 
732
973
 
733
- exports.DeployCurrency = DeployCurrency; exports.InitialPurchaseCurrency = InitialPurchaseCurrency; exports.cleanAndValidateMetadataURI = cleanAndValidateMetadataURI; exports.createCoin = createCoin; exports.createCoinCall = createCoinCall; exports.getCoin = getCoin2; exports.getCoinComments = getCoinComments2; exports.getCoinCreateFromLogs = getCoinCreateFromLogs; exports.getCoins = getCoins2; exports.getCoinsLastTraded = getCoinsLastTraded; exports.getCoinsLastTradedUnique = getCoinsLastTradedUnique; exports.getCoinsMostValuable = getCoinsMostValuable; exports.getCoinsNew = getCoinsNew; exports.getCoinsTopGainers = getCoinsTopGainers; exports.getCoinsTopVolume24h = getCoinsTopVolume24h; exports.getOnchainCoinDetails = getOnchainCoinDetails; exports.getProfile = getProfile2; exports.getProfileBalances = getProfileBalances2; exports.getProfileCoins = getProfileCoins2; exports.setApiKey = setApiKey; exports.updateCoinURI = updateCoinURI; exports.updateCoinURICall = updateCoinURICall; exports.updatePayoutRecipient = updatePayoutRecipient; exports.updatePayoutRecipientCall = updatePayoutRecipientCall; exports.validateMetadataJSON = validateMetadataJSON; exports.validateMetadataURIContent = validateMetadataURIContent;
974
+ exports.CoinMetadataBuilder = CoinMetadataBuilder; exports.DeployCurrency = DeployCurrency; exports.InitialPurchaseCurrency = InitialPurchaseCurrency; exports.ZoraUploader = ZoraUploader; exports.cleanAndValidateMetadataURI = cleanAndValidateMetadataURI; exports.createCoin = createCoin; exports.createCoinCall = createCoinCall; exports.createMetadataBuilder = createMetadataBuilder; exports.createZoraUploaderForCreator = createZoraUploaderForCreator; exports.getCoin = getCoin2; exports.getCoinComments = getCoinComments2; exports.getCoinCreateFromLogs = getCoinCreateFromLogs; exports.getCoins = getCoins2; exports.getCoinsLastTraded = getCoinsLastTraded; exports.getCoinsLastTradedUnique = getCoinsLastTradedUnique; exports.getCoinsMostValuable = getCoinsMostValuable; exports.getCoinsNew = getCoinsNew; exports.getCoinsTopGainers = getCoinsTopGainers; exports.getCoinsTopVolume24h = getCoinsTopVolume24h; exports.getOnchainCoinDetails = getOnchainCoinDetails; exports.getProfile = getProfile2; exports.getProfileBalances = getProfileBalances2; exports.getProfileCoins = getProfileCoins2; exports.getURLFromUploadResult = getURLFromUploadResult; exports.setApiKey = setApiKey; exports.updateCoinURI = updateCoinURI; exports.updateCoinURICall = updateCoinURICall; exports.updatePayoutRecipient = updatePayoutRecipient; exports.updatePayoutRecipientCall = updatePayoutRecipientCall; exports.validateImageMimeType = validateImageMimeType; exports.validateMetadataJSON = validateMetadataJSON; exports.validateMetadataURIContent = validateMetadataURIContent;
734
975
  //# sourceMappingURL=index.cjs.map