mirror of https://github.com/certusone/oyster.git
feat: borsh
This commit is contained in:
parent
cc1e58e4a1
commit
7b4a17006f
|
@ -1,4 +1,6 @@
|
|||
import { deserializeBorsh } from '@oyster/common';
|
||||
import { PublicKey } from '@solana/web3.js';
|
||||
import { serialize, BinaryReader, BinaryWriter } from 'borsh';
|
||||
|
||||
export * from './initAuctionManager';
|
||||
export * from './redeemBid';
|
||||
|
@ -8,6 +10,19 @@ export * from './redeemOpenEditionBid';
|
|||
export * from './startAuction';
|
||||
export * from './validateSafetyDepositBox';
|
||||
|
||||
(BinaryReader.prototype as any).readPubkey = function () {
|
||||
debugger;
|
||||
const reader = (this as unknown) as BinaryReader;
|
||||
const array = reader.readFixedArray(32);
|
||||
return new PublicKey(array);
|
||||
};
|
||||
|
||||
(BinaryWriter.prototype as any).writePubkey = function (value: PublicKey) {
|
||||
debugger;
|
||||
const writer = (this as unknown) as BinaryWriter;
|
||||
writer.writeFixedArray(value.toBuffer());
|
||||
};
|
||||
|
||||
export class AuctionManager {
|
||||
key?: number;
|
||||
authority?: PublicKey;
|
||||
|
@ -21,6 +36,34 @@ export class AuctionManager {
|
|||
settings?: AuctionManagerSettings;
|
||||
}
|
||||
|
||||
export class InitAuctionManagerArgs {
|
||||
instruction = 0;
|
||||
}
|
||||
|
||||
export class ValidateSafetyDepositBoxArgs {
|
||||
instruction = 1;
|
||||
}
|
||||
|
||||
export class RedeemBidArgs {
|
||||
instruction = 2;
|
||||
}
|
||||
|
||||
export class RedeemMasterEditionBidArgs {
|
||||
instruction = 3;
|
||||
}
|
||||
|
||||
export class RedeemLimitedEditionBidArgs {
|
||||
instruction = 4;
|
||||
}
|
||||
|
||||
export class RedeemOpenEditionBidArgs {
|
||||
instruction = 5;
|
||||
}
|
||||
|
||||
export class StartAuctionArgs {
|
||||
instruction = 6;
|
||||
}
|
||||
|
||||
export class AuctionManagerSettings {
|
||||
openEditionWinnerConstraint?: WinningConstraint;
|
||||
openEditionNonWinningConstraint?: NonWinningConstraint;
|
||||
|
@ -99,13 +142,13 @@ export const SCHEMA = new Map<any, any>([
|
|||
kind: 'struct',
|
||||
fields: [
|
||||
['key', 'u8'],
|
||||
['authority', 'u32'],
|
||||
['auction', 'u32'],
|
||||
['vault', 'u32'],
|
||||
['auctionProgram', 'u32'],
|
||||
['tokenVaultProgram', 'u32'],
|
||||
['tokenMetadataProgram', 'u32'],
|
||||
['tokenProgram', 'u32'],
|
||||
['authority', 'pubkey'],
|
||||
['auction', 'pubkey'],
|
||||
['vault', 'pubkey'],
|
||||
['auctionProgram', 'pubkey'],
|
||||
['tokenVaultProgram', 'pubkey'],
|
||||
['tokenMetadataProgram', 'pubkey'],
|
||||
['tokenProgram', 'pubkey'],
|
||||
['state', AuctionManagerState],
|
||||
['settings', AuctionManagerSettings],
|
||||
],
|
||||
|
@ -116,8 +159,11 @@ export const SCHEMA = new Map<any, any>([
|
|||
{
|
||||
kind: 'struct',
|
||||
fields: [
|
||||
['openEditionWinnerConstraint', { kind: 'enum' }], // TODO:
|
||||
['openEditionNonWinningConstraint', { kind: 'enum' }], // TODO:
|
||||
['openEditionWinnerConstraint', { kind: 'enum', values: [0, 1, 2] }], // TODO:
|
||||
[
|
||||
'openEditionNonWinningConstraint',
|
||||
{ kind: 'enum', values: [0, 1, 2] },
|
||||
], // TODO:
|
||||
['winningConfigs', [WinningConfig]], // TODO: check
|
||||
['openEditionConfig', { kind: 'option', type: 'u8' }],
|
||||
['openEditionFixedPrice', { kind: 'option', type: 'u8' }],
|
||||
|
@ -132,7 +178,7 @@ export const SCHEMA = new Map<any, any>([
|
|||
['safetyDepositBoxIndex', 'u8'],
|
||||
['amount', 'u8'],
|
||||
['hasAuthority', 'u8'], // bool
|
||||
['editionType', { kind: 'enum' }], // TODO:
|
||||
['editionType', { kind: 'enum', values: [0, 1, 2] }], // TODO:
|
||||
],
|
||||
},
|
||||
],
|
||||
|
@ -153,7 +199,7 @@ export const SCHEMA = new Map<any, any>([
|
|||
kind: 'struct',
|
||||
fields: [
|
||||
// TODO: fix enum
|
||||
['status', { kind: 'enum' }],
|
||||
['status', { kind: 'enum', values: [0, 1, 2] }],
|
||||
['winningConfigsValidated', 'u8'],
|
||||
['masterEditionsWithAuthoritiesRemainingToReturn', 'u8'],
|
||||
['winningConfigStates', [WinningConfigState]],
|
||||
|
@ -170,4 +216,53 @@ export const SCHEMA = new Map<any, any>([
|
|||
],
|
||||
},
|
||||
],
|
||||
[
|
||||
InitAuctionManagerArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
[
|
||||
ValidateSafetyDepositBoxArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
[
|
||||
RedeemBidArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
[
|
||||
RedeemMasterEditionBidArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
[
|
||||
RedeemLimitedEditionBidArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
[
|
||||
RedeemOpenEditionBidArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
[
|
||||
StartAuctionArgs,
|
||||
{
|
||||
kind: 'struct',
|
||||
fields: [['instruction', 'u8']],
|
||||
},
|
||||
],
|
||||
]);
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import { PublicKey } from '@solana/web3.js';
|
||||
|
||||
export const AUCTION_PROGRAM_ID = new PublicKey(
|
||||
'aucPpK6yb5MpEHDwyp3Kg79McUoKVqTMeum7iJ9syeH',
|
||||
'C9nHkL6BfGx9M9MyYrJqAD5hPsGJd1fHpp1uAJA6vTCn',
|
||||
);
|
||||
|
||||
export const VAULT_PROGRAM_ID = new PublicKey(
|
||||
'vauLTA73sFPqA8whreUbBsbn3SLJH2vhrW9fP5dmfdC',
|
||||
'94wRaYAQdC2gYF76AUTYSugNJ3rAC4EimjAMPwM7uYry',
|
||||
);
|
||||
|
||||
export const METAPLEX_PROGRAM_ID = new PublicKey(
|
||||
'HvwC9QSAzvGXhhVrgPmauVwFWcYZhne3hVot9EbHuFTm',
|
||||
'EPtpKdKW8qciGVd1UFyGjgbBHTbSAyvbY61h9uQGVgeu',
|
||||
);
|
||||
|
||||
// TODO: generate key ---
|
||||
|
|
|
@ -734,7 +734,7 @@ const Congrats = () => {
|
|||
return <>
|
||||
<div style={{ marginTop: 70 }}>
|
||||
<div className="waiting-title">
|
||||
Congratulations! Your creation is now live.
|
||||
Congratulations, you created an NFT!
|
||||
</div>
|
||||
<div className="congrats-button-container">
|
||||
<Button className="congrats-button"><span>Share it on Twitter</span><span>></span></Button>
|
||||
|
|
|
@ -31,14 +31,17 @@ import {
|
|||
useConnectionConfig,
|
||||
Metadata,
|
||||
ParsedAccount,
|
||||
deserializeBorsh,
|
||||
} from '@oyster/common';
|
||||
import { getAssetCostToStore, LAMPORT_MULTIPLIER } from '../../utils/assets';
|
||||
import { Connection, ParsedAccountData, PublicKey } from '@solana/web3.js';
|
||||
import { MintLayout } from '@solana/spl-token';
|
||||
import { MintLayout, TOKEN_PROGRAM_ID } from '@solana/spl-token';
|
||||
import { useHistory, useParams } from 'react-router-dom';
|
||||
import { useUserArts } from '../../hooks';
|
||||
import Masonry from 'react-masonry-css';
|
||||
import { capitalize } from 'lodash';
|
||||
import { AuctionManager, SCHEMA } from '../../models/metaplex';
|
||||
import { serialize } from 'borsh';
|
||||
|
||||
const { Step } = Steps;
|
||||
const { Option } = Select;
|
||||
|
@ -67,23 +70,23 @@ export interface AuctionState {
|
|||
// suggested date time when auction should end UTC+0
|
||||
endDate?: Date;
|
||||
|
||||
|
||||
|
||||
// Jose's attributes
|
||||
category: AuctionCategory;
|
||||
saleType?: "auction" | "sale";
|
||||
|
||||
|
||||
price?: number;
|
||||
priceFloor?: number;
|
||||
priceTick?: number;
|
||||
|
||||
|
||||
startSaleTS?: number; // Why do I prefer to work with unix ts?
|
||||
startListTS?: number;
|
||||
endTS?: number;
|
||||
|
||||
|
||||
auctionDuration?: number;
|
||||
gapTime?: number;
|
||||
tickSizeEndingPhase?: number;
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const AuctionCreateView = () => {
|
||||
|
@ -109,6 +112,16 @@ export const AuctionCreateView = () => {
|
|||
}, [step_param])
|
||||
|
||||
const gotoNextStep = (_step?: number) => {
|
||||
debugger;
|
||||
|
||||
const test = new AuctionManager();
|
||||
test.auction = TOKEN_PROGRAM_ID;
|
||||
const buffer = serialize(SCHEMA, test);
|
||||
|
||||
const test2 = deserializeBorsh(SCHEMA, AuctionManager, Buffer.from(buffer));
|
||||
|
||||
debugger;
|
||||
|
||||
const nextStep = _step === undefined ? (step + 1) : _step;
|
||||
history.push(`/auction/create/${nextStep.toString()}`)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue