Skip to content

Commit

Permalink
Add Bubblegum and Candy-wrapper (#671)
Browse files Browse the repository at this point in the history
* Rename programs/programs -> contracts/programs

* Rename programs/programs -> contracts/programs

* fix dockerfiles

* Merge branch 'anchor-restructure' of https://github.com/jarry-xiao/candyland into anchor-restructure

* Merge branch 'anchor-restructure' of https://github.com/jarry-xiao/candyland into anchor-restructure

* fix nonce in bubblegum test

* fix bubblegum nonce decoding, still failing test

* rollback nonce by 1 for ownership transfer

* fix leafNonce for all instructions in test

* fix leafNonce for all instructions in test

* fix bubblegum test

* migrate bubblegum and bubblegum to use Vec<u8>

* set gummyroll interface back to [u8; 32]

* fix gummyroll tests

* propagate Node as [u8;32] type changes

* fix gummyroll test

* add appendAuthority transfer test

* add authority transfer tests

* add gummyroll sdk, refactor tests for replace & append ixs

* add transferAuthIx to sdk, refactor tests

* clean up gummyroll tests a little bit more

* move merkle-roll-serde to gummyroll accounts

* add verifyLeaf tests

* Fix merge conflicts in test files

remove MC from cargo lock

* Fix merge conflicts in test files

remove MC from cargo lock

* feat(gumball-machine): add SDK and small refactor program

* add solita bubblegum

* add readme

* update tests to use solita SDK

* make solita scripts more robust

* working with solita sdk

* cleanup

* cleanup

* Jank Indexer (#95)

Jank Indexer V1

Co-authored-by: Noah Gundotra <[email protected]>

* Jank Indexer (#95)

Jank Indexer V1

Co-authored-by: Noah Gundotra <[email protected]>

* Jank Indexer (#95)

Jank Indexer V1

Co-authored-by: Noah Gundotra <[email protected]>

* Jxiao/tree nonces (#103)

- Tree nonces V0 (better schema to come)

* Jxiao/tree nonces (#103)

- Tree nonces V0 (better schema to come)

* Jxiao/tree nonces (#103)

- Tree nonces V0 (better schema to come)

* Update bubblegum key (#107)

* Update bubblegum key (#107)

* Jxiao/bubblegum jankle refactor (#115)

Update Bubblegum contract to be (almost) identical to @austbot's upsert branch
Merged together the nonce account and tree authority
Enforced that the decompressed mint is a PDA of the asset_id and the token_program_id
Added new column to TS indexer to represent compressed state
Fixed parsing bug in redeem
Cleaned up parsing logic/code reduction clutter

* Jxiao/bubblegum jankle refactor (#115)

Update Bubblegum contract to be (almost) identical to @austbot's upsert branch
Merged together the nonce account and tree authority
Enforced that the decompressed mint is a PDA of the asset_id and the token_program_id
Added new column to TS indexer to represent compressed state
Fixed parsing bug in redeem
Cleaned up parsing logic/code reduction clutter

* Jxiao/bubblegum jankle refactor (#115)

Update Bubblegum contract to be (almost) identical to @austbot's upsert branch
Merged together the nonce account and tree authority
Enforced that the decompressed mint is a PDA of the asset_id and the token_program_id
Added new column to TS indexer to represent compressed state
Fixed parsing bug in redeem
Cleaned up parsing logic/code reduction clutter

* fix conflicts

* v1 prefix

* v1 prefix

* v1 prefix

* v1 prefix

* fixed conflicts

* fixed conflicts

* Fixed leaf schema version in indexer

* adds more validation to bgum and parses redeem and cancel redeem

* all bgum events done

* Project canopy (#118)

* Initial implementation of project canopy (lots of magic numbers, no comments, no tests) WIP

* Finalized canopy changes and fixed a number of bugs in concurrent merkle tree lib

* revert indexer to main

* Don't worry guys, I added some comments

* Support up to 2^30 tree size

* Project canopy (#118)

* Initial implementation of project canopy (lots of magic numbers, no comments, no tests) WIP

* Finalized canopy changes and fixed a number of bugs in concurrent merkle tree lib

* revert indexer to main

* Don't worry guys, I added some comments

* Support up to 2^30 tree size

* Gumball machine bs58 (#120)

* Modify gumball machine to support base58 encoded configs

* Update gumball bug and tests

* Gumball machine bs58 (#120)

* Modify gumball machine to support base58 encoded configs

* Update gumball bug and tests

* Add backfill script to Jankle (#119)

* jankle update 0

* add backfill script

* server update

* cleanup backfiller

* add txid to assets query

* add txid to assets query

* add txid to assets query

* update txId

* add compressed field to assets query

Co-authored-by: Noah Gundotra <[email protected]>

* add sugar shack example compressed nft marketplace contract, test and sdk

* add sugar shack example compressed nft marketplace contract, test and sdk

* proof serving reliably working without explosion of cl_items

* Jxiao/fix log truncation (#121)

* Initial implementation of log truncation fix

* Add new files

* refactor bubblegum pda

* amend me

* update basic ts sdk

* better bgum convenience

* addProof modifies instructions to add proof fluently

* better bg init

* fix rebase issues

* fix sugar shack tests

* use convenience initializer

* revert maxSeq change, update smokeTest

Co-authored-by: Noah Gundotra <[email protected]>

* Jxiao/fix log truncation (#121)

* Initial implementation of log truncation fix

* Add new files

* refactor bubblegum pda

* amend me

* update basic ts sdk

* better bgum convenience

* addProof modifies instructions to add proof fluently

* better bg init

* fix rebase issues

* fix sugar shack tests

* use convenience initializer

* revert maxSeq change, update smokeTest

Co-authored-by: Noah Gundotra <[email protected]>

* Jxiao/fix log truncation (#121)

* Initial implementation of log truncation fix

* Add new files

* refactor bubblegum pda

* amend me

* update basic ts sdk

* better bgum convenience

* addProof modifies instructions to add proof fluently

* better bg init

* fix rebase issues

* fix sugar shack tests

* use convenience initializer

* revert maxSeq change, update smokeTest

Co-authored-by: Noah Gundotra <[email protected]>

* Jxiao/fix log truncation (#121)

* Initial implementation of log truncation fix

* Add new files

* refactor bubblegum pda

* amend me

* update basic ts sdk

* better bgum convenience

* addProof modifies instructions to add proof fluently

* better bg init

* fix rebase issues

* fix sugar shack tests

* use convenience initializer

* revert maxSeq change, update smokeTest

Co-authored-by: Noah Gundotra <[email protected]>

* fixes small bug with accounts and asset id for decompress and configurizes plerkle messenger, ingester messenger like api is configureized

* fixes small bug with accounts and asset id for decompress and configurizes plerkle messenger, ingester messenger like api is configureized

* fixes ///check

* feat(cli): Add Gumball Machine CLI

* Block dispense when no NFTs left, and charge for multiple NFTs

* Jankle: parse bubblegum via instructions (without logs) (#128)

* Jankle: parse bubblegum via instructions (without logs) (#128)

* Jankle: parse bubblegum via instructions (without logs) (#128)

* Add creators to gumball machine header

* CLI supports creators in gball header

* CLI supports creators in gball header

* reduced info needed by gumball sdk

* initialize gumball machine indices in chunks, including cli support

* removed unneeded sdk params

* solita upgrade and truncate fix

* Sum creator shares to 100. Allow update receiver and creators in gumball header. Fix payouts in sugar shack

* Sum creator shares to 100. Allow update receiver and creators in gumball header. Fix payouts in sugar shack

* fix gumball machine tests (#152)

Co-authored-by: Noah Gundotra <[email protected]>

* [Gummyroll] Single authority for each tree (#153)

* remove append_authority from contract

* update gummyroll ts sdk

* update gummyroll tests

* remove append authority from bubblegum contract

* update bubblegum ts sdk

* Added slightly more robust logic to proof filling (#155)

* Added more tests to gummyroll for canopy proof inference

* Change GRoll key for use on devnet

Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: Jarry Xiao <[email protected]>
Co-authored-by: jarry-xiao <[email protected]>

* [Gummyroll] Single authority for each tree (#153)

* remove append_authority from contract

* update gummyroll ts sdk

* update gummyroll tests

* remove append authority from bubblegum contract

* update bubblegum ts sdk

* Added slightly more robust logic to proof filling (#155)

* Added more tests to gummyroll for canopy proof inference

* Change GRoll key for use on devnet

Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: Jarry Xiao <[email protected]>
Co-authored-by: jarry-xiao <[email protected]>

* [Gummyroll] Single authority for each tree (#153)

* remove append_authority from contract

* update gummyroll ts sdk

* update gummyroll tests

* remove append authority from bubblegum contract

* update bubblegum ts sdk

* Added slightly more robust logic to proof filling (#155)

* Added more tests to gummyroll for canopy proof inference

* Change GRoll key for use on devnet

Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: Jarry Xiao <[email protected]>
Co-authored-by: jarry-xiao <[email protected]>

* [Gummyroll] Single authority for each tree (#153)

* remove append_authority from contract

* update gummyroll ts sdk

* update gummyroll tests

* remove append authority from bubblegum contract

* update bubblegum ts sdk

* Added slightly more robust logic to proof filling (#155)

* Added more tests to gummyroll for canopy proof inference

* Change GRoll key for use on devnet

Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: Jarry Xiao <[email protected]>
Co-authored-by: jarry-xiao <[email protected]>

* Support decompress with multiple creators, commit yarn.lock, upgrade gumball cli, test stability

* Support decompress with multiple creators, commit yarn.lock, upgrade gumball cli, test stability

* Support decompress with multiple creators, commit yarn.lock, upgrade gumball cli, test stability

* tests, cli and indexer all working with new upgraded anchor client version

* aligned solita versions

* # This is a combination of 9 commits.
# This is the 1st commit message:

remove append_authority from contract

update gummyroll tests

replace nonce with tree authority

update bubblegum ts sdk

separate mint with creator vs mint with request

update bubblegum ts sdk

# This is the commit message #2:

assert on-chain properties of mint authority request

# This is the commit message #3:

unify mint request instructions

rename MintAuthorityRequest to MintRequest

update bubblegum ts sdk

update tests

address nits

update bubblegum ts sdk

check on chain state in tests for authority and mint request

# This is the commit message #4:

add close instruction for mint requests

update bubblegum ts sdk

unit test bubblegum close instruction

fix append method call

# This is the commit message #5:

add set tree delegate ix

update bubblegum ts sdk

add test for tree delegate

# This is the commit message #6:

fix gumball machine mint api

# This is the commit message #7:

update sugar shack test leafNonce retrieval

# This is the commit message #8:

cleanup PR

# This is the commit message #9:

Fixed bubblegum changes, upstream contracts still broken

* # This is a combination of 9 commits.
# This is the 1st commit message:

remove append_authority from contract

update gummyroll tests

replace nonce with tree authority

update bubblegum ts sdk

separate mint with creator vs mint with request

update bubblegum ts sdk

# This is the commit message #2:

assert on-chain properties of mint authority request

# This is the commit message #3:

unify mint request instructions

rename MintAuthorityRequest to MintRequest

update bubblegum ts sdk

update tests

address nits

update bubblegum ts sdk

check on chain state in tests for authority and mint request

# This is the commit message #4:

add close instruction for mint requests

update bubblegum ts sdk

unit test bubblegum close instruction

fix append method call

# This is the commit message #5:

add set tree delegate ix

update bubblegum ts sdk

add test for tree delegate

# This is the commit message #6:

fix gumball machine mint api

# This is the commit message #7:

update sugar shack test leafNonce retrieval

# This is the commit message #8:

cleanup PR

# This is the commit message #9:

Fixed bubblegum changes, upstream contracts still broken

* # This is a combination of 9 commits.
# This is the 1st commit message:

remove append_authority from contract

update gummyroll tests

replace nonce with tree authority

update bubblegum ts sdk

separate mint with creator vs mint with request

update bubblegum ts sdk

# This is the commit message #2:

assert on-chain properties of mint authority request

# This is the commit message #3:

unify mint request instructions

rename MintAuthorityRequest to MintRequest

update bubblegum ts sdk

update tests

address nits

update bubblegum ts sdk

check on chain state in tests for authority and mint request

# This is the commit message #4:

add close instruction for mint requests

update bubblegum ts sdk

unit test bubblegum close instruction

fix append method call

# This is the commit message #5:

add set tree delegate ix

update bubblegum ts sdk

add test for tree delegate

# This is the commit message #6:

fix gumball machine mint api

# This is the commit message #7:

update sugar shack test leafNonce retrieval

# This is the commit message #8:

cleanup PR

# This is the commit message #9:

Fixed bubblegum changes, upstream contracts still broken

* Rebase auth changes on main

* Rebase auth changes on main

* Rebase auth changes on main

* Fix tests and addresss max_size changes

* fixed smoke test

* fixed smoke test

* Create seperate Bubblegum, Gummyroll, Gumball, SS and Utils NPM packages

* Create seperate Bubblegum, Gummyroll, Gumball, SS and Utils NPM packages

* Huge purge before release

* Huge purge before release

* Huge purge before release

* Huge purge before release

* mc

* mc

* deps

* deps

* merge pain

* GBall cli fix

* add back main

* add files

* remove test

* make bubblegum convenience build again

* convenience

* convenience

* fix toBuffer issues

* Updating Bubblegum directory structure

- Code was merged from `https://github.com/jarry-xiao/candyland` repo.
- Moved program from `programs/bubblegum/` to `bubblegum/program`.

* Updating Bubblegum js/sdk directory structure

- Code was merged from `https://github.com/jarry-xiao/candyland` repo.
- Moved sdk from `contracts/sdk/bubblegum/` to `bubblegum/js`.

* Updating Bubblegum tests directory structure

- Code was merged from `https://github.com/jarry-xiao/candyland` repo.
- Moved tests from `contracts/tests/` to `bubblegum/js/test`.

* Updating Candy-wrapper directory structure

- Code was merged from `https://github.com/jarry-xiao/candyland` repo.
- Moved program from `programs/candy-wrapper` to `candy-wrapper/program`.

* Adding api:gen script to bubblegum js directory

- Adding couple misc files from original repo.
- Adding solita config.
- Cleaning up some yarn.lock and package.json files.
- Including Bubblegum in some top level config files.

Testing
- `anchor build --skip-lint` works and builds bubblegum.so.
- `yarn api:gen` works from `bubblegum/js` directory and builds
same as existing IDL (except adds a few metadata fields).

* enable bubblegum anchor tests

- update package.json and tsconfig.json
- cleanup bubblegum test file and imports
- enable anchor test --skip-lint to run after anchor workspace members are built

* Moving bubblegum js dependencies to bubblegum specific package.json

* Removing extra tsconfig file and adding typedoc file

* Moved and renamed index.ts to src directory

Also cleanup bubblegum package.json.

* Removing Anchor workspace additions and nonworking yarn scripts

* Updating yarn.lock file

* Adding empty api:gen script for candy-wrapper to support CI tests

- Also adding license files to js directories.
- Also cleaning up extra bubblegum types file.

* Adding back in the js scripts that were previously removed

They currently don't all work because the ts tests have issues.

* Updating yarn.lock file

* Excluding candy-wrapper from github verify workflow

* Updating yarn.lock file

* Renaming bubblegum to mpl-bubblegum and candy-wrapper to mpl-candy-wrapper

Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: Noah Gundotra <[email protected]>
Co-authored-by: jarry-xiao <[email protected]>
Co-authored-by: Jarry Xiao <[email protected]>
Co-authored-by: Sam Orend <[email protected]>
Co-authored-by: austbot <[email protected]>
Co-authored-by: Austin Adams <[email protected]>
Co-authored-by: jshiohaha <[email protected]>
  • Loading branch information
10 people authored Aug 12, 2022
1 parent d030106 commit 4c45b58
Show file tree
Hide file tree
Showing 66 changed files with 11,683 additions and 85 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/verify-lib-on-pr-open.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ jobs:
with:
# exclude packages either do not have `js` dirs or do not have `api:gen` scripts in their local package.json
script: |
const exclude = ['metaplex', 'auction', 'core', 'nft-packs']
const exclude = ['metaplex', 'auction', 'core', 'nft-packs', 'candy-wrapper']
const files = ${{ steps.map-changed-files-to-pkg.outputs.result }}
const result = files
.filter(f => !exclude.includes(f))
Expand Down
5 changes: 4 additions & 1 deletion Anchor.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ cluster = "localnet"
wallet = "~/.config/solana/id.json"

[programs.localnet]
mpl_auction_house="hausS13jsjafwWwGqZTUQRmWyvyxn9EQpqMwV1PBBmk"
auction_house="hausS13jsjafwWwGqZTUQRmWyvyxn9EQpqMwV1PBBmk"
bubblegum="BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY"

[[test.genesis]]
address = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
Expand Down Expand Up @@ -34,4 +35,6 @@ members = [
"token-metadata/program",
"auction-house/program",
"fixed-price-sale/program",
"bubblegum/program",
"candy-wrapper/program"
]
4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,7 @@ exclude = [
"fixed-price-sale/cli",
"token-metadata",
"auction-house/program",
"candy-machine/program"
"candy-machine/program",
"bubblegum/program",
"candy-wrapper/program",
]
2 changes: 1 addition & 1 deletion auction-house/js/test/account.auction-house.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { AccountInfo, Keypair, PublicKey } from '@solana/web3.js';
import { AuctionHouse, AuctionHouseArgs } from 'src/generated';
import { AuctionHouse, AuctionHouseArgs } from '../src/generated';
import test from 'tape';
import spok from 'spok';

Expand Down
13 changes: 13 additions & 0 deletions bubblegum/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Smart Contracts

`gummyroll` will be managed by solana-labs

`bubblegum`, `gumball-machine` and `sugar-shack` are managed by metaplex-foundation

### Testing

Testing contracts locally: `anchor test`

Testing contracts against indexer + api: `anchor test --skip-build --skip-local-validator --skip-deploy` and limit the test script to only the continuous test.


16 changes: 16 additions & 0 deletions bubblegum/js/.solitarc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// @ts-check
const path = require('path');
const programDir = path.join(__dirname, '..', 'program');
const idlDir = path.join(__dirname, 'idl');
const sdkDir = path.join(__dirname, 'src', 'generated');
const binaryInstallDir = path.join(__dirname, '.crates');

module.exports = {
idlGenerator: 'anchor',
programName: 'bubblegum',
programId: 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',
idlDir,
sdkDir,
binaryInstallDir,
programDir,
};
202 changes: 202 additions & 0 deletions bubblegum/js/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [2022] [Metaplex Foundation]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
14 changes: 14 additions & 0 deletions bubblegum/js/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Bubblegum

This SDK uses MPL's `Solita` to generate typescript SDK for `anchor` smart-contract.

Solita is particularly helpful:
- Enums: (i.e. TokenProgramVersion)
- Complex types: (ie MetadataArgs support)
- Using typed system to identify issues with smart contract args

### Install

1. `yarn`
2. `node solita.js`
3. `import { ... } from '../sdk/bubblegum'`
Loading

0 comments on commit 4c45b58

Please sign in to comment.