@medialane/sdk 0.67.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -41,19 +41,18 @@ var COORDINATES = {
41
41
  ipTicketCollectionClassHash: "0x047bd108881457c4f4db6c64671c1dd402f4d8c79fd9182f03a2dd841335a34b",
42
42
  ipTicketsFactoryClassHash: "0x04a739ac3a673ebd0db96bb24475600797c3ed34827e79517f9b2b1640276e6a",
43
43
  ipTicketsStartBlock: 11836622,
44
- ipClubRegistry: "0x00e189c619b6bb07d78973a149641c59c37eb0716f8584d7520bce12d303eede",
45
- ipClubNftClassHash: "0x02bc9b20cca21b04245e9215bf7121f4d7295b195890e449b472b573017fb889",
46
- ipClubStartBlock: 11404776,
47
- ipClubFactory: "0x05519705345ce225db666253a21cf89d1c675658f16cc6ae4320cefd1a1219a3",
48
- ipClubFactoryClassHash: "0x07197062578375d962b2d42d3e91560770b11b1c97a9defb74c706a2c5299473",
49
- ipClubCollectionClassHash: "0x35b8836a2269523ae9176077ec525451cce1053b2acd9fae3b05354aa4eded3",
50
- ipClubFactoryStartBlock: 11884796,
51
- ipSponsorship: "0x044d9b9c3bb29b94685b0a3fe27a5e2dfa30a3637ab55979c718ebcd3268bc2f",
52
- ipSponsorshipStartBlock: 11405085,
53
- // Dedicated ip-erc721/MIP instance for sponsorship receipts (class hash
54
- // 0x01bd7e39c5135b32b664e34cbbb4eafbd707a0fbc3ec2ef28657f52577d277d7) —
55
- // never the genesis-mint instance.
56
- ipSponsorshipLicense: "0x06bcfc4e97758a2abf95af4bd49596efdbfd88ccd740caddc56ad0a4bd095839"
44
+ ipClubFactory: "0x06a0b0be16d70c78f2e18119dbf90e5911cbfd5d8d484bc555dc61d96f56a2b9",
45
+ ipClubFactoryClassHash: "0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266",
46
+ ipClubCollectionClassHash: "0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5",
47
+ ipClubFactoryStartBlock: 11928775,
48
+ // v3 redesign (deployed 2026-07-15): single contract is both the
49
+ // offer/bid/proposal registry and the license collection (embeds
50
+ // ERC721Component directly) — no separate receipt contract, no
51
+ // set_minter bootstrap. Supersedes the 2026-07-02 v2 address, which had
52
+ // zero offers/licenses ever issued (clean cutover, no reclassification).
53
+ ipSponsorship: "0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c",
54
+ ipSponsorshipClassHash: "0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3",
55
+ ipSponsorshipStartBlock: 11896456
57
56
  }
58
57
  };
