{"version":3,"file":"globalAccount.mjs","sources":["../../../src/globalAccount.ts"],"sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\r\nimport { struct, bool, u64, publicKey, Layout } from \"@coral-xyz/borsh\";\r\n\r\nexport class GlobalAccount {\r\n  public discriminator: bigint;\r\n  public initialized: boolean = false;\r\n  public authority: PublicKey;\r\n  public feeRecipient: PublicKey;\r\n  public initialVirtualTokenReserves: bigint;\r\n  public initialVirtualSolReserves: bigint;\r\n  public initialRealTokenReserves: bigint;\r\n  public tokenTotalSupply: bigint;\r\n  public feeBasisPoints: bigint;\r\n\r\n  constructor(\r\n    discriminator: bigint,\r\n    initialized: boolean,\r\n    authority: PublicKey,\r\n    feeRecipient: PublicKey,\r\n    initialVirtualTokenReserves: bigint,\r\n    initialVirtualSolReserves: bigint,\r\n    initialRealTokenReserves: bigint,\r\n    tokenTotalSupply: bigint,\r\n    feeBasisPoints: bigint\r\n  ) {\r\n    this.discriminator = discriminator;\r\n    this.initialized = initialized;\r\n    this.authority = authority;\r\n    this.feeRecipient = feeRecipient;\r\n    this.initialVirtualTokenReserves = initialVirtualTokenReserves;\r\n    this.initialVirtualSolReserves = initialVirtualSolReserves;\r\n    this.initialRealTokenReserves = initialRealTokenReserves;\r\n    this.tokenTotalSupply = tokenTotalSupply;\r\n    this.feeBasisPoints = feeBasisPoints;\r\n  }\r\n\r\n  getInitialBuyPrice(amount: bigint): bigint {\r\n    if (amount <= 0n) {\r\n      return 0n;\r\n    }\r\n\r\n    let n = this.initialVirtualSolReserves * this.initialVirtualTokenReserves;\r\n    let i = this.initialVirtualSolReserves + amount;\r\n    let r = n / i + 1n;\r\n    let s = this.initialVirtualTokenReserves - r;\r\n    return s < this.initialRealTokenReserves\r\n      ? s\r\n      : this.initialRealTokenReserves;\r\n  }\r\n\r\n  public static fromBuffer(buffer: Buffer): GlobalAccount {\r\n    const structure: Layout<GlobalAccount> = struct([\r\n      u64(\"discriminator\"),\r\n      bool(\"initialized\"),\r\n      publicKey(\"authority\"),\r\n      publicKey(\"feeRecipient\"),\r\n      u64(\"initialVirtualTokenReserves\"),\r\n      u64(\"initialVirtualSolReserves\"),\r\n      u64(\"initialRealTokenReserves\"),\r\n      u64(\"tokenTotalSupply\"),\r\n      u64(\"feeBasisPoints\"),\r\n    ]);\r\n\r\n    let value = structure.decode(buffer);\r\n    return new GlobalAccount(\r\n      BigInt(value.discriminator),\r\n      value.initialized,\r\n      value.authority,\r\n      value.feeRecipient,\r\n      BigInt(value.initialVirtualTokenReserves),\r\n      BigInt(value.initialVirtualSolReserves),\r\n      BigInt(value.initialRealTokenReserves),\r\n      BigInt(value.tokenTotalSupply),\r\n      BigInt(value.feeBasisPoints)\r\n    );\r\n  }\r\n}\r\n"],"names":[],"mappings":";;MAGa,aAAa,CAAA;AACjB,IAAA,aAAa;IACb,WAAW,GAAY,KAAK;AAC5B,IAAA,SAAS;AACT,IAAA,YAAY;AACZ,IAAA,2BAA2B;AAC3B,IAAA,yBAAyB;AACzB,IAAA,wBAAwB;AACxB,IAAA,gBAAgB;AAChB,IAAA,cAAc;AAErB,IAAA,WAAA,CACE,aAAqB,EACrB,WAAoB,EACpB,SAAoB,EACpB,YAAuB,EACvB,2BAAmC,EACnC,yBAAiC,EACjC,wBAAgC,EAChC,gBAAwB,EACxB,cAAsB,EAAA;AAEtB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;AAC9D,QAAA,IAAI,CAAC,yBAAyB,GAAG,yBAAyB;AAC1D,QAAA,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;AACxD,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AACxC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;AAGtC,IAAA,kBAAkB,CAAC,MAAc,EAAA;AAC/B,QAAA,IAAI,MAAM,IAAI,EAAE,EAAE;AAChB,YAAA,OAAO,EAAE;;QAGX,IAAI,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,2BAA2B;AACzE,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,MAAM;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,2BAA2B,GAAG,CAAC;AAC5C,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC;AACd,cAAE;AACF,cAAE,IAAI,CAAC,wBAAwB;;IAG5B,OAAO,UAAU,CAAC,MAAc,EAAA;QACrC,MAAM,SAAS,GAA0B,MAAM,CAAC;YAC9C,GAAG,CAAC,eAAe,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC;YACnB,SAAS,CAAC,WAAW,CAAC;YACtB,SAAS,CAAC,cAAc,CAAC;YACzB,GAAG,CAAC,6BAA6B,CAAC;YAClC,GAAG,CAAC,2BAA2B,CAAC;YAChC,GAAG,CAAC,0BAA0B,CAAC;YAC/B,GAAG,CAAC,kBAAkB,CAAC;YACvB,GAAG,CAAC,gBAAgB,CAAC;AACtB,SAAA,CAAC;QAEF,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,OAAO,IAAI,aAAa,CACtB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAC3B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,EAClB,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,EACzC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACvC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,EACtC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAC9B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAC7B;;AAEJ;;;;"}