@medialane/ui 0.169.0 → 0.170.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/components/badge.d.cts +1 -1
  2. package/dist/components/badge.d.ts +1 -1
  3. package/dist/components/button.d.cts +2 -2
  4. package/dist/components/button.d.ts +2 -2
  5. package/dist/components/fast-mint/fast-mint.d.cts +2 -2
  6. package/dist/components/fast-mint/fast-mint.d.ts +2 -2
  7. package/dist/components/sheet.d.cts +1 -1
  8. package/dist/components/sheet.d.ts +1 -1
  9. package/dist/index.cjs +68 -0
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +8 -0
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.js +63 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/utils/sitemap-data.cjs +55 -0
  16. package/dist/utils/sitemap-data.cjs.map +1 -0
  17. package/dist/utils/sitemap-data.d.cts +23 -0
  18. package/dist/utils/sitemap-data.d.ts +23 -0
  19. package/dist/utils/sitemap-data.js +31 -0
  20. package/dist/utils/sitemap-data.js.map +1 -0
  21. package/dist/utils/use-coin-price.cjs +88 -0
  22. package/dist/utils/use-coin-price.cjs.map +1 -0
  23. package/dist/utils/use-coin-price.d.cts +17 -0
  24. package/dist/utils/use-coin-price.d.ts +17 -0
  25. package/dist/utils/use-coin-price.js +53 -0
  26. package/dist/utils/use-coin-price.js.map +1 -0
  27. package/dist/utils/use-collections.cjs +2 -2
  28. package/dist/utils/use-collections.cjs.map +1 -1
  29. package/dist/utils/use-collections.js +2 -2
  30. package/dist/utils/use-collections.js.map +1 -1
  31. package/dist/utils/use-drops.cjs +94 -0
  32. package/dist/utils/use-drops.cjs.map +1 -0
  33. package/dist/utils/use-drops.d.cts +39 -0
  34. package/dist/utils/use-drops.d.ts +39 -0
  35. package/dist/utils/use-drops.js +56 -0
  36. package/dist/utils/use-drops.js.map +1 -0
  37. package/dist/utils/use-platform-stats.cjs +50 -0
  38. package/dist/utils/use-platform-stats.cjs.map +1 -0
  39. package/dist/utils/use-platform-stats.d.cts +9 -0
  40. package/dist/utils/use-platform-stats.d.ts +9 -0
  41. package/dist/utils/use-platform-stats.js +16 -0
  42. package/dist/utils/use-platform-stats.js.map +1 -0
  43. package/dist/utils/use-pop.cjs +72 -0
  44. package/dist/utils/use-pop.cjs.map +1 -0
  45. package/dist/utils/use-pop.d.cts +28 -0
  46. package/dist/utils/use-pop.d.ts +28 -0
  47. package/dist/utils/use-pop.js +36 -0
  48. package/dist/utils/use-pop.js.map +1 -0
  49. package/dist/utils/use-sponsorship.cjs +131 -0
  50. package/dist/utils/use-sponsorship.cjs.map +1 -0
  51. package/dist/utils/use-sponsorship.d.cts +70 -0
  52. package/dist/utils/use-sponsorship.d.ts +70 -0
  53. package/dist/utils/use-sponsorship.js +90 -0
  54. package/dist/utils/use-sponsorship.js.map +1 -0
  55. package/dist/utils/use-tiers.cjs +137 -0
  56. package/dist/utils/use-tiers.cjs.map +1 -0
  57. package/dist/utils/use-tiers.d.cts +60 -0
  58. package/dist/utils/use-tiers.d.ts +60 -0
  59. package/dist/utils/use-tiers.js +95 -0
  60. package/dist/utils/use-tiers.js.map +1 -0
  61. package/dist/utils/use-tokens-by-ip-type.cjs +50 -0
  62. package/dist/utils/use-tokens-by-ip-type.cjs.map +1 -0
  63. package/dist/utils/use-tokens-by-ip-type.d.cts +14 -0
  64. package/dist/utils/use-tokens-by-ip-type.d.ts +14 -0
  65. package/dist/utils/use-tokens-by-ip-type.js +16 -0
  66. package/dist/utils/use-tokens-by-ip-type.js.map +1 -0
  67. package/package.json +3 -3
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var use_sponsorship_exports = {};
31
+ __export(use_sponsorship_exports, {
32
+ useMySponsorshipDealCounts: () => useMySponsorshipDealCounts,
33
+ usePendingProposalsForAsset: () => usePendingProposalsForAsset,
34
+ useSponsorshipBids: () => useSponsorshipBids,
35
+ useSponsorshipLicenses: () => useSponsorshipLicenses,
36
+ useSponsorshipOffer: () => useSponsorshipOffer,
37
+ useSponsorshipOffers: () => useSponsorshipOffers,
38
+ useSponsorshipProposal: () => useSponsorshipProposal,
39
+ useSponsorshipProposals: () => useSponsorshipProposals
40
+ });
41
+ module.exports = __toCommonJS(use_sponsorship_exports);
42
+ var import_swr = __toESM(require("swr"), 1);
43
+ var import_use_medialane_client = require("./use-medialane-client.js");
44
+ function useSponsorshipOffers(getClient, params) {
45
+ const key = `sponsorship-offers-${JSON.stringify(params ?? {})}`;
46
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
47
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
48
+ key,
49
+ () => client.api.getSponsorshipOffers({ ...params, limit: 50 }),
50
+ { revalidateOnFocus: false }
51
+ );
52
+ return { offers: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };
53
+ }
54
+ function useSponsorshipOffer(getClient, offerId) {
55
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
56
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
57
+ offerId ? `sponsorship-offer-${offerId}` : null,
58
+ () => client.api.getSponsorshipOffer(offerId),
59
+ { revalidateOnFocus: false }
60
+ );
61
+ return { offer: data ?? null, isLoading, error, mutate };
62
+ }
63
+ function useSponsorshipBids(getClient, offerId) {
64
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
65
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
66
+ offerId ? `sponsorship-bids-${offerId}` : null,
67
+ () => client.api.getSponsorshipBids(offerId),
68
+ { revalidateOnFocus: false }
69
+ );
70
+ return { bids: data ?? [], isLoading, error, mutate };
71
+ }
72
+ function useSponsorshipProposals(getClient, params) {
73
+ const key = `sponsorship-proposals-${JSON.stringify(params ?? {})}`;
74
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
75
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
76
+ key,
77
+ () => client.api.getSponsorshipProposals({ ...params, limit: 50 }),
78
+ { revalidateOnFocus: false }
79
+ );
80
+ return { proposals: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };
81
+ }
82
+ function useSponsorshipProposal(getClient, proposalId) {
83
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
84
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
85
+ proposalId ? `sponsorship-proposal-${proposalId}` : null,
86
+ () => client.api.getSponsorshipProposal(proposalId),
87
+ { revalidateOnFocus: false }
88
+ );
89
+ return { proposal: data ?? null, isLoading, error, mutate };
90
+ }
91
+ function usePendingProposalsForAsset(getClient, nftContract) {
92
+ const { proposals, isLoading, error, mutate } = useSponsorshipProposals(
93
+ getClient,
94
+ nftContract ? { nftContract, open: true } : void 0
95
+ );
96
+ return { proposals: nftContract ? proposals : [], isLoading, error, mutate };
97
+ }
98
+ function useSponsorshipLicenses(getClient, params) {
99
+ const key = `sponsorship-licenses-${JSON.stringify(params ?? {})}`;
100
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
101
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
102
+ key,
103
+ () => client.api.getSponsorshipLicenses({ ...params, limit: 50 }),
104
+ { revalidateOnFocus: false }
105
+ );
106
+ return { licenses: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };
107
+ }
108
+ function useMySponsorshipDealCounts(getClient, walletAddress) {
109
+ const { proposals, isLoading: proposalsLoading } = useSponsorshipProposals(
110
+ getClient,
111
+ walletAddress ? { owner: walletAddress, open: true } : void 0
112
+ );
113
+ const { offers, isLoading: offersLoading } = useSponsorshipOffers(
114
+ getClient,
115
+ walletAddress ? { author: walletAddress, open: true } : void 0
116
+ );
117
+ void offers;
118
+ return { pendingCount: proposals.length, isLoading: proposalsLoading || offersLoading };
119
+ }
120
+ // Annotate the CommonJS export names for ESM import in node:
121
+ 0 && (module.exports = {
122
+ useMySponsorshipDealCounts,
123
+ usePendingProposalsForAsset,
124
+ useSponsorshipBids,
125
+ useSponsorshipLicenses,
126
+ useSponsorshipOffer,
127
+ useSponsorshipOffers,
128
+ useSponsorshipProposal,
129
+ useSponsorshipProposals
130
+ });
131
+ //# sourceMappingURL=use-sponsorship.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/use-sponsorship.ts"],"sourcesContent":["\"use client\";\n\nimport useSWR from \"swr\";\nimport type { ApiSponsorshipOffer, ApiSponsorshipBid, ApiSponsorshipProposal, ApiSponsorshipLicense, ApiResponse } from \"@medialane/sdk\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { useMedialaneClient } from \"./use-medialane-client.js\";\n\nexport type {\n ApiSponsorshipOffer as SponsorshipOffer,\n ApiSponsorshipBid as SponsorshipBid,\n ApiSponsorshipProposal as SponsorshipProposal,\n ApiSponsorshipLicense as SponsorshipLicense,\n} from \"@medialane/sdk\";\n\nexport function useSponsorshipOffers(getClient: () => MedialaneClient, params?: { nftContract?: string; author?: string; owner?: string; open?: boolean }) {\n const key = `sponsorship-offers-${JSON.stringify(params ?? {})}`;\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiResponse<ApiSponsorshipOffer[]>>(\n key,\n () => client.api.getSponsorshipOffers({ ...params, limit: 50 }),\n { revalidateOnFocus: false }\n );\n\n return { offers: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };\n}\n\nexport function useSponsorshipOffer(getClient: () => MedialaneClient, offerId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiSponsorshipOffer | null>(\n offerId ? `sponsorship-offer-${offerId}` : null,\n () => client.api.getSponsorshipOffer(offerId!),\n { revalidateOnFocus: false }\n );\n\n return { offer: data ?? null, isLoading, error, mutate };\n}\n\nexport function useSponsorshipBids(getClient: () => MedialaneClient, offerId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiSponsorshipBid[]>(\n offerId ? `sponsorship-bids-${offerId}` : null,\n () => client.api.getSponsorshipBids(offerId!),\n { revalidateOnFocus: false }\n );\n\n return { bids: data ?? [], isLoading, error, mutate };\n}\n\nexport function useSponsorshipProposals(getClient: () => MedialaneClient, params?: { nftContract?: string; proposer?: string; owner?: string; open?: boolean }) {\n const key = `sponsorship-proposals-${JSON.stringify(params ?? {})}`;\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiResponse<ApiSponsorshipProposal[]>>(\n key,\n () => client.api.getSponsorshipProposals({ ...params, limit: 50 }),\n { revalidateOnFocus: false }\n );\n\n return { proposals: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };\n}\n\nexport function useSponsorshipProposal(getClient: () => MedialaneClient, proposalId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiSponsorshipProposal | null>(\n proposalId ? `sponsorship-proposal-${proposalId}` : null,\n () => client.api.getSponsorshipProposal(proposalId!),\n { revalidateOnFocus: false }\n );\n\n return { proposal: data ?? null, isLoading, error, mutate };\n}\n\nexport function usePendingProposalsForAsset(getClient: () => MedialaneClient, nftContract: string | null) {\n const { proposals, isLoading, error, mutate } = useSponsorshipProposals(\n getClient,\n nftContract ? { nftContract, open: true } : undefined\n );\n return { proposals: nftContract ? proposals : [], isLoading, error, mutate };\n}\n\nexport function useSponsorshipLicenses(getClient: () => MedialaneClient, params?: { holder?: string; author?: string }) {\n const key = `sponsorship-licenses-${JSON.stringify(params ?? {})}`;\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiResponse<ApiSponsorshipLicense[]>>(\n key,\n () => client.api.getSponsorshipLicenses({ ...params, limit: 50 }),\n { revalidateOnFocus: false }\n );\n\n return { licenses: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };\n}\n\nexport function useMySponsorshipDealCounts(getClient: () => MedialaneClient, walletAddress: string | null) {\n const { proposals, isLoading: proposalsLoading } = useSponsorshipProposals(\n getClient,\n walletAddress ? { owner: walletAddress, open: true } : undefined\n );\n const { offers, isLoading: offersLoading } = useSponsorshipOffers(\n getClient,\n walletAddress ? { author: walletAddress, open: true } : undefined\n );\n\n void offers;\n return { pendingCount: proposals.length, isLoading: proposalsLoading || offersLoading };\n}\n"],"mappings":"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","names":["useSWR"]}
@@ -0,0 +1,70 @@
1
+ import * as swr from 'swr';
2
+ import * as _medialane_sdk from '@medialane/sdk';
3
+ import { ApiSponsorshipProposal, ApiResponse, ApiSponsorshipBid, ApiSponsorshipLicense, ApiSponsorshipOffer } from '@medialane/sdk';
4
+ export { ApiSponsorshipBid as SponsorshipBid, ApiSponsorshipLicense as SponsorshipLicense, ApiSponsorshipOffer as SponsorshipOffer, ApiSponsorshipProposal as SponsorshipProposal } from '@medialane/sdk';
5
+ import { MedialaneClient } from '@medialane/sdk/starknet';
6
+
7
+ declare function useSponsorshipOffers(getClient: () => MedialaneClient, params?: {
8
+ nftContract?: string;
9
+ author?: string;
10
+ owner?: string;
11
+ open?: boolean;
12
+ }): {
13
+ offers: ApiSponsorshipOffer[];
14
+ meta: _medialane_sdk.ApiMeta | undefined;
15
+ isLoading: boolean;
16
+ error: any;
17
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipOffer[]>>;
18
+ };
19
+ declare function useSponsorshipOffer(getClient: () => MedialaneClient, offerId: string | null): {
20
+ offer: ApiSponsorshipOffer | null;
21
+ isLoading: boolean;
22
+ error: any;
23
+ mutate: swr.KeyedMutator<ApiSponsorshipOffer | null>;
24
+ };
25
+ declare function useSponsorshipBids(getClient: () => MedialaneClient, offerId: string | null): {
26
+ bids: ApiSponsorshipBid[];
27
+ isLoading: boolean;
28
+ error: any;
29
+ mutate: swr.KeyedMutator<ApiSponsorshipBid[]>;
30
+ };
31
+ declare function useSponsorshipProposals(getClient: () => MedialaneClient, params?: {
32
+ nftContract?: string;
33
+ proposer?: string;
34
+ owner?: string;
35
+ open?: boolean;
36
+ }): {
37
+ proposals: ApiSponsorshipProposal[];
38
+ meta: _medialane_sdk.ApiMeta | undefined;
39
+ isLoading: boolean;
40
+ error: any;
41
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipProposal[]>>;
42
+ };
43
+ declare function useSponsorshipProposal(getClient: () => MedialaneClient, proposalId: string | null): {
44
+ proposal: ApiSponsorshipProposal | null;
45
+ isLoading: boolean;
46
+ error: any;
47
+ mutate: swr.KeyedMutator<ApiSponsorshipProposal | null>;
48
+ };
49
+ declare function usePendingProposalsForAsset(getClient: () => MedialaneClient, nftContract: string | null): {
50
+ proposals: ApiSponsorshipProposal[];
51
+ isLoading: boolean;
52
+ error: any;
53
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipProposal[]>>;
54
+ };
55
+ declare function useSponsorshipLicenses(getClient: () => MedialaneClient, params?: {
56
+ holder?: string;
57
+ author?: string;
58
+ }): {
59
+ licenses: ApiSponsorshipLicense[];
60
+ meta: _medialane_sdk.ApiMeta | undefined;
61
+ isLoading: boolean;
62
+ error: any;
63
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipLicense[]>>;
64
+ };
65
+ declare function useMySponsorshipDealCounts(getClient: () => MedialaneClient, walletAddress: string | null): {
66
+ pendingCount: number;
67
+ isLoading: boolean;
68
+ };
69
+
70
+ export { useMySponsorshipDealCounts, usePendingProposalsForAsset, useSponsorshipBids, useSponsorshipLicenses, useSponsorshipOffer, useSponsorshipOffers, useSponsorshipProposal, useSponsorshipProposals };
@@ -0,0 +1,70 @@
1
+ import * as swr from 'swr';
2
+ import * as _medialane_sdk from '@medialane/sdk';
3
+ import { ApiSponsorshipProposal, ApiResponse, ApiSponsorshipBid, ApiSponsorshipLicense, ApiSponsorshipOffer } from '@medialane/sdk';
4
+ export { ApiSponsorshipBid as SponsorshipBid, ApiSponsorshipLicense as SponsorshipLicense, ApiSponsorshipOffer as SponsorshipOffer, ApiSponsorshipProposal as SponsorshipProposal } from '@medialane/sdk';
5
+ import { MedialaneClient } from '@medialane/sdk/starknet';
6
+
7
+ declare function useSponsorshipOffers(getClient: () => MedialaneClient, params?: {
8
+ nftContract?: string;
9
+ author?: string;
10
+ owner?: string;
11
+ open?: boolean;
12
+ }): {
13
+ offers: ApiSponsorshipOffer[];
14
+ meta: _medialane_sdk.ApiMeta | undefined;
15
+ isLoading: boolean;
16
+ error: any;
17
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipOffer[]>>;
18
+ };
19
+ declare function useSponsorshipOffer(getClient: () => MedialaneClient, offerId: string | null): {
20
+ offer: ApiSponsorshipOffer | null;
21
+ isLoading: boolean;
22
+ error: any;
23
+ mutate: swr.KeyedMutator<ApiSponsorshipOffer | null>;
24
+ };
25
+ declare function useSponsorshipBids(getClient: () => MedialaneClient, offerId: string | null): {
26
+ bids: ApiSponsorshipBid[];
27
+ isLoading: boolean;
28
+ error: any;
29
+ mutate: swr.KeyedMutator<ApiSponsorshipBid[]>;
30
+ };
31
+ declare function useSponsorshipProposals(getClient: () => MedialaneClient, params?: {
32
+ nftContract?: string;
33
+ proposer?: string;
34
+ owner?: string;
35
+ open?: boolean;
36
+ }): {
37
+ proposals: ApiSponsorshipProposal[];
38
+ meta: _medialane_sdk.ApiMeta | undefined;
39
+ isLoading: boolean;
40
+ error: any;
41
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipProposal[]>>;
42
+ };
43
+ declare function useSponsorshipProposal(getClient: () => MedialaneClient, proposalId: string | null): {
44
+ proposal: ApiSponsorshipProposal | null;
45
+ isLoading: boolean;
46
+ error: any;
47
+ mutate: swr.KeyedMutator<ApiSponsorshipProposal | null>;
48
+ };
49
+ declare function usePendingProposalsForAsset(getClient: () => MedialaneClient, nftContract: string | null): {
50
+ proposals: ApiSponsorshipProposal[];
51
+ isLoading: boolean;
52
+ error: any;
53
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipProposal[]>>;
54
+ };
55
+ declare function useSponsorshipLicenses(getClient: () => MedialaneClient, params?: {
56
+ holder?: string;
57
+ author?: string;
58
+ }): {
59
+ licenses: ApiSponsorshipLicense[];
60
+ meta: _medialane_sdk.ApiMeta | undefined;
61
+ isLoading: boolean;
62
+ error: any;
63
+ mutate: swr.KeyedMutator<ApiResponse<ApiSponsorshipLicense[]>>;
64
+ };
65
+ declare function useMySponsorshipDealCounts(getClient: () => MedialaneClient, walletAddress: string | null): {
66
+ pendingCount: number;
67
+ isLoading: boolean;
68
+ };
69
+
70
+ export { useMySponsorshipDealCounts, usePendingProposalsForAsset, useSponsorshipBids, useSponsorshipLicenses, useSponsorshipOffer, useSponsorshipOffers, useSponsorshipProposal, useSponsorshipProposals };
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import useSWR from "swr";
3
+ import { useMedialaneClient } from "./use-medialane-client.js";
4
+ function useSponsorshipOffers(getClient, params) {
5
+ const key = `sponsorship-offers-${JSON.stringify(params ?? {})}`;
6
+ const client = useMedialaneClient(getClient);
7
+ const { data, error, isLoading, mutate } = useSWR(
8
+ key,
9
+ () => client.api.getSponsorshipOffers({ ...params, limit: 50 }),
10
+ { revalidateOnFocus: false }
11
+ );
12
+ return { offers: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };
13
+ }
14
+ function useSponsorshipOffer(getClient, offerId) {
15
+ const client = useMedialaneClient(getClient);
16
+ const { data, error, isLoading, mutate } = useSWR(
17
+ offerId ? `sponsorship-offer-${offerId}` : null,
18
+ () => client.api.getSponsorshipOffer(offerId),
19
+ { revalidateOnFocus: false }
20
+ );
21
+ return { offer: data ?? null, isLoading, error, mutate };
22
+ }
23
+ function useSponsorshipBids(getClient, offerId) {
24
+ const client = useMedialaneClient(getClient);
25
+ const { data, error, isLoading, mutate } = useSWR(
26
+ offerId ? `sponsorship-bids-${offerId}` : null,
27
+ () => client.api.getSponsorshipBids(offerId),
28
+ { revalidateOnFocus: false }
29
+ );
30
+ return { bids: data ?? [], isLoading, error, mutate };
31
+ }
32
+ function useSponsorshipProposals(getClient, params) {
33
+ const key = `sponsorship-proposals-${JSON.stringify(params ?? {})}`;
34
+ const client = useMedialaneClient(getClient);
35
+ const { data, error, isLoading, mutate } = useSWR(
36
+ key,
37
+ () => client.api.getSponsorshipProposals({ ...params, limit: 50 }),
38
+ { revalidateOnFocus: false }
39
+ );
40
+ return { proposals: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };
41
+ }
42
+ function useSponsorshipProposal(getClient, proposalId) {
43
+ const client = useMedialaneClient(getClient);
44
+ const { data, error, isLoading, mutate } = useSWR(
45
+ proposalId ? `sponsorship-proposal-${proposalId}` : null,
46
+ () => client.api.getSponsorshipProposal(proposalId),
47
+ { revalidateOnFocus: false }
48
+ );
49
+ return { proposal: data ?? null, isLoading, error, mutate };
50
+ }
51
+ function usePendingProposalsForAsset(getClient, nftContract) {
52
+ const { proposals, isLoading, error, mutate } = useSponsorshipProposals(
53
+ getClient,
54
+ nftContract ? { nftContract, open: true } : void 0
55
+ );
56
+ return { proposals: nftContract ? proposals : [], isLoading, error, mutate };
57
+ }
58
+ function useSponsorshipLicenses(getClient, params) {
59
+ const key = `sponsorship-licenses-${JSON.stringify(params ?? {})}`;
60
+ const client = useMedialaneClient(getClient);
61
+ const { data, error, isLoading, mutate } = useSWR(
62
+ key,
63
+ () => client.api.getSponsorshipLicenses({ ...params, limit: 50 }),
64
+ { revalidateOnFocus: false }
65
+ );
66
+ return { licenses: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };
67
+ }
68
+ function useMySponsorshipDealCounts(getClient, walletAddress) {
69
+ const { proposals, isLoading: proposalsLoading } = useSponsorshipProposals(
70
+ getClient,
71
+ walletAddress ? { owner: walletAddress, open: true } : void 0
72
+ );
73
+ const { offers, isLoading: offersLoading } = useSponsorshipOffers(
74
+ getClient,
75
+ walletAddress ? { author: walletAddress, open: true } : void 0
76
+ );
77
+ void offers;
78
+ return { pendingCount: proposals.length, isLoading: proposalsLoading || offersLoading };
79
+ }
80
+ export {
81
+ useMySponsorshipDealCounts,
82
+ usePendingProposalsForAsset,
83
+ useSponsorshipBids,
84
+ useSponsorshipLicenses,
85
+ useSponsorshipOffer,
86
+ useSponsorshipOffers,
87
+ useSponsorshipProposal,
88
+ useSponsorshipProposals
89
+ };
90
+ //# sourceMappingURL=use-sponsorship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/use-sponsorship.ts"],"sourcesContent":["\"use client\";\n\nimport useSWR from \"swr\";\nimport type { ApiSponsorshipOffer, ApiSponsorshipBid, ApiSponsorshipProposal, ApiSponsorshipLicense, ApiResponse } from \"@medialane/sdk\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { useMedialaneClient } from \"./use-medialane-client.js\";\n\nexport type {\n ApiSponsorshipOffer as SponsorshipOffer,\n ApiSponsorshipBid as SponsorshipBid,\n ApiSponsorshipProposal as SponsorshipProposal,\n ApiSponsorshipLicense as SponsorshipLicense,\n} from \"@medialane/sdk\";\n\nexport function useSponsorshipOffers(getClient: () => MedialaneClient, params?: { nftContract?: string; author?: string; owner?: string; open?: boolean }) {\n const key = `sponsorship-offers-${JSON.stringify(params ?? {})}`;\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiResponse<ApiSponsorshipOffer[]>>(\n key,\n () => client.api.getSponsorshipOffers({ ...params, limit: 50 }),\n { revalidateOnFocus: false }\n );\n\n return { offers: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };\n}\n\nexport function useSponsorshipOffer(getClient: () => MedialaneClient, offerId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiSponsorshipOffer | null>(\n offerId ? `sponsorship-offer-${offerId}` : null,\n () => client.api.getSponsorshipOffer(offerId!),\n { revalidateOnFocus: false }\n );\n\n return { offer: data ?? null, isLoading, error, mutate };\n}\n\nexport function useSponsorshipBids(getClient: () => MedialaneClient, offerId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiSponsorshipBid[]>(\n offerId ? `sponsorship-bids-${offerId}` : null,\n () => client.api.getSponsorshipBids(offerId!),\n { revalidateOnFocus: false }\n );\n\n return { bids: data ?? [], isLoading, error, mutate };\n}\n\nexport function useSponsorshipProposals(getClient: () => MedialaneClient, params?: { nftContract?: string; proposer?: string; owner?: string; open?: boolean }) {\n const key = `sponsorship-proposals-${JSON.stringify(params ?? {})}`;\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiResponse<ApiSponsorshipProposal[]>>(\n key,\n () => client.api.getSponsorshipProposals({ ...params, limit: 50 }),\n { revalidateOnFocus: false }\n );\n\n return { proposals: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };\n}\n\nexport function useSponsorshipProposal(getClient: () => MedialaneClient, proposalId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiSponsorshipProposal | null>(\n proposalId ? `sponsorship-proposal-${proposalId}` : null,\n () => client.api.getSponsorshipProposal(proposalId!),\n { revalidateOnFocus: false }\n );\n\n return { proposal: data ?? null, isLoading, error, mutate };\n}\n\nexport function usePendingProposalsForAsset(getClient: () => MedialaneClient, nftContract: string | null) {\n const { proposals, isLoading, error, mutate } = useSponsorshipProposals(\n getClient,\n nftContract ? { nftContract, open: true } : undefined\n );\n return { proposals: nftContract ? proposals : [], isLoading, error, mutate };\n}\n\nexport function useSponsorshipLicenses(getClient: () => MedialaneClient, params?: { holder?: string; author?: string }) {\n const key = `sponsorship-licenses-${JSON.stringify(params ?? {})}`;\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiResponse<ApiSponsorshipLicense[]>>(\n key,\n () => client.api.getSponsorshipLicenses({ ...params, limit: 50 }),\n { revalidateOnFocus: false }\n );\n\n return { licenses: data?.data ?? [], meta: data?.meta, isLoading, error, mutate };\n}\n\nexport function useMySponsorshipDealCounts(getClient: () => MedialaneClient, walletAddress: string | null) {\n const { proposals, isLoading: proposalsLoading } = useSponsorshipProposals(\n getClient,\n walletAddress ? { owner: walletAddress, open: true } : undefined\n );\n const { offers, isLoading: offersLoading } = useSponsorshipOffers(\n getClient,\n walletAddress ? { author: walletAddress, open: true } : undefined\n );\n\n void offers;\n return { pendingCount: proposals.length, isLoading: proposalsLoading || offersLoading };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var use_tiers_exports = {};
31
+ __export(use_tiers_exports, {
32
+ predictNextMembershipId: () => predictNextMembershipId,
33
+ predictNextTicketId: () => predictNextTicketId,
34
+ useIsMemberOf: () => useIsMemberOf,
35
+ useMembershipList: () => useMembershipList,
36
+ useMembershipOnchain: () => useMembershipOnchain,
37
+ useMyClubCollections: () => useMyClubCollections,
38
+ useMyTicketCollections: () => useMyTicketCollections,
39
+ useTicketList: () => useTicketList,
40
+ useTicketOnchain: () => useTicketOnchain
41
+ });
42
+ module.exports = __toCommonJS(use_tiers_exports);
43
+ var import_swr = __toESM(require("swr"), 1);
44
+ var import_use_medialane_client = require("./use-medialane-client.js");
45
+ function toTier(data) {
46
+ return {
47
+ maxSupply: BigInt(data.maxSupply),
48
+ minted: BigInt(data.minted),
49
+ startTime: data.startTime,
50
+ endTime: data.endTime,
51
+ royaltyBps: data.royaltyBps
52
+ };
53
+ }
54
+ async function readAll(count, read) {
55
+ const ids = Array.from({ length: count }, (_, i) => String(i + 1));
56
+ const tiers = await Promise.all(ids.map(read));
57
+ return tiers.map((tier, i) => ({ id: ids[i], ...toTier(tier) }));
58
+ }
59
+ function useMyCollectionsOf(getClient, service, owner) {
60
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
61
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
62
+ owner ? `my-${service}-collections-${owner}` : null,
63
+ async () => (await client.api.listCollections({ owner, service, limit: 50 })).data ?? [],
64
+ { revalidateOnFocus: false }
65
+ );
66
+ return { collections: data ?? [], isLoading, error, mutate };
67
+ }
68
+ async function predictNextMembershipId(api, contract) {
69
+ return await api.getClubMembershipCount(contract) + 1;
70
+ }
71
+ async function predictNextTicketId(api, contract) {
72
+ return await api.getTicketCount(contract) + 1;
73
+ }
74
+ function useMyClubCollections(getClient, owner) {
75
+ return useMyCollectionsOf(getClient, "ip-club", owner);
76
+ }
77
+ function useMyTicketCollections(getClient, owner) {
78
+ return useMyCollectionsOf(getClient, "ip-tickets", owner);
79
+ }
80
+ function useMembershipList(getClient, contract) {
81
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
82
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
83
+ contract ? `membership-list-${contract}` : null,
84
+ async () => readAll(await client.api.getClubMembershipCount(contract), (id) => client.api.getClubMembership(contract, id)),
85
+ { revalidateOnFocus: false, dedupingInterval: 15e3 }
86
+ );
87
+ return { memberships: data ?? [], isLoading, error, mutate };
88
+ }
89
+ function useTicketList(getClient, contract) {
90
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
91
+ const { data, error, isLoading, mutate } = (0, import_swr.default)(
92
+ contract ? `ticket-list-${contract}` : null,
93
+ async () => readAll(await client.api.getTicketCount(contract), (id) => client.api.getTicket(contract, id)),
94
+ { revalidateOnFocus: false, dedupingInterval: 15e3 }
95
+ );
96
+ return { tickets: data ?? [], isLoading, error, mutate };
97
+ }
98
+ function useMembershipOnchain(getClient, contract, tokenId) {
99
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
100
+ const { data, error, isLoading } = (0, import_swr.default)(
101
+ contract && tokenId ? `membership-onchain-${contract}-${tokenId}` : null,
102
+ async () => toTier(await client.api.getClubMembership(contract, tokenId)),
103
+ { revalidateOnFocus: false, shouldRetryOnError: false, dedupingInterval: 3e4 }
104
+ );
105
+ return { membership: data ?? null, isLoading, error };
106
+ }
107
+ function useTicketOnchain(getClient, contract, tokenId) {
108
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
109
+ const { data, error, isLoading } = (0, import_swr.default)(
110
+ contract && tokenId ? `ticket-onchain-${contract}-${tokenId}` : null,
111
+ async () => toTier(await client.api.getTicket(contract, tokenId)),
112
+ { revalidateOnFocus: false, shouldRetryOnError: false, dedupingInterval: 3e4 }
113
+ );
114
+ return { ticket: data ?? null, isLoading, error };
115
+ }
116
+ function useIsMemberOf(getClient, contract, tokenId, wallet) {
117
+ const client = (0, import_use_medialane_client.useMedialaneClient)(getClient);
118
+ const { data, error, isLoading } = (0, import_swr.default)(
119
+ contract && tokenId && wallet ? `is-member-of-${contract}-${tokenId}-${wallet}` : null,
120
+ () => client.api.isClubMember(contract, tokenId, wallet),
121
+ { revalidateOnFocus: false, shouldRetryOnError: false }
122
+ );
123
+ return { isMember: data ?? false, isLoading, error };
124
+ }
125
+ // Annotate the CommonJS export names for ESM import in node:
126
+ 0 && (module.exports = {
127
+ predictNextMembershipId,
128
+ predictNextTicketId,
129
+ useIsMemberOf,
130
+ useMembershipList,
131
+ useMembershipOnchain,
132
+ useMyClubCollections,
133
+ useMyTicketCollections,
134
+ useTicketList,
135
+ useTicketOnchain
136
+ });
137
+ //# sourceMappingURL=use-tiers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/use-tiers.ts"],"sourcesContent":["\"use client\";\n\nimport useSWR from \"swr\";\nimport type { ApiClient, ApiCollection, ApiTierOnchain } from \"@medialane/sdk\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { useMedialaneClient } from \"./use-medialane-client.js\";\n\n/** An IP Ticket type or IP Club membership tier, with amounts as bigint. */\nexport interface TierOnchain {\n maxSupply: bigint;\n minted: bigint;\n startTime: number | null;\n endTime: number | null;\n royaltyBps: number;\n}\n\nexport interface TierListItem extends TierOnchain {\n id: string;\n}\n\nfunction toTier(data: ApiTierOnchain): TierOnchain {\n return {\n maxSupply: BigInt(data.maxSupply),\n minted: BigInt(data.minted),\n startTime: data.startTime,\n endTime: data.endTime,\n royaltyBps: data.royaltyBps,\n };\n}\n\nasync function readAll(count: number, read: (id: string) => Promise<ApiTierOnchain>): Promise<TierListItem[]> {\n const ids = Array.from({ length: count }, (_, i) => String(i + 1));\n const tiers = await Promise.all(ids.map(read));\n return tiers.map((tier, i) => ({ id: ids[i]!, ...toTier(tier) }));\n}\n\nfunction useMyCollectionsOf(getClient: () => MedialaneClient, service: string, owner: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<ApiCollection[]>(\n owner ? `my-${service}-collections-${owner}` : null,\n async () => (await client.api.listCollections({ owner: owner!, service, limit: 50 })).data ?? [],\n { revalidateOnFocus: false }\n );\n return { collections: data ?? [], isLoading, error, mutate };\n}\n\n/** The id the next membership tier will get. Reads a fresh count, so call it right before creating the tier. */\nexport async function predictNextMembershipId(api: ApiClient, contract: string): Promise<number> {\n return (await api.getClubMembershipCount(contract)) + 1;\n}\n\n/** The id the next ticket type will get. Reads a fresh count, so call it right before creating the ticket. */\nexport async function predictNextTicketId(api: ApiClient, contract: string): Promise<number> {\n return (await api.getTicketCount(contract)) + 1;\n}\n\nexport function useMyClubCollections(getClient: () => MedialaneClient, owner: string | null) {\n return useMyCollectionsOf(getClient, \"ip-club\", owner);\n}\n\nexport function useMyTicketCollections(getClient: () => MedialaneClient, owner: string | null) {\n return useMyCollectionsOf(getClient, \"ip-tickets\", owner);\n}\n\nexport function useMembershipList(getClient: () => MedialaneClient, contract: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<TierListItem[]>(\n contract ? `membership-list-${contract}` : null,\n async () =>\n readAll(await client.api.getClubMembershipCount(contract!), (id) => client.api.getClubMembership(contract!, id)),\n { revalidateOnFocus: false, dedupingInterval: 15_000 }\n );\n return { memberships: data ?? [], isLoading, error, mutate };\n}\n\nexport function useTicketList(getClient: () => MedialaneClient, contract: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading, mutate } = useSWR<TierListItem[]>(\n contract ? `ticket-list-${contract}` : null,\n async () => readAll(await client.api.getTicketCount(contract!), (id) => client.api.getTicket(contract!, id)),\n { revalidateOnFocus: false, dedupingInterval: 15_000 }\n );\n return { tickets: data ?? [], isLoading, error, mutate };\n}\n\nexport function useMembershipOnchain(getClient: () => MedialaneClient, contract: string | null, tokenId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading } = useSWR<TierOnchain>(\n contract && tokenId ? `membership-onchain-${contract}-${tokenId}` : null,\n async () => toTier(await client.api.getClubMembership(contract!, tokenId!)),\n { revalidateOnFocus: false, shouldRetryOnError: false, dedupingInterval: 30_000 }\n );\n return { membership: data ?? null, isLoading, error };\n}\n\nexport function useTicketOnchain(getClient: () => MedialaneClient, contract: string | null, tokenId: string | null) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading } = useSWR<TierOnchain>(\n contract && tokenId ? `ticket-onchain-${contract}-${tokenId}` : null,\n async () => toTier(await client.api.getTicket(contract!, tokenId!)),\n { revalidateOnFocus: false, shouldRetryOnError: false, dedupingInterval: 30_000 }\n );\n return { ticket: data ?? null, isLoading, error };\n}\n\nexport function useIsMemberOf(\n getClient: () => MedialaneClient,\n contract: string | null,\n tokenId: string | null,\n wallet: string | null\n) {\n const client = useMedialaneClient(getClient);\n const { data, error, isLoading } = useSWR<boolean>(\n contract && tokenId && wallet ? `is-member-of-${contract}-${tokenId}-${wallet}` : null,\n () => client.api.isClubMember(contract!, tokenId!, wallet!),\n { revalidateOnFocus: false, shouldRetryOnError: false }\n );\n return { isMember: data ?? false, isLoading, error };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iBAAmB;AAGnB,kCAAmC;AAenC,SAAS,OAAO,MAAmC;AACjD,SAAO;AAAA,IACL,WAAW,OAAO,KAAK,SAAS;AAAA,IAChC,QAAQ,OAAO,KAAK,MAAM;AAAA,IAC1B,WAAW,KAAK;AAAA,IAChB,SAAS,KAAK;AAAA,IACd,YAAY,KAAK;AAAA,EACnB;AACF;AAEA,eAAe,QAAQ,OAAe,MAAwE;AAC5G,QAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,GAAG,MAAM,OAAO,IAAI,CAAC,CAAC;AACjE,QAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC;AAC7C,SAAO,MAAM,IAAI,CAAC,MAAM,OAAO,EAAE,IAAI,IAAI,CAAC,GAAI,GAAG,OAAO,IAAI,EAAE,EAAE;AAClE;AAEA,SAAS,mBAAmB,WAAkC,SAAiB,OAAsB;AACnG,QAAM,aAAS,gDAAmB,SAAS;AAC3C,QAAM,EAAE,MAAM,OAAO,WAAW,OAAO,QAAI,WAAAA;AAAA,IACzC,QAAQ,MAAM,OAAO,gBAAgB,KAAK,KAAK;AAAA,IAC/C,aAAa,MAAM,OAAO,IAAI,gBAAgB,EAAE,OAAe,SAAS,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC;AAAA,IAC/F,EAAE,mBAAmB,MAAM;AAAA,EAC7B;AACA,SAAO,EAAE,aAAa,QAAQ,CAAC,GAAG,WAAW,OAAO,OAAO;AAC7D;AAGA,eAAsB,wBAAwB,KAAgB,UAAmC;AAC/F,SAAQ,MAAM,IAAI,uBAAuB,QAAQ,IAAK;AACxD;AAGA,eAAsB,oBAAoB,KAAgB,UAAmC;AAC3F,SAAQ,MAAM,IAAI,eAAe,QAAQ,IAAK;AAChD;AAEO,SAAS,qBAAqB,WAAkC,OAAsB;AAC3F,SAAO,mBAAmB,WAAW,WAAW,KAAK;AACvD;AAEO,SAAS,uBAAuB,WAAkC,OAAsB;AAC7F,SAAO,mBAAmB,WAAW,cAAc,KAAK;AAC1D;AAEO,SAAS,kBAAkB,WAAkC,UAAyB;AAC3F,QAAM,aAAS,gDAAmB,SAAS;AAC3C,QAAM,EAAE,MAAM,OAAO,WAAW,OAAO,QAAI,WAAAA;AAAA,IACzC,WAAW,mBAAmB,QAAQ,KAAK;AAAA,IAC3C,YACE,QAAQ,MAAM,OAAO,IAAI,uBAAuB,QAAS,GAAG,CAAC,OAAO,OAAO,IAAI,kBAAkB,UAAW,EAAE,CAAC;AAAA,IACjH,EAAE,mBAAmB,OAAO,kBAAkB,KAAO;AAAA,EACvD;AACA,SAAO,EAAE,aAAa,QAAQ,CAAC,GAAG,WAAW,OAAO,OAAO;AAC7D;AAEO,SAAS,cAAc,WAAkC,UAAyB;AACvF,QAAM,aAAS,gDAAmB,SAAS;AAC3C,QAAM,EAAE,MAAM,OAAO,WAAW,OAAO,QAAI,WAAAA;AAAA,IACzC,WAAW,eAAe,QAAQ,KAAK;AAAA,IACvC,YAAY,QAAQ,MAAM,OAAO,IAAI,eAAe,QAAS,GAAG,CAAC,OAAO,OAAO,IAAI,UAAU,UAAW,EAAE,CAAC;AAAA,IAC3G,EAAE,mBAAmB,OAAO,kBAAkB,KAAO;AAAA,EACvD;AACA,SAAO,EAAE,SAAS,QAAQ,CAAC,GAAG,WAAW,OAAO,OAAO;AACzD;AAEO,SAAS,qBAAqB,WAAkC,UAAyB,SAAwB;AACtH,QAAM,aAAS,gDAAmB,SAAS;AAC3C,QAAM,EAAE,MAAM,OAAO,UAAU,QAAI,WAAAA;AAAA,IACjC,YAAY,UAAU,sBAAsB,QAAQ,IAAI,OAAO,KAAK;AAAA,IACpE,YAAY,OAAO,MAAM,OAAO,IAAI,kBAAkB,UAAW,OAAQ,CAAC;AAAA,IAC1E,EAAE,mBAAmB,OAAO,oBAAoB,OAAO,kBAAkB,IAAO;AAAA,EAClF;AACA,SAAO,EAAE,YAAY,QAAQ,MAAM,WAAW,MAAM;AACtD;AAEO,SAAS,iBAAiB,WAAkC,UAAyB,SAAwB;AAClH,QAAM,aAAS,gDAAmB,SAAS;AAC3C,QAAM,EAAE,MAAM,OAAO,UAAU,QAAI,WAAAA;AAAA,IACjC,YAAY,UAAU,kBAAkB,QAAQ,IAAI,OAAO,KAAK;AAAA,IAChE,YAAY,OAAO,MAAM,OAAO,IAAI,UAAU,UAAW,OAAQ,CAAC;AAAA,IAClE,EAAE,mBAAmB,OAAO,oBAAoB,OAAO,kBAAkB,IAAO;AAAA,EAClF;AACA,SAAO,EAAE,QAAQ,QAAQ,MAAM,WAAW,MAAM;AAClD;AAEO,SAAS,cACd,WACA,UACA,SACA,QACA;AACA,QAAM,aAAS,gDAAmB,SAAS;AAC3C,QAAM,EAAE,MAAM,OAAO,UAAU,QAAI,WAAAA;AAAA,IACjC,YAAY,WAAW,SAAS,gBAAgB,QAAQ,IAAI,OAAO,IAAI,MAAM,KAAK;AAAA,IAClF,MAAM,OAAO,IAAI,aAAa,UAAW,SAAU,MAAO;AAAA,IAC1D,EAAE,mBAAmB,OAAO,oBAAoB,MAAM;AAAA,EACxD;AACA,SAAO,EAAE,UAAU,QAAQ,OAAO,WAAW,MAAM;AACrD;","names":["useSWR"]}
@@ -0,0 +1,60 @@
1
+ import * as swr from 'swr';
2
+ import { ApiClient, ApiCollection } from '@medialane/sdk';
3
+ import { MedialaneClient } from '@medialane/sdk/starknet';
4
+
5
+ /** An IP Ticket type or IP Club membership tier, with amounts as bigint. */
6
+ interface TierOnchain {
7
+ maxSupply: bigint;
8
+ minted: bigint;
9
+ startTime: number | null;
10
+ endTime: number | null;
11
+ royaltyBps: number;
12
+ }
13
+ interface TierListItem extends TierOnchain {
14
+ id: string;
15
+ }
16
+ /** The id the next membership tier will get. Reads a fresh count, so call it right before creating the tier. */
17
+ declare function predictNextMembershipId(api: ApiClient, contract: string): Promise<number>;
18
+ /** The id the next ticket type will get. Reads a fresh count, so call it right before creating the ticket. */
19
+ declare function predictNextTicketId(api: ApiClient, contract: string): Promise<number>;
20
+ declare function useMyClubCollections(getClient: () => MedialaneClient, owner: string | null): {
21
+ collections: ApiCollection[];
22
+ isLoading: boolean;
23
+ error: any;
24
+ mutate: swr.KeyedMutator<ApiCollection[]>;
25
+ };
26
+ declare function useMyTicketCollections(getClient: () => MedialaneClient, owner: string | null): {
27
+ collections: ApiCollection[];
28
+ isLoading: boolean;
29
+ error: any;
30
+ mutate: swr.KeyedMutator<ApiCollection[]>;
31
+ };
32
+ declare function useMembershipList(getClient: () => MedialaneClient, contract: string | null): {
33
+ memberships: TierListItem[];
34
+ isLoading: boolean;
35
+ error: any;
36
+ mutate: swr.KeyedMutator<TierListItem[]>;
37
+ };
38
+ declare function useTicketList(getClient: () => MedialaneClient, contract: string | null): {
39
+ tickets: TierListItem[];
40
+ isLoading: boolean;
41
+ error: any;
42
+ mutate: swr.KeyedMutator<TierListItem[]>;
43
+ };
44
+ declare function useMembershipOnchain(getClient: () => MedialaneClient, contract: string | null, tokenId: string | null): {
45
+ membership: TierOnchain | null;
46
+ isLoading: boolean;
47
+ error: any;
48
+ };
49
+ declare function useTicketOnchain(getClient: () => MedialaneClient, contract: string | null, tokenId: string | null): {
50
+ ticket: TierOnchain | null;
51
+ isLoading: boolean;
52
+ error: any;
53
+ };
54
+ declare function useIsMemberOf(getClient: () => MedialaneClient, contract: string | null, tokenId: string | null, wallet: string | null): {
55
+ isMember: boolean;
56
+ isLoading: boolean;
57
+ error: any;
58
+ };
59
+
60
+ export { type TierListItem, type TierOnchain, predictNextMembershipId, predictNextTicketId, useIsMemberOf, useMembershipList, useMembershipOnchain, useMyClubCollections, useMyTicketCollections, useTicketList, useTicketOnchain };