59
58
  function getCoordinates(chain) {
@@ -894,12 +893,10 @@ var STARKNET_DROP_COLLECTION_CLASS_HASH = SN.dropCollectionClassHash;
894
893
  var STARKNET_NFTCOMMENTS_CONTRACT = SN.nftComments;
895
894
  var STARKNET_IP_TICKETS_FACTORY_CONTRACT = SN.ipTicketsFactory;
896
895
  var STARKNET_IP_TICKET_COLLECTION_CLASS_HASH = SN.ipTicketCollectionClassHash;
897
- var STARKNET_IP_CLUB_REGISTRY_CONTRACT = SN.ipClubRegistry;
898
- var STARKNET_IP_CLUB_NFT_CLASS_HASH = SN.ipClubNftClassHash;
899
896
  var STARKNET_IP_CLUB_FACTORY_CONTRACT = SN.ipClubFactory;
900
897
  var STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = SN.ipClubCollectionClassHash;
901
898
  var STARKNET_IP_SPONSORSHIP_CONTRACT = SN.ipSponsorship;
902
- var STARKNET_IP_SPONSORSHIP_LICENSE_CONTRACT = SN.ipSponsorshipLicense;
899
+ var STARKNET_IP_SPONSORSHIP_CLASS_HASH = SN.ipSponsorshipClassHash;
903
900
  var STARKNET_CREATOR_COIN_FACTORY_CONTRACT = SN.creatorCoinFactory;
904
901
  var STARKNET_CREATOR_COIN_EKUBO_LAUNCHER = SN.creatorCoinEkuboLauncher;
905
902
  var STARKNET_CREATOR_COIN_CLASS_HASH = SN.creatorCoinClassHash;
@@ -1062,13 +1059,20 @@ var SERVICES = {
1062
1059
  "ip-club": {
1063
1060
  id: "ip-club",
1064
1061
  displayName: "IP Club",
1065
- description: "Membership clubs with an on-chain NFT membership card.",
1066
- standard: "ERC721",
1062
+ description: "Membership clubs \u2014 create tiers, mint membership cards, trade like any collection.",
1063
+ standard: "ERC1155",
1067
1064
  provenance: "MEDIALANE",
1065
+ onchain: {
1066
+ STARKNET: {
1067
+ factoryAddress: SN2.ipClubFactory,
1068
+ classHash: SN2.ipClubCollectionClassHash
1069
+ }
1070
+ },
1068
1071
  uiVariant: "club",
1069
- capabilities: ["subscribe"],
1072
+ capabilities: ["mint", "list", "buy", "make_offer", "cancel", "transfer"],
1070
1073
  events: [
1071
- { name: "NewClubCreated", emittedBy: "factory" }
1074
+ { name: "ClubDeployed", emittedBy: "factory" },
1075
+ { name: "MembershipCreated", emittedBy: "instance" }
1072
1076
  ],
1073
1077
  metadataSchema: { licenseDefault: "CC BY-SA" }
1074
1078
  },
@@ -1078,18 +1082,28 @@ var SERVICES = {
1078
1082
  description: "Sponsorship offers and licenses anchored to an existing Medialane asset.",
1079
1083
  standard: "ERC721",
1080
1084
  provenance: "MEDIALANE",
1085
+ onchain: {
1086
+ STARKNET: {
1087
+ factoryAddress: SN2.ipSponsorship,
1088
+ classHash: SN2.ipSponsorshipClassHash,
1089
+ startBlock: SN2.ipSponsorshipStartBlock
1090
+ }
1091
+ },
1081
1092
  uiVariant: "standard",
1082
- capabilities: ["sponsor"],
1083
- metadataSchema: { licenseDefault: "CC BY-SA" }
1084
- },
1085
- "ip-sponsorship-license": {
1086
- id: "ip-sponsorship-license",
1087
- displayName: "Sponsorship License Receipt",
1088
- description: "Non-authoritative receipt NFT minted to a sponsor when a sponsorship bid is accepted.",
1089
- standard: "ERC721",
1090
- provenance: "MEDIALANE",
1091
- uiVariant: "standard",
1092
- capabilities: ["transfer"],
1093
+ // v3: one contract is both the offer/bid/proposal registry and the
1094
+ // issued license collection (a real, standard ERC-721 minted internally
1095
+ // — no separate receipt contract). `transfer` reflects that a license is
1096
+ // freely transferable at the protocol layer; transferable/expiry intent
1097
+ // is declarative (carried in metadata + LicenseMinted), never
1098
+ // contract-enforced. Supersedes the 2026-07-02 v2 `ip-sponsorship`
1099
+ // (registry-only) + `ip-sponsorship-license` (non-authoritative receipt
1100
+ // via a dedicated ip-erc721 instance) pair — retired as of this redesign.
1101
+ capabilities: ["sponsor", "transfer"],
1102
+ events: [
1103
+ { name: "OfferCreated", emittedBy: "factory" },
1104
+ { name: "ProposalCreated", emittedBy: "factory" },
1105
+ { name: "LicenseMinted", emittedBy: "factory" }
1106
+ ],
1093
1107
  metadataSchema: { licenseDefault: "CC BY-SA" }
1094
1108
  },
1095
1109
  "creator-coin": {
@@ -6911,12 +6925,12 @@ var IPTicketCollectionFactoryABI = [
6911
6925
  }
6912
6926
  ];
6913
6927
 
6914
- // src/starknet/abis/ipClub.ts
6915
- var IPClubABI = [
6928
+ // src/starknet/abis/ipClubFactory.ts
6929
+ var IPClubFactoryABI = [
6916
6930
  {
6917
6931
  "type": "impl",
6918
- "name": "IPClubImpl",
6919
- "interface_name": "ip_club::interfaces::IIPClub::IIPClub"
6932
+ "name": "IPClubCollectionFactoryImpl",
6933
+ "interface_name": "ip_club::interface::IIPClubCollectionFactory"
6920
6934
  },
6921
6935
  {
6922
6936
  "type": "struct",
@@ -6936,240 +6950,55 @@ var IPClubABI = [
6936
6950
  }
6937
6951
  ]
6938
6952
  },
6939
- {
6940
- "type": "enum",
6941
- "name": "core::option::Option::<core::integer::u32>",
6942
- "variants": [
6943
- {
6944
- "name": "Some",
6945
- "type": "core::integer::u32"
6946
- },
6947
- {
6948
- "name": "None",
6949
- "type": "()"
6950
- }
6951
- ]
6952
- },
6953
- {
6954
- "type": "struct",
6955
- "name": "core::integer::u256",
6956
- "members": [
6957
- {
6958
- "name": "low",
6959
- "type": "core::integer::u128"
6960
- },
6961
- {
6962
- "name": "high",
6963
- "type": "core::integer::u128"
6964
- }
6965
- ]
6966
- },
6967
- {
6968
- "type": "enum",
6969
- "name": "core::option::Option::<core::integer::u256>",
6970
- "variants": [
6971
- {
6972
- "name": "Some",
6973
- "type": "core::integer::u256"
6974
- },
6975
- {
6976
- "name": "None",
6977
- "type": "()"
6978
- }
6979
- ]
6980
- },
6981
- {
6982
- "type": "enum",
6983
- "name": "core::option::Option::<core::starknet::contract_address::ContractAddress>",
6984
- "variants": [
6985
- {
6986
- "name": "Some",
6987
- "type": "core::starknet::contract_address::ContractAddress"
6988
- },
6989
- {
6990
- "name": "None",
6991
- "type": "()"
6992
- }
6993
- ]
6994
- },
6995
- {
6996
- "type": "enum",
6997
- "name": "core::bool",
6998
- "variants": [
6999
- {
7000
- "name": "False",
7001
- "type": "()"
7002
- },
7003
- {
7004
- "name": "True",
7005
- "type": "()"
7006
- }
7007
- ]
7008
- },
7009
- {
7010
- "type": "struct",
7011
- "name": "ip_club::types::ClubRecord",
7012
- "members": [
7013
- {
7014
- "name": "creator",
7015
- "type": "core::starknet::contract_address::ContractAddress"
7016
- },
7017
- {
7018
- "name": "club_nft",
7019
- "type": "core::starknet::contract_address::ContractAddress"
7020
- },
7021
- {
7022
- "name": "open",
7023
- "type": "core::bool"
7024
- },
7025
- {
7026
- "name": "num_members",
7027
- "type": "core::integer::u32"
7028
- },
7029
- {
7030
- "name": "max_members",
7031
- "type": "core::option::Option::<core::integer::u32>"
7032
- },
7033
- {
7034
- "name": "entry_fee",
7035
- "type": "core::option::Option::<core::integer::u256>"
7036
- },
7037
- {
7038
- "name": "payment_token",
7039
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
7040
- }
7041
- ]
7042
- },
7043
6953
  {
7044
6954
  "type": "interface",
7045
- "name": "ip_club::interfaces::IIPClub::IIPClub",
6955
+ "name": "ip_club::interface::IIPClubCollectionFactory",
7046
6956
  "items": [
7047
6957
  {
7048
6958
  "type": "function",
7049
- "name": "create_club",
7050
- "inputs": [
7051
- {
7052
- "name": "name",
7053
- "type": "core::byte_array::ByteArray"
7054
- },
7055
- {
7056
- "name": "symbol",
7057
- "type": "core::byte_array::ByteArray"
7058
- },
7059
- {
7060
- "name": "metadata_uri",
7061
- "type": "core::byte_array::ByteArray"
7062
- },
7063
- {
7064
- "name": "max_members",
7065
- "type": "core::option::Option::<core::integer::u32>"
7066
- },
7067
- {
7068
- "name": "entry_fee",
7069
- "type": "core::option::Option::<core::integer::u256>"
7070
- },
7071
- {
7072
- "name": "payment_token",
7073
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
7074
- }
7075
- ],
6959
+ "name": "collection_class_hash",
6960
+ "inputs": [],
7076
6961
  "outputs": [
7077
6962
  {
7078
- "type": "core::integer::u256"
7079
- }
7080
- ],
7081
- "state_mutability": "external"
7082
- },
7083
- {
7084
- "type": "function",
7085
- "name": "set_club_open",
7086
- "inputs": [
7087
- {
7088
- "name": "club_id",
7089
- "type": "core::integer::u256"
7090
- },
7091
- {
7092
- "name": "open",
7093
- "type": "core::bool"
7094
- }
7095
- ],
7096
- "outputs": [],
7097
- "state_mutability": "external"
7098
- },
7099
- {
7100
- "type": "function",
7101
- "name": "join_club",
7102
- "inputs": [
7103
- {
7104
- "name": "club_id",
7105
- "type": "core::integer::u256"
7106
- }
7107
- ],
7108
- "outputs": [],
7109
- "state_mutability": "external"
7110
- },
7111
- {
7112
- "type": "function",
7113
- "name": "leave_club",
7114
- "inputs": [
7115
- {
7116
- "name": "club_id",
7117
- "type": "core::integer::u256"
7118
- },
7119
- {
7120
- "name": "token_id",
7121
- "type": "core::integer::u256"
6963
+ "type": "core::starknet::class_hash::ClassHash"
7122
6964
  }
7123
6965
  ],
7124
- "outputs": [],
7125
- "state_mutability": "external"
6966
+ "state_mutability": "view"
7126
6967
  },
7127
6968
  {
7128
6969
  "type": "function",
7129
- "name": "get_club_record",
7130
- "inputs": [
7131
- {
7132
- "name": "club_id",
7133
- "type": "core::integer::u256"
7134
- }
7135
- ],
6970
+ "name": "version",
6971
+ "inputs": [],
7136
6972
  "outputs": [
7137
6973
  {
7138
- "type": "ip_club::types::ClubRecord"
6974
+ "type": "core::byte_array::ByteArray"
7139
6975
  }
7140
6976
  ],
7141
6977
  "state_mutability": "view"
7142
6978
  },
7143
6979
  {
7144
6980
  "type": "function",
7145
- "name": "is_member",
6981
+ "name": "deploy_collection",
7146
6982
  "inputs": [
7147
6983
  {
7148
- "name": "club_id",
7149
- "type": "core::integer::u256"
6984
+ "name": "name",
6985
+ "type": "core::byte_array::ByteArray"
7150
6986
  },
7151
6987
  {
7152
- "name": "user",
7153
- "type": "core::starknet::contract_address::ContractAddress"
7154
- }
7155
- ],
7156
- "outputs": [
6988
+ "name": "symbol",
6989
+ "type": "core::byte_array::ByteArray"
6990
+ },
7157
6991
  {
7158
- "type": "core::bool"
6992
+ "name": "base_uri",
6993
+ "type": "core::byte_array::ByteArray"
7159
6994
  }
7160
6995
  ],
7161
- "state_mutability": "view"
7162
- },
7163
- {
7164
- "type": "function",
7165
- "name": "get_last_club_id",
7166
- "inputs": [],
7167
6996
  "outputs": [
7168
6997
  {
7169
- "type": "core::integer::u256"
6998
+ "type": "core::starknet::contract_address::ContractAddress"
7170
6999
  }
7171
7000
  ],
7172
- "state_mutability": "view"
7001
+ "state_mutability": "external"
7173
7002
  }
7174
7003
  ]
7175
7004
  },
@@ -7178,6 +7007,20 @@ var IPClubABI = [
7178
7007
  "name": "SRC5Impl",
7179
7008
  "interface_name": "openzeppelin_introspection::interface::ISRC5"
7180
7009
  },
7010
+ {
7011
+ "type": "enum",
7012
+ "name": "core::bool",
7013
+ "variants": [
7014
+ {
7015
+ "name": "False",
7016
+ "type": "()"
7017
+ },
7018
+ {
7019
+ "name": "True",
7020
+ "type": "()"
7021
+ }
7022
+ ]
7023
+ },
7181
7024
  {
7182
7025
  "type": "interface",
7183
7026
  "name": "openzeppelin_introspection::interface::ISRC5",
@@ -7205,7 +7048,7 @@ var IPClubABI = [
7205
7048
  "name": "constructor",
7206
7049
  "inputs": [
7207
7050
  {
7208
- "name": "ip_club_nft_class_hash",
7051
+ "name": "collection_class_hash",
7209
7052
  "type": "core::starknet::class_hash::ClassHash"
7210
7053
  }
7211
7054
  ]
@@ -7218,154 +7061,127 @@ var IPClubABI = [
7218
7061
  },
7219
7062
  {
7220
7063
  "type": "event",
7221
- "name": "ip_club::events::NewClubCreated",
7064
+ "name": "ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed",
7222
7065
  "kind": "struct",
7223
7066
  "members": [
7224
7067
  {
7225
- "name": "club_id",
7226
- "type": "core::integer::u256",
7227
- "kind": "key"
7228
- },
7229
- {
7230
- "name": "creator",
7068
+ "name": "collection_address",
7231
7069
  "type": "core::starknet::contract_address::ContractAddress",
7232
7070
  "kind": "key"
7233
7071
  },
7234
7072
  {
7235
- "name": "club_nft",
7073
+ "name": "owner",
7236
7074
  "type": "core::starknet::contract_address::ContractAddress",
7237
- "kind": "data"
7075
+ "kind": "key"
7238
7076
  },
7239
7077
  {
7240
- "name": "metadata_uri",
7078
+ "name": "name",
7241
7079
  "type": "core::byte_array::ByteArray",
7242
7080
  "kind": "data"
7243
7081
  },
7244
7082
  {
7245
- "name": "timestamp",
7246
- "type": "core::integer::u64",
7083
+ "name": "symbol",
7084
+ "type": "core::byte_array::ByteArray",
7247
7085
  "kind": "data"
7248
7086
  }
7249
7087
  ]
7250
7088
  },
7251
7089
  {
7252
7090
  "type": "event",
7253
- "name": "ip_club::events::ClubStatusUpdated",
7254
- "kind": "struct",
7255
- "members": [
7256
- {
7257
- "name": "club_id",
7258
- "type": "core::integer::u256",
7259
- "kind": "key"
7260
- },
7091
+ "name": "ip_club::IPClubCollectionFactory::IPClubCollectionFactory::Event",
7092
+ "kind": "enum",
7093
+ "variants": [
7261
7094
  {
7262
- "name": "open",
7263
- "type": "core::bool",
7264
- "kind": "data"
7095
+ "name": "SRC5Event",
7096
+ "type": "openzeppelin_introspection::src5::SRC5Component::Event",
7097
+ "kind": "flat"
7265
7098
  },
7266
7099
  {
7267
- "name": "timestamp",
7268
- "type": "core::integer::u64",
7269
- "kind": "data"
7100
+ "name": "ClubDeployed",
7101
+ "type": "ip_club::IPClubCollectionFactory::IPClubCollectionFactory::ClubDeployed",
7102
+ "kind": "nested"
7270
7103
  }
7271
7104
  ]
7105
+ }
7106
+ ];
7107
+
7108
+ // src/starknet/abis/ipClubCollection.ts
7109
+ var IPClubCollectionABI = [
7110
+ {
7111
+ "type": "impl",
7112
+ "name": "ERC1155MetadataURIImpl",
7113
+ "interface_name": "openzeppelin_token::erc1155::interface::IERC1155MetadataURI"
7272
7114
  },
7273
7115
  {
7274
- "type": "event",
7275
- "name": "ip_club::events::NewMember",
7276
- "kind": "struct",
7116
+ "type": "struct",
7117
+ "name": "core::integer::u256",
7277
7118
  "members": [
7278
7119
  {
7279
- "name": "club_id",
7280
- "type": "core::integer::u256",
7281
- "kind": "key"
7282
- },
7283
- {
7284
- "name": "member",
7285
- "type": "core::starknet::contract_address::ContractAddress",
7286
- "kind": "key"
7120
+ "name": "low",
7121
+ "type": "core::integer::u128"
7287
7122
  },
7288
7123
  {
7289
- "name": "timestamp",
7290
- "type": "core::integer::u64",
7291
- "kind": "data"
7124
+ "name": "high",
7125
+ "type": "core::integer::u128"
7292
7126
  }
7293
7127
  ]
7294
7128
  },
7295
7129
  {
7296
- "type": "event",
7297
- "name": "ip_club::events::MemberLeft",
7298
- "kind": "struct",
7130
+ "type": "struct",
7131
+ "name": "core::byte_array::ByteArray",
7299
7132
  "members": [
7300
7133
  {
7301
- "name": "club_id",
7302
- "type": "core::integer::u256",
7303
- "kind": "key"
7134
+ "name": "data",
7135
+ "type": "core::array::Array::<core::bytes_31::bytes31>"
7304
7136
  },
7305
7137
  {
7306
- "name": "member",
7307
- "type": "core::starknet::contract_address::ContractAddress",
7308
- "kind": "key"
7138
+ "name": "pending_word",
7139
+ "type": "core::felt252"
7309
7140
  },
7310
7141
  {
7311
- "name": "timestamp",
7312
- "type": "core::integer::u64",
7313
- "kind": "data"
7142
+ "name": "pending_word_len",
7143
+ "type": "core::internal::bounded_int::BoundedInt::<0, 30>"
7314
7144
  }
7315
7145
  ]
7316
7146
  },
7317
7147
  {
7318
- "type": "event",
7319
- "name": "ip_club::IPClub::IPClub::Event",
7320
- "kind": "enum",
7321
- "variants": [
7322
- {
7323
- "name": "SRC5Event",
7324
- "type": "openzeppelin_introspection::src5::SRC5Component::Event",
7325
- "kind": "flat"
7326
- },
7327
- {
7328
- "name": "NewClubCreated",
7329
- "type": "ip_club::events::NewClubCreated",
7330
- "kind": "nested"
7331
- },
7332
- {
7333
- "name": "ClubStatusUpdated",
7334
- "type": "ip_club::events::ClubStatusUpdated",
7335
- "kind": "nested"
7336
- },
7337
- {
7338
- "name": "NewMember",
7339
- "type": "ip_club::events::NewMember",
7340
- "kind": "nested"
7341
- },
7148
+ "type": "interface",
7149
+ "name": "openzeppelin_token::erc1155::interface::IERC1155MetadataURI",
7150
+ "items": [
7342
7151
  {
7343
- "name": "MemberLeft",
7344
- "type": "ip_club::events::MemberLeft",
7345
- "kind": "nested"
7152
+ "type": "function",
7153
+ "name": "uri",
7154
+ "inputs": [
7155
+ {
7156
+ "name": "token_id",
7157
+ "type": "core::integer::u256"
7158
+ }
7159
+ ],
7160
+ "outputs": [
7161
+ {
7162
+ "type": "core::byte_array::ByteArray"
7163
+ }
7164
+ ],
7165
+ "state_mutability": "view"
7346
7166
  }
7347
7167
  ]
7348
- }
7349
- ];
7350
-
7351
- // src/starknet/abis/ipClubNft.ts
7352
- var IPClubNFTABI = [
7168
+ },
7353
7169
  {
7354
7170
  "type": "impl",
7355
- "name": "IIPClubNFTImpl",
7356
- "interface_name": "ip_club::interfaces::IIPClubNFT::IIPClubNFT"
7171
+ "name": "IPClubCollectionImpl",
7172
+ "interface_name": "ip_club::interface::IIPClubCollection"
7357
7173
  },
7358
7174
  {
7359
- "type": "struct",
7360
- "name": "core::integer::u256",
7361
- "members": [
7175
+ "type": "enum",
7176
+ "name": "core::option::Option::<core::integer::u64>",
7177
+ "variants": [
7362
7178
  {
7363
- "name": "low",
7364
- "type": "core::integer::u128"
7179
+ "name": "Some",
7180
+ "type": "core::integer::u64"
7365
7181
  },
7366
7182
  {
7367
- "name": "high",
7368
- "type": "core::integer::u128"
7183
+ "name": "None",
7184
+ "type": "()"
7369
7185
  }
7370
7186
  ]
7371
7187
  },
@@ -7383,33 +7199,87 @@ var IPClubNFTABI = [
7383
7199
  }
7384
7200
  ]
7385
7201
  },
7202
+ {
7203
+ "type": "struct",
7204
+ "name": "ip_club::types::Membership",
7205
+ "members": [
7206
+ {
7207
+ "name": "max_supply",
7208
+ "type": "core::integer::u256"
7209
+ },
7210
+ {
7211
+ "name": "minted",
7212
+ "type": "core::integer::u256"
7213
+ },
7214
+ {
7215
+ "name": "start_time",
7216
+ "type": "core::option::Option::<core::integer::u64>"
7217
+ },
7218
+ {
7219
+ "name": "end_time",
7220
+ "type": "core::option::Option::<core::integer::u64>"
7221
+ },
7222
+ {
7223
+ "name": "royalty_bps",
7224
+ "type": "core::integer::u16"
7225
+ },
7226
+ {
7227
+ "name": "metadata_uri",
7228
+ "type": "core::byte_array::ByteArray"
7229
+ }
7230
+ ]
7231
+ },
7386
7232
  {
7387
7233
  "type": "interface",
7388
- "name": "ip_club::interfaces::IIPClubNFT::IIPClubNFT",
7234
+ "name": "ip_club::interface::IIPClubCollection",
7389
7235
  "items": [
7390
7236
  {
7391
7237
  "type": "function",
7392
- "name": "mint",
7238
+ "name": "create_membership",
7393
7239
  "inputs": [
7394
7240
  {
7395
- "name": "recipient",
7396
- "type": "core::starknet::contract_address::ContractAddress"
7241
+ "name": "max_supply",
7242
+ "type": "core::integer::u256"
7243
+ },
7244
+ {
7245
+ "name": "start_time",
7246
+ "type": "core::option::Option::<core::integer::u64>"
7247
+ },
7248
+ {
7249
+ "name": "end_time",
7250
+ "type": "core::option::Option::<core::integer::u64>"
7251
+ },
7252
+ {
7253
+ "name": "royalty_bps",
7254
+ "type": "core::integer::u16"
7255
+ },
7256
+ {
7257
+ "name": "metadata_uri",
7258
+ "type": "core::byte_array::ByteArray"
7259
+ }
7260
+ ],
7261
+ "outputs": [
7262
+ {
7263
+ "type": "core::integer::u256"
7397
7264
  }
7398
7265
  ],
7399
- "outputs": [],
7400
7266
  "state_mutability": "external"
7401
7267
  },
7402
7268
  {
7403
7269
  "type": "function",
7404
- "name": "burn",
7270
+ "name": "mint",
7405
7271
  "inputs": [
7406
7272
  {
7407
- "name": "member",
7273
+ "name": "to",
7408
7274
  "type": "core::starknet::contract_address::ContractAddress"
7409
7275
  },
7410
7276
  {
7411
7277
  "name": "token_id",
7412
7278
  "type": "core::integer::u256"
7279
+ },
7280
+ {
7281
+ "name": "amount",
7282
+ "type": "core::integer::u256"
7413
7283
  }
7414
7284
  ],
7415
7285
  "outputs": [],
@@ -7417,10 +7287,10 @@ var IPClubNFTABI = [
7417
7287
  },
7418
7288
  {
7419
7289
  "type": "function",
7420
- "name": "has_nft",
7290
+ "name": "is_member",
7421
7291
  "inputs": [
7422
7292
  {
7423
- "name": "user",
7293
+ "name": "holder",
7424
7294
  "type": "core::starknet::contract_address::ContractAddress"
7425
7295
  }
7426
7296
  ],
@@ -7433,169 +7303,171 @@ var IPClubNFTABI = [
7433
7303
  },
7434
7304
  {
7435
7305
  "type": "function",
7436
- "name": "get_nft_creator",
7437
- "inputs": [],
7438
- "outputs": [
7306
+ "name": "is_member_of",
7307
+ "inputs": [
7308
+ {
7309
+ "name": "token_id",
7310
+ "type": "core::integer::u256"
7311
+ },
7439
7312
  {
7313
+ "name": "holder",
7440
7314
  "type": "core::starknet::contract_address::ContractAddress"
7441
7315
  }
7442
7316
  ],
7317
+ "outputs": [
7318
+ {
7319
+ "type": "core::bool"
7320
+ }
7321
+ ],
7443
7322
  "state_mutability": "view"
7444
7323
  },
7445
7324
  {
7446
7325
  "type": "function",
7447
- "name": "get_ip_club_manager",
7448
- "inputs": [],
7326
+ "name": "get_membership",
7327
+ "inputs": [
7328
+ {
7329
+ "name": "token_id",
7330
+ "type": "core::integer::u256"
7331
+ }
7332
+ ],
7449
7333
  "outputs": [
7450
7334
  {
7451
- "type": "core::starknet::contract_address::ContractAddress"
7335
+ "type": "ip_club::types::Membership"
7452
7336
  }
7453
7337
  ],
7454
7338
  "state_mutability": "view"
7455
7339
  },
7456
7340
  {
7457
7341
  "type": "function",
7458
- "name": "get_associated_club_id",
7342
+ "name": "name",
7459
7343
  "inputs": [],
7460
7344
  "outputs": [
7461
7345
  {
7462
- "type": "core::integer::u256"
7346
+ "type": "core::byte_array::ByteArray"
7463
7347
  }
7464
7348
  ],
7465
7349
  "state_mutability": "view"
7466
7350
  },
7467
7351
  {
7468
7352
  "type": "function",
7469
- "name": "get_last_minted_id",
7353
+ "name": "symbol",
7470
7354
  "inputs": [],
7471
7355
  "outputs": [
7472
7356
  {
7473
- "type": "core::integer::u256"
7357
+ "type": "core::byte_array::ByteArray"
7474
7358
  }
7475
7359
  ],
7476
7360
  "state_mutability": "view"
7477
- }
7478
- ]
7479
- },
7480
- {
7481
- "type": "impl",
7482
- "name": "ERC721MixinImpl",
7483
- "interface_name": "openzeppelin_token::erc721::interface::ERC721ABI"
7484
- },
7485
- {
7486
- "type": "struct",
7487
- "name": "core::array::Span::<core::felt252>",
7488
- "members": [
7489
- {
7490
- "name": "snapshot",
7491
- "type": "@core::array::Array::<core::felt252>"
7492
- }
7493
- ]
7494
- },
7495
- {
7496
- "type": "struct",
7497
- "name": "core::byte_array::ByteArray",
7498
- "members": [
7499
- {
7500
- "name": "data",
7501
- "type": "core::array::Array::<core::bytes_31::bytes31>"
7502
- },
7503
- {
7504
- "name": "pending_word",
7505
- "type": "core::felt252"
7506
7361
  },
7507
- {
7508
- "name": "pending_word_len",
7509
- "type": "core::internal::bounded_int::BoundedInt::<0, 30>"
7510
- }
7511
- ]
7512
- },
7513
- {
7514
- "type": "interface",
7515
- "name": "openzeppelin_token::erc721::interface::ERC721ABI",
7516
- "items": [
7517
7362
  {
7518
7363
  "type": "function",
7519
- "name": "balance_of",
7520
- "inputs": [
7521
- {
7522
- "name": "account",
7523
- "type": "core::starknet::contract_address::ContractAddress"
7524
- }
7525
- ],
7364
+ "name": "base_uri",
7365
+ "inputs": [],
7526
7366
  "outputs": [
7527
7367
  {
7528
- "type": "core::integer::u256"
7368
+ "type": "core::byte_array::ByteArray"
7529
7369
  }
7530
7370
  ],
7531
7371
  "state_mutability": "view"
7532
7372
  },
7533
7373
  {
7534
7374
  "type": "function",
7535
- "name": "owner_of",
7375
+ "name": "royalty_info",
7536
7376
  "inputs": [
7537
7377
  {
7538
7378
  "name": "token_id",
7539
7379
  "type": "core::integer::u256"
7380
+ },
7381
+ {
7382
+ "name": "sale_price",
7383
+ "type": "core::integer::u256"
7540
7384
  }
7541
7385
  ],
7542
7386
  "outputs": [
7543
7387
  {
7544
- "type": "core::starknet::contract_address::ContractAddress"
7388
+ "type": "(core::starknet::contract_address::ContractAddress, core::integer::u256)"
7545
7389
  }
7546
7390
  ],
7547
7391
  "state_mutability": "view"
7548
7392
  },
7549
7393
  {
7550
7394
  "type": "function",
7551
- "name": "safe_transfer_from",
7395
+ "name": "royaltyInfo",
7552
7396
  "inputs": [
7553
- {
7554
- "name": "from",
7555
- "type": "core::starknet::contract_address::ContractAddress"
7556
- },
7557
- {
7558
- "name": "to",
7559
- "type": "core::starknet::contract_address::ContractAddress"
7560
- },
7561
7397
  {
7562
7398
  "name": "token_id",
7563
7399
  "type": "core::integer::u256"
7564
7400
  },
7565
7401
  {
7566
- "name": "data",
7567
- "type": "core::array::Span::<core::felt252>"
7402
+ "name": "sale_price",
7403
+ "type": "core::integer::u256"
7568
7404
  }
7569
7405
  ],
7570
- "outputs": [],
7571
- "state_mutability": "external"
7406
+ "outputs": [
7407
+ {
7408
+ "type": "(core::starknet::contract_address::ContractAddress, core::integer::u256)"
7409
+ }
7410
+ ],
7411
+ "state_mutability": "view"
7572
7412
  },
7573
7413
  {
7574
7414
  "type": "function",
7575
- "name": "transfer_from",
7576
- "inputs": [
7577
- {
7578
- "name": "from",
7579
- "type": "core::starknet::contract_address::ContractAddress"
7580
- },
7581
- {
7582
- "name": "to",
7583
- "type": "core::starknet::contract_address::ContractAddress"
7584
- },
7415
+ "name": "version",
7416
+ "inputs": [],
7417
+ "outputs": [
7585
7418
  {
7586
- "name": "token_id",
7587
- "type": "core::integer::u256"
7419
+ "type": "core::byte_array::ByteArray"
7588
7420
  }
7589
7421
  ],
7590
- "outputs": [],
7591
- "state_mutability": "external"
7592
- },
7422
+ "state_mutability": "view"
7423
+ }
7424
+ ]
7425
+ },
7426
+ {
7427
+ "type": "impl",
7428
+ "name": "ERC1155Impl",
7429
+ "interface_name": "openzeppelin_token::erc1155::interface::IERC1155"
7430
+ },
7431
+ {
7432
+ "type": "struct",
7433
+ "name": "core::array::Span::<core::starknet::contract_address::ContractAddress>",
7434
+ "members": [
7435
+ {
7436
+ "name": "snapshot",
7437
+ "type": "@core::array::Array::<core::starknet::contract_address::ContractAddress>"
7438
+ }
7439
+ ]
7440
+ },
7441
+ {
7442
+ "type": "struct",
7443
+ "name": "core::array::Span::<core::integer::u256>",
7444
+ "members": [
7445
+ {
7446
+ "name": "snapshot",
7447
+ "type": "@core::array::Array::<core::integer::u256>"
7448
+ }
7449
+ ]
7450
+ },
7451
+ {
7452
+ "type": "struct",
7453
+ "name": "core::array::Span::<core::felt252>",
7454
+ "members": [
7455
+ {
7456
+ "name": "snapshot",
7457
+ "type": "@core::array::Array::<core::felt252>"
7458
+ }
7459
+ ]
7460
+ },
7461
+ {
7462
+ "type": "interface",
7463
+ "name": "openzeppelin_token::erc1155::interface::IERC1155",
7464
+ "items": [
7593
7465
  {
7594
7466
  "type": "function",
7595
- "name": "approve",
7467
+ "name": "balance_of",
7596
7468
  "inputs": [
7597
7469
  {
7598
- "name": "to",
7470
+ "name": "account",
7599
7471
  "type": "core::starknet::contract_address::ContractAddress"
7600
7472
  },
7601
7473
  {
@@ -7603,115 +7475,136 @@ var IPClubNFTABI = [
7603
7475
  "type": "core::integer::u256"
7604
7476
  }
7605
7477
  ],
7606
- "outputs": [],
7607
- "state_mutability": "external"
7608
- },
7609
- {
7610
- "type": "function",
7611
- "name": "set_approval_for_all",
7612
- "inputs": [
7613
- {
7614
- "name": "operator",
7615
- "type": "core::starknet::contract_address::ContractAddress"
7616
- },
7478
+ "outputs": [
7617
7479
  {
7618
- "name": "approved",
7619
- "type": "core::bool"
7480
+ "type": "core::integer::u256"
7620
7481
  }
7621
7482
  ],
7622
- "outputs": [],
7623
- "state_mutability": "external"
7483
+ "state_mutability": "view"
7624
7484
  },
7625
7485
  {
7626
7486
  "type": "function",
7627
- "name": "get_approved",
7487
+ "name": "balance_of_batch",
7628
7488
  "inputs": [
7629
7489
  {
7630
- "name": "token_id",
7631
- "type": "core::integer::u256"
7490
+ "name": "accounts",
7491
+ "type": "core::array::Span::<core::starknet::contract_address::ContractAddress>"
7492
+ },
7493
+ {
7494
+ "name": "token_ids",
7495
+ "type": "core::array::Span::<core::integer::u256>"
7632
7496
  }
7633
7497
  ],
7634
7498
  "outputs": [
7635
7499
  {
7636
- "type": "core::starknet::contract_address::ContractAddress"
7500
+ "type": "core::array::Span::<core::integer::u256>"
7637
7501
  }
7638
7502
  ],
7639
7503
  "state_mutability": "view"
7640
7504
  },
7641
7505
  {
7642
7506
  "type": "function",
7643
- "name": "is_approved_for_all",
7507
+ "name": "safe_transfer_from",
7644
7508
  "inputs": [
7645
7509
  {
7646
- "name": "owner",
7510
+ "name": "from",
7647
7511
  "type": "core::starknet::contract_address::ContractAddress"
7648
7512
  },
7649
7513
  {
7650
- "name": "operator",
7514
+ "name": "to",
7651
7515
  "type": "core::starknet::contract_address::ContractAddress"
7652
- }
7653
- ],
7654
- "outputs": [
7516
+ },
7655
7517
  {
7656
- "type": "core::bool"
7518
+ "name": "token_id",
7519
+ "type": "core::integer::u256"
7520
+ },
7521
+ {
7522
+ "name": "value",
7523
+ "type": "core::integer::u256"
7524
+ },
7525
+ {
7526
+ "name": "data",
7527
+ "type": "core::array::Span::<core::felt252>"
7657
7528
  }
7658
7529
  ],
7659
- "state_mutability": "view"
7530
+ "outputs": [],
7531
+ "state_mutability": "external"
7660
7532
  },
7661
7533
  {
7662
7534
  "type": "function",
7663
- "name": "supports_interface",
7535
+ "name": "safe_batch_transfer_from",
7664
7536
  "inputs": [
7665
7537
  {
7666
- "name": "interface_id",
7667
- "type": "core::felt252"
7668
- }
7669
- ],
7670
- "outputs": [
7538
+ "name": "from",
7539
+ "type": "core::starknet::contract_address::ContractAddress"
7540
+ },
7671
7541
  {
7672
- "type": "core::bool"
7542
+ "name": "to",
7543
+ "type": "core::starknet::contract_address::ContractAddress"
7544
+ },
7545
+ {
7546
+ "name": "token_ids",
7547
+ "type": "core::array::Span::<core::integer::u256>"
7548
+ },
7549
+ {
7550
+ "name": "values",
7551
+ "type": "core::array::Span::<core::integer::u256>"
7552
+ },
7553
+ {
7554
+ "name": "data",
7555
+ "type": "core::array::Span::<core::felt252>"
7673
7556
  }
7674
7557
  ],
7675
- "state_mutability": "view"
7558
+ "outputs": [],
7559
+ "state_mutability": "external"
7676
7560
  },
7677
7561
  {
7678
7562
  "type": "function",
7679
- "name": "name",
7680
- "inputs": [],
7681
- "outputs": [
7563
+ "name": "is_approved_for_all",
7564
+ "inputs": [
7682
7565
  {
7683
- "type": "core::byte_array::ByteArray"
7566
+ "name": "owner",
7567
+ "type": "core::starknet::contract_address::ContractAddress"
7568
+ },
7569
+ {
7570
+ "name": "operator",
7571
+ "type": "core::starknet::contract_address::ContractAddress"
7684
7572
  }
7685
7573
  ],
7686
- "state_mutability": "view"
7687
- },
7688
- {
7689
- "type": "function",
7690
- "name": "symbol",
7691
- "inputs": [],
7692
7574
  "outputs": [
7693
7575
  {
7694
- "type": "core::byte_array::ByteArray"
7576
+ "type": "core::bool"
7695
7577
  }
7696
7578
  ],
7697
7579
  "state_mutability": "view"
7698
7580
  },
7699
7581
  {
7700
7582
  "type": "function",
7701
- "name": "token_uri",
7583
+ "name": "set_approval_for_all",
7702
7584
  "inputs": [
7703
7585
  {
7704
- "name": "token_id",
7705
- "type": "core::integer::u256"
7706
- }
7707
- ],
7708
- "outputs": [
7586
+ "name": "operator",
7587
+ "type": "core::starknet::contract_address::ContractAddress"
7588
+ },
7709
7589
  {
7710
- "type": "core::byte_array::ByteArray"
7590
+ "name": "approved",
7591
+ "type": "core::bool"
7711
7592
  }
7712
7593
  ],
7713
- "state_mutability": "view"
7714
- },
7594
+ "outputs": [],
7595
+ "state_mutability": "external"
7596
+ }
7597
+ ]
7598
+ },
7599
+ {
7600
+ "type": "impl",
7601
+ "name": "ERC1155CamelImpl",
7602
+ "interface_name": "openzeppelin_token::erc1155::interface::IERC1155Camel"
7603
+ },
7604
+ {
7605
+ "type": "interface",
7606
+ "name": "openzeppelin_token::erc1155::interface::IERC1155Camel",
7607
+ "items": [
7715
7608
  {
7716
7609
  "type": "function",
7717
7610
  "name": "balanceOf",
@@ -7719,6 +7612,10 @@ var IPClubNFTABI = [
7719
7612
  {
7720
7613
  "name": "account",
7721
7614
  "type": "core::starknet::contract_address::ContractAddress"
7615
+ },
7616
+ {
7617
+ "name": "tokenId",
7618
+ "type": "core::integer::u256"
7722
7619
  }
7723
7620
  ],
7724
7621
  "outputs": [
@@ -7730,16 +7627,20 @@ var IPClubNFTABI = [
7730
7627
  },
7731
7628
  {
7732
7629
  "type": "function",
7733
- "name": "ownerOf",
7630
+ "name": "balanceOfBatch",
7734
7631
  "inputs": [
7735
7632
  {
7736
- "name": "tokenId",
7737
- "type": "core::integer::u256"
7633
+ "name": "accounts",
7634
+ "type": "core::array::Span::<core::starknet::contract_address::ContractAddress>"
7635
+ },
7636
+ {
7637
+ "name": "tokenIds",
7638
+ "type": "core::array::Span::<core::integer::u256>"
7738
7639
  }
7739
7640
  ],
7740
7641
  "outputs": [
7741
7642
  {
7742
- "type": "core::starknet::contract_address::ContractAddress"
7643
+ "type": "core::array::Span::<core::integer::u256>"
7743
7644
  }
7744
7645
  ],
7745
7646
  "state_mutability": "view"
@@ -7760,6 +7661,10 @@ var IPClubNFTABI = [
7760
7661
  "name": "tokenId",
7761
7662
  "type": "core::integer::u256"
7762
7663
  },
7664
+ {
7665
+ "name": "value",
7666
+ "type": "core::integer::u256"
7667
+ },
7763
7668
  {
7764
7669
  "name": "data",
7765
7670
  "type": "core::array::Span::<core::felt252>"
@@ -7770,7 +7675,7 @@ var IPClubNFTABI = [
7770
7675
  },
7771
7676
  {
7772
7677
  "type": "function",
7773
- "name": "transferFrom",
7678
+ "name": "safeBatchTransferFrom",
7774
7679
  "inputs": [
7775
7680
  {
7776
7681
  "name": "from",
@@ -7781,8 +7686,16 @@ var IPClubNFTABI = [
7781
7686
  "type": "core::starknet::contract_address::ContractAddress"
7782
7687
  },
7783
7688
  {
7784
- "name": "tokenId",
7785
- "type": "core::integer::u256"
7689
+ "name": "tokenIds",
7690
+ "type": "core::array::Span::<core::integer::u256>"
7691
+ },
7692
+ {
7693
+ "name": "values",
7694
+ "type": "core::array::Span::<core::integer::u256>"
7695
+ },
7696
+ {
7697
+ "name": "data",
7698
+ "type": "core::array::Span::<core::felt252>"
7786
7699
  }
7787
7700
  ],
7788
7701
  "outputs": [],
@@ -7790,47 +7703,58 @@ var IPClubNFTABI = [
7790
7703
  },
7791
7704
  {
7792
7705
  "type": "function",
7793
- "name": "setApprovalForAll",
7706
+ "name": "isApprovedForAll",
7794
7707
  "inputs": [
7795
7708
  {
7796
- "name": "operator",
7709
+ "name": "owner",
7797
7710
  "type": "core::starknet::contract_address::ContractAddress"
7798
7711
  },
7799
7712
  {
7800
- "name": "approved",
7801
- "type": "core::bool"
7802
- }
7803
- ],
7804
- "outputs": [],
7805
- "state_mutability": "external"
7806
- },
7807
- {
7808
- "type": "function",
7809
- "name": "getApproved",
7810
- "inputs": [
7811
- {
7812
- "name": "tokenId",
7813
- "type": "core::integer::u256"
7713
+ "name": "operator",
7714
+ "type": "core::starknet::contract_address::ContractAddress"
7814
7715
  }
7815
7716
  ],
7816
7717
  "outputs": [
7817
7718
  {
7818
- "type": "core::starknet::contract_address::ContractAddress"
7719
+ "type": "core::bool"
7819
7720
  }
7820
7721
  ],
7821
7722
  "state_mutability": "view"
7822
7723
  },
7823
7724
  {
7824
7725
  "type": "function",
7825
- "name": "isApprovedForAll",
7726
+ "name": "setApprovalForAll",
7826
7727
  "inputs": [
7827
7728
  {
7828
- "name": "owner",
7729
+ "name": "operator",
7829
7730
  "type": "core::starknet::contract_address::ContractAddress"
7830
7731
  },
7831
7732
  {
7832
- "name": "operator",
7833
- "type": "core::starknet::contract_address::ContractAddress"
7733
+ "name": "approved",
7734
+ "type": "core::bool"
7735
+ }
7736
+ ],
7737
+ "outputs": [],
7738
+ "state_mutability": "external"
7739
+ }
7740
+ ]
7741
+ },
7742
+ {
7743
+ "type": "impl",
7744
+ "name": "SRC5Impl",
7745
+ "interface_name": "openzeppelin_introspection::interface::ISRC5"
7746
+ },
7747
+ {
7748
+ "type": "interface",
7749
+ "name": "openzeppelin_introspection::interface::ISRC5",
7750
+ "items": [
7751
+ {
7752
+ "type": "function",
7753
+ "name": "supports_interface",
7754
+ "inputs": [
7755
+ {
7756
+ "name": "interface_id",
7757
+ "type": "core::felt252"
7834
7758
  }
7835
7759
  ],
7836
7760
  "outputs": [
@@ -7839,22 +7763,66 @@ var IPClubNFTABI = [
7839
7763
  }
7840
7764
  ],
7841
7765
  "state_mutability": "view"
7766
+ }
7767
+ ]
7768
+ },
7769
+ {
7770
+ "type": "impl",
7771
+ "name": "OwnableMixinImpl",
7772
+ "interface_name": "openzeppelin_access::ownable::interface::OwnableABI"
7773
+ },
7774
+ {
7775
+ "type": "interface",
7776
+ "name": "openzeppelin_access::ownable::interface::OwnableABI",
7777
+ "items": [
7778
+ {
7779
+ "type": "function",
7780
+ "name": "owner",
7781
+ "inputs": [],
7782
+ "outputs": [
7783
+ {
7784
+ "type": "core::starknet::contract_address::ContractAddress"
7785
+ }
7786
+ ],
7787
+ "state_mutability": "view"
7842
7788
  },
7843
7789
  {
7844
7790
  "type": "function",
7845
- "name": "tokenURI",
7791
+ "name": "transfer_ownership",
7846
7792
  "inputs": [
7847
7793
  {
7848
- "name": "tokenId",
7849
- "type": "core::integer::u256"
7794
+ "name": "new_owner",
7795
+ "type": "core::starknet::contract_address::ContractAddress"
7850
7796
  }
7851
7797
  ],
7852
- "outputs": [
7798
+ "outputs": [],
7799
+ "state_mutability": "external"
7800
+ },
7801
+ {
7802
+ "type": "function",
7803
+ "name": "renounce_ownership",
7804
+ "inputs": [],
7805
+ "outputs": [],
7806
+ "state_mutability": "external"
7807
+ },
7808
+ {
7809
+ "type": "function",
7810
+ "name": "transferOwnership",
7811
+ "inputs": [
7853
7812
  {
7854
- "type": "core::byte_array::ByteArray"
7813
+ "name": "newOwner",
7814
+ "type": "core::starknet::contract_address::ContractAddress"
7855
7815
  }
7856
7816
  ],
7857
- "state_mutability": "view"
7817
+ "outputs": [],
7818
+ "state_mutability": "external"
7819
+ },
7820
+ {
7821
+ "type": "function",
7822
+ "name": "renounceOwnership",
7823
+ "inputs": [],
7824
+ "outputs": [],
7825
+ "state_mutability": "external"
7858
7826
  }
7859
7827
  ]
7860
7828
  },
@@ -7871,28 +7839,25 @@ var IPClubNFTABI = [
7871
7839
  "type": "core::byte_array::ByteArray"
7872
7840
  },
7873
7841
  {
7874
- "name": "club_id",
7875
- "type": "core::integer::u256"
7876
- },
7877
- {
7878
- "name": "creator",
7879
- "type": "core::starknet::contract_address::ContractAddress"
7842
+ "name": "base_uri",
7843
+ "type": "core::byte_array::ByteArray"
7880
7844
  },
7881
7845
  {
7882
- "name": "ip_club_manager",
7846
+ "name": "owner",
7883
7847
  "type": "core::starknet::contract_address::ContractAddress"
7884
- },
7885
- {
7886
- "name": "metadata_uri",
7887
- "type": "core::byte_array::ByteArray"
7888
7848
  }
7889
7849
  ]
7890
7850
  },
7891
7851
  {
7892
7852
  "type": "event",
7893
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
7853
+ "name": "openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle",
7894
7854
  "kind": "struct",
7895
7855
  "members": [
7856
+ {
7857
+ "name": "operator",
7858
+ "type": "core::starknet::contract_address::ContractAddress",
7859
+ "kind": "key"
7860
+ },
7896
7861
  {
7897
7862
  "name": "from",
7898
7863
  "type": "core::starknet::contract_address::ContractAddress",
@@ -7904,37 +7869,52 @@ var IPClubNFTABI = [
7904
7869
  "kind": "key"
7905
7870
  },
7906
7871
  {
7907
- "name": "token_id",
7872
+ "name": "id",
7908
7873
  "type": "core::integer::u256",
7909
- "kind": "key"
7874
+ "kind": "data"
7875
+ },
7876
+ {
7877
+ "name": "value",
7878
+ "type": "core::integer::u256",
7879
+ "kind": "data"
7910
7880
  }
7911
7881
  ]
7912
7882
  },
7913
7883
  {
7914
7884
  "type": "event",
7915
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
7885
+ "name": "openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch",
7916
7886
  "kind": "struct",
7917
7887
  "members": [
7918
7888
  {
7919
- "name": "owner",
7889
+ "name": "operator",
7920
7890
  "type": "core::starknet::contract_address::ContractAddress",
7921
7891
  "kind": "key"
7922
7892
  },
7923
7893
  {
7924
- "name": "approved",
7894
+ "name": "from",
7925
7895
  "type": "core::starknet::contract_address::ContractAddress",
7926
7896
  "kind": "key"
7927
7897
  },
7928
7898
  {
7929
- "name": "token_id",
7930
- "type": "core::integer::u256",
7899
+ "name": "to",
7900
+ "type": "core::starknet::contract_address::ContractAddress",
7931
7901
  "kind": "key"
7902
+ },
7903
+ {
7904
+ "name": "ids",
7905
+ "type": "core::array::Span::<core::integer::u256>",
7906
+ "kind": "data"
7907
+ },
7908
+ {
7909
+ "name": "values",
7910
+ "type": "core::array::Span::<core::integer::u256>",
7911
+ "kind": "data"
7932
7912
  }
7933
7913
  ]
7934
7914
  },
7935
7915
  {
7936
7916
  "type": "event",
7937
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
7917
+ "name": "openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll",
7938
7918
  "kind": "struct",
7939
7919
  "members": [
7940
7920
  {
@@ -7956,22 +7936,44 @@ var IPClubNFTABI = [
7956
7936
  },
7957
7937
  {
7958
7938
  "type": "event",
7959
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::Event",
7939
+ "name": "openzeppelin_token::erc1155::erc1155::ERC1155Component::URI",
7940
+ "kind": "struct",
7941
+ "members": [
7942
+ {
7943
+ "name": "value",
7944
+ "type": "core::byte_array::ByteArray",
7945
+ "kind": "data"
7946
+ },
7947
+ {
7948
+ "name": "id",
7949
+ "type": "core::integer::u256",
7950
+ "kind": "key"
7951
+ }
7952
+ ]
7953
+ },
7954
+ {
7955
+ "type": "event",
7956
+ "name": "openzeppelin_token::erc1155::erc1155::ERC1155Component::Event",
7960
7957
  "kind": "enum",
7961
7958
  "variants": [
7962
7959
  {
7963
- "name": "Transfer",
7964
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
7960
+ "name": "TransferSingle",
7961
+ "type": "openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferSingle",
7965
7962
  "kind": "nested"
7966
7963
  },
7967
7964
  {
7968
- "name": "Approval",
7969
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
7965
+ "name": "TransferBatch",
7966
+ "type": "openzeppelin_token::erc1155::erc1155::ERC1155Component::TransferBatch",
7970
7967
  "kind": "nested"
7971
7968
  },
7972
7969
  {
7973
7970
  "name": "ApprovalForAll",
7974
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
7971
+ "type": "openzeppelin_token::erc1155::erc1155::ERC1155Component::ApprovalForAll",
7972
+ "kind": "nested"
7973
+ },
7974
+ {
7975
+ "name": "URI",
7976
+ "type": "openzeppelin_token::erc1155::erc1155::ERC1155Component::URI",
7975
7977
  "kind": "nested"
7976
7978
  }
7977
7979
  ]
@@ -7984,153 +7986,123 @@ var IPClubNFTABI = [
7984
7986
  },
7985
7987
  {
7986
7988
  "type": "event",
7987
- "name": "ip_club::IPClubNFT::IPClubNFT::Event",
7988
- "kind": "enum",
7989
- "variants": [
7989
+ "name": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
7990
+ "kind": "struct",
7991
+ "members": [
7990
7992
  {
7991
- "name": "ERC721Event",
7992
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::Event",
7993
- "kind": "flat"
7993
+ "name": "previous_owner",
7994
+ "type": "core::starknet::contract_address::ContractAddress",
7995
+ "kind": "key"
7994
7996
  },
7995
7997
  {
7996
- "name": "SRC5Event",
7997
- "type": "openzeppelin_introspection::src5::SRC5Component::Event",
7998
- "kind": "flat"
7998
+ "name": "new_owner",
7999
+ "type": "core::starknet::contract_address::ContractAddress",
8000
+ "kind": "key"
7999
8001
  }
8000
8002
  ]
8001
- }
8002
- ];
8003
-
8004
- // src/starknet/abis/ipClubFactory.ts
8005
- var IPClubFactoryABI = [
8006
- {
8007
- "type": "impl",
8008
- "name": "IPClubFactoryImpl",
8009
- "interface_name": "ip_club::interface::IIPClubFactory"
8010
- },
8011
- {
8012
- "type": "struct",
8013
- "name": "core::byte_array::ByteArray",
8014
- "members": [
8015
- { "name": "data", "type": "core::array::Array::<core::bytes_31::bytes31>" },
8016
- { "name": "pending_word", "type": "core::felt252" },
8017
- { "name": "pending_word_len", "type": "core::internal::bounded_int::BoundedInt::<0, 30>" }
8018
- ]
8019
8003
  },
8020
8004
  {
8021
- "type": "struct",
8022
- "name": "core::integer::u256",
8005
+ "type": "event",
8006
+ "name": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
8007
+ "kind": "struct",
8023
8008
  "members": [
8024
- { "name": "low", "type": "core::integer::u128" },
8025
- { "name": "high", "type": "core::integer::u128" }
8009
+ {
8010
+ "name": "previous_owner",
8011
+ "type": "core::starknet::contract_address::ContractAddress",
8012
+ "kind": "key"
8013
+ },
8014
+ {
8015
+ "name": "new_owner",
8016
+ "type": "core::starknet::contract_address::ContractAddress",
8017
+ "kind": "key"
8018
+ }
8026
8019
  ]
8027
8020
  },
8028
8021
  {
8029
- "type": "enum",
8030
- "name": "core::option::Option::<core::starknet::contract_address::ContractAddress>",
8022
+ "type": "event",
8023
+ "name": "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
8024
+ "kind": "enum",
8031
8025
  "variants": [
8032
- { "name": "Some", "type": "core::starknet::contract_address::ContractAddress" },
8033
- { "name": "None", "type": "()" }
8026
+ {
8027
+ "name": "OwnershipTransferred",
8028
+ "type": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
8029
+ "kind": "nested"
8030
+ },
8031
+ {
8032
+ "name": "OwnershipTransferStarted",
8033
+ "type": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
8034
+ "kind": "nested"
8035
+ }
8034
8036
  ]
8035
8037
  },
8036
8038
  {
8037
- "type": "interface",
8038
- "name": "ip_club::interface::IIPClubFactory",
8039
- "items": [
8039
+ "type": "event",
8040
+ "name": "ip_club::IPClubCollection::IPClubCollection::MembershipCreated",
8041
+ "kind": "struct",
8042
+ "members": [
8040
8043
  {
8041
- "type": "function",
8042
- "name": "collection_class_hash",
8043
- "inputs": [],
8044
- "outputs": [{ "type": "core::starknet::class_hash::ClassHash" }],
8045
- "state_mutability": "view"
8046
- },
8044
+ "name": "token_id",
8045
+ "type": "core::integer::u256",
8046
+ "kind": "key"
8047
+ },
8047
8048
  {
8048
- "type": "function",
8049
- "name": "version",
8050
- "inputs": [],
8051
- "outputs": [{ "type": "core::byte_array::ByteArray" }],
8052
- "state_mutability": "view"
8049
+ "name": "max_supply",
8050
+ "type": "core::integer::u256",
8051
+ "kind": "data"
8053
8052
  },
8054
8053
  {
8055
- "type": "function",
8056
- "name": "deploy_club",
8057
- "inputs": [
8058
- { "name": "name", "type": "core::byte_array::ByteArray" },
8059
- { "name": "symbol", "type": "core::byte_array::ByteArray" },
8060
- { "name": "base_uri", "type": "core::byte_array::ByteArray" },
8061
- { "name": "max_supply", "type": "core::integer::u256" },
8062
- { "name": "entry_fee", "type": "core::integer::u256" },
8063
- { "name": "payment_token", "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>" },
8064
- { "name": "royalty_bps", "type": "core::integer::u256" }
8065
- ],
8066
- "outputs": [{ "type": "core::starknet::contract_address::ContractAddress" }],
8067
- "state_mutability": "external"
8068
- }
8069
- ]
8070
- },
8071
- {
8072
- "type": "impl",
8073
- "name": "SRC5Impl",
8074
- "interface_name": "openzeppelin_introspection::interface::ISRC5"
8075
- },
8076
- {
8077
- "type": "enum",
8078
- "name": "core::bool",
8079
- "variants": [
8080
- { "name": "False", "type": "()" },
8081
- { "name": "True", "type": "()" }
8082
- ]
8083
- },
8084
- {
8085
- "type": "interface",
8086
- "name": "openzeppelin_introspection::interface::ISRC5",
8087
- "items": [
8054
+ "name": "start_time",
8055
+ "type": "core::option::Option::<core::integer::u64>",
8056
+ "kind": "data"
8057
+ },
8088
8058
  {
8089
- "type": "function",
8090
- "name": "supports_interface",
8091
- "inputs": [{ "name": "interface_id", "type": "core::felt252" }],
8092
- "outputs": [{ "type": "core::bool" }],
8093
- "state_mutability": "view"
8059
+ "name": "end_time",
8060
+ "type": "core::option::Option::<core::integer::u64>",
8061
+ "kind": "data"
8062
+ },
8063
+ {
8064
+ "name": "metadata_uri",
8065
+ "type": "core::byte_array::ByteArray",
8066
+ "kind": "data"
8067
+ },
8068
+ {
8069
+ "name": "created_at",
8070
+ "type": "core::integer::u64",
8071
+ "kind": "data"
8094
8072
  }
8095
8073
  ]
8096
8074
  },
8097
- {
8098
- "type": "constructor",
8099
- "name": "constructor",
8100
- "inputs": [
8101
- { "name": "collection_class_hash", "type": "core::starknet::class_hash::ClassHash" }
8102
- ]
8103
- },
8104
- {
8105
- "type": "event",
8106
- "name": "openzeppelin_introspection::src5::SRC5Component::Event",
8107
- "kind": "enum",
8108
- "variants": []
8109
- },
8110
- {
8111
- "type": "event",
8112
- "name": "ip_club::IPClubFactory::IPClubFactory::ClubDeployed",
8113
- "kind": "struct",
8114
- "members": [
8115
- { "name": "collection_address", "type": "core::starknet::contract_address::ContractAddress", "kind": "key" },
8116
- { "name": "owner", "type": "core::starknet::contract_address::ContractAddress", "kind": "key" },
8117
- { "name": "name", "type": "core::byte_array::ByteArray", "kind": "data" },
8118
- { "name": "symbol", "type": "core::byte_array::ByteArray", "kind": "data" }
8119
- ]
8120
- },
8121
8075
  {
8122
8076
  "type": "event",
8123
- "name": "ip_club::IPClubFactory::IPClubFactory::Event",
8077
+ "name": "ip_club::IPClubCollection::IPClubCollection::Event",
8124
8078
  "kind": "enum",
8125
8079
  "variants": [
8126
- { "name": "SRC5Event", "type": "openzeppelin_introspection::src5::SRC5Component::Event", "kind": "flat" },
8127
- { "name": "ClubDeployed", "type": "ip_club::IPClubFactory::IPClubFactory::ClubDeployed", "kind": "nested" }
8080
+ {
8081
+ "name": "ERC1155Event",
8082
+ "type": "openzeppelin_token::erc1155::erc1155::ERC1155Component::Event",
8083
+ "kind": "flat"
8084
+ },
8085
+ {
8086
+ "name": "SRC5Event",
8087
+ "type": "openzeppelin_introspection::src5::SRC5Component::Event",
8088
+ "kind": "flat"
8089
+ },
8090
+ {
8091
+ "name": "OwnableEvent",
8092
+ "type": "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
8093
+ "kind": "flat"
8094
+ },
8095
+ {
8096
+ "name": "MembershipCreated",
8097
+ "type": "ip_club::IPClubCollection::IPClubCollection::MembershipCreated",
8098
+ "kind": "nested"
8099
+ }
8128
8100
  ]
8129
8101
  }
8130
8102
  ];
8131
8103
 
8132
- // src/starknet/abis/ipClubCollection.ts
8133
- var IPClubCollectionABI = [
8104
+ // src/starknet/abis/ipSponsorship.ts
8105
+ var IPSponsorshipABI = [
8134
8106
  {
8135
8107
  "type": "impl",
8136
8108
  "name": "ERC721MetadataImpl",
@@ -8241,8 +8213,8 @@ var IPClubCollectionABI = [
8241
8213
  },
8242
8214
  {
8243
8215
  "type": "impl",
8244
- "name": "IPClubCollectionImpl",
8245
- "interface_name": "ip_club::interface::IIPClubCollection"
8216
+ "name": "IPSponsorshipImpl",
8217
+ "interface_name": "ip_sponsorship::interface::IIPSponsorship"
8246
8218
  },
8247
8219
  {
8248
8220
  "type": "enum",
@@ -8272,17 +8244,149 @@ var IPClubCollectionABI = [
8272
8244
  }
8273
8245
  ]
8274
8246
  },
8247
+ {
8248
+ "type": "struct",
8249
+ "name": "ip_sponsorship::types::SponsorshipOffer",
8250
+ "members": [
8251
+ {
8252
+ "name": "author",
8253
+ "type": "core::starknet::contract_address::ContractAddress"
8254
+ },
8255
+ {
8256
+ "name": "nft_contract",
8257
+ "type": "core::starknet::contract_address::ContractAddress"
8258
+ },
8259
+ {
8260
+ "name": "token_id",
8261
+ "type": "core::integer::u256"
8262
+ },
8263
+ {
8264
+ "name": "min_amount",
8265
+ "type": "core::integer::u256"
8266
+ },
8267
+ {
8268
+ "name": "duration",
8269
+ "type": "core::integer::u64"
8270
+ },
8271
+ {
8272
+ "name": "payment_token",
8273
+ "type": "core::starknet::contract_address::ContractAddress"
8274
+ },
8275
+ {
8276
+ "name": "license_terms_uri",
8277
+ "type": "core::byte_array::ByteArray"
8278
+ },
8279
+ {
8280
+ "name": "transferable",
8281
+ "type": "core::bool"
8282
+ },
8283
+ {
8284
+ "name": "specific_sponsor",
8285
+ "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
8286
+ },
8287
+ {
8288
+ "name": "open",
8289
+ "type": "core::bool"
8290
+ },
8291
+ {
8292
+ "name": "royalty_bps",
8293
+ "type": "core::integer::u256"
8294
+ }
8295
+ ]
8296
+ },
8297
+ {
8298
+ "type": "struct",
8299
+ "name": "ip_sponsorship::types::SponsorshipProposal",
8300
+ "members": [
8301
+ {
8302
+ "name": "proposer",
8303
+ "type": "core::starknet::contract_address::ContractAddress"
8304
+ },
8305
+ {
8306
+ "name": "nft_contract",
8307
+ "type": "core::starknet::contract_address::ContractAddress"
8308
+ },
8309
+ {
8310
+ "name": "token_id",
8311
+ "type": "core::integer::u256"
8312
+ },
8313
+ {
8314
+ "name": "amount",
8315
+ "type": "core::integer::u256"
8316
+ },
8317
+ {
8318
+ "name": "duration",
8319
+ "type": "core::integer::u64"
8320
+ },
8321
+ {
8322
+ "name": "valid_until",
8323
+ "type": "core::integer::u64"
8324
+ },
8325
+ {
8326
+ "name": "payment_token",
8327
+ "type": "core::starknet::contract_address::ContractAddress"
8328
+ },
8329
+ {
8330
+ "name": "license_terms_uri",
8331
+ "type": "core::byte_array::ByteArray"
8332
+ },
8333
+ {
8334
+ "name": "transferable",
8335
+ "type": "core::bool"
8336
+ },
8337
+ {
8338
+ "name": "open",
8339
+ "type": "core::bool"
8340
+ },
8341
+ {
8342
+ "name": "royalty_bps",
8343
+ "type": "core::integer::u256"
8344
+ }
8345
+ ]
8346
+ },
8275
8347
  {
8276
8348
  "type": "interface",
8277
- "name": "ip_club::interface::IIPClubCollection",
8349
+ "name": "ip_sponsorship::interface::IIPSponsorship",
8278
8350
  "items": [
8279
8351
  {
8280
8352
  "type": "function",
8281
- "name": "mint",
8353
+ "name": "create_offer",
8282
8354
  "inputs": [
8283
8355
  {
8284
- "name": "to",
8356
+ "name": "nft_contract",
8357
+ "type": "core::starknet::contract_address::ContractAddress"
8358
+ },
8359
+ {
8360
+ "name": "token_id",
8361
+ "type": "core::integer::u256"
8362
+ },
8363
+ {
8364
+ "name": "min_amount",
8365
+ "type": "core::integer::u256"
8366
+ },
8367
+ {
8368
+ "name": "duration",
8369
+ "type": "core::integer::u64"
8370
+ },
8371
+ {
8372
+ "name": "payment_token",
8285
8373
  "type": "core::starknet::contract_address::ContractAddress"
8374
+ },
8375
+ {
8376
+ "name": "license_terms_uri",
8377
+ "type": "core::byte_array::ByteArray"
8378
+ },
8379
+ {
8380
+ "name": "transferable",
8381
+ "type": "core::bool"
8382
+ },
8383
+ {
8384
+ "name": "royalty_bps",
8385
+ "type": "core::integer::u256"
8386
+ },
8387
+ {
8388
+ "name": "specific_sponsor",
8389
+ "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
8286
8390
  }
8287
8391
  ],
8288
8392
  "outputs": [
@@ -8294,8 +8398,12 @@ var IPClubCollectionABI = [
8294
8398
  },
8295
8399
  {
8296
8400
  "type": "function",
8297
- "name": "set_open",
8401
+ "name": "set_offer_open",
8298
8402
  "inputs": [
8403
+ {
8404
+ "name": "offer_id",
8405
+ "type": "core::integer::u256"
8406
+ },
8299
8407
  {
8300
8408
  "name": "open",
8301
8409
  "type": "core::bool"
@@ -8306,40 +8414,91 @@ var IPClubCollectionABI = [
8306
8414
  },
8307
8415
  {
8308
8416
  "type": "function",
8309
- "name": "base_uri",
8310
- "inputs": [],
8311
- "outputs": [
8417
+ "name": "place_bid",
8418
+ "inputs": [
8312
8419
  {
8313
- "type": "core::byte_array::ByteArray"
8420
+ "name": "offer_id",
8421
+ "type": "core::integer::u256"
8422
+ },
8423
+ {
8424
+ "name": "amount",
8425
+ "type": "core::integer::u256"
8314
8426
  }
8315
8427
  ],
8316
- "state_mutability": "view"
8428
+ "outputs": [],
8429
+ "state_mutability": "external"
8317
8430
  },
8318
8431
  {
8319
8432
  "type": "function",
8320
- "name": "entry_fee",
8321
- "inputs": [],
8322
- "outputs": [
8323
- {
8433
+ "name": "retract_bid",
8434
+ "inputs": [
8435
+ {
8436
+ "name": "offer_id",
8437
+ "type": "core::integer::u256"
8438
+ }
8439
+ ],
8440
+ "outputs": [],
8441
+ "state_mutability": "external"
8442
+ },
8443
+ {
8444
+ "type": "function",
8445
+ "name": "accept_bid",
8446
+ "inputs": [
8447
+ {
8448
+ "name": "offer_id",
8449
+ "type": "core::integer::u256"
8450
+ },
8451
+ {
8452
+ "name": "sponsor",
8453
+ "type": "core::starknet::contract_address::ContractAddress"
8454
+ }
8455
+ ],
8456
+ "outputs": [
8457
+ {
8458
+ "type": "core::integer::u256"
8459
+ }
8460
+ ],
8461
+ "state_mutability": "external"
8462
+ },
8463
+ {
8464
+ "type": "function",
8465
+ "name": "get_offer",
8466
+ "inputs": [
8467
+ {
8468
+ "name": "offer_id",
8324
8469
  "type": "core::integer::u256"
8325
8470
  }
8326
8471
  ],
8472
+ "outputs": [
8473
+ {
8474
+ "type": "ip_sponsorship::types::SponsorshipOffer"
8475
+ }
8476
+ ],
8327
8477
  "state_mutability": "view"
8328
8478
  },
8329
8479
  {
8330
8480
  "type": "function",
8331
- "name": "payment_token",
8332
- "inputs": [],
8481
+ "name": "get_bid",
8482
+ "inputs": [
8483
+ {
8484
+ "name": "offer_id",
8485
+ "type": "core::integer::u256"
8486
+ },
8487
+ {
8488
+ "name": "sponsor",
8489
+ "type": "core::starknet::contract_address::ContractAddress"
8490
+ }
8491
+ ],
8333
8492
  "outputs": [
8334
8493
  {
8335
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
8494
+ "type": "core::integer::u256"
8336
8495
  }
8337
8496
  ],
8338
8497
  "state_mutability": "view"
8339
8498
  },
8340
8499
  {
8341
8500
  "type": "function",
8342
- "name": "max_supply",
8501
+ "name": "get_last_offer_id",
8343
8502
  "inputs": [],
8344
8503
  "outputs": [
8345
8504
  {
@@ -8350,7 +8509,7 @@ var IPClubCollectionABI = [
8350
8509
  },
8351
8510
  {
8352
8511
  "type": "function",
8353
- "name": "total_minted",
8512
+ "name": "get_last_license_id",
8354
8513
  "inputs": [],
8355
8514
  "outputs": [
8356
8515
  {
@@ -8361,11 +8520,115 @@ var IPClubCollectionABI = [
8361
8520
  },
8362
8521
  {
8363
8522
  "type": "function",
8364
- "name": "is_open",
8523
+ "name": "propose_sponsorship",
8524
+ "inputs": [
8525
+ {
8526
+ "name": "nft_contract",
8527
+ "type": "core::starknet::contract_address::ContractAddress"
8528
+ },
8529
+ {
8530
+ "name": "token_id",
8531
+ "type": "core::integer::u256"
8532
+ },
8533
+ {
8534
+ "name": "amount",
8535
+ "type": "core::integer::u256"
8536
+ },
8537
+ {
8538
+ "name": "duration",
8539
+ "type": "core::integer::u64"
8540
+ },
8541
+ {
8542
+ "name": "valid_until",
8543
+ "type": "core::integer::u64"
8544
+ },
8545
+ {
8546
+ "name": "payment_token",
8547
+ "type": "core::starknet::contract_address::ContractAddress"
8548
+ },
8549
+ {
8550
+ "name": "license_terms_uri",
8551
+ "type": "core::byte_array::ByteArray"
8552
+ },
8553
+ {
8554
+ "name": "transferable",
8555
+ "type": "core::bool"
8556
+ },
8557
+ {
8558
+ "name": "royalty_bps",
8559
+ "type": "core::integer::u256"
8560
+ }
8561
+ ],
8562
+ "outputs": [
8563
+ {
8564
+ "type": "core::integer::u256"
8565
+ }
8566
+ ],
8567
+ "state_mutability": "external"
8568
+ },
8569
+ {
8570
+ "type": "function",
8571
+ "name": "withdraw_proposal",
8572
+ "inputs": [
8573
+ {
8574
+ "name": "proposal_id",
8575
+ "type": "core::integer::u256"
8576
+ }
8577
+ ],
8578
+ "outputs": [],
8579
+ "state_mutability": "external"
8580
+ },
8581
+ {
8582
+ "type": "function",
8583
+ "name": "accept_proposal",
8584
+ "inputs": [
8585
+ {
8586
+ "name": "proposal_id",
8587
+ "type": "core::integer::u256"
8588
+ }
8589
+ ],
8590
+ "outputs": [
8591
+ {
8592
+ "type": "core::integer::u256"
8593
+ }
8594
+ ],
8595
+ "state_mutability": "external"
8596
+ },
8597
+ {
8598
+ "type": "function",
8599
+ "name": "reject_proposal",
8600
+ "inputs": [
8601
+ {
8602
+ "name": "proposal_id",
8603
+ "type": "core::integer::u256"
8604
+ }
8605
+ ],
8606
+ "outputs": [],
8607
+ "state_mutability": "external"
8608
+ },
8609
+ {
8610
+ "type": "function",
8611
+ "name": "get_proposal",
8612
+ "inputs": [
8613
+ {
8614
+ "name": "proposal_id",
8615
+ "type": "core::integer::u256"
8616
+ }
8617
+ ],
8618
+ "outputs": [
8619
+ {
8620
+ "type": "ip_sponsorship::types::SponsorshipProposal"
8621
+ }
8622
+ ],
8623
+ "state_mutability": "view"
8624
+ },
8625
+ {
8626
+ "type": "function",
8627
+ "name": "get_last_proposal_id",
8365
8628
  "inputs": [],
8366
8629
  "outputs": [
8367
8630
  {
8368
- "type": "core::bool"
8631
+ "type": "core::integer::u256"
8369
8632
  }
8370
8633
  ],
8371
8634
  "state_mutability": "view"
@@ -8754,66 +9017,6 @@ var IPClubCollectionABI = [
8754
9017
  }
8755
9018
  ]
8756
9019
  },
8757
- {
8758
- "type": "impl",
8759
- "name": "OwnableMixinImpl",
8760
- "interface_name": "openzeppelin_access::ownable::interface::OwnableABI"
8761
- },
8762
- {
8763
- "type": "interface",
8764
- "name": "openzeppelin_access::ownable::interface::OwnableABI",
8765
- "items": [
8766
- {
8767
- "type": "function",
8768
- "name": "owner",
8769
- "inputs": [],
8770
- "outputs": [
8771
- {
8772
- "type": "core::starknet::contract_address::ContractAddress"
8773
- }
8774
- ],
8775
- "state_mutability": "view"
8776
- },
8777
- {
8778
- "type": "function",
8779
- "name": "transfer_ownership",
8780
- "inputs": [
8781
- {
8782
- "name": "new_owner",
8783
- "type": "core::starknet::contract_address::ContractAddress"
8784
- }
8785
- ],
8786
- "outputs": [],
8787
- "state_mutability": "external"
8788
- },
8789
- {
8790
- "type": "function",
8791
- "name": "renounce_ownership",
8792
- "inputs": [],
8793
- "outputs": [],
8794
- "state_mutability": "external"
8795
- },
8796
- {
8797
- "type": "function",
8798
- "name": "transferOwnership",
8799
- "inputs": [
8800
- {
8801
- "name": "newOwner",
8802
- "type": "core::starknet::contract_address::ContractAddress"
8803
- }
8804
- ],
8805
- "outputs": [],
8806
- "state_mutability": "external"
8807
- },
8808
- {
8809
- "type": "function",
8810
- "name": "renounceOwnership",
8811
- "inputs": [],
8812
- "outputs": [],
8813
- "state_mutability": "external"
8814
- }
8815
- ]
8816
- },
8817
9020
  {
8818
9021
  "type": "constructor",
8819
9022
  "name": "constructor",
@@ -8825,30 +9028,6 @@ var IPClubCollectionABI = [
8825
9028
  {
8826
9029
  "name": "symbol",
8827
9030
  "type": "core::byte_array::ByteArray"
8828
- },
8829
- {
8830
- "name": "base_uri",
8831
- "type": "core::byte_array::ByteArray"
8832
- },
8833
- {
8834
- "name": "max_supply",
8835
- "type": "core::integer::u256"
8836
- },
8837
- {
8838
- "name": "entry_fee",
8839
- "type": "core::integer::u256"
8840
- },
8841
- {
8842
- "name": "payment_token",
8843
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
8844
- },
8845
- {
8846
- "name": "royalty_bps",
8847
- "type": "core::integer::u256"
8848
- },
8849
- {
8850
- "name": "owner",
8851
- "type": "core::starknet::contract_address::ContractAddress"
8852
9031
  }
8853
9032
  ]
8854
9033
  },
@@ -8948,1521 +9127,308 @@ var IPClubCollectionABI = [
8948
9127
  },
8949
9128
  {
8950
9129
  "type": "event",
8951
- "name": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
9130
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated",
8952
9131
  "kind": "struct",
8953
9132
  "members": [
8954
9133
  {
8955
- "name": "previous_owner",
8956
- "type": "core::starknet::contract_address::ContractAddress",
9134
+ "name": "offer_id",
9135
+ "type": "core::integer::u256",
8957
9136
  "kind": "key"
8958
9137
  },
8959
9138
  {
8960
- "name": "new_owner",
9139
+ "name": "author",
8961
9140
  "type": "core::starknet::contract_address::ContractAddress",
8962
9141
  "kind": "key"
8963
- }
8964
- ]
8965
- },
8966
- {
8967
- "type": "event",
8968
- "name": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
8969
- "kind": "struct",
8970
- "members": [
9142
+ },
8971
9143
  {
8972
- "name": "previous_owner",
8973
- "type": "core::starknet::contract_address::ContractAddress",
8974
- "kind": "key"
8975
- },
8976
- {
8977
- "name": "new_owner",
9144
+ "name": "nft_contract",
8978
9145
  "type": "core::starknet::contract_address::ContractAddress",
8979
9146
  "kind": "key"
8980
- }
8981
- ]
8982
- },
8983
- {
8984
- "type": "event",
8985
- "name": "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
8986
- "kind": "enum",
8987
- "variants": [
8988
- {
8989
- "name": "OwnershipTransferred",
8990
- "type": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
8991
- "kind": "nested"
8992
9147
  },
8993
- {
8994
- "name": "OwnershipTransferStarted",
8995
- "type": "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
8996
- "kind": "nested"
8997
- }
8998
- ]
8999
- },
9000
- {
9001
- "type": "event",
9002
- "name": "ip_club::IPClubCollection::IPClubCollection::MemberMinted",
9003
- "kind": "struct",
9004
- "members": [
9005
9148
  {
9006
9149
  "name": "token_id",
9007
9150
  "type": "core::integer::u256",
9008
- "kind": "key"
9151
+ "kind": "data"
9009
9152
  },
9010
9153
  {
9011
- "name": "to",
9012
- "type": "core::starknet::contract_address::ContractAddress",
9013
- "kind": "key"
9154
+ "name": "min_amount",
9155
+ "type": "core::integer::u256",
9156
+ "kind": "data"
9014
9157
  },
9015
9158
  {
9016
- "name": "payer",
9017
- "type": "core::starknet::contract_address::ContractAddress",
9159
+ "name": "duration",
9160
+ "type": "core::integer::u64",
9018
9161
  "kind": "data"
9019
- }
9020
- ]
9021
- },
9022
- {
9023
- "type": "event",
9024
- "name": "ip_club::IPClubCollection::IPClubCollection::OpenStatusChanged",
9025
- "kind": "struct",
9026
- "members": [
9162
+ },
9027
9163
  {
9028
- "name": "open",
9029
- "type": "core::bool",
9164
+ "name": "payment_token",
9165
+ "type": "core::starknet::contract_address::ContractAddress",
9030
9166
  "kind": "data"
9031
- }
9032
- ]
9033
- },
9034
- {
9035
- "type": "event",
9036
- "name": "ip_club::IPClubCollection::IPClubCollection::Event",
9037
- "kind": "enum",
9038
- "variants": [
9039
- {
9040
- "name": "ERC721Event",
9041
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::Event",
9042
- "kind": "flat"
9043
9167
  },
9044
9168
  {
9045
- "name": "SRC5Event",
9046
- "type": "openzeppelin_introspection::src5::SRC5Component::Event",
9047
- "kind": "flat"
9169
+ "name": "license_terms_uri",
9170
+ "type": "core::byte_array::ByteArray",
9171
+ "kind": "data"
9048
9172
  },
9049
9173
  {
9050
- "name": "OwnableEvent",
9051
- "type": "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
9052
- "kind": "flat"
9174
+ "name": "transferable",
9175
+ "type": "core::bool",
9176
+ "kind": "data"
9053
9177
  },
9054
9178
  {
9055
- "name": "MemberMinted",
9056
- "type": "ip_club::IPClubCollection::IPClubCollection::MemberMinted",
9057
- "kind": "nested"
9179
+ "name": "royalty_bps",
9180
+ "type": "core::integer::u256",
9181
+ "kind": "data"
9058
9182
  },
9059
9183
  {
9060
- "name": "OpenStatusChanged",
9061
- "type": "ip_club::IPClubCollection::IPClubCollection::OpenStatusChanged",
9062
- "kind": "nested"
9063
- }
9064
- ]
9065
- }
9066
- ];
9067
-
9068
- // src/starknet/abis/ipSponsorship.ts
9069
- var IPSponsorshipABI = [
9070
- {
9071
- "type": "impl",
9072
- "name": "IPSponsorshipImpl",
9073
- "interface_name": "ip_sponsorship::interface::IIPSponsorship"
9074
- },
9075
- {
9076
- "type": "struct",
9077
- "name": "core::integer::u256",
9078
- "members": [
9079
- {
9080
- "name": "low",
9081
- "type": "core::integer::u128"
9184
+ "name": "specific_sponsor",
9185
+ "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>",
9186
+ "kind": "data"
9082
9187
  },
9083
9188
  {
9084
- "name": "high",
9085
- "type": "core::integer::u128"
9189
+ "name": "created_at",
9190
+ "type": "core::integer::u64",
9191
+ "kind": "data"
9086
9192
  }
9087
9193
  ]
9088
9194
  },
9089
9195
  {
9090
- "type": "struct",
9091
- "name": "core::byte_array::ByteArray",
9196
+ "type": "event",
9197
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated",
9198
+ "kind": "struct",
9092
9199
  "members": [
9093
9200
  {
9094
- "name": "data",
9095
- "type": "core::array::Array::<core::bytes_31::bytes31>"
9201
+ "name": "offer_id",
9202
+ "type": "core::integer::u256",
9203
+ "kind": "key"
9096
9204
  },
9097
9205
  {
9098
- "name": "pending_word",
9099
- "type": "core::felt252"
9206
+ "name": "open",
9207
+ "type": "core::bool",
9208
+ "kind": "data"
9100
9209
  },
9101
9210
  {
9102
- "name": "pending_word_len",
9103
- "type": "core::internal::bounded_int::BoundedInt::<0, 30>"
9211
+ "name": "updated_at",
9212
+ "type": "core::integer::u64",
9213
+ "kind": "data"
9104
9214
  }
9105
9215
  ]
9106
9216
  },
9107
9217
  {
9108
- "type": "enum",
9109
- "name": "core::bool",
9110
- "variants": [
9218
+ "type": "event",
9219
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced",
9220
+ "kind": "struct",
9221
+ "members": [
9111
9222
  {
9112
- "name": "False",
9113
- "type": "()"
9223
+ "name": "offer_id",
9224
+ "type": "core::integer::u256",
9225
+ "kind": "key"
9114
9226
  },
9115
9227
  {
9116
- "name": "True",
9117
- "type": "()"
9118
- }
9119
- ]
9120
- },
9121
- {
9122
- "type": "enum",
9123
- "name": "core::option::Option::<core::starknet::contract_address::ContractAddress>",
9124
- "variants": [
9228
+ "name": "sponsor",
9229
+ "type": "core::starknet::contract_address::ContractAddress",
9230
+ "kind": "key"
9231
+ },
9125
9232
  {
9126
- "name": "Some",
9127
- "type": "core::starknet::contract_address::ContractAddress"
9233
+ "name": "amount",
9234
+ "type": "core::integer::u256",
9235
+ "kind": "data"
9128
9236
  },
9129
9237
  {
9130
- "name": "None",
9131
- "type": "()"
9238
+ "name": "bid_at",
9239
+ "type": "core::integer::u64",
9240
+ "kind": "data"
9132
9241
  }
9133
9242
  ]
9134
9243
  },
9135
9244
  {
9136
- "type": "struct",
9137
- "name": "ip_sponsorship::types::SponsorshipOffer",
9245
+ "type": "event",
9246
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted",
9247
+ "kind": "struct",
9138
9248
  "members": [
9139
9249
  {
9140
- "name": "author",
9141
- "type": "core::starknet::contract_address::ContractAddress"
9142
- },
9143
- {
9144
- "name": "nft_contract",
9145
- "type": "core::starknet::contract_address::ContractAddress"
9146
- },
9147
- {
9148
- "name": "token_id",
9149
- "type": "core::integer::u256"
9150
- },
9151
- {
9152
- "name": "min_amount",
9153
- "type": "core::integer::u256"
9154
- },
9155
- {
9156
- "name": "duration",
9157
- "type": "core::integer::u64"
9158
- },
9159
- {
9160
- "name": "payment_token",
9161
- "type": "core::starknet::contract_address::ContractAddress"
9162
- },
9163
- {
9164
- "name": "license_terms_uri",
9165
- "type": "core::byte_array::ByteArray"
9166
- },
9167
- {
9168
- "name": "transferable",
9169
- "type": "core::bool"
9250
+ "name": "offer_id",
9251
+ "type": "core::integer::u256",
9252
+ "kind": "key"
9170
9253
  },
9171
9254
  {
9172
- "name": "specific_sponsor",
9173
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
9255
+ "name": "sponsor",
9256
+ "type": "core::starknet::contract_address::ContractAddress",
9257
+ "kind": "key"
9174
9258
  },
9175
9259
  {
9176
- "name": "open",
9177
- "type": "core::bool"
9260
+ "name": "retracted_at",
9261
+ "type": "core::integer::u64",
9262
+ "kind": "data"
9178
9263
  }
9179
9264
  ]
9180
9265
  },
9181
9266
  {
9182
- "type": "struct",
9183
- "name": "ip_sponsorship::types::License",
9267
+ "type": "event",
9268
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted",
9269
+ "kind": "struct",
9184
9270
  "members": [
9185
9271
  {
9186
- "name": "author",
9187
- "type": "core::starknet::contract_address::ContractAddress"
9188
- },
9189
- {
9190
- "name": "sponsor",
9191
- "type": "core::starknet::contract_address::ContractAddress"
9192
- },
9193
- {
9194
- "name": "nft_contract",
9195
- "type": "core::starknet::contract_address::ContractAddress"
9272
+ "name": "offer_id",
9273
+ "type": "core::integer::u256",
9274
+ "kind": "key"
9196
9275
  },
9197
9276
  {
9198
- "name": "token_id",
9199
- "type": "core::integer::u256"
9277
+ "name": "license_id",
9278
+ "type": "core::integer::u256",
9279
+ "kind": "key"
9200
9280
  },
9201
9281
  {
9202
- "name": "amount_paid",
9203
- "type": "core::integer::u256"
9282
+ "name": "sponsor",
9283
+ "type": "core::starknet::contract_address::ContractAddress",
9284
+ "kind": "key"
9204
9285
  },
9205
9286
  {
9206
- "name": "expires_at",
9207
- "type": "core::integer::u64"
9287
+ "name": "author",
9288
+ "type": "core::starknet::contract_address::ContractAddress",
9289
+ "kind": "data"
9208
9290
  },
9209
9291
  {
9210
- "name": "transferable",
9211
- "type": "core::bool"
9292
+ "name": "amount",
9293
+ "type": "core::integer::u256",
9294
+ "kind": "data"
9212
9295
  },
9213
- {
9214
- "name": "license_terms_uri",
9215
- "type": "core::byte_array::ByteArray"
9216
- }
9217
- ]
9218
- },
9219
- {
9220
- "type": "interface",
9221
- "name": "ip_sponsorship::interface::IIPSponsorship",
9222
- "items": [
9223
- {
9224
- "type": "function",
9225
- "name": "create_offer",
9226
- "inputs": [
9227
- {
9228
- "name": "nft_contract",
9229
- "type": "core::starknet::contract_address::ContractAddress"
9230
- },
9231
- {
9232
- "name": "token_id",
9233
- "type": "core::integer::u256"
9234
- },
9235
- {
9236
- "name": "min_amount",
9237
- "type": "core::integer::u256"
9238
- },
9239
- {
9240
- "name": "duration",
9241
- "type": "core::integer::u64"
9242
- },
9243
- {
9244
- "name": "payment_token",
9245
- "type": "core::starknet::contract_address::ContractAddress"
9246
- },
9247
- {
9248
- "name": "license_terms_uri",
9249
- "type": "core::byte_array::ByteArray"
9250
- },
9251
- {
9252
- "name": "transferable",
9253
- "type": "core::bool"
9254
- },
9255
- {
9256
- "name": "specific_sponsor",
9257
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>"
9258
- }
9259
- ],
9260
- "outputs": [
9261
- {
9262
- "type": "core::integer::u256"
9263
- }
9264
- ],
9265
- "state_mutability": "external"
9266
- },
9267
- {
9268
- "type": "function",
9269
- "name": "set_offer_open",
9270
- "inputs": [
9271
- {
9272
- "name": "offer_id",
9273
- "type": "core::integer::u256"
9274
- },
9275
- {
9276
- "name": "open",
9277
- "type": "core::bool"
9278
- }
9279
- ],
9280
- "outputs": [],
9281
- "state_mutability": "external"
9282
- },
9283
- {
9284
- "type": "function",
9285
- "name": "place_bid",
9286
- "inputs": [
9287
- {
9288
- "name": "offer_id",
9289
- "type": "core::integer::u256"
9290
- },
9291
- {
9292
- "name": "amount",
9293
- "type": "core::integer::u256"
9294
- }
9295
- ],
9296
- "outputs": [],
9297
- "state_mutability": "external"
9298
- },
9299
- {
9300
- "type": "function",
9301
- "name": "retract_bid",
9302
- "inputs": [
9303
- {
9304
- "name": "offer_id",
9305
- "type": "core::integer::u256"
9306
- }
9307
- ],
9308
- "outputs": [],
9309
- "state_mutability": "external"
9310
- },
9311
- {
9312
- "type": "function",
9313
- "name": "accept_bid",
9314
- "inputs": [
9315
- {
9316
- "name": "offer_id",
9317
- "type": "core::integer::u256"
9318
- },
9319
- {
9320
- "name": "sponsor",
9321
- "type": "core::starknet::contract_address::ContractAddress"
9322
- }
9323
- ],
9324
- "outputs": [
9325
- {
9326
- "type": "core::integer::u256"
9327
- }
9328
- ],
9329
- "state_mutability": "external"
9330
- },
9331
- {
9332
- "type": "function",
9333
- "name": "transfer_license",
9334
- "inputs": [
9335
- {
9336
- "name": "license_id",
9337
- "type": "core::integer::u256"
9338
- },
9339
- {
9340
- "name": "to",
9341
- "type": "core::starknet::contract_address::ContractAddress"
9342
- }
9343
- ],
9344
- "outputs": [],
9345
- "state_mutability": "external"
9346
- },
9347
- {
9348
- "type": "function",
9349
- "name": "get_offer",
9350
- "inputs": [
9351
- {
9352
- "name": "offer_id",
9353
- "type": "core::integer::u256"
9354
- }
9355
- ],
9356
- "outputs": [
9357
- {
9358
- "type": "ip_sponsorship::types::SponsorshipOffer"
9359
- }
9360
- ],
9361
- "state_mutability": "view"
9362
- },
9363
- {
9364
- "type": "function",
9365
- "name": "get_bid",
9366
- "inputs": [
9367
- {
9368
- "name": "offer_id",
9369
- "type": "core::integer::u256"
9370
- },
9371
- {
9372
- "name": "sponsor",
9373
- "type": "core::starknet::contract_address::ContractAddress"
9374
- }
9375
- ],
9376
- "outputs": [
9377
- {
9378
- "type": "core::integer::u256"
9379
- }
9380
- ],
9381
- "state_mutability": "view"
9382
- },
9383
- {
9384
- "type": "function",
9385
- "name": "get_license",
9386
- "inputs": [
9387
- {
9388
- "name": "license_id",
9389
- "type": "core::integer::u256"
9390
- }
9391
- ],
9392
- "outputs": [
9393
- {
9394
- "type": "ip_sponsorship::types::License"
9395
- }
9396
- ],
9397
- "state_mutability": "view"
9398
- },
9399
- {
9400
- "type": "function",
9401
- "name": "is_license_valid",
9402
- "inputs": [
9403
- {
9404
- "name": "license_id",
9405
- "type": "core::integer::u256"
9406
- }
9407
- ],
9408
- "outputs": [
9409
- {
9410
- "type": "core::bool"
9411
- }
9412
- ],
9413
- "state_mutability": "view"
9414
- },
9415
- {
9416
- "type": "function",
9417
- "name": "get_last_offer_id",
9418
- "inputs": [],
9419
- "outputs": [
9420
- {
9421
- "type": "core::integer::u256"
9422
- }
9423
- ],
9424
- "state_mutability": "view"
9425
- },
9426
- {
9427
- "type": "function",
9428
- "name": "get_last_license_id",
9429
- "inputs": [],
9430
- "outputs": [
9431
- {
9432
- "type": "core::integer::u256"
9433
- }
9434
- ],
9435
- "state_mutability": "view"
9436
- }
9437
- ]
9438
- },
9439
- {
9440
- "type": "impl",
9441
- "name": "SRC5Impl",
9442
- "interface_name": "openzeppelin_introspection::interface::ISRC5"
9443
- },
9444
- {
9445
- "type": "interface",
9446
- "name": "openzeppelin_introspection::interface::ISRC5",
9447
- "items": [
9448
- {
9449
- "type": "function",
9450
- "name": "supports_interface",
9451
- "inputs": [
9452
- {
9453
- "name": "interface_id",
9454
- "type": "core::felt252"
9455
- }
9456
- ],
9457
- "outputs": [
9458
- {
9459
- "type": "core::bool"
9460
- }
9461
- ],
9462
- "state_mutability": "view"
9463
- }
9464
- ]
9465
- },
9466
- {
9467
- "type": "constructor",
9468
- "name": "constructor",
9469
- "inputs": []
9470
- },
9471
- {
9472
- "type": "event",
9473
- "name": "openzeppelin_introspection::src5::SRC5Component::Event",
9474
- "kind": "enum",
9475
- "variants": []
9476
- },
9477
- {
9478
- "type": "event",
9479
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated",
9480
- "kind": "struct",
9481
- "members": [
9482
- {
9483
- "name": "offer_id",
9484
- "type": "core::integer::u256",
9485
- "kind": "key"
9486
- },
9487
- {
9488
- "name": "author",
9489
- "type": "core::starknet::contract_address::ContractAddress",
9490
- "kind": "key"
9491
- },
9492
- {
9493
- "name": "nft_contract",
9494
- "type": "core::starknet::contract_address::ContractAddress",
9495
- "kind": "key"
9496
- },
9497
- {
9498
- "name": "token_id",
9499
- "type": "core::integer::u256",
9500
- "kind": "data"
9501
- },
9502
- {
9503
- "name": "min_amount",
9504
- "type": "core::integer::u256",
9505
- "kind": "data"
9506
- },
9507
- {
9508
- "name": "duration",
9509
- "type": "core::integer::u64",
9510
- "kind": "data"
9511
- },
9512
- {
9513
- "name": "payment_token",
9514
- "type": "core::starknet::contract_address::ContractAddress",
9515
- "kind": "data"
9516
- },
9517
- {
9518
- "name": "license_terms_uri",
9519
- "type": "core::byte_array::ByteArray",
9520
- "kind": "data"
9521
- },
9522
- {
9523
- "name": "transferable",
9524
- "type": "core::bool",
9525
- "kind": "data"
9526
- },
9527
- {
9528
- "name": "specific_sponsor",
9529
- "type": "core::option::Option::<core::starknet::contract_address::ContractAddress>",
9530
- "kind": "data"
9531
- },
9532
- {
9533
- "name": "created_at",
9534
- "type": "core::integer::u64",
9535
- "kind": "data"
9536
- }
9537
- ]
9538
- },
9539
- {
9540
- "type": "event",
9541
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated",
9542
- "kind": "struct",
9543
- "members": [
9544
- {
9545
- "name": "offer_id",
9546
- "type": "core::integer::u256",
9547
- "kind": "key"
9548
- },
9549
- {
9550
- "name": "open",
9551
- "type": "core::bool",
9552
- "kind": "data"
9553
- },
9554
- {
9555
- "name": "updated_at",
9556
- "type": "core::integer::u64",
9557
- "kind": "data"
9558
- }
9559
- ]
9560
- },
9561
- {
9562
- "type": "event",
9563
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced",
9564
- "kind": "struct",
9565
- "members": [
9566
- {
9567
- "name": "offer_id",
9568
- "type": "core::integer::u256",
9569
- "kind": "key"
9570
- },
9571
- {
9572
- "name": "sponsor",
9573
- "type": "core::starknet::contract_address::ContractAddress",
9574
- "kind": "key"
9575
- },
9576
- {
9577
- "name": "amount",
9578
- "type": "core::integer::u256",
9579
- "kind": "data"
9580
- },
9581
- {
9582
- "name": "bid_at",
9583
- "type": "core::integer::u64",
9584
- "kind": "data"
9585
- }
9586
- ]
9587
- },
9588
- {
9589
- "type": "event",
9590
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted",
9591
- "kind": "struct",
9592
- "members": [
9593
- {
9594
- "name": "offer_id",
9595
- "type": "core::integer::u256",
9596
- "kind": "key"
9597
- },
9598
- {
9599
- "name": "sponsor",
9600
- "type": "core::starknet::contract_address::ContractAddress",
9601
- "kind": "key"
9602
- },
9603
- {
9604
- "name": "retracted_at",
9605
- "type": "core::integer::u64",
9606
- "kind": "data"
9607
- }
9608
- ]
9609
- },
9610
- {
9611
- "type": "event",
9612
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted",
9613
- "kind": "struct",
9614
- "members": [
9615
- {
9616
- "name": "offer_id",
9617
- "type": "core::integer::u256",
9618
- "kind": "key"
9619
- },
9620
- {
9621
- "name": "license_id",
9622
- "type": "core::integer::u256",
9623
- "kind": "key"
9624
- },
9625
- {
9626
- "name": "sponsor",
9627
- "type": "core::starknet::contract_address::ContractAddress",
9628
- "kind": "key"
9629
- },
9630
- {
9631
- "name": "author",
9632
- "type": "core::starknet::contract_address::ContractAddress",
9633
- "kind": "data"
9634
- },
9635
- {
9636
- "name": "amount",
9637
- "type": "core::integer::u256",
9638
- "kind": "data"
9639
- },
9640
- {
9641
- "name": "expires_at",
9642
- "type": "core::integer::u64",
9643
- "kind": "data"
9644
- }
9645
- ]
9646
- },
9647
- {
9648
- "type": "event",
9649
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::LicenseTransferred",
9650
- "kind": "struct",
9651
- "members": [
9652
- {
9653
- "name": "license_id",
9654
- "type": "core::integer::u256",
9655
- "kind": "key"
9656
- },
9657
- {
9658
- "name": "from",
9659
- "type": "core::starknet::contract_address::ContractAddress",
9660
- "kind": "key"
9661
- },
9662
- {
9663
- "name": "to",
9664
- "type": "core::starknet::contract_address::ContractAddress",
9665
- "kind": "key"
9666
- },
9667
- {
9668
- "name": "transferred_at",
9669
- "type": "core::integer::u64",
9670
- "kind": "data"
9671
- }
9672
- ]
9673
- },
9674
- {
9675
- "type": "event",
9676
- "name": "ip_sponsorship::IPSponsorship::IPSponsorship::Event",
9677
- "kind": "enum",
9678
- "variants": [
9679
- {
9680
- "name": "SRC5Event",
9681
- "type": "openzeppelin_introspection::src5::SRC5Component::Event",
9682
- "kind": "flat"
9683
- },
9684
- {
9685
- "name": "OfferCreated",
9686
- "type": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated",
9687
- "kind": "nested"
9688
- },
9689
- {
9690
- "name": "OfferStatusUpdated",
9691
- "type": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated",
9692
- "kind": "nested"
9693
- },
9694
- {
9695
- "name": "BidPlaced",
9696
- "type": "ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced",
9697
- "kind": "nested"
9698
- },
9699
- {
9700
- "name": "BidRetracted",
9701
- "type": "ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted",
9702
- "kind": "nested"
9703
- },
9704
- {
9705
- "name": "SponsorshipAccepted",
9706
- "type": "ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted",
9707
- "kind": "nested"
9708
- },
9709
- {
9710
- "name": "LicenseTransferred",
9711
- "type": "ip_sponsorship::IPSponsorship::IPSponsorship::LicenseTransferred",
9712
- "kind": "nested"
9713
- }
9714
- ]
9715
- }
9716
- ];
9717
-
9718
- // src/starknet/abis/ipSponsorshipLicense.ts
9719
- var IPSponsorshipLicenseABI = [
9720
- {
9721
- "type": "impl",
9722
- "name": "ERC721MetadataImpl",
9723
- "interface_name": "openzeppelin_token::erc721::interface::IERC721Metadata"
9724
- },
9725
- {
9726
- "type": "struct",
9727
- "name": "core::byte_array::ByteArray",
9728
- "members": [
9729
- {
9730
- "name": "data",
9731
- "type": "core::array::Array::<core::bytes_31::bytes31>"
9732
- },
9733
- {
9734
- "name": "pending_word",
9735
- "type": "core::felt252"
9736
- },
9737
- {
9738
- "name": "pending_word_len",
9739
- "type": "core::internal::bounded_int::BoundedInt::<0, 30>"
9740
- }
9741
- ]
9742
- },
9743
- {
9744
- "type": "struct",
9745
- "name": "core::integer::u256",
9746
- "members": [
9747
- {
9748
- "name": "low",
9749
- "type": "core::integer::u128"
9750
- },
9751
- {
9752
- "name": "high",
9753
- "type": "core::integer::u128"
9754
- }
9755
- ]
9756
- },
9757
- {
9758
- "type": "interface",
9759
- "name": "openzeppelin_token::erc721::interface::IERC721Metadata",
9760
- "items": [
9761
- {
9762
- "type": "function",
9763
- "name": "name",
9764
- "inputs": [],
9765
- "outputs": [
9766
- {
9767
- "type": "core::byte_array::ByteArray"
9768
- }
9769
- ],
9770
- "state_mutability": "view"
9771
- },
9772
- {
9773
- "type": "function",
9774
- "name": "symbol",
9775
- "inputs": [],
9776
- "outputs": [
9777
- {
9778
- "type": "core::byte_array::ByteArray"
9779
- }
9780
- ],
9781
- "state_mutability": "view"
9782
- },
9783
- {
9784
- "type": "function",
9785
- "name": "token_uri",
9786
- "inputs": [
9787
- {
9788
- "name": "token_id",
9789
- "type": "core::integer::u256"
9790
- }
9791
- ],
9792
- "outputs": [
9793
- {
9794
- "type": "core::byte_array::ByteArray"
9795
- }
9796
- ],
9797
- "state_mutability": "view"
9798
- }
9799
- ]
9800
- },
9801
- {
9802
- "type": "impl",
9803
- "name": "ERC721MetadataCamelOnlyImpl",
9804
- "interface_name": "openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly"
9805
- },
9806
- {
9807
- "type": "interface",
9808
- "name": "openzeppelin_token::erc721::interface::IERC721MetadataCamelOnly",
9809
- "items": [
9810
- {
9811
- "type": "function",
9812
- "name": "tokenURI",
9813
- "inputs": [
9814
- {
9815
- "name": "tokenId",
9816
- "type": "core::integer::u256"
9817
- }
9818
- ],
9819
- "outputs": [
9820
- {
9821
- "type": "core::byte_array::ByteArray"
9822
- }
9823
- ],
9824
- "state_mutability": "view"
9825
- }
9826
- ]
9827
- },
9828
- {
9829
- "type": "impl",
9830
- "name": "IPSponsorshipLicenseImpl",
9831
- "interface_name": "ip_sponsorship::interface::IIPSponsorshipLicense"
9832
- },
9833
- {
9834
- "type": "enum",
9835
- "name": "core::bool",
9836
- "variants": [
9837
- {
9838
- "name": "False",
9839
- "type": "()"
9840
- },
9841
- {
9842
- "name": "True",
9843
- "type": "()"
9844
- }
9845
- ]
9846
- },
9847
- {
9848
- "type": "struct",
9849
- "name": "ip_sponsorship::types::LicenseData",
9850
- "members": [
9851
- {
9852
- "name": "author",
9853
- "type": "core::starknet::contract_address::ContractAddress"
9854
- },
9855
- {
9856
- "name": "asset_contract",
9857
- "type": "core::starknet::contract_address::ContractAddress"
9858
- },
9859
- {
9860
- "name": "asset_token_id",
9861
- "type": "core::integer::u256"
9862
- },
9863
- {
9864
- "name": "expires_at",
9865
- "type": "core::integer::u64"
9866
- },
9867
- {
9868
- "name": "transferable",
9869
- "type": "core::bool"
9870
- },
9871
- {
9872
- "name": "royalty_bps",
9873
- "type": "core::integer::u256"
9874
- },
9875
- {
9876
- "name": "license_terms_uri",
9877
- "type": "core::byte_array::ByteArray"
9878
- }
9879
- ]
9880
- },
9881
- {
9882
- "type": "interface",
9883
- "name": "ip_sponsorship::interface::IIPSponsorshipLicense",
9884
- "items": [
9885
- {
9886
- "type": "function",
9887
- "name": "set_minter",
9888
- "inputs": [
9889
- {
9890
- "name": "minter",
9891
- "type": "core::starknet::contract_address::ContractAddress"
9892
- }
9893
- ],
9894
- "outputs": [],
9895
- "state_mutability": "external"
9896
- },
9897
- {
9898
- "type": "function",
9899
- "name": "get_minter",
9900
- "inputs": [],
9901
- "outputs": [
9902
- {
9903
- "type": "core::starknet::contract_address::ContractAddress"
9904
- }
9905
- ],
9906
- "state_mutability": "view"
9907
- },
9908
- {
9909
- "type": "function",
9910
- "name": "mint",
9911
- "inputs": [
9912
- {
9913
- "name": "recipient",
9914
- "type": "core::starknet::contract_address::ContractAddress"
9915
- },
9916
- {
9917
- "name": "data",
9918
- "type": "ip_sponsorship::types::LicenseData"
9919
- }
9920
- ],
9921
- "outputs": [
9922
- {
9923
- "type": "core::integer::u256"
9924
- }
9925
- ],
9926
- "state_mutability": "external"
9927
- },
9928
- {
9929
- "type": "function",
9930
- "name": "get_license_data",
9931
- "inputs": [
9932
- {
9933
- "name": "token_id",
9934
- "type": "core::integer::u256"
9935
- }
9936
- ],
9937
- "outputs": [
9938
- {
9939
- "type": "ip_sponsorship::types::LicenseData"
9940
- }
9941
- ],
9942
- "state_mutability": "view"
9943
- },
9944
- {
9945
- "type": "function",
9946
- "name": "is_license_valid",
9947
- "inputs": [
9948
- {
9949
- "name": "token_id",
9950
- "type": "core::integer::u256"
9951
- }
9952
- ],
9953
- "outputs": [
9954
- {
9955
- "type": "core::bool"
9956
- }
9957
- ],
9958
- "state_mutability": "view"
9959
- },
9960
- {
9961
- "type": "function",
9962
- "name": "last_license_id",
9963
- "inputs": [],
9964
- "outputs": [
9965
- {
9966
- "type": "core::integer::u256"
9967
- }
9968
- ],
9969
- "state_mutability": "view"
9970
- },
9971
- {
9972
- "type": "function",
9973
- "name": "royalty_info",
9974
- "inputs": [
9975
- {
9976
- "name": "token_id",
9977
- "type": "core::integer::u256"
9978
- },
9979
- {
9980
- "name": "sale_price",
9981
- "type": "core::integer::u256"
9982
- }
9983
- ],
9984
- "outputs": [
9985
- {
9986
- "type": "(core::starknet::contract_address::ContractAddress, core::integer::u256)"
9987
- }
9988
- ],
9989
- "state_mutability": "view"
9990
- },
9991
- {
9992
- "type": "function",
9993
- "name": "royaltyInfo",
9994
- "inputs": [
9995
- {
9996
- "name": "token_id",
9997
- "type": "core::integer::u256"
9998
- },
9999
- {
10000
- "name": "sale_price",
10001
- "type": "core::integer::u256"
10002
- }
10003
- ],
10004
- "outputs": [
10005
- {
10006
- "type": "(core::starknet::contract_address::ContractAddress, core::integer::u256)"
10007
- }
10008
- ],
10009
- "state_mutability": "view"
10010
- },
10011
- {
10012
- "type": "function",
10013
- "name": "version",
10014
- "inputs": [],
10015
- "outputs": [
10016
- {
10017
- "type": "core::byte_array::ByteArray"
10018
- }
10019
- ],
10020
- "state_mutability": "view"
10021
- }
10022
- ]
10023
- },
10024
- {
10025
- "type": "impl",
10026
- "name": "ERC721Impl",
10027
- "interface_name": "openzeppelin_token::erc721::interface::IERC721"
10028
- },
10029
- {
10030
- "type": "struct",
10031
- "name": "core::array::Span::<core::felt252>",
10032
- "members": [
10033
- {
10034
- "name": "snapshot",
10035
- "type": "@core::array::Array::<core::felt252>"
10036
- }
10037
- ]
10038
- },
10039
- {
10040
- "type": "interface",
10041
- "name": "openzeppelin_token::erc721::interface::IERC721",
10042
- "items": [
10043
- {
10044
- "type": "function",
10045
- "name": "balance_of",
10046
- "inputs": [
10047
- {
10048
- "name": "account",
10049
- "type": "core::starknet::contract_address::ContractAddress"
10050
- }
10051
- ],
10052
- "outputs": [
10053
- {
10054
- "type": "core::integer::u256"
10055
- }
10056
- ],
10057
- "state_mutability": "view"
10058
- },
10059
- {
10060
- "type": "function",
10061
- "name": "owner_of",
10062
- "inputs": [
10063
- {
10064
- "name": "token_id",
10065
- "type": "core::integer::u256"
10066
- }
10067
- ],
10068
- "outputs": [
10069
- {
10070
- "type": "core::starknet::contract_address::ContractAddress"
10071
- }
10072
- ],
10073
- "state_mutability": "view"
10074
- },
10075
- {
10076
- "type": "function",
10077
- "name": "safe_transfer_from",
10078
- "inputs": [
10079
- {
10080
- "name": "from",
10081
- "type": "core::starknet::contract_address::ContractAddress"
10082
- },
10083
- {
10084
- "name": "to",
10085
- "type": "core::starknet::contract_address::ContractAddress"
10086
- },
10087
- {
10088
- "name": "token_id",
10089
- "type": "core::integer::u256"
10090
- },
10091
- {
10092
- "name": "data",
10093
- "type": "core::array::Span::<core::felt252>"
10094
- }
10095
- ],
10096
- "outputs": [],
10097
- "state_mutability": "external"
10098
- },
10099
- {
10100
- "type": "function",
10101
- "name": "transfer_from",
10102
- "inputs": [
10103
- {
10104
- "name": "from",
10105
- "type": "core::starknet::contract_address::ContractAddress"
10106
- },
10107
- {
10108
- "name": "to",
10109
- "type": "core::starknet::contract_address::ContractAddress"
10110
- },
10111
- {
10112
- "name": "token_id",
10113
- "type": "core::integer::u256"
10114
- }
10115
- ],
10116
- "outputs": [],
10117
- "state_mutability": "external"
10118
- },
10119
- {
10120
- "type": "function",
10121
- "name": "approve",
10122
- "inputs": [
10123
- {
10124
- "name": "to",
10125
- "type": "core::starknet::contract_address::ContractAddress"
10126
- },
10127
- {
10128
- "name": "token_id",
10129
- "type": "core::integer::u256"
10130
- }
10131
- ],
10132
- "outputs": [],
10133
- "state_mutability": "external"
10134
- },
10135
- {
10136
- "type": "function",
10137
- "name": "set_approval_for_all",
10138
- "inputs": [
10139
- {
10140
- "name": "operator",
10141
- "type": "core::starknet::contract_address::ContractAddress"
10142
- },
10143
- {
10144
- "name": "approved",
10145
- "type": "core::bool"
10146
- }
10147
- ],
10148
- "outputs": [],
10149
- "state_mutability": "external"
10150
- },
10151
- {
10152
- "type": "function",
10153
- "name": "get_approved",
10154
- "inputs": [
10155
- {
10156
- "name": "token_id",
10157
- "type": "core::integer::u256"
10158
- }
10159
- ],
10160
- "outputs": [
10161
- {
10162
- "type": "core::starknet::contract_address::ContractAddress"
10163
- }
10164
- ],
10165
- "state_mutability": "view"
10166
- },
10167
- {
10168
- "type": "function",
10169
- "name": "is_approved_for_all",
10170
- "inputs": [
10171
- {
10172
- "name": "owner",
10173
- "type": "core::starknet::contract_address::ContractAddress"
10174
- },
10175
- {
10176
- "name": "operator",
10177
- "type": "core::starknet::contract_address::ContractAddress"
10178
- }
10179
- ],
10180
- "outputs": [
10181
- {
10182
- "type": "core::bool"
10183
- }
10184
- ],
10185
- "state_mutability": "view"
10186
- }
10187
- ]
10188
- },
10189
- {
10190
- "type": "impl",
10191
- "name": "ERC721CamelOnly",
10192
- "interface_name": "openzeppelin_token::erc721::interface::IERC721CamelOnly"
10193
- },
10194
- {
10195
- "type": "interface",
10196
- "name": "openzeppelin_token::erc721::interface::IERC721CamelOnly",
10197
- "items": [
10198
- {
10199
- "type": "function",
10200
- "name": "balanceOf",
10201
- "inputs": [
10202
- {
10203
- "name": "account",
10204
- "type": "core::starknet::contract_address::ContractAddress"
10205
- }
10206
- ],
10207
- "outputs": [
10208
- {
10209
- "type": "core::integer::u256"
10210
- }
10211
- ],
10212
- "state_mutability": "view"
10213
- },
10214
- {
10215
- "type": "function",
10216
- "name": "ownerOf",
10217
- "inputs": [
10218
- {
10219
- "name": "tokenId",
10220
- "type": "core::integer::u256"
10221
- }
10222
- ],
10223
- "outputs": [
10224
- {
10225
- "type": "core::starknet::contract_address::ContractAddress"
10226
- }
10227
- ],
10228
- "state_mutability": "view"
10229
- },
10230
- {
10231
- "type": "function",
10232
- "name": "safeTransferFrom",
10233
- "inputs": [
10234
- {
10235
- "name": "from",
10236
- "type": "core::starknet::contract_address::ContractAddress"
10237
- },
10238
- {
10239
- "name": "to",
10240
- "type": "core::starknet::contract_address::ContractAddress"
10241
- },
10242
- {
10243
- "name": "tokenId",
10244
- "type": "core::integer::u256"
10245
- },
10246
- {
10247
- "name": "data",
10248
- "type": "core::array::Span::<core::felt252>"
10249
- }
10250
- ],
10251
- "outputs": [],
10252
- "state_mutability": "external"
10253
- },
10254
- {
10255
- "type": "function",
10256
- "name": "transferFrom",
10257
- "inputs": [
10258
- {
10259
- "name": "from",
10260
- "type": "core::starknet::contract_address::ContractAddress"
10261
- },
10262
- {
10263
- "name": "to",
10264
- "type": "core::starknet::contract_address::ContractAddress"
10265
- },
10266
- {
10267
- "name": "tokenId",
10268
- "type": "core::integer::u256"
10269
- }
10270
- ],
10271
- "outputs": [],
10272
- "state_mutability": "external"
10273
- },
10274
- {
10275
- "type": "function",
10276
- "name": "setApprovalForAll",
10277
- "inputs": [
10278
- {
10279
- "name": "operator",
10280
- "type": "core::starknet::contract_address::ContractAddress"
10281
- },
10282
- {
10283
- "name": "approved",
10284
- "type": "core::bool"
10285
- }
10286
- ],
10287
- "outputs": [],
10288
- "state_mutability": "external"
10289
- },
10290
- {
10291
- "type": "function",
10292
- "name": "getApproved",
10293
- "inputs": [
10294
- {
10295
- "name": "tokenId",
10296
- "type": "core::integer::u256"
10297
- }
10298
- ],
10299
- "outputs": [
10300
- {
10301
- "type": "core::starknet::contract_address::ContractAddress"
10302
- }
10303
- ],
10304
- "state_mutability": "view"
10305
- },
10306
- {
10307
- "type": "function",
10308
- "name": "isApprovedForAll",
10309
- "inputs": [
10310
- {
10311
- "name": "owner",
10312
- "type": "core::starknet::contract_address::ContractAddress"
10313
- },
10314
- {
10315
- "name": "operator",
10316
- "type": "core::starknet::contract_address::ContractAddress"
10317
- }
10318
- ],
10319
- "outputs": [
10320
- {
10321
- "type": "core::bool"
10322
- }
10323
- ],
10324
- "state_mutability": "view"
10325
- }
10326
- ]
10327
- },
10328
- {
10329
- "type": "impl",
10330
- "name": "SRC5Impl",
10331
- "interface_name": "openzeppelin_introspection::interface::ISRC5"
10332
- },
10333
- {
10334
- "type": "interface",
10335
- "name": "openzeppelin_introspection::interface::ISRC5",
10336
- "items": [
10337
- {
10338
- "type": "function",
10339
- "name": "supports_interface",
10340
- "inputs": [
10341
- {
10342
- "name": "interface_id",
10343
- "type": "core::felt252"
10344
- }
10345
- ],
10346
- "outputs": [
10347
- {
10348
- "type": "core::bool"
10349
- }
10350
- ],
10351
- "state_mutability": "view"
10352
- }
10353
- ]
10354
- },
10355
- {
10356
- "type": "constructor",
10357
- "name": "constructor",
10358
- "inputs": [
10359
- {
10360
- "name": "name",
10361
- "type": "core::byte_array::ByteArray"
10362
- },
10363
- {
10364
- "name": "symbol",
10365
- "type": "core::byte_array::ByteArray"
9296
+ {
9297
+ "name": "expires_at",
9298
+ "type": "core::integer::u64",
9299
+ "kind": "data"
10366
9300
  }
10367
9301
  ]
10368
9302
  },
10369
9303
  {
10370
9304
  "type": "event",
10371
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
9305
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated",
10372
9306
  "kind": "struct",
10373
9307
  "members": [
10374
9308
  {
10375
- "name": "from",
9309
+ "name": "proposal_id",
9310
+ "type": "core::integer::u256",
9311
+ "kind": "key"
9312
+ },
9313
+ {
9314
+ "name": "proposer",
10376
9315
  "type": "core::starknet::contract_address::ContractAddress",
10377
9316
  "kind": "key"
10378
9317
  },
10379
9318
  {
10380
- "name": "to",
9319
+ "name": "nft_contract",
10381
9320
  "type": "core::starknet::contract_address::ContractAddress",
10382
9321
  "kind": "key"
10383
9322
  },
10384
9323
  {
10385
9324
  "name": "token_id",
10386
9325
  "type": "core::integer::u256",
10387
- "kind": "key"
9326
+ "kind": "data"
9327
+ },
9328
+ {
9329
+ "name": "amount",
9330
+ "type": "core::integer::u256",
9331
+ "kind": "data"
9332
+ },
9333
+ {
9334
+ "name": "duration",
9335
+ "type": "core::integer::u64",
9336
+ "kind": "data"
9337
+ },
9338
+ {
9339
+ "name": "valid_until",
9340
+ "type": "core::integer::u64",
9341
+ "kind": "data"
9342
+ },
9343
+ {
9344
+ "name": "payment_token",
9345
+ "type": "core::starknet::contract_address::ContractAddress",
9346
+ "kind": "data"
9347
+ },
9348
+ {
9349
+ "name": "license_terms_uri",
9350
+ "type": "core::byte_array::ByteArray",
9351
+ "kind": "data"
9352
+ },
9353
+ {
9354
+ "name": "transferable",
9355
+ "type": "core::bool",
9356
+ "kind": "data"
9357
+ },
9358
+ {
9359
+ "name": "royalty_bps",
9360
+ "type": "core::integer::u256",
9361
+ "kind": "data"
9362
+ },
9363
+ {
9364
+ "name": "created_at",
9365
+ "type": "core::integer::u64",
9366
+ "kind": "data"
10388
9367
  }
10389
9368
  ]
10390
9369
  },
10391
9370
  {
10392
9371
  "type": "event",
10393
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
9372
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed",
10394
9373
  "kind": "struct",
10395
9374
  "members": [
10396
9375
  {
10397
- "name": "owner",
10398
- "type": "core::starknet::contract_address::ContractAddress",
9376
+ "name": "proposal_id",
9377
+ "type": "core::integer::u256",
10399
9378
  "kind": "key"
10400
9379
  },
10401
9380
  {
10402
- "name": "approved",
10403
- "type": "core::starknet::contract_address::ContractAddress",
10404
- "kind": "key"
9381
+ "name": "accepted",
9382
+ "type": "core::bool",
9383
+ "kind": "data"
10405
9384
  },
10406
9385
  {
10407
- "name": "token_id",
10408
- "type": "core::integer::u256",
10409
- "kind": "key"
9386
+ "name": "closed_at",
9387
+ "type": "core::integer::u64",
9388
+ "kind": "data"
10410
9389
  }
10411
9390
  ]
10412
9391
  },
10413
9392
  {
10414
9393
  "type": "event",
10415
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
9394
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted",
10416
9395
  "kind": "struct",
10417
9396
  "members": [
10418
9397
  {
10419
- "name": "owner",
10420
- "type": "core::starknet::contract_address::ContractAddress",
9398
+ "name": "proposal_id",
9399
+ "type": "core::integer::u256",
10421
9400
  "kind": "key"
10422
9401
  },
10423
9402
  {
10424
- "name": "operator",
9403
+ "name": "license_id",
9404
+ "type": "core::integer::u256",
9405
+ "kind": "key"
9406
+ },
9407
+ {
9408
+ "name": "sponsor",
10425
9409
  "type": "core::starknet::contract_address::ContractAddress",
10426
9410
  "kind": "key"
10427
9411
  },
10428
9412
  {
10429
- "name": "approved",
10430
- "type": "core::bool",
9413
+ "name": "author",
9414
+ "type": "core::starknet::contract_address::ContractAddress",
10431
9415
  "kind": "data"
10432
- }
10433
- ]
10434
- },
10435
- {
10436
- "type": "event",
10437
- "name": "openzeppelin_token::erc721::erc721::ERC721Component::Event",
10438
- "kind": "enum",
10439
- "variants": [
10440
- {
10441
- "name": "Transfer",
10442
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
10443
- "kind": "nested"
10444
9416
  },
10445
9417
  {
10446
- "name": "Approval",
10447
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
10448
- "kind": "nested"
9418
+ "name": "amount",
9419
+ "type": "core::integer::u256",
9420
+ "kind": "data"
10449
9421
  },
10450
9422
  {
10451
- "name": "ApprovalForAll",
10452
- "type": "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
10453
- "kind": "nested"
9423
+ "name": "expires_at",
9424
+ "type": "core::integer::u64",
9425
+ "kind": "data"
10454
9426
  }
10455
9427
  ]
10456
9428
  },
10457
9429
  {
10458
9430
  "type": "event",
10459
- "name": "openzeppelin_introspection::src5::SRC5Component::Event",
10460
- "kind": "enum",
10461
- "variants": []
10462
- },
10463
- {
10464
- "type": "event",
10465
- "name": "ip_sponsorship::IPSponsorshipLicense::IPSponsorshipLicense::LicenseMinted",
9431
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted",
10466
9432
  "kind": "struct",
10467
9433
  "members": [
10468
9434
  {
@@ -10519,7 +9485,7 @@ var IPSponsorshipLicenseABI = [
10519
9485
  },
10520
9486
  {
10521
9487
  "type": "event",
10522
- "name": "ip_sponsorship::IPSponsorshipLicense::IPSponsorshipLicense::Event",
9488
+ "name": "ip_sponsorship::IPSponsorship::IPSponsorship::Event",
10523
9489
  "kind": "enum",
10524
9490
  "variants": [
10525
9491
  {
@@ -10532,9 +9498,49 @@ var IPSponsorshipLicenseABI = [
10532
9498
  "type": "openzeppelin_introspection::src5::SRC5Component::Event",
10533
9499
  "kind": "flat"
10534
9500
  },
9501
+ {
9502
+ "name": "OfferCreated",
9503
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferCreated",
9504
+ "kind": "nested"
9505
+ },
9506
+ {
9507
+ "name": "OfferStatusUpdated",
9508
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::OfferStatusUpdated",
9509
+ "kind": "nested"
9510
+ },
9511
+ {
9512
+ "name": "BidPlaced",
9513
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::BidPlaced",
9514
+ "kind": "nested"
9515
+ },
9516
+ {
9517
+ "name": "BidRetracted",
9518
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::BidRetracted",
9519
+ "kind": "nested"
9520
+ },
9521
+ {
9522
+ "name": "SponsorshipAccepted",
9523
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::SponsorshipAccepted",
9524
+ "kind": "nested"
9525
+ },
9526
+ {
9527
+ "name": "ProposalCreated",
9528
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::ProposalCreated",
9529
+ "kind": "nested"
9530
+ },
9531
+ {
9532
+ "name": "ProposalClosed",
9533
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::ProposalClosed",
9534
+ "kind": "nested"
9535
+ },
9536
+ {
9537
+ "name": "ProposalAccepted",
9538
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::ProposalAccepted",
9539
+ "kind": "nested"
9540
+ },
10535
9541
  {
10536
9542
  "name": "LicenseMinted",
10537
- "type": "ip_sponsorship::IPSponsorshipLicense::IPSponsorshipLicense::LicenseMinted",
9543
+ "type": "ip_sponsorship::IPSponsorship::IPSponsorship::LicenseMinted",
10538
9544
  "kind": "nested"
10539
9545
  }
10540
9546
  ]
@@ -11882,139 +10888,117 @@ var TicketService = class {
11882
10888
  };
11883
10889
  var ClubService = class {
11884
10890
  constructor(config) {
11885
- const coords = getStarknetCoordinates(config.chain);
11886
- this.registryAddress = coords.ipClubRegistry;
11887
- this.factoryAddress = coords.ipClubFactory;
11888
- }
11889
- _registry(account, registryAddress) {
11890
- const address = registryAddress ?? this.registryAddress;
11891
- if (!address) throw new Error("IP-Club registry address not configured for this chain");
11892
- return newContract(IPClubABI, normalizeAddress("STARKNET", address), account);
10891
+ this.config = config;
10892
+ this.factoryAddress = getStarknetCoordinates(config.chain).ipClubFactory;
11893
10893
  }
11894
10894
  _factory(account, factoryAddress) {
11895
10895
  const address = factoryAddress ?? this.factoryAddress;
11896
10896
  if (!address) throw new Error("IP-Club factory address not configured for this chain");
11897
10897
  return newContract(IPClubFactoryABI, normalizeAddress("STARKNET", address), account);
11898
10898
  }
11899
- _collection(account, collectionAddress) {
11900
- return newContract(IPClubCollectionABI, normalizeAddress("STARKNET", collectionAddress), account);
10899
+ _collection(address, account) {
10900
+ return newContract(IPClubCollectionABI, normalizeAddress("STARKNET", address), account);
10901
+ }
10902
+ _collectionRead(address) {
10903
+ const provider = new starknet.RpcProvider({ nodeUrl: this.config.rpcUrl });
10904
+ return newContract(IPClubCollectionABI, normalizeAddress("STARKNET", address), provider);
11901
10905
  }
11902
- /** Deploy a new per-creator membership ERC-721 collection via the factory. */
11903
- async deployClub(account, params) {
11904
- const maxSupply = starknet.cairo.uint256(params.maxSupply ?? 0xffffffffffffffffn);
11905
- const entryFee = starknet.cairo.uint256(params.entryFee ?? 0n);
11906
- const paymentToken = params.paymentToken ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, params.paymentToken) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
11907
- const royaltyBps = starknet.cairo.uint256(params.royaltyBps ?? 0n);
11908
- const call = this._factory(account, params.factoryAddress).populate("deploy_club", [
10906
+ /**
10907
+ * Deploys a new IPClubCollection via the factory. Caller becomes owner.
10908
+ * `baseUri` is the collection-level metadata URI, embedded on-chain in the
10909
+ * deploy transaction.
10910
+ */
10911
+ async deployCollection(account, params) {
10912
+ const call = this._factory(account, params.factoryAddress).populate("deploy_collection", [
11909
10913
  params.name,
11910
10914
  params.symbol,
11911
- params.baseUri,
11912
- maxSupply,
11913
- entryFee,
11914
- paymentToken,
11915
- royaltyBps
10915
+ params.baseUri
11916
10916
  ]);
11917
10917
  const res = await account.execute([call]);
11918
10918
  return { txHash: res.transaction_hash };
11919
10919
  }
11920
- /** Owner-only pause or resume new mints on a club collection. */
11921
- async setOpen(account, params) {
11922
- const call = this._collection(account, params.collectionAddress).populate("set_open", [params.open]);
10920
+ /** Owner-only. Creates a new membership tier inside the caller's deployed collection. */
10921
+ async createMembership(account, params) {
10922
+ const startTime = params.startTime != null ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, params.startTime) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
10923
+ const endTime = params.endTime != null ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, params.endTime) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
10924
+ const call = this._collection(params.collection, account).populate("create_membership", [
10925
+ starknet.cairo.uint256(params.maxSupply),
10926
+ startTime,
10927
+ endTime,
10928
+ params.royaltyBps,
10929
+ params.metadataUri
10930
+ ]);
11923
10931
  const res = await account.execute([call]);
11924
10932
  return { txHash: res.transaction_hash };
11925
10933
  }
11926
- /** Public mint — caller pays entry fee (if any) and receives the membership NFT. */
11927
- async mintMembership(account, params) {
11928
- const calls = [];
11929
- if (params.entryFee && params.paymentToken && BigInt(params.entryFee) > 0n) {
11930
- const amount = starknet.cairo.uint256(params.entryFee);
11931
- calls.push({
11932
- contractAddress: params.paymentToken,
11933
- entrypoint: "approve",
11934
- calldata: [
11935
- normalizeAddress("STARKNET", params.collectionAddress),
11936
- amount.low.toString(),
11937
- amount.high.toString()
11938
- ]
11939
- });
11940
- }
11941
- calls.push(
11942
- this._collection(account, params.collectionAddress).populate("mint", [
11943
- params.to ?? account.address
11944
- ])
11945
- );
11946
- const res = await account.execute(calls);
11947
- return { txHash: res.transaction_hash };
11948
- }
11949
- // ── Legacy registry methods (retained for backward compatibility) ──────────────
11950
- /** @deprecated Use deployClub — the factory pattern replaced the registry. */
11951
- async createClub(account, params) {
11952
- const maxMembers = params.maxMembers != null ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, params.maxMembers) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
11953
- const entryFee = params.entryFee != null ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, starknet.cairo.uint256(params.entryFee)) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
11954
- const paymentToken = params.paymentToken ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, params.paymentToken) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
11955
- const call = this._registry(account, params.registryAddress).populate("create_club", [
11956
- params.name,
11957
- params.symbol,
11958
- params.metadataUri,
11959
- maxMembers,
11960
- entryFee,
11961
- paymentToken
10934
+ /**
10935
+ * Owner-only. Mints `amount` of `tokenId` to `to`. The validity window
10936
+ * gates membership, never minting — future-window tiers mint fine.
10937
+ */
10938
+ async mint(account, params) {
10939
+ const call = this._collection(params.collection, account).populate("mint", [
10940
+ params.to,
10941
+ starknet.cairo.uint256(params.tokenId),
10942
+ starknet.cairo.uint256(params.amount)
11962
10943
  ]);
11963
10944
  const res = await account.execute([call]);
11964
10945
  return { txHash: res.transaction_hash };
11965
10946
  }
11966
- /** @deprecated Legacy registry use factory-deployed collection methods. */
11967
- async setClubOpen(account, params) {
11968
- const call = this._registry(account, params.registryAddress).populate("set_club_open", [
11969
- starknet.cairo.uint256(params.clubId),
11970
- params.open
10947
+ /** Read true if holder holds any tier currently inside its validity window. */
10948
+ async isMember(params) {
10949
+ const result = await this._collectionRead(params.collection).call("is_member", [
10950
+ params.holder
11971
10951
  ]);
11972
- const res = await account.execute([call]);
11973
- return { txHash: res.transaction_hash };
10952
+ return Boolean(result);
11974
10953
  }
11975
- /** @deprecated Legacy registry use mintMembership with factory-deployed collections. */
11976
- async joinClub(account, params) {
11977
- const registryAddress = params.registryAddress ?? this.registryAddress;
11978
- if (!registryAddress) throw new Error("IP-Club registry address not configured for this chain");
11979
- const calls = [];
11980
- if (params.paymentToken && params.entryFee && BigInt(params.entryFee) > 0n) {
11981
- const amount = starknet.cairo.uint256(params.entryFee);
11982
- calls.push({
11983
- contractAddress: params.paymentToken,
11984
- entrypoint: "approve",
11985
- calldata: [normalizeAddress("STARKNET", registryAddress), amount.low.toString(), amount.high.toString()]
11986
- });
11987
- }
11988
- calls.push(this._registry(account, registryAddress).populate("join_club", [starknet.cairo.uint256(params.clubId)]));
11989
- const res = await account.execute(calls);
11990
- return { txHash: res.transaction_hash };
10954
+ /** Read true if holder holds `tokenId` and the current time is inside its window. */
10955
+ async isMemberOf(params) {
10956
+ const result = await this._collectionRead(params.collection).call("is_member_of", [
10957
+ starknet.cairo.uint256(params.tokenId),
10958
+ params.holder
10959
+ ]);
10960
+ return Boolean(result);
11991
10961
  }
11992
- /** @deprecated Legacy registry use factory-deployed collection burn. */
11993
- async leaveClub(account, params) {
11994
- const call = this._registry(account, params.registryAddress).populate("leave_club", [
11995
- starknet.cairo.uint256(params.clubId),
10962
+ /** Read returns the Membership record for a token ID. */
10963
+ async getMembership(params) {
10964
+ const m = await this._collectionRead(params.collection).call("get_membership", [
11996
10965
  starknet.cairo.uint256(params.tokenId)
11997
10966
  ]);
11998
- const res = await account.execute([call]);
11999
- return { txHash: res.transaction_hash };
10967
+ return {
10968
+ maxSupply: BigInt(m.max_supply),
10969
+ minted: BigInt(m.minted),
10970
+ startTime: m.start_time?.variant === "Some" ? Number(m.start_time.values[0] ?? m.start_time.value) : null,
10971
+ endTime: m.end_time?.variant === "Some" ? Number(m.end_time.values[0] ?? m.end_time.value) : null,
10972
+ royaltyBps: Number(m.royalty_bps),
10973
+ metadataUri: m.metadata_uri
10974
+ };
12000
10975
  }
12001
10976
  };
12002
10977
  var SponsorshipService = class {
12003
10978
  constructor(config) {
10979
+ this.config = config;
12004
10980
  this.sponsorshipAddress = getStarknetCoordinates(config.chain).ipSponsorship;
12005
- this.licenseReceiptAddress = getStarknetCoordinates(config.chain).ipSponsorshipLicense;
12006
10981
  }
12007
- _sponsorship(account, address) {
10982
+ _contract(account, address) {
12008
10983
  const resolved = address ?? this.sponsorshipAddress;
12009
10984
  if (!resolved) {
12010
10985
  throw new Error("IP-Sponsorship address not configured for this chain");
12011
10986
  }
12012
10987
  return newContract(IPSponsorshipABI, normalizeAddress("STARKNET", resolved), account);
12013
10988
  }
10989
+ _contractRead(address) {
10990
+ const resolved = address ?? this.sponsorshipAddress;
10991
+ if (!resolved) {
10992
+ throw new Error("IP-Sponsorship address not configured for this chain");
10993
+ }
10994
+ const provider = new starknet.RpcProvider({ nodeUrl: this.config.rpcUrl });
10995
+ return newContract(IPSponsorshipABI, normalizeAddress("STARKNET", resolved), provider);
10996
+ }
10997
+ // ── Offers (owner-initiated) ───────────────────────────────────────────────
12014
10998
  /** The offer author must currently own (nftContract, tokenId) — enforced on-chain at create and accept. */
12015
10999
  async createOffer(account, params) {
12016
11000
  const specificSponsor = params.specificSponsor ? new starknet.CairoOption(starknet.CairoOptionVariant.Some, params.specificSponsor) : new starknet.CairoOption(starknet.CairoOptionVariant.None);
12017
- const call = this._sponsorship(account, params.sponsorshipAddress).populate("create_offer", [
11001
+ const call = this._contract(account, params.sponsorshipAddress).populate("create_offer", [
12018
11002
  params.nftContract,
12019
11003
  starknet.cairo.uint256(params.tokenId),
12020
11004
  starknet.cairo.uint256(params.minAmount),
@@ -12022,6 +11006,7 @@ var SponsorshipService = class {
12022
11006
  params.paymentToken,
12023
11007
  params.licenseTermsUri,
12024
11008
  params.transferable,
11009
+ starknet.cairo.uint256(params.royaltyBps),
12025
11010
  specificSponsor
12026
11011
  ]);
12027
11012
  const res = await account.execute([call]);
@@ -12029,7 +11014,7 @@ var SponsorshipService = class {
12029
11014
  }
12030
11015
  /** Reversible — gates new bids/acceptance only. */
12031
11016
  async setOfferOpen(account, params) {
12032
- const call = this._sponsorship(account, params.sponsorshipAddress).populate("set_offer_open", [
11017
+ const call = this._contract(account, params.sponsorshipAddress).populate("set_offer_open", [
12033
11018
  starknet.cairo.uint256(params.offerId),
12034
11019
  params.open
12035
11020
  ]);
@@ -12048,7 +11033,7 @@ var SponsorshipService = class {
12048
11033
  entrypoint: "approve",
12049
11034
  calldata: [normalizeAddress("STARKNET", sponsorshipAddress), amount.low.toString(), amount.high.toString()]
12050
11035
  };
12051
- const bidCall = this._sponsorship(account, sponsorshipAddress).populate("place_bid", [
11036
+ const bidCall = this._contract(account, sponsorshipAddress).populate("place_bid", [
12052
11037
  starknet.cairo.uint256(params.offerId),
12053
11038
  amount
12054
11039
  ]);
@@ -12056,54 +11041,139 @@ var SponsorshipService = class {
12056
11041
  return { txHash: res.transaction_hash };
12057
11042
  }
12058
11043
  async retractBid(account, params) {
12059
- const call = this._sponsorship(account, params.sponsorshipAddress).populate("retract_bid", [
11044
+ const call = this._contract(account, params.sponsorshipAddress).populate("retract_bid", [
12060
11045
  starknet.cairo.uint256(params.offerId)
12061
11046
  ]);
12062
11047
  const res = await account.execute([call]);
12063
11048
  return { txHash: res.transaction_hash };
12064
11049
  }
12065
11050
  /**
12066
- * Author-only. Settles the sponsor's payment (allowance pull, no escrow) and
12067
- * mints a non-authoritative receipt NFT to the sponsor via the dedicated
12068
- * sponsorship-license IPGenesis instancenever the genesis-mint instance.
12069
- * `is_license_valid()` on IPSponsorship remains the sole authority for
12070
- * gating/perks; the receipt is a wallet-visible courtesy only.
11051
+ * Author-only. Re-verifies IP ownership, settles the sponsor's payment
11052
+ * (allowance pull, no escrow), and mints the license a real ERC-721 on
11053
+ * this same contractto the sponsor, all atomically in one call.
12071
11054
  */
12072
11055
  async acceptBid(account, params) {
12073
- const receiptAddress = params.licenseReceiptAddress ?? this.licenseReceiptAddress;
12074
- if (!receiptAddress) {
12075
- throw new Error("IP-Sponsorship-License receipt address not configured for this chain");
12076
- }
12077
- const acceptCall = this._sponsorship(account, params.sponsorshipAddress).populate("accept_bid", [
11056
+ const call = this._contract(account, params.sponsorshipAddress).populate("accept_bid", [
12078
11057
  starknet.cairo.uint256(params.offerId),
12079
11058
  params.sponsor
12080
11059
  ]);
12081
- const receipt = newContract(IPGenesisABI, normalizeAddress("STARKNET", receiptAddress), account);
12082
- const mintCall = receipt.populate("mint_item", [params.sponsor, params.licenseTermsUri]);
12083
- const res = await account.execute([acceptCall, mintCall]);
11060
+ const res = await account.execute([call]);
11061
+ return { txHash: res.transaction_hash };
11062
+ }
11063
+ // ── Proposals (sponsor-initiated) ──────────────────────────────────────────
11064
+ // The symmetric counterpart to offers/bids: a sponsor proposes fixed terms
11065
+ // on an asset with no open offer yet; only the asset's current owner may
11066
+ // accept or reject. Unlike an offer, the SPONSOR chooses `paymentToken` here
11067
+ // — an accepting owner's UI should surface only recognized tokens, since a
11068
+ // bad-faith ERC-20 could return `true` on `transfer_from` without moving funds.
11069
+ async proposeSponsorship(account, params) {
11070
+ const call = this._contract(account, params.sponsorshipAddress).populate("propose_sponsorship", [
11071
+ params.nftContract,
11072
+ starknet.cairo.uint256(params.tokenId),
11073
+ starknet.cairo.uint256(params.amount),
11074
+ params.duration,
11075
+ params.validUntil ?? 0,
11076
+ params.paymentToken,
11077
+ params.licenseTermsUri,
11078
+ params.transferable,
11079
+ starknet.cairo.uint256(params.royaltyBps)
11080
+ ]);
11081
+ const res = await account.execute([call]);
11082
+ return { txHash: res.transaction_hash };
11083
+ }
11084
+ /** Proposer-only. Advisory against an acceptance in flight in the same block. */
11085
+ async withdrawProposal(account, params) {
11086
+ const call = this._contract(account, params.sponsorshipAddress).populate("withdraw_proposal", [
11087
+ starknet.cairo.uint256(params.proposalId)
11088
+ ]);
11089
+ const res = await account.execute([call]);
12084
11090
  return { txHash: res.transaction_hash };
12085
11091
  }
12086
11092
  /**
12087
- * Best-effortbundles a receipt-NFT transfer alongside `transfer_license`
12088
- * when both `licenseReceiptAddress` and `receiptTokenId` are supplied.
12089
- * IPSponsorship's own license ownership stays authoritative regardless of
12090
- * whether the receipt NFT is kept in sync.
11093
+ * Asset-owner-only (re-verified on-chain — a proposal binds to the asset,
11094
+ * not a person: whoever owns it at acceptance time is paid and issues the
11095
+ * license). Settles payment and mints the license atomically, same as
11096
+ * `acceptBid`.
12091
11097
  */
12092
- async transferLicense(account, params) {
12093
- const calls = [
12094
- this._sponsorship(account, params.sponsorshipAddress).populate("transfer_license", [
12095
- starknet.cairo.uint256(params.licenseId),
12096
- params.to
12097
- ])
12098
- ];
12099
- const receiptAddress = params.licenseReceiptAddress ?? this.licenseReceiptAddress;
12100
- if (receiptAddress && params.receiptTokenId != null) {
12101
- const receipt = newContract(IPGenesisABI, normalizeAddress("STARKNET", receiptAddress), account);
12102
- calls.push(receipt.populate("transfer_from", [account.address, params.to, starknet.cairo.uint256(params.receiptTokenId)]));
12103
- }
12104
- const res = await account.execute(calls);
11098
+ async acceptProposal(account, params) {
11099
+ const call = this._contract(account, params.sponsorshipAddress).populate("accept_proposal", [
11100
+ starknet.cairo.uint256(params.proposalId)
11101
+ ]);
11102
+ const res = await account.execute([call]);
11103
+ return { txHash: res.transaction_hash };
11104
+ }
11105
+ /** Asset-owner-only. */
11106
+ async rejectProposal(account, params) {
11107
+ const call = this._contract(account, params.sponsorshipAddress).populate("reject_proposal", [
11108
+ starknet.cairo.uint256(params.proposalId)
11109
+ ]);
11110
+ const res = await account.execute([call]);
12105
11111
  return { txHash: res.transaction_hash };
12106
11112
  }
11113
+ // ── Reads ───────────────────────────────────────────────────────────────────
11114
+ async getOffer(params) {
11115
+ const o = await this._contractRead(params.sponsorshipAddress).call("get_offer", [
11116
+ starknet.cairo.uint256(params.offerId)
11117
+ ]);
11118
+ return {
11119
+ author: o.author,
11120
+ nftContract: o.nft_contract,
11121
+ tokenId: BigInt(o.token_id),
11122
+ minAmount: BigInt(o.min_amount),
11123
+ duration: Number(o.duration),
11124
+ paymentToken: o.payment_token,
11125
+ licenseTermsUri: o.license_terms_uri,
11126
+ transferable: Boolean(o.transferable),
11127
+ specificSponsor: o.specific_sponsor?.variant === "Some" ? o.specific_sponsor.values?.[0] ?? o.specific_sponsor.value : null,
11128
+ open: Boolean(o.open),
11129
+ royaltyBps: BigInt(o.royalty_bps)
11130
+ };
11131
+ }
11132
+ async getBid(params) {
11133
+ const result = await this._contractRead(params.sponsorshipAddress).call("get_bid", [
11134
+ starknet.cairo.uint256(params.offerId),
11135
+ params.sponsor
11136
+ ]);
11137
+ return BigInt(result);
11138
+ }
11139
+ async getProposal(params) {
11140
+ const p = await this._contractRead(params.sponsorshipAddress).call("get_proposal", [
11141
+ starknet.cairo.uint256(params.proposalId)
11142
+ ]);
11143
+ return {
11144
+ proposer: p.proposer,
11145
+ nftContract: p.nft_contract,
11146
+ tokenId: BigInt(p.token_id),
11147
+ amount: BigInt(p.amount),
11148
+ duration: Number(p.duration),
11149
+ validUntil: Number(p.valid_until),
11150
+ paymentToken: p.payment_token,
11151
+ licenseTermsUri: p.license_terms_uri,
11152
+ transferable: Boolean(p.transferable),
11153
+ open: Boolean(p.open),
11154
+ royaltyBps: BigInt(p.royalty_bps)
11155
+ };
11156
+ }
11157
+ async getLastOfferId(params) {
11158
+ const result = await this._contractRead(params?.sponsorshipAddress).call("get_last_offer_id", []);
11159
+ return BigInt(result);
11160
+ }
11161
+ async getLastProposalId(params) {
11162
+ const result = await this._contractRead(params?.sponsorshipAddress).call("get_last_proposal_id", []);
11163
+ return BigInt(result);
11164
+ }
11165
+ async getLastLicenseId(params) {
11166
+ const result = await this._contractRead(params?.sponsorshipAddress).call("get_last_license_id", []);
11167
+ return BigInt(result);
11168
+ }
11169
+ /** EIP-2981 — royalty recipient (the license's issuing author) and amount owed on a resale at `salePrice`. */
11170
+ async royaltyInfo(params) {
11171
+ const [recipient, amount] = await this._contractRead(params.sponsorshipAddress).call("royalty_info", [
11172
+ starknet.cairo.uint256(params.licenseId),
11173
+ starknet.cairo.uint256(params.salePrice)
11174
+ ]);
11175
+ return { recipient, amount: BigInt(amount) };
11176
+ }
12107
11177
  };
12108
11178
 
12109
11179
  // src/starknet/client.ts
@@ -12929,10 +11999,8 @@ exports.DropFactoryABI = DropFactoryABI;
12929
11999
  exports.DropService = DropService;
12930
12000
  exports.ERC1155CollectionService = ERC1155CollectionService;
12931
12001
  exports.FeeConfigSchema = FeeConfigSchema;
12932
- exports.IPClubABI = IPClubABI;
12933
12002
  exports.IPClubCollectionABI = IPClubCollectionABI;
12934
12003
  exports.IPClubFactoryABI = IPClubFactoryABI;
12935
- exports.IPClubNFTABI = IPClubNFTABI;
12936
12004
  exports.IPCollection1155ABI = IPCollection1155ABI;
12937
12005
  exports.IPCollection1155FactoryABI = IPCollection1155FactoryABI;
12938
12006
  exports.IPCollectionABI = IPCollectionABI;
@@ -12940,7 +12008,6 @@ exports.IPGenesisABI = IPGenesisABI;
12940
12008
  exports.IPMarketplaceABI = IPMarketplaceABI;
12941
12009
  exports.IPNftABI = IPNftABI;
12942
12010
  exports.IPSponsorshipABI = IPSponsorshipABI;
12943
- exports.IPSponsorshipLicenseABI = IPSponsorshipLicenseABI;
12944
12011
  exports.IPTicketCollectionABI = IPTicketCollectionABI;
12945
12012
  exports.IPTicketCollectionFactoryABI = IPTicketCollectionFactoryABI;
12946
12013
  exports.LAUNCH_PRICE_QUOTE_PER_COIN = LAUNCH_PRICE_QUOTE_PER_COIN;
@@ -12971,10 +12038,8 @@ exports.STARKNET_IPCOLLECTION_CLASS_HASH = STARKNET_IPCOLLECTION_CLASS_HASH;
12971
12038
  exports.STARKNET_IPNFT_CLASS_HASH = STARKNET_IPNFT_CLASS_HASH;
12972
12039
  exports.STARKNET_IP_CLUB_COLLECTION_CLASS_HASH = STARKNET_IP_CLUB_COLLECTION_CLASS_HASH;
12973
12040
  exports.STARKNET_IP_CLUB_FACTORY_CONTRACT = STARKNET_IP_CLUB_FACTORY_CONTRACT;
12974
- exports.STARKNET_IP_CLUB_NFT_CLASS_HASH = STARKNET_IP_CLUB_NFT_CLASS_HASH;
12975
- exports.STARKNET_IP_CLUB_REGISTRY_CONTRACT = STARKNET_IP_CLUB_REGISTRY_CONTRACT;
12041
+ exports.STARKNET_IP_SPONSORSHIP_CLASS_HASH = STARKNET_IP_SPONSORSHIP_CLASS_HASH;
12976
12042
  exports.STARKNET_IP_SPONSORSHIP_CONTRACT = STARKNET_IP_SPONSORSHIP_CONTRACT;
12977
- exports.STARKNET_IP_SPONSORSHIP_LICENSE_CONTRACT = STARKNET_IP_SPONSORSHIP_LICENSE_CONTRACT;
12978
12043
  exports.STARKNET_IP_TICKETS_FACTORY_CONTRACT = STARKNET_IP_TICKETS_FACTORY_CONTRACT;
12979
12044
  exports.STARKNET_IP_TICKET_COLLECTION_CLASS_HASH = STARKNET_IP_TICKET_COLLECTION_CLASS_HASH;
12980
12045
  exports.STARKNET_MARKETPLACE_1155_CLASS_HASH = STARKNET_MARKETPLACE_1155_CLASS_HASH